diff --git a/.env.ci b/.env.ci index ccf787c2e..d4f6916db 100644 --- a/.env.ci +++ b/.env.ci @@ -14,7 +14,7 @@ TELESCOPE_ENABLED=false IXP_PHPUNIT_RUNNING=true DB_HOST=127.0.0.1 -DB_DATABASE=myapp_test +DB_DATABASE=ixp_ci DB_USERNAME=root DB_PASSWORD= @@ -30,7 +30,7 @@ GRAPHER_BACKEND_SFLOW_ENABLED=true #GRAPHER_ACCESS_IXP=1 -CACHE_DRIVER=null +CACHE_DRIVER=array IXP_API_JSONEXPORTSCHEMA_PUBLIC=true @@ -53,7 +53,7 @@ IXP_FE_FRONTEND_CUSTOMER_MANY=customers IXP_FE_FRONTEND_CUSTOMER_OWNER="customer's" IXP_FE_FRONTEND_CUSTOMER_OWNERS="customers'" -# See: https://docs.ixpmanager.org/features/irrdb/ +# See: https://docs.ixpmanager.org/latest/features/irrdb/ IXP_IRRDB_BGPQ3_PATH=/usr/local/bin/bgpq3 diff --git a/.env.dev b/.env.dev index 60c53ed93..e413735c8 100644 --- a/.env.dev +++ b/.env.dev @@ -25,7 +25,7 @@ APP_TIMEZONE="Europe/Dublin" # Laravel log format (storage/log). See config/log.php and # https://laravel.com/docs/5.4/errors -APP_LOG="single" +LOG_CHANNEL="single" # info by default, one of: debug, info, notice, warning, error, critical, alert, emergency. APP_LOG_LEVEL=debug @@ -157,7 +157,7 @@ MAIL_ENCRYPTION=false ####################################################################################### -### Graphing - see https://docs.ixpmanager.org/grapher/introduction +### Graphing - see https://docs.ixpmanager.org/latest/grapher/introduction # Enable the backends you have configured. E.g.: # GRAPHER_BACKENDS="mrtg|sflow|smokeping" @@ -171,7 +171,7 @@ GRAPHER_BACKENDS="dummy" GRAPHER_CACHE_ENABLED=true ################################################################################# -## Grapher - Mrtg - see: https://docs.ixpmanager.org/grapher/mrtg/ +## Grapher - Mrtg - see: https://docs.ixpmanager.org/latest/grapher/mrtg/ ## # For backwards compatibility, the default is 'log' but 'rrd' is more modern: @@ -183,7 +183,7 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" # GRAPHER_BACKEND_MRTG_LOGDIR="/srv/mrtg" ################################################################################# -## Grapher - sflow - see: https://docs.ixpmanager.org/grapher/sflow/ +## Grapher - sflow - see: https://docs.ixpmanager.org/latest/grapher/sflow/ ## # GRAPHER_BACKEND_SFLOW_ENABLED=false @@ -191,7 +191,7 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" ################################################################################# -## Grapher - smokeping - see: https://docs.ixpmanager.org/grapher/smokeping/ +## Grapher - smokeping - see: https://docs.ixpmanager.org/latest/grapher/smokeping/ ## # Mark it as enabled (this just affects whether certain UI elements are shown): @@ -202,7 +202,7 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" ################################################################################# -## IX-F Member Export - see: https://docs.ixpmanager.org/features/ixf-export/ +## IX-F Member Export - see: https://docs.ixpmanager.org/latest/features/ixf-export/ IXP_API_JSONEXPORTSCHEMA_PUBLIC=true @@ -223,7 +223,7 @@ CACHE_DRIVER=array ####################################################################################### # Session Lifetimes - standard and remember me. # -# See https://docs.ixpmanager.org/usage/authentication/ +# See https://docs.ixpmanager.org/latest/usage/authentication/ # # SESSION_LIFETIME=120 # AUTH_TOKEN_EXPIRE=43200 @@ -247,7 +247,7 @@ DOCTRINE_CACHE_NAMESPACE=IXPMANAGERNAMESPACE ####################################################################################### -# Options for updating RIR Objects - see https://docs.ixpmanager.org/features/rir-objects/ +# Options for updating RIR Objects - see https://docs.ixpmanager.org/latest/features/rir-objects/ # Your RIR password to allow the updating of a RIR object by email: # IXP_API_RIR_PASSWORD=soopersecret @@ -265,10 +265,10 @@ DOCTRINE_CACHE_NAMESPACE=IXPMANAGERNAMESPACE ####################################################################################### # Utility paths -# See: https://docs.ixpmanager.org/features/irrdb/ +# See: https://docs.ixpmanager.org/latest/features/irrdb/ IXP_IRRDB_BGPQ3_PATH=/usr/local/bin/bgpq3 -# See: https://docs.ixpmanager.org/features/rpki/ +# See: https://docs.ixpmanager.org/latest/features/rpki/ # IXP_RPKI_RTR1_HOST=192.0.2.11 # IXP_RPKI_RTR1_PORT=3323 # IXP_RPKI_RTR2_HOST=192.0.2.12 @@ -286,7 +286,7 @@ IXP_IRRDB_BGPQ3_PATH=/usr/local/bin/bgpq3 ######################################################################################### ### PeeringDB OAuth ### -### https://docs.ixpmanager.org/features/peeringdb-oauth/ +### https://docs.ixpmanager.org/latest/features/peeringdb-oauth/ ### # AUTH_PEERINGDB_ENABLED=true diff --git a/.env.docker b/.env.docker index 1bee284cf..706fea8d2 100644 --- a/.env.docker +++ b/.env.docker @@ -133,7 +133,7 @@ IXP_FE_BETA_CORE_BUNDLES=true ####################################################################################### # Utility paths -# See: https://docs.ixpmanager.org/features/irrdb/ +# See: https://docs.ixpmanager.org/latest/features/irrdb/ IXP_IRRDB_BGPQ3_PATH=/usr/bin/bgpq3 IXP_RPKI_RTR1_HOST=172.30.201.31 diff --git a/.env.example b/.env.example index 381eb1881..07ed83ddf 100644 --- a/.env.example +++ b/.env.example @@ -22,12 +22,11 @@ APP_URL="https://ixp.example.com" APP_TIMEZONE="UTC" # Laravel log format (storage/log). See config/log.php and -# https://laravel.com/docs/5.4/errors -APP_LOG="single" +# https://laravel.com/docs/11.x/logging +LOG_CHANNEL="single" # info by default, one of: debug, info, notice, warning, error, critical, alert, emergency. -APP_LOG_LEVEL=debug -TELESCOPE_ENABLED=false +LOG_LEVEL=debug # MySQL Connection Details DB_HOST="127.0.0.1" @@ -39,7 +38,7 @@ DB_PASSWORD="password" ####################################################################################### ### Email Settings. # -# We use Laravel's mail system - see: https://docs.ixpmanager.org/usage/email/ +# We use Laravel's mail system - see: https://docs.ixpmanager.org/latest/usage/email/ # # The default setting are as follows: # @@ -148,7 +147,7 @@ IXP_FE_FRONTEND_DISABLED_LOGO=false # IXP_FE_FRONTEND_DISABLED_RS_FILTERS=false ####################################################################################### -### Graphing - see https://docs.ixpmanager.org/grapher/introduction +### Graphing - see https://docs.ixpmanager.org/latest/grapher/introduction # Enable the backends you have configured. E.g.: # GRAPHER_BACKENDS="mrtg|sflow|smokeping" @@ -162,7 +161,7 @@ GRAPHER_BACKENDS="dummy" GRAPHER_CACHE_ENABLED=true ################################################################################# -## Grapher - Mrtg - see: https://docs.ixpmanager.org/grapher/mrtg/ +## Grapher - Mrtg - see: https://docs.ixpmanager.org/latest/grapher/mrtg/ ## # For backwards compatibility, the default is 'log' but 'rrd' is more modern: @@ -174,7 +173,7 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" # GRAPHER_BACKEND_MRTG_LOGDIR="/srv/mrtg" ################################################################################# -## Grapher - sflow - see: https://docs.ixpmanager.org/grapher/sflow/ +## Grapher - sflow - see: https://docs.ixpmanager.org/latest/grapher/sflow/ ## # GRAPHER_BACKEND_SFLOW_ENABLED=false @@ -182,7 +181,7 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" ################################################################################# -## Grapher - smokeping - see: https://docs.ixpmanager.org/grapher/smokeping/ +## Grapher - smokeping - see: https://docs.ixpmanager.org/latest/grapher/smokeping/ ## # Mark it as enabled (this just affects whether certain UI elements are shown): @@ -193,13 +192,13 @@ GRAPHER_BACKEND_MRTG_DBTYPE="rrd" ################################################################################# -## IX-F Member Export - see: https://docs.ixpmanager.org/features/ixf-export/ +## IX-F Member Export - see: https://docs.ixpmanager.org/latest/features/ixf-export/ # IXP_API_JSONEXPORTSCHEMA_PUBLIC=true # Some variables can be excluded as required. -# See: https://docs.ixpmanager.org/features/ixf-export/ +# See: https://docs.ixpmanager.org/latest/features/ixf-export/ # # IXP_API_JSONEXPORTSCHEMA_EXCLUDE_SWITCH="model|software" # IXP_API_JSONEXPORTSCHEMA_EXCLUDE_IXP="name|url" @@ -236,7 +235,7 @@ CACHE_DRIVER=array ####################################################################################### # Session Lifetimes - standard and remember me. # -# See https://docs.ixpmanager.org/usage/authentication/ +# See https://docs.ixpmanager.org/latest/usage/authentication/ # # SESSION_LIFETIME=120 # AUTH_TOKEN_EXPIRE=43200 @@ -255,7 +254,7 @@ CACHE_DRIVER=array ####################################################################################### -# Options for updating RIR Objects - see https://docs.ixpmanager.org/features/rir-objects/ +# Options for updating RIR Objects - see https://docs.ixpmanager.org/latest/features/rir-objects/ # Your RIR password to allow the updating of a RIR object by email: # IXP_API_RIR_PASSWORD=soopersecret @@ -273,10 +272,10 @@ CACHE_DRIVER=array ####################################################################################### # Utility paths -# See: https://docs.ixpmanager.org/features/irrdb/ +# See: https://docs.ixpmanager.org/latest/features/irrdb/ IXP_IRRDB_BGPQ3_PATH=/usr/bin/bgpq3 -# See: https://docs.ixpmanager.org/features/rpki/ +# See: https://docs.ixpmanager.org/latest/features/rpki/ # IXP_RPKI_RTR1_HOST=192.0.2.11 # IXP_RPKI_RTR1_PORT=3323 # IXP_RPKI_RTR2_HOST=192.0.2.12 @@ -294,7 +293,7 @@ IXP_IRRDB_BGPQ3_PATH=/usr/bin/bgpq3 ######################################################################################### ### PeeringDB OAuth ### -### https://docs.ixpmanager.org/features/peeringdb-oauth/ +### https://docs.ixpmanager.org/latest/features/peeringdb-oauth/ ### # AUTH_PEERINGDB_ENABLED=true @@ -305,7 +304,8 @@ IXP_IRRDB_BGPQ3_PATH=/usr/bin/bgpq3 ######################################################################################### -### See: https://docs.ixpmanager.org/features/routers/#filtering-known-transit-networks +### See: https://docs.ixpmanager.org/latest/features/routers/#filtering-known-transit-networks # IXP_NO_TRANSIT_ASNS_EXCLUDE=65501,65502 # IXP_NO_TRANSIT_ASNS_OVERRIDE=65501,65502,65503 +# Full slash 'description' with /slashes\ and "quotes" diff --git a/.env.test b/.env.test new file mode 100644 index 000000000..b9cbae897 --- /dev/null +++ b/.env.test @@ -0,0 +1,312 @@ +####################################################################################### +# +# IXP Manager V4+ configuration. +# +# + +# Run "artisan key:generate" to set the application key: +# APP_KEY= + +# Set this to false in production (but change it to true if you have installation or +# other issues running IXP Manager). +APP_DEBUG="false" + +# Web address where IXP Manager is accessed. This is a **required** setting. It is +# currently used for generating all URLs within IXP Manager (action, assets, etc.). +# It is also used / required for sending emails via CLI scripts. +# +APP_URL="https://ixp.example.com" + + +# See http://php.net/manual/en/timezones.php for a list of timezones: +APP_TIMEZONE="UTC" + +# Laravel log format (storage/log). See config/log.php and +# https://laravel.com/docs/5.4/errors +APP_LOG="daily" + +# info by default, one of: debug, info, notice, warning, error, critical, alert, emergency. +APP_LOG_LEVEL="debug" + +# MySQL Connection Details +DB_HOST="127.0.0.1" +DB_DATABASE="ixp" +DB_USERNAME="ixp" +DB_PASSWORD="password" + + +####################################################################################### +### Email Settings. +# +# We use Laravel's mail system - see: https://docs.ixpmanager.org/latest/usage/email/ +# +# The default setting are as follows: +# +# MAIL_MAILER="smtp" +# MAIL_HOST="localhost" +MAIL_PORT="25" +# MAIL_ENCRYPTION="false" + + + +####################################################################################### +### Identity +# +# Used throughout IXP Manager in various ways. +# +# This has grown organically and we intend to clean this up in a coming release and +# documenting where and how each one is spceifically used. + + +# Used in various emails, etc. +IDENTITY_SITENAME="Vagrant IXP Manager" +APP_NAME="${IDENTITY_SITENAME}" +# Shown in title bar of web portal. Defaults to IDENTITY_SITENAME +# IDENTITY_TITLENAME="Vagrant IXP Manager" + +IDENTITY_LEGALNAME="Vagrant City IXP" +IDENTITY_CITY="Dublin" +IDENTITY_COUNTRY="IE" +IDENTITY_ORGNAME="${IDENTITY_LEGALNAME}" + +# As well as uses in other places, emails are sent from the following name/email: +IDENTITY_NAME="${IDENTITY_LEGALNAME}" +IDENTITY_EMAIL="ixp@example.com" + +IDENTITY_TESTEMAIL="${IDENTITY_EMAIL}" + +# Used on some traffic graphs: +IDENTITY_WATERMARK="Vagrant City IXP" + +IDENTITY_SUPPORT_EMAIL="${IDENTITY_EMAIL}" +IDENTITY_SUPPORT_PHONE="+1 111 555 5555" +IDENTITY_SUPPORT_HOURS="24x7" + +IDENTITY_BILLING_EMAIL="${IDENTITY_EMAIL}" +IDENTITY_BILLING_PHONE="+1 111 555 5555" +IDENTITY_BILLING_HOURS="24x7" + +# Web address of your IXP's website. Used in IX-F Export schema, etc. +IDENTITY_CORPORATE_URL="http://www.example.com/" + +# The logo to show on the login page. Should be a URL. +# (the example here works - the leading '//' means the browser should match http/https based on the web page) +IDENTITY_BIGLOGO="//www.ixpmanager.org/images/logos/ixp-manager.png" + +# For some actions (e.g. peering matrix) we need to know what VLAN to show by default. +# This is the vlan.id database entry (i.e. not the VLAN number/tag!) +IDENTITY_DEFAULT_VLAN="1" + + +######################################################################################### +### Member vs. Customer +### +### IXP Manager is an open source project and typically used in member-owned IXPs. +### As such, the language used mostly is 'member'. To change this to 'customer' just +### uncomment the following lines: +# +# IXP_FE_FRONTEND_CUSTOMER_ONE="customer" +# IXP_FE_FRONTEND_CUSTOMER_MANY="customers" +# IXP_FE_FRONTEND_CUSTOMER_OWNER="customer's" +# IXP_FE_FRONTEND_CUSTOMER_OWNERS="customers'" + + + +####################################################################################### +### Features +# + +# See: http://docs.ixpmanager.org/features/reseller/ +IXP_RESELLER_ENABLED="false" + +# See: http://docs.ixpmanager.org/features/as112/ +IXP_AS112_UI_ACTIVE="false" + + +####################################################################################### +### Frontend controllers and controller configuration +# +# Some frontend controllers are disabled by default. This is for a variety of reasons +# including: additional configuration may be required, maintain backwards +# compatibility, etc. + +# Allow customers / admins to upload logos for members. Set to false to enabled. +# See: http://docs.ixpmanager.org/usage/customers/#customer-logos +IXP_FE_FRONTEND_DISABLED_LOGO="false" + + +# Send email notifications when a customer's billing details are updated. +# See: http://docs.ixpmanager.org/usage/customers/#notification-of-billing-details-changed +# IXP_FE_CUSTOMER_BILLING_UPDATES_NOTIFY="mail@example.com" + + +# Disable links to the peering matrix if you have not set it up (with sflow): +# IXP_FE_FRONTEND_DISABLED_PEERING_MATRIX="true" + +# Enable the UI for route server community-based filtering by uncommenting this line: +# IXP_FE_FRONTEND_DISABLED_RS_FILTERS="false" + +####################################################################################### +### Graphing - see https://docs.ixpmanager.org/latest/grapher/introduction + +# Enable the backends you have configured. E.g.: +# GRAPHER_BACKENDS="mrtg|sflow|smokeping" + +# On a new installation, we just use placeholders from the dummy backend: +GRAPHER_BACKENDS="dummy" + +# With the cache enabled, IXP Manager does not have to regenerate / reload / reprocess +# log / rrd / image files if we have cached them and they are less than 5mins old. This +# is enabled by default which is the recommended setting. +GRAPHER_CACHE_ENABLED="true" + +################################################################################# +## Grapher - Mrtg - see: https://docs.ixpmanager.org/latest/grapher/mrtg/ +## + + +# The defaults for these are '/tmp' to require you to change them to something +# more sensible such as: +# GRAPHER_BACKEND_MRTG_WORKDIR="/srv/mrtg" +# GRAPHER_BACKEND_MRTG_LOGDIR="/srv/mrtg" + +################################################################################# +## Grapher - sflow - see: https://docs.ixpmanager.org/latest/grapher/sflow/ +## + +# GRAPHER_BACKEND_SFLOW_ENABLED="false" +# GRAPHER_BACKEND_SFLOW_ROOT="http://sflow-server.example.com/grapher-sflow" + + +################################################################################# +## Grapher - smokeping - see: https://docs.ixpmanager.org/latest/grapher/smokeping/ +## + +# Mark it as enabled (this just affects whether certain UI elements are shown): +# GRAPHER_BACKEND_SMOKEPING_ENABLED="true" + +# And set the default location to fetch the Smokeping graphs from: +# GRAPHER_BACKEND_SMOKEPING_URL="http://www.example.com/smokeping" + + +################################################################################# +## IX-F Member Export - see: https://docs.ixpmanager.org/latest/features/ixf-export/ + + +# IXP_API_JSONEXPORTSCHEMA_PUBLIC="true" + +# Some variables can be excluded as required. +# See: https://docs.ixpmanager.org/latest/features/ixf-export/ +# +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_SWITCH="model|software" +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_IXP="name|url" +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_MEMBER="asnum|name" +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_INTINFO="mac_addresses|routeserver" + +# Exclude members with certain AS numbers +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_ASNUM="65001|65002|65003" + +# Exclude members with certain tags +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_TAGS="tag1|tag2" + +# Exclude documentation ASNs (64496 - 64511, 65536 - 65551) +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_RFC5398="true" + +# Exclude private ASNs (64512 - 65534, 4200000000 - 4294967294) + +# Exclude private ASNs: +# IXP_API_JSONEXPORTSCHEMA_EXCLUDE_RFC6996="true" + + +####################################################################################### +### Skinning +# +# See https://ixp-manager.readthedocs.io/en/latest/features/skinning.html +# +# VIEW_SKIN="myskin" + + +####################################################################################### +# See config/cache.php +CACHE_DRIVER="array" + +####################################################################################### +# Session Lifetimes - standard and remember me. +# +# See https://docs.ixpmanager.org/latest/usage/authentication/ +# +# SESSION_LIFETIME="120" +# AUTH_TOKEN_EXPIRE="43200" + + +####################################################################################### +# PeeringDB Authentication +# +# PeeringDb's API is used, for example, to pre-populate new customer details. If you +# provide a working PeeringDb username/password then these will be used to get more +# complete information. +# +# IXP_API_PEERING_DB_USERNAME="username" +# IXP_API_PEERING_DB_PASSWORD="password" + + + +####################################################################################### +# Options for updating RIR Objects - see https://docs.ixpmanager.org/latest/features/rir-objects/ + +# Your RIR password to allow the updating of a RIR object by email: +# IXP_API_RIR_PASSWORD="soopersecret" + +# Rather than specifiying the destination address on the command line, you can set it here +# (useful for cronjobs and required for use with artisan schedule:run in >=v5.0) +# IXP_API_RIR_EMAIL_TO="test-dbm@ripe.net" + +# Rather than specifiying the from address on the command line, you can set it here +# (useful for cronjobs and required for use with artisan schedule:run in >=v5.0) +# IXP_API_RIR_EMAIL_FROM="ixp@example.com" + + + +####################################################################################### +# Utility paths + +# See: https://docs.ixpmanager.org/latest/features/irrdb/ +IXP_IRRDB_BGPQ3_PATH="/usr/bin/bgpq3" + +# See: https://docs.ixpmanager.org/latest/features/rpki/ +# IXP_RPKI_RTR1_HOST="192.0.2.11" +# IXP_RPKI_RTR1_PORT="3323" +# IXP_RPKI_RTR2_HOST="192.0.2.12" +# IXP_RPKI_RTR2_PORT="3323" + + +######################################################################################### +### Development Helpers +### + +# Disable HTML5 validation to test PHP code based request validators +# FORMER_LIVE_VALIDATION="false" + + +######################################################################################### +### PeeringDB OAuth +### +### https://docs.ixpmanager.org/latest/features/peeringdb-oauth/ +### + +# AUTH_PEERINGDB_ENABLED="true" + +# PEERINGDB_OAUTH_CLIENT_ID="xxx" +# PEERINGDB_OAUTH_CLIENT_SECRET="xxx" +# PEERINGDB_OAUTH_REDIRECT="https://www.example.com/auth/login/peeringdb/callback" + + +######################################################################################### +### See: https://docs.ixpmanager.org/latest/features/routers/#filtering-known-transit-networks +# IXP_NO_TRANSIT_ASNS_EXCLUDE="65501,65502" +# IXP_NO_TRANSIT_ASNS_OVERRIDE="65501,65502,65503" + +# Full slash 'description' with /slashes\ and "quotes" + +# It is a test 'description' with /slashes\ and "quotes" +TEST_KEY="Test value" diff --git a/.env.vagrant b/.env.vagrant deleted file mode 100644 index 42b8fa33e..000000000 --- a/.env.vagrant +++ /dev/null @@ -1,240 +0,0 @@ -####################################################################################### -# -# IXP Manager V4+ configuration for Vagrant. - -# Run "artisan key:generate" to set the application key: -APP_KEY= - -APP_URL="http://localhost:8088" -APP_ENV="local" -APP_DEBUG=true -APP_TIMEZONE="UTC" -APP_LOG="single" - -DB_CONNECTION="mysql" -DB_HOST="127.0.0.1" -DB_DATABASE="ixp" -DB_USERNAME="ixp" -DB_PASSWORD="password" - -CACHE_DRIVER=array -SESSION_DRIVER=file - -DOCTRINE_PROXY_AUTOGENERATE=true -DOCTRINE_CACHE=array -DOCTRINE_CACHE_NAMESPACE=IXPMANAGERNAMESPACE - - -IDENTITY_LEGALNAME="Vagrant City IXP" -IDENTITY_CITY="Dublin" -IDENTITY_COUNTRY="Ireland" -IDENTITY_IXFID=0 -IDENTITY_ORGNAME="${IDENTITY_LEGALNAME}" -IDENTITY_NAME="${IDENTITY_LEGALNAME}" -IDENTITY_EMAIL="ixp@example.com" -IDENTITY_TESTEMAIL="${IDENTITY_EMAIL}" -IDENTITY_WATERMARK="Vagrant City IXP" -IDENTITY_SUPPORT_EMAIL="${IDENTITY_EMAIL}" -IDENTITY_SUPPORT_PHONE="+1 111 555 5555" -IDENTITY_SUPPORT_HOURS="24x7" -IDENTITY_BILLING_EMAIL="${IDENTITY_EMAIL}" -IDENTITY_BILLING_PHONE="+1 111 555 5555" -IDENTITY_BILLING_HOURS="24x7" -IDENTITY_SITENAME="Vagrant IXP Manager" -IDENTITY_CORPORATE_URL="http://www.example.com/" -IDENTITY_BIGLOGO="//www.ixpmanager.org/images/logos/ixp-manager.png" -IDENTITY_BIGLOGO_OFFSET="offset4" -IDENTITY_MISC_IRC_PASSWORD="xxxxxxx" -IDENTITY_DEFAULT_VLAN=1 - - - - - -####################################################################################### -### Features -# - -# See: http://docs.ixpmanager.org/features/reseller/ -IXP_RESELLER_ENABLED=true - -# See: http://docs.ixpmanager.org/features/as112/ -IXP_AS112_UI_ACTIVE=true - - -####################################################################################### -### Frontend controllers and controller configuration -# -# Some frontend controllers are disabled by default. This is for a variety of reasons -# including: additional configuration may be required, maintain backwards -# compatibility, etc. - -# Allow customers / admins to upload logos for members. Set to false to enabled. -# See: http://docs.ixpmanager.org/usage/customers/#customer-logos -IXP_FE_FRONTEND_DISABLED_LOGO=false - - -# Send email notifications when a customer's billing details are updated. -# See: http://docs.ixpmanager.org/usage/customers/#notification-of-billing-details-changed -# IXP_FE_CUSTOMER_BILLING_UPDATES_NOTIFY="mail@example.com" - - -# Disable links to the peering matrix if you have not set it up (with sflow): -# IXP_FE_FRONTEND_DISABLED_PEERING_MATRIX=true - - -####################################################################################### -### Email Settings. -# -# We use Laravel's mail system which in turn uses SwiftMailer. -# -# See config/mail.php abd https://laravel.com/docs/5.5/mail -# -# The default setting is 'sendmail' which tries to use your local systems mail client. -# -# MAIL_MAILER="sendmail" -# MAIL_HOST="localhost" -# MAIL_PORT=25 -# MAIL_ENCRYPTION="tls" - -MAIL_MAILER=log - - - -####################################################################################### -### Graphing - see https://docs.ixpmanager.org/grapher/introduction - -# Enable the backends you have configured. E.g.: -# GRAPHER_BACKENDS="mrtg|sflow|smokeping" - -# On a new installation, we just use placeholders from the dummy backend: -GRAPHER_BACKENDS="dummy" - -# With the cache enabled, IXP Manager does not have to regenerate / reload / reprocess -# log / rrd / image files if we have cached them and they are less than 5mins old. This -# is enabled by default which is the recommended setting. -GRAPHER_CACHE_ENABLED=true - -################################################################################# -## Grapher - Mrtg - see: https://docs.ixpmanager.org/grapher/mrtg/ -## - -# For backwards compatibility, the default is 'log' but 'rrd' is more modern: -GRAPHER_BACKEND_MRTG_DBTYPE="rrd" - -# The defaults for these are '/tmp' to require you to change them to something -# more sensible such as: -# GRAPHER_BACKEND_MRTG_WORKDIR="/srv/mrtg" -# GRAPHER_BACKEND_MRTG_LOGDIR="/srv/mrtg" - -################################################################################# -## Grapher - sflow - see: https://docs.ixpmanager.org/grapher/sflow/ -## - -# GRAPHER_BACKEND_SFLOW_ENABLED=false -# GRAPHER_BACKEND_SFLOW_ROOT="http://sflow-server.example.com/grapher-sflow" - - -################################################################################# -## Grapher - smokeping - see: https://docs.ixpmanager.org/grapher/smokeping/ -## - -# Mark it as enabled (this just affects whether certain UI elements are shown): -# GRAPHER_BACKEND_SMOKEPING_ENABLED=true - -# And set the default location to fetch the Smokeping graphs from: -# GRAPHER_BACKEND_SMOKEPING_URL="http://www.example.com/smokeping" - - -################################################################################# -## IX-F Member Export - see: https://docs.ixpmanager.org/features/ixf-export/ - - -IXP_API_JSONEXPORTSCHEMA_PUBLIC=true - - -####################################################################################### -### Skinning -# -# See https://ixp-manager.readthedocs.io/en/latest/features/skinning.html -# -# VIEW_SKIN="myskin" - - -####################################################################################### -# See config/cache.php -CACHE_DRIVER=array - -####################################################################################### -# Session Lifetimes - standard and remember me. -# -# See https://docs.ixpmanager.org/usage/authentication/ -# -# SESSION_LIFETIME=120 -# AUTH_TOKEN_EXPIRE=43200 - -####################################################################################### -# PeeringDB Authentication -# -# PeeringDb's API is used, for example, to pre-populate new customer details. If you -# provide a working PeeringDb username/password then these will be used to get more -# complete information. -# -# IXP_API_PEERING_DB_USERNAME=username -# IXP_API_PEERING_DB_PASSWORD=password - - - -####################################################################################### -# Options for updating RIR Objects - see https://docs.ixpmanager.org/features/rir-objects/ - -# Your RIR password to allow the updating of a RIR object by email: -# IXP_API_RIR_PASSWORD=soopersecret - -# Rather than specifiying the destination address on the command line, you can set it here -# (useful for cronjobs and required for use with artisan schedule:run in >=v5.0) -# IXP_API_RIR_EMAIL_TO=test-dbm@ripe.net - -# Rather than specifiying the from address on the command line, you can set it here -# (useful for cronjobs and required for use with artisan schedule:run in >=v5.0) -# IXP_API_RIR_EMAIL_FROM=ixp@example.com - - - -####################################################################################### -# Utility paths - -# See: https://docs.ixpmanager.org/features/irrdb/ -IXP_IRRDB_BGPQ3_PATH=/usr/local/bin/bgpq3 - -# See: https://docs.ixpmanager.org/features/rpki/ -# IXP_RPKI_RTR1_HOST=192.0.2.11 -# IXP_RPKI_RTR1_PORT=3323 -# IXP_RPKI_RTR2_HOST=192.0.2.12 -# IXP_RPKI_RTR2_PORT=3323 - - -######################################################################################### -### Development Helpers -### - -# Disable HTML5 validation to test PHP code based request validators -# FORMER_LIVE_VALIDATION=false - - -######################################################################################### -### PeeringDB OAuth -### -### https://docs.ixpmanager.org/features/peeringdb-oauth/ -### - -# AUTH_PEERINGDB_ENABLED=true - -# PEERINGDB_OAUTH_CLIENT_ID="xxx" -# PEERINGDB_OAUTH_CLIENT_SECRET="xxx" -# PEERINGDB_OAUTH_REDIRECT="https://www.example.com/auth/login/peeringdb/callback" - -2FA_ENABLED=false - -#IXP_NO_TRANSIT_ASNS_EXCLUDE=174,1299 -#IXP_NO_TRANSIT_ASNS_OVERRIDE=25,45,174 diff --git a/.github/workflows/ci-ex-dusk.yml b/.github/workflows/ci-ex-dusk.yml index 8ed6c259d..9bf0a7cde 100644 --- a/.github/workflows/ci-ex-dusk.yml +++ b/.github/workflows/ci-ex-dusk.yml @@ -15,7 +15,7 @@ jobs: - uses: shogo82148/actions-setup-mysql@v1 with: mysql-version: '8.0' - - run: mysql -uroot -h127.0.0.1 -e 'CREATE DATABASE myapp_test' + - run: mysql -u root -h 127.0.0.1 -e 'CREATE DATABASE ixp_ci; CREATE USER IF NOT EXISTS ixp_ci@localhost IDENTIFIED BY "ixp_ci"; GRANT ALL ON ixp_ci.* TO ixp_ci@localhost;' - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install bgpq3 @@ -26,10 +26,12 @@ jobs: run: chmod -R 777 storage bootstrap/cache - name: Create Database run: | - cat data/ci/ci_test_db.sql | mysql --default-character-set=utf8mb4 -h 127.0.0.1 -u root myapp_test + cat data/ci/ci_test_db.sql | mysql --default-character-set=utf8mb4 -h localhost -u root ixp_ci - name: Set up php server run: | php ./artisan serve &>php-built-in.log & - name: Execute tests (Unit and Feature tests) via PHPUnit run: vendor/bin/phpunit --testsuite 'Docstore Test Suite,IXP Manager Test Suite' + - name: Static code analysis + run: vendor/bin/psalm diff --git a/.gitignore b/.gitignore index 77e32c5b6..b066738c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,12 @@ .env .env*.local +.env.by-vagrant.* .project .buildpath .settings/ .vagrant/ +.phpunit.cache/ auth.json /.fleet /vendor/ diff --git a/.idea/IXP-Manager.iml b/.idea/IXP-Manager.iml index 63711f952..7ad71edb4 100644 --- a/.idea/IXP-Manager.iml +++ b/.idea/IXP-Manager.iml @@ -4,9 +4,7 @@ - - @@ -21,6 +19,14 @@ + + + + + + + + diff --git a/.idea/blade.xml b/.idea/blade.xml index 7d4ff1403..1572b3317 100644 --- a/.idea/blade.xml +++ b/.idea/blade.xml @@ -82,6 +82,7 @@ + diff --git a/.idea/dictionaries/barryo.xml b/.idea/dictionaries/barryo.xml index 01f8b52c2..9c3c7a966 100644 --- a/.idea/dictionaries/barryo.xml +++ b/.idea/dictionaries/barryo.xml @@ -1,10 +1,25 @@ + asns + channelgroup + cust + dvli facs + irrdb + irrdblog ixps + lacp peeringdb + physicalinterface + svlid + switchid + switchport + switchportid + virtualinterface + virtualinterfaceid vlan + vlis \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index 33d546493..d2cc281fe 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -52,12 +52,10 @@ - - @@ -66,7 +64,6 @@ - @@ -91,7 +88,6 @@ - @@ -115,7 +111,6 @@ - @@ -162,7 +157,6 @@ - @@ -194,6 +188,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/phpspec.xml b/.idea/phpspec.xml index dac988cc2..3ba44d71a 100644 --- a/.idea/phpspec.xml +++ b/.idea/phpspec.xml @@ -20,6 +20,9 @@ + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml deleted file mode 100644 index 893c90bc0..000000000 --- a/.idea/sqldialects.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.phpstorm.meta.php/laravel.meta.php b/.phpstorm.meta.php/laravel.meta.php index f01a3dad1..6dc5f86d1 100644 --- a/.phpstorm.meta.php/laravel.meta.php +++ b/.phpstorm.meta.php/laravel.meta.php @@ -15,6 +15,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -30,6 +31,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -126,6 +128,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -156,6 +160,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -177,10 +182,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -216,8 +221,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -243,6 +248,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -258,6 +264,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -273,6 +280,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -369,6 +377,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -399,6 +409,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -420,10 +431,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -459,8 +470,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -486,6 +497,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -501,6 +513,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -516,6 +529,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -612,6 +626,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -642,6 +658,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -663,10 +680,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -702,8 +719,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -729,6 +746,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -744,6 +762,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -759,6 +778,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -855,6 +875,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -885,6 +907,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -906,10 +929,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -945,8 +968,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -972,6 +995,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -987,6 +1011,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -1002,6 +1027,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -1098,6 +1124,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -1128,6 +1156,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -1149,10 +1178,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -1188,8 +1217,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -1215,6 +1244,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -1230,6 +1260,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -1245,6 +1276,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -1341,6 +1373,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -1371,6 +1405,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -1392,10 +1427,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -1431,8 +1466,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -1458,6 +1493,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -1473,6 +1509,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -1488,6 +1525,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -1584,6 +1622,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -1614,6 +1654,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -1635,10 +1676,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -1674,8 +1715,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -1701,6 +1742,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -1716,6 +1758,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -1731,6 +1774,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -1827,6 +1871,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -1857,6 +1903,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -1878,10 +1925,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -1917,8 +1964,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -1944,6 +1991,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -1959,6 +2007,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -1974,6 +2023,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -2070,6 +2120,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -2100,6 +2152,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -2121,10 +2174,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -2160,8 +2213,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -2187,6 +2240,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -2202,6 +2256,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -2217,6 +2272,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -2313,6 +2369,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -2343,6 +2401,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -2364,10 +2423,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -2403,8 +2462,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -2430,6 +2489,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, @@ -2445,6 +2505,7 @@ '' => '@', 'Foil\Engine' => \Foil\Engine::class, 'IXP\Services\ApiCall' => \IXP\Services\RipeAtlas\ApiCall::class, + 'IXP\Services\Diagnostics' => \IXP\Services\Diagnostics::class, 'IXP\Services\Grapher' => \IXP\Services\Grapher::class, 'IXP\Services\IXF' => \IXP\Services\IXF::class, 'IXP\Services\LookingGlass' => \IXP\Services\LookingGlass::class, @@ -2460,6 +2521,7 @@ 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Concurrency\Console\InvokeSerializedClosureCommand' => \Illuminate\Concurrency\Console\InvokeSerializedClosureCommand::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, @@ -2556,6 +2618,8 @@ 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, + 'Illuminate\Foundation\Exceptions\Renderer\Renderer' => \Illuminate\Foundation\Exceptions\Renderer\Renderer::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, @@ -2586,6 +2650,7 @@ 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Support\Defer\DeferredCallbackCollection' => \Illuminate\Support\Defer\DeferredCallbackCollection::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Horizon\AutoScaler' => \Laravel\Horizon\AutoScaler::class, 'Laravel\Horizon\Console\WorkCommand' => \Laravel\Horizon\Console\WorkCommand::class, @@ -2607,10 +2672,10 @@ 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, + 'Spatie\ErrorSolutions\Contracts\SolutionProviderRepository' => \Spatie\ErrorSolutions\SolutionProviderRepository::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, 'Spatie\Ignition\Config\IgnitionConfig' => \Spatie\Ignition\Config\IgnitionConfig::class, 'Spatie\Ignition\Contracts\ConfigManager' => \Spatie\Ignition\Config\FileConfigManager::class, - 'Spatie\Ignition\Contracts\SolutionProviderRepository' => \Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository::class, 'Spatie\Ignition\Ignition' => \Spatie\Ignition\Ignition::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder::class, 'Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler' => \Spatie\LaravelIgnition\Recorders\DumpRecorder\MultiDumpHandler::class, @@ -2646,8 +2711,8 @@ 'events' => \Illuminate\Events\Dispatcher::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.cloud' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\LocalFilesystemAdapter::class, 'flare.logger' => \Monolog\Logger::class, 'former' => \Former\Former::class, 'former.dispatcher' => \Former\MethodDispatcher::class, @@ -2673,6 +2738,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\EncryptedStore::class, diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results deleted file mode 100644 index 648430f1b..000000000 --- a/.phpunit.cache/test-results +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Tests\\Browser\\ContactControllerTest::testAdd":8,"Tests\\Browser\\ContactControllerTest::testAddCustAdmin":8,"Tests\\Browser\\CoreBundleControllerTest::testAddWizard":8,"Tests\\Browser\\CustomerEquipmentControllerTest::testColocatedEquipment":8,"Tests\\Browser\\ExampleTest::testBasicExample":8,"Tests\\Browser\\InfrastructureControllerTest::testAdd":8,"Tests\\Browser\\IpAddressControllerTest::testIpAddress":8,"Tests\\Browser\\IrrdbConfigControllerTest::testIRRDBConfig":8,"Tests\\Browser\\LocationControllerTest::testAdd":8,"Tests\\Browser\\LoginTest::testExample":8,"Tests\\Browser\\PeeringManagerControllerTest::testPeeringManager":8,"Tests\\Browser\\RouterControllerTest::testAdd":8,"Tests\\Browser\\SwitchControllerTest::testAdd":8,"Tests\\Browser\\SwitchPortControllerTest::testSwitchPort":8,"Tests\\Browser\\User2FAControllerTest::test":7,"Tests\\Browser\\UserControllerTest::testAdd":8,"Tests\\Browser\\UserControllerTest::testAddCustAdmin":8,"Tests\\Browser\\UserControllerTest::testSuperAdminPrivs":8,"Tests\\Browser\\UserRememberTokenControllerTest::testAdd":8,"Tests\\Browser\\VendorControllerTest::testVendor":8,"Tests\\Browser\\VirtualInterfaceControllerTest::testAddWizard":8,"Tests\\Browser\\VlanControllerTest::testAdd":8,"Tests\\Utils\\IxfMemberExportTest::testIxfMemberExportGeneration":7},"times":{"Tests\\Browser\\CoreBundleControllerTest::testAddWizard":13.516,"Tests\\Browser\\ApiKeyControllerTest::test":2.482,"Browser\\CabinetControllerTest::testCabinet":2.842,"Browser\\ConsoleServerControllerTest::testConsoleServers":6.315,"Tests\\Browser\\ContactControllerTest::testAdd":5.251,"Tests\\Browser\\ContactControllerTest::testAddCustAdmin":2.071,"Tests\\Browser\\CustomerEquipmentControllerTest::testColocatedEquipment":2.533,"Tests\\Browser\\InfrastructureControllerTest::testAdd":4.879,"Tests\\Browser\\IpAddressControllerTest::testIpAddress":7.716,"Tests\\Browser\\IrrdbConfigControllerTest::testIRRDBConfig":2.445,"Tests\\Browser\\LocationControllerTest::testAdd":4.669,"Tests\\Browser\\LoginTest::testExample":0.799,"Tests\\Browser\\PeeringManagerControllerTest::testPeeringManager":4.007,"Tests\\Browser\\RouterControllerTest::testAdd":3.741,"Tests\\Browser\\SwitchControllerTest::testAdd":3.981,"Tests\\Browser\\SwitchPortControllerTest::testSwitchPort":3.825,"Tests\\Browser\\User2FAControllerTest::test":13.053,"Tests\\Browser\\UserControllerTest::testAdd":11.566,"Tests\\Browser\\UserControllerTest::testAddCustAdmin":2.972,"Tests\\Browser\\UserControllerTest::testSuperAdminPrivs":6.978,"Tests\\Browser\\UserRememberTokenControllerTest::testAdd":3.035,"Tests\\Browser\\VendorControllerTest::testVendor":2.305,"Tests\\Browser\\VirtualInterfaceControllerTest::testAddWizard":13.413,"Tests\\Browser\\VlanControllerTest::testAdd":4.591,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testEmptyArray":0.013,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testOneElementArray":0,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testTwoElementArray":0,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testThreeElementArray":0,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testFourElementArray":0,"Tests\\Utils\\Foil\\Extensions\\IXPTest::testFiveElementArray":0,"Tests\\Utils\\IxfMemberExportTest::testIxfMemberExportGeneration":0.07}} \ No newline at end of file diff --git a/database/migrations/2024_05_29_102028_reset-views.php b/2024_05_29_102028_reset-views.php similarity index 100% rename from database/migrations/2024_05_29_102028_reset-views.php rename to 2024_05_29_102028_reset-views.php diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5d96ba552..4e1041da9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,14 +31,14 @@ need contributors to follow so that we can accept them. ## Submitting Changes -* Sign the [Contributor License Agreement](https://docs.ixpmanager.org/dev/cla/) (`gpg --clearsign inex-cla.txt`) and email it to ''operations (at) inex (dot) ie''. +* Sign the [Contributor License Agreement](https://docs.ixpmanager.org/latest/dev/cla/) (`gpg --clearsign inex-cla.txt`) and email it to ''operations (at) inex (dot) ie''. * Push your changes to a topic branch in your fork of the repository. * Submit a pull request to the repository in the inex organisation. * Submit a parallel pull request [with new/updated documentation](http://docs.ixpmanager.org/dev/docs/) # Additional Resources -* [Contributor License Agreement](https://docs.ixpmanager.org/dev/cla/) +* [Contributor License Agreement](https://docs.ixpmanager.org/latest/dev/cla/) * [General GitHub documentation](http://help.github.com/) * [GitHub pull request documentation](http://help.github.com/send-pull-requests/) * [IXP Manager Mailing List](https://www.inex.ie/mailman/listinfo/ixpmanager) diff --git a/README.md b/README.md index af2c07827..6b59a5773 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@ and especially new and small IXPs looking to expand. * [IXP Manager Website](https://www.ixpmanager.org) * [Documentation](https://docs.ixpmanager.org) including: - * Installation [overview](https://docs.ixpmanager.org/install/), - [by automated script](https://docs.ixpmanager.org/install/automated-script/), - and [manually](https://docs.ixpmanager.org/install/manually/) - * [Upgrade Instructions](https://docs.ixpmanager.org/install/upgrading/) + * Installation [overview](https://docs.ixpmanager.org/latest/install/), + [by automated script](https://docs.ixpmanager.org/latest/install/automated-script/), + and [manually](https://docs.ixpmanager.org/latest/install/manually/) + * [Upgrade Instructions](https://docs.ixpmanager.org/latest/install/upgrading/) * [Releases](https://github.com/inex/IXP-Manager/releases) * [List of Users](https://www.ixpmanager.org/community/world-map) ([register here](https://www.ixpmanager.org/community/users/submit)) * [How to Get Help](https://www.ixpmanager.org/support) diff --git a/Vagrantfile b/Vagrantfile index 63e6c76db..a8c8bc994 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,29 +2,38 @@ # vi: set ft=ruby : Vagrant.configure(2) do |config| - config.vm.box = "ubuntu/focal64" + config.vm.box = "bento/ubuntu-24.04" config.vm.network "forwarded_port", guest: 80, host: 8088 config.vm.network "forwarded_port", guest: 3306, host: 33061 - config.vm.synced_folder ".", "/vagrant/", id: "vagrant-root0", - owner: "vagrant" - config.vm.synced_folder "./storage", "/vagrant/storage", id: "vagrant-root1", - owner: "vagrant", - group: "www-data", - mount_options: ["dmode=775,fmode=664"] - - config.vm.synced_folder "./bootstrap/cache", "/vagrant/bootstrap/cache", id: "vagrant-root4", - owner: "vagrant", - group: "www-data", - mount_options: ["dmode=775,fmode=664"] - - - config.vm.provider "virtualbox" do |vb| - vb.memory = "1536" - vb.gui = true +# config.vm.provider "virtualbox" do |vb| +# vb.memory = "1536" +# vb.gui = true +# +# config.vm.synced_folder ".", "/vagrant/", id: "vagrant-root0", +# owner: "vagrant" +# +# config.vm.synced_folder "./storage", "/vagrant/storage", id: "vagrant-root1", +# owner: "vagrant", +# group: "www-data", +# mount_options: ["dmode=775,fmode=664"] +# +# config.vm.synced_folder "./bootstrap/cache", "/vagrant/bootstrap/cache", id: "vagrant-root4", +# owner: "vagrant", +# group: "www-data", +# mount_options: ["dmode=775,fmode=664"] +# +# end + + config.vm.provider "parallels" do |prl| + prl.memory = 2048 + prl.name = "ixpm-vagrant-24.04" + prl.cpus = 2 + + # config.vm.synced_folder ".", "/vagrant/", mount_options: ["share"] end - config.vm.provision :shell, path: "bootstrap.sh" + config.vm.provision :shell, path: "tools/vagrant/bootstrap.sh" end diff --git a/_ide_helper.php b/_ide_helper.php index 93f3f021d..903397a73 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 11.7.0. + * Generated for Laravel 11.25.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -566,6 +566,7 @@ * @param string $abstract * @param array $parameters * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException * @static */ public static function make($abstract, $parameters = []) { @@ -656,6 +657,26 @@ { /** @var \Illuminate\Foundation\Application $instance */ return $instance->handleCommand($input); + } + /** + * Determine if the framework's base configuration should be merged. + * + * @return bool + * @static + */ public static function shouldMergeFrameworkConfiguration() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->shouldMergeFrameworkConfiguration(); + } + /** + * Indicate that the framework's base configuration should not be merged. + * + * @return \Illuminate\Foundation\Application + * @static + */ public static function dontMergeFrameworkConfiguration() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->dontMergeFrameworkConfiguration(); } /** * Determine if middleware has been disabled for the application. @@ -817,7 +838,7 @@ /** * Get the service providers that have been loaded. * - * @return array + * @return array * @static */ public static function getLoadedProviders() { @@ -993,6 +1014,18 @@ { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->when($concrete); + } + /** + * Define a contextual binding based on an attribute. + * + * @param string $attribute + * @param \Closure $handler + * @return void + * @static + */ public static function whenHasAttribute($attribute, $handler) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->whenHasAttribute($attribute, $handler); } /** * Returns true if the container can return an entry for the given identifier. @@ -1329,6 +1362,17 @@ { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->build($concrete); + } + /** + * Resolve a dependency based on an attribute. + * + * @param \ReflectionAttribute $attribute + * @return mixed + * @static + */ public static function resolveFromAttribute($attribute) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->resolveFromAttribute($attribute); } /** * Register a new before resolving callback for all types. @@ -1365,6 +1409,30 @@ { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->afterResolving($abstract, $callback); + } + /** + * Register a new after resolving attribute callback for all types. + * + * @param string $attribute + * @param \Closure $callback + * @return void + * @static + */ public static function afterResolvingAttribute($attribute, $callback) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->afterResolvingAttribute($attribute, $callback); + } + /** + * Fire all of the after resolving attribute callbacks. + * + * @param \ReflectionAttribute[] $abstract + * @param mixed $object + * @return void + * @static + */ public static function fireAfterResolvingAttributeCallbacks($attributes, $object) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->fireAfterResolvingAttributeCallbacks($attributes, $object); } /** * Get the container's bindings. @@ -1498,6 +1566,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -2339,6 +2408,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -3516,13 +3586,23 @@ { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->serializeAndRestore($serializeAndRestore); + } + /** + * Get the batches that have been dispatched. + * + * @return array + * @static + */ public static function dispatchedBatches() + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->dispatchedBatches(); } } /** * * * @see \Illuminate\Cache\CacheManager - * @mixin \Illuminate\Cache\Repository + * @see \Illuminate\Cache\Repository */ class Cache { /** * Get a cache store instance by name, wrapped in a repository. @@ -3872,6 +3952,21 @@ { /** @var \Illuminate\Cache\Repository $instance */ return $instance->rememberForever($key, $callback); + } + /** + * Retrieve an item from the cache by key, refreshing it in the background if it is stale. + * + * @template TCacheValue + * @param string $key + * @param \Illuminate\Cache\array{ 0: \DateTimeInterface|\DateInterval|int, 1: \DateTimeInterface|\DateInterval|int } $ttl + * @param \Illuminate\Cache\(callable(): TCacheValue) $callback + * @param \Illuminate\Cache\array{ seconds?: int, owner?: string }|null $lock + * @return \Illuminate\Cache\TCacheValue + * @static + */ public static function flexible($key, $ttl, $callback, $lock = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->flexible($key, $ttl, $callback, $lock); } /** * Remove an item from the cache. @@ -3991,7 +4086,7 @@ /** * Get the event dispatcher instance. * - * @return \Illuminate\Contracts\Events\Dispatcher + * @return \Illuminate\Contracts\Events\Dispatcher|null * @static */ public static function getEventDispatcher() { @@ -4059,6 +4154,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -4350,6 +4446,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -4543,6 +4640,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -4874,6 +4972,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -4923,6 +5022,39 @@ { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->macroCall($method, $parameters); + } + /** + * Get a human-readable name for the given connection driver. + * + * @return string + * @static + */ public static function getDriverTitle() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDriverTitle(); + } + /** + * Run an insert statement against the database. + * + * @param string $query + * @param array $bindings + * @param string|null $sequence + * @return bool + * @static + */ public static function insert($query, $bindings = [], $sequence = null) + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->insert($query, $bindings, $sequence); + } + /** + * Get the connection's last insert ID. + * + * @return string|int|null + * @static + */ public static function getLastInsertId() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getLastInsertId(); } /** * Determine if the connected database is a MariaDB database. @@ -5095,18 +5227,6 @@ { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->cursor($query, $bindings, $useReadPdo); - } - /** - * Run an insert statement against the database. - * - * @param string $query - * @param array $bindings - * @return bool - * @static - */ public static function insert($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->insert($query, $bindings); } /** * Run an update statement against the database. @@ -5166,6 +5286,16 @@ { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->unprepared($query); + } + /** + * Get the number of open connections for the database. + * + * @return int|null + * @static + */ public static function threadCount() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->threadCount(); } /** * Execute the given callback in "dry run" mode. @@ -5838,8 +5968,8 @@ /** * Register an event listener with the dispatcher. * - * @param \Closure|string|array $events - * @param \Closure|string|array|null $listener + * @param \Illuminate\Events\Queued\Closure|\Closure|string|array $events + * @param \Illuminate\Events\Queued\Closure|\Closure|string|array|null $listener * @return void * @static */ public static function listen($events, $listener = null) @@ -6021,6 +6151,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -6269,7 +6400,7 @@ * * @param string $path * @param string $algorithm - * @return string + * @return string|false * @static */ public static function hash($path, $algorithm = 'md5') { @@ -6751,6 +6882,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -6836,7 +6968,7 @@ /** * Define a new ability. * - * @param string $ability + * @param \BackedEnum|string $ability * @param callable|array|string $callback * @return \Illuminate\Auth\Access\Gate * @throws \InvalidArgumentException @@ -6896,7 +7028,7 @@ /** * Determine if all of the given abilities should be granted for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $ability + * @param \Illuminate\Auth\Access\iterable|\BackedEnum|string $ability * @param array|mixed $arguments * @return bool * @static @@ -6908,7 +7040,7 @@ /** * Determine if any of the given abilities should be denied for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $ability + * @param \Illuminate\Auth\Access\iterable|\BackedEnum|string $ability * @param array|mixed $arguments * @return bool * @static @@ -6920,7 +7052,7 @@ /** * Determine if all of the given abilities should be granted for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param \Illuminate\Auth\Access\iterable|\BackedEnum|string $abilities * @param array|mixed $arguments * @return bool * @static @@ -6932,7 +7064,7 @@ /** * Determine if any one of the given abilities should be granted for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param \Illuminate\Auth\Access\iterable|\BackedEnum|string $abilities * @param array|mixed $arguments * @return bool * @static @@ -6944,7 +7076,7 @@ /** * Determine if all of the given abilities should be denied for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param \Illuminate\Auth\Access\iterable|\BackedEnum|string $abilities * @param array|mixed $arguments * @return bool * @static @@ -6956,7 +7088,7 @@ /** * Determine if the given ability should be granted for the current user. * - * @param string $ability + * @param \BackedEnum|string $ability * @param array|mixed $arguments * @return \Illuminate\Auth\Access\Response * @throws \Illuminate\Auth\Access\AuthorizationException @@ -6969,7 +7101,7 @@ /** * Inspect the user for the given ability. * - * @param string $ability + * @param \BackedEnum|string $ability * @param array|mixed $arguments * @return \Illuminate\Auth\Access\Response * @static @@ -7208,6 +7340,18 @@ { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getDefaultDriver(); + } + /** + * Verifies that the configuration is less than or equal to what is configured. + * + * @param array $value + * @return bool + * @internal + * @static + */ public static function verifyConfiguration($value) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->verifyConfiguration($value); } /** * Get a driver instance. @@ -7312,7 +7456,7 @@ * @method static \Illuminate\Http\Client\PendingRequest beforeSending(callable $callback) * @method static \Illuminate\Http\Client\PendingRequest throw(callable|null $callback = null) * @method static \Illuminate\Http\Client\PendingRequest throwIf(callable|bool $condition) - * @method static \Illuminate\Http\Client\PendingRequest throwUnless(bool $condition) + * @method static \Illuminate\Http\Client\PendingRequest throwUnless(callable|bool $condition) * @method static \Illuminate\Http\Client\PendingRequest dump() * @method static \Illuminate\Http\Client\PendingRequest dd() * @method static \Illuminate\Http\Client\Response get(string $url, array|string|null $query = null) @@ -7586,6 +7730,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -7911,6 +8056,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -8371,7 +8517,7 @@ * Assert if a mailable was sent based on a truth-test callback. * * @param string|\Closure $mailable - * @param callable|int|null $callback + * @param callable|array|string|int|null $callback * @return void * @static */ public static function assertSent($mailable, $callback = null) @@ -8395,7 +8541,7 @@ * Determine if a mailable was not sent based on a truth-test callback. * * @param string|\Closure $mailable - * @param callable|null $callback + * @param callable|array|string|null $callback * @return void * @static */ public static function assertNotSent($mailable, $callback = null) @@ -8427,7 +8573,7 @@ * Assert if a mailable was queued based on a truth-test callback. * * @param string|\Closure $mailable - * @param callable|int|null $callback + * @param callable|array|string|int|null $callback * @return void * @static */ public static function assertQueued($mailable, $callback = null) @@ -8439,7 +8585,7 @@ * Determine if a mailable was not queued based on a truth-test callback. * * @param string|\Closure $mailable - * @param callable|null $callback + * @param callable|array|string|null $callback * @return void * @static */ public static function assertNotQueued($mailable, $callback = null) @@ -8944,6 +9090,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -9660,7 +9807,7 @@ /** * Create a new redirect response to a named route. * - * @param string $route + * @param \BackedEnum|string $route * @param mixed $parameters * @param int $status * @param array $headers @@ -9674,7 +9821,7 @@ /** * Create a new redirect response to a signed named route. * - * @param string $route + * @param \BackedEnum|string $route * @param mixed $parameters * @param \DateTimeInterface|\DateInterval|int|null $expiration * @param int $status @@ -9689,7 +9836,7 @@ /** * Create a new redirect response to a signed named route. * - * @param string $route + * @param \BackedEnum|string $route * @param \DateTimeInterface|\DateInterval|int|null $expiration * @param mixed $parameters * @param int $status @@ -9762,6 +9909,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -11764,6 +11912,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -12081,6 +12230,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -12131,10 +12281,10 @@ * @method static \Illuminate\Routing\RouteRegistrar whereIn(array|string $parameters, array $values) * @method static \Illuminate\Routing\RouteRegistrar as(string $value) * @method static \Illuminate\Routing\RouteRegistrar controller(string $controller) - * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) + * @method static \Illuminate\Routing\RouteRegistrar domain(\BackedEnum|string $value) * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) * @method static \Illuminate\Routing\RouteRegistrar missing(\Closure $missing) - * @method static \Illuminate\Routing\RouteRegistrar name(string $value) + * @method static \Illuminate\Routing\RouteRegistrar name(\BackedEnum|string $value) * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) * @method static \Illuminate\Routing\RouteRegistrar scopeBindings() @@ -12870,7 +13020,7 @@ /** * Alias for the "currentRouteUses" method. * - * @param array $patterns + * @param array|string $patterns * @return bool * @static */ public static function uses(...$patterns) @@ -12980,6 +13130,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -13029,6 +13180,17 @@ { /** @var \Illuminate\Routing\Router $instance */ return $instance->macroCall($method, $parameters); + } + /** + * Call the given Closure with this instance then return the instance. + * + * @param \Illuminate\Routing\(callable($this): mixed)|null $callback + * @return \Illuminate\Routing\($callback is null ? \Illuminate\Support\HigherOrderTapProxy : $this) + * @static + */ public static function tap($callback = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->tap($callback); } /** * @@ -13496,6 +13658,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -14049,6 +14212,16 @@ { /** @var \Illuminate\Session\Store $instance */ $instance->setName($name); + } + /** + * Get the current session ID. + * + * @return string + * @static + */ public static function id() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->id(); } /** * Get the current session ID. @@ -14191,6 +14364,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -14245,7 +14419,7 @@ * Get a filesystem instance. * * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function drive($name = null) { @@ -14256,7 +14430,7 @@ * Get a filesystem instance. * * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function disk($name = null) { @@ -14277,7 +14451,7 @@ * Build an on-demand disk. * * @param string|array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function build($config) { @@ -14288,18 +14462,19 @@ * Create an instance of the local driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $name + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static - */ public static function createLocalDriver($config) + */ public static function createLocalDriver($config, $name = 'local') { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createLocalDriver($config); + return $instance->createLocalDriver($config, $name); } /** * Create an instance of the ftp driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function createFtpDriver($config) { @@ -14310,7 +14485,7 @@ * Create an instance of the sftp driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function createSftpDriver($config) { @@ -14332,7 +14507,7 @@ * Create a scoped driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function createScopedDriver($config) { @@ -14415,39 +14590,85 @@ { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->setApplication($app); + } + /** + * Determine if temporary URLs can be generated. + * + * @return bool + * @static + */ public static function providesTemporaryUrls() + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->providesTemporaryUrls(); + } + /** + * Get a temporary URL for the file at the given path. + * + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return string + * @static + */ public static function temporaryUrl($path, $expiration, $options = []) + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->temporaryUrl($path, $expiration, $options); + } + /** + * Specify the name of the disk the adapter is managing. + * + * @param string $disk + * @return \Illuminate\Filesystem\LocalFilesystemAdapter + * @static + */ public static function diskName($disk) + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->diskName($disk); + } + /** + * Indiate that signed URLs should serve the corresponding files. + * + * @param bool $serve + * @param \Closure|null $urlGeneratorResolver + * @return \Illuminate\Filesystem\LocalFilesystemAdapter + * @static + */ public static function shouldServeSignedUrls($serve = true, $urlGeneratorResolver = null) + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->shouldServeSignedUrls($serve, $urlGeneratorResolver); } /** * Assert that the given file or directory exists. * * @param string|array $path * @param string|null $content - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function assertExists($path, $content = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->assertExists($path, $content); } /** * Assert that the given file or directory does not exist. * * @param string|array $path - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function assertMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->assertMissing($path); } /** * Assert that the given directory is empty. * * @param string $path - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Filesystem\LocalFilesystemAdapter * @static */ public static function assertDirectoryEmpty($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->assertDirectoryEmpty($path); } /** @@ -14457,8 +14678,8 @@ * @return bool * @static */ public static function exists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->exists($path); } /** @@ -14468,8 +14689,8 @@ * @return bool * @static */ public static function missing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->missing($path); } /** @@ -14479,8 +14700,8 @@ * @return bool * @static */ public static function fileExists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->fileExists($path); } /** @@ -14490,8 +14711,8 @@ * @return bool * @static */ public static function fileMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->fileMissing($path); } /** @@ -14501,8 +14722,8 @@ * @return bool * @static */ public static function directoryExists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->directoryExists($path); } /** @@ -14512,8 +14733,8 @@ * @return bool * @static */ public static function directoryMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->directoryMissing($path); } /** @@ -14523,8 +14744,8 @@ * @return string * @static */ public static function path($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->path($path); } /** @@ -14534,8 +14755,8 @@ * @return string|null * @static */ public static function get($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->get($path); } /** @@ -14546,8 +14767,8 @@ * @return array|null * @static */ public static function json($path, $flags = 0) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->json($path, $flags); } /** @@ -14560,20 +14781,35 @@ * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ public static function response($path, $name = null, $headers = [], $disposition = 'inline') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->response($path, $name, $headers, $disposition); } /** * Create a streamed download response for a given file. * + * @param \Illuminate\Http\Request $request * @param string $path * @param string|null $name + * @param array $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ public static function serve($request, $path, $name = null, $headers = []) + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->serve($request, $path, $name, $headers); + } + /** + * Create a streamed download response for a given file. + * + * @param string $path + * @param string|null $name + * @param array $headers * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static */ public static function download($path, $name = null, $headers = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->download($path, $name, $headers); } /** @@ -14585,8 +14821,8 @@ * @return string|bool * @static */ public static function put($path, $contents, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->put($path, $contents, $options); } /** @@ -14598,8 +14834,8 @@ * @return string|false * @static */ public static function putFile($path, $file = null, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->putFile($path, $file, $options); } /** @@ -14612,8 +14848,8 @@ * @return string|false * @static */ public static function putFileAs($path, $file, $name = null, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->putFileAs($path, $file, $name, $options); } /** @@ -14623,8 +14859,8 @@ * @return string * @static */ public static function getVisibility($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->getVisibility($path); } /** @@ -14635,8 +14871,8 @@ * @return bool * @static */ public static function setVisibility($path, $visibility) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->setVisibility($path, $visibility); } /** @@ -14649,8 +14885,8 @@ * @static */ public static function prepend($path, $data, $separator = ' ') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->prepend($path, $data, $separator); } /** @@ -14663,8 +14899,8 @@ * @static */ public static function append($path, $data, $separator = ' ') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->append($path, $data, $separator); } /** @@ -14674,8 +14910,8 @@ * @return bool * @static */ public static function delete($paths) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->delete($paths); } /** @@ -14686,8 +14922,8 @@ * @return bool * @static */ public static function copy($from, $to) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->copy($from, $to); } /** @@ -14698,8 +14934,8 @@ * @return bool * @static */ public static function move($from, $to) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->move($from, $to); } /** @@ -14709,8 +14945,8 @@ * @return int * @static */ public static function size($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->size($path); } /** @@ -14720,8 +14956,8 @@ * @throws UnableToProvideChecksum * @static */ public static function checksum($path, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->checksum($path, $options); } /** @@ -14731,8 +14967,8 @@ * @return string|false * @static */ public static function mimeType($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->mimeType($path); } /** @@ -14742,8 +14978,8 @@ * @return int * @static */ public static function lastModified($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->lastModified($path); } /** @@ -14753,8 +14989,8 @@ * @return resource|null The path resource or null on failure. * @static */ public static function readStream($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->readStream($path); } /** @@ -14766,8 +15002,8 @@ * @return bool * @static */ public static function writeStream($path, $resource, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->writeStream($path, $resource, $options); } /** @@ -14778,33 +15014,9 @@ * @throws \RuntimeException * @static */ public static function url($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->url($path); - } - /** - * Determine if temporary URLs can be generated. - * - * @return bool - * @static - */ public static function providesTemporaryUrls() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->providesTemporaryUrls(); - } - /** - * Get a temporary URL for the file at the given path. - * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return string - * @throws \RuntimeException - * @static - */ public static function temporaryUrl($path, $expiration, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->temporaryUrl($path, $expiration, $options); } /** * Get a temporary upload URL for the file at the given path. @@ -14816,8 +15028,8 @@ * @throws \RuntimeException * @static */ public static function temporaryUploadUrl($path, $expiration, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->temporaryUploadUrl($path, $expiration, $options); } /** @@ -14828,8 +15040,8 @@ * @return array * @static */ public static function files($directory = null, $recursive = false) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->files($directory, $recursive); } /** @@ -14839,8 +15051,8 @@ * @return array * @static */ public static function allFiles($directory = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->allFiles($directory); } /** @@ -14851,8 +15063,8 @@ * @return array * @static */ public static function directories($directory = null, $recursive = false) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->directories($directory, $recursive); } /** @@ -14862,8 +15074,8 @@ * @return array * @static */ public static function allDirectories($directory = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->allDirectories($directory); } /** @@ -14873,8 +15085,8 @@ * @return bool * @static */ public static function makeDirectory($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->makeDirectory($path); } /** @@ -14884,8 +15096,8 @@ * @return bool * @static */ public static function deleteDirectory($directory) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->deleteDirectory($directory); } /** @@ -14894,8 +15106,8 @@ * @return \League\Flysystem\FilesystemOperator * @static */ public static function getDriver() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->getDriver(); } /** @@ -14904,8 +15116,8 @@ * @return \League\Flysystem\FilesystemAdapter * @static */ public static function getAdapter() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->getAdapter(); } /** @@ -14914,9 +15126,20 @@ * @return array * @static */ public static function getConfig() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->getConfig(); + } + /** + * Define a custom callback that generates file download responses. + * + * @param \Closure $callback + * @return void + * @static + */ public static function serveUsing($callback) + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + $instance->serveUsing($callback); } /** * Define a custom temporary URL builder callback. @@ -14925,8 +15148,8 @@ * @return void * @static */ public static function buildTemporaryUrlsUsing($callback) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ $instance->buildTemporaryUrlsUsing($callback); } /** @@ -14941,7 +15164,7 @@ * @static */ public static function when($value = null, $callback = null, $default = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->when($value, $callback, $default); } /** @@ -14956,7 +15179,7 @@ * @static */ public static function unless($value = null, $callback = null, $default = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->unless($value, $callback, $default); } /** @@ -14964,11 +15187,12 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) - { - \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + \Illuminate\Filesystem\LocalFilesystemAdapter::macro($name, $macro); } /** * Mix another object into the class. @@ -14979,8 +15203,8 @@ * @throws \ReflectionException * @static */ public static function mixin($mixin, $replace = true) - { - \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + \Illuminate\Filesystem\LocalFilesystemAdapter::mixin($mixin, $replace); } /** * Checks if macro is registered. @@ -14989,8 +15213,8 @@ * @return bool * @static */ public static function hasMacro($name) - { - return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + return \Illuminate\Filesystem\LocalFilesystemAdapter::hasMacro($name); } /** * Flush the existing macros. @@ -14998,8 +15222,8 @@ * @return void * @static */ public static function flushMacros() - { - \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + \Illuminate\Filesystem\LocalFilesystemAdapter::flushMacros(); } /** * Dynamically handle calls to the class. @@ -15010,8 +15234,8 @@ * @throws \BadMethodCallException * @static */ public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + { //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ return $instance->macroCall($method, $parameters); } } @@ -15151,7 +15375,7 @@ /** * Create a signed route URL for a named route. * - * @param string $name + * @param \BackedEnum|string $name * @param mixed $parameters * @param \DateTimeInterface|\DateInterval|int|null $expiration * @param bool $absolute @@ -15166,7 +15390,7 @@ /** * Create a temporary signed route URL for a named route. * - * @param string $name + * @param \BackedEnum|string $name * @param \DateTimeInterface|\DateInterval|int $expiration * @param array $parameters * @param bool $absolute @@ -15229,11 +15453,11 @@ /** * Get the URL to a named route. * - * @param string $name + * @param \BackedEnum|string $name * @param mixed $parameters * @param bool $absolute * @return string - * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException + * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException|\InvalidArgumentException * @static */ public static function route($name, $parameters = [], $absolute = true) { @@ -15492,6 +15716,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -15883,6 +16108,17 @@ { /** @var \Illuminate\View\Factory $instance */ $instance->addLocation($location); + } + /** + * Prepend a location to the array of view locations. + * + * @param string $location + * @return void + * @static + */ public static function prependLocation($location) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->prependLocation($location); } /** * Add a new namespace to the loader. @@ -16073,6 +16309,7 @@ * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -17645,7 +17882,7 @@ * Begin querying the model on a given connection. * * @param string|null $connection - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function on($connection = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -17654,7 +17891,7 @@ /** * Begin querying the model on the write connection. * - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function onWriteConnection() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -17674,7 +17911,7 @@ * Begin querying a model with eager loading. * * @param array|string $relations - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function with($relations) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18019,11 +18256,23 @@ { //Method inherited from \Illuminate\Database\Eloquent\Model /** @var \Webpatser\Countries\Countries $instance */ return $instance->forceDelete(); + } + /** + * Force a hard destroy on a soft deleted model. + * + * This method protects developers from running forceDestroy when the trait is missing. + * + * @param \Illuminate\Support\Collection|array|int|string $ids + * @return bool|null + * @static + */ public static function forceDestroy($ids) + { //Method inherited from \Illuminate\Database\Eloquent\Model + return \Webpatser\Countries\Countries::forceDestroy($ids); } /** * Begin querying the model. * - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function query() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18032,7 +18281,7 @@ /** * Get a new query builder for the model's table. * - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newQuery() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18042,7 +18291,7 @@ /** * Get a new query builder that doesn't have any global scopes or eager loading. * - * @return \Illuminate\Database\Eloquent\Builder|static + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newModelQuery() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18052,7 +18301,7 @@ /** * Get a new query builder with no relationships loaded. * - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newQueryWithoutRelationships() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18062,8 +18311,8 @@ /** * Register the global scopes for this builder instance. * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return \Illuminate\Database\Eloquent\Builder + * @param \Illuminate\Database\Eloquent\Builder $builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function registerGlobalScopes($builder) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18073,7 +18322,7 @@ /** * Get a new query builder that doesn't have any global scopes. * - * @return \Illuminate\Database\Eloquent\Builder|static + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newQueryWithoutScopes() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18084,7 +18333,7 @@ * Get a new query instance without a given scope. * * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newQueryWithoutScope($scope) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18095,7 +18344,7 @@ * Get a new query to restore one or more models by their queueable IDs. * * @param array|int $ids - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Database\Eloquent\Builder * @static */ public static function newQueryForRestoration($ids) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18106,23 +18355,12 @@ * Create a new Eloquent query builder for the model. * * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Eloquent\Builder|static + * @return \Illuminate\Database\Eloquent\Builder<*> * @static */ public static function newEloquentBuilder($query) { //Method inherited from \Illuminate\Database\Eloquent\Model /** @var \Webpatser\Countries\Countries $instance */ return $instance->newEloquentBuilder($query); - } - /** - * Create a new Eloquent Collection instance. - * - * @param array $models - * @return \Illuminate\Database\Eloquent\Collection - * @static - */ public static function newCollection($models = []) - { //Method inherited from \Illuminate\Database\Eloquent\Model - /** @var \Webpatser\Countries\Countries $instance */ - return $instance->newCollection($models); } /** * Create a new pivot model instance. @@ -18535,10 +18773,10 @@ /** * Retrieve the model for a bound value. * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Relations\Relation $query + * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Contracts\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Relations\Relation $query * @param mixed $value * @param string|null $field - * @return \Illuminate\Database\Eloquent\Relations\Relation + * @return \Illuminate\Contracts\Database\Eloquent\Builder * @static */ public static function resolveRouteBindingQuery($query, $value, $field = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -18847,7 +19085,7 @@ /** * Decode the given JSON back into an array or object. * - * @param string $value + * @param string|null $value * @param bool $asObject * @return mixed * @static @@ -19368,11 +19606,21 @@ */ public static function flushEventListeners() { //Method inherited from \Illuminate\Database\Eloquent\Model \Webpatser\Countries\Countries::flushEventListeners(); + } + /** + * Get the event map for the model. + * + * @return array + * @static + */ public static function dispatchesEvents() + { //Method inherited from \Illuminate\Database\Eloquent\Model + /** @var \Webpatser\Countries\Countries $instance */ + return $instance->dispatchesEvents(); } /** * Get the event dispatcher instance. * - * @return \Illuminate\Contracts\Events\Dispatcher + * @return \Illuminate\Contracts\Events\Dispatcher|null * @static */ public static function getEventDispatcher() { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19522,10 +19770,11 @@ /** * Define a one-to-one relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string|null $foreignKey * @param string|null $localKey - * @return \Illuminate\Database\Eloquent\Relations\HasOne + * @return \Illuminate\Database\Eloquent\Relations\HasOne * @static */ public static function hasOne($related, $foreignKey = null, $localKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19535,13 +19784,15 @@ /** * Define a has-one-through relationship. * - * @param string $related - * @param string $through + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @template TIntermediateModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related + * @param \Illuminate\Database\Eloquent\class-string $through * @param string|null $firstKey * @param string|null $secondKey * @param string|null $localKey * @param string|null $secondLocalKey - * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough + * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough * @static */ public static function hasOneThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19551,12 +19802,13 @@ /** * Define a polymorphic one-to-one relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string $name * @param string|null $type * @param string|null $id * @param string|null $localKey - * @return \Illuminate\Database\Eloquent\Relations\MorphOne + * @return \Illuminate\Database\Eloquent\Relations\MorphOne * @static */ public static function morphOne($related, $name, $type = null, $id = null, $localKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19566,11 +19818,12 @@ /** * Define an inverse one-to-one or many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string|null $foreignKey * @param string|null $ownerKey * @param string|null $relation - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo * @static */ public static function belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19584,7 +19837,7 @@ * @param string|null $type * @param string|null $id * @param string|null $ownerKey - * @return \Illuminate\Database\Eloquent\Relations\MorphTo + * @return \Illuminate\Database\Eloquent\Relations\MorphTo<\Illuminate\Database\Eloquent\Model, $this> * @static */ public static function morphTo($name = null, $type = null, $id = null, $ownerKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19604,8 +19857,12 @@ /** * Create a pending has-many-through or has-one-through relationship. * - * @param string|\Illuminate\Database\Eloquent\Relations\HasMany|\Illuminate\Database\Eloquent\Relations\HasOne $relationship - * @return \Illuminate\Database\Eloquent\PendingHasThroughRelationship + * @template TIntermediateModel of \Illuminate\Database\Eloquent\Model + * @param string|\Illuminate\Database\Eloquent\Relations\HasMany|\Illuminate\Database\Eloquent\Relations\HasOne $relationship + * @return \Illuminate\Database\Eloquent\( $relationship is string + * ? \Illuminate\Database\Eloquent\PendingHasThroughRelationship<\Illuminate\Database\Eloquent\Model, $this> + * : \Illuminate\Database\Eloquent\PendingHasThroughRelationship + * ) * @static */ public static function through($relationship) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19615,10 +19872,11 @@ /** * Define a one-to-many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string|null $foreignKey * @param string|null $localKey - * @return \Illuminate\Database\Eloquent\Relations\HasMany + * @return \Illuminate\Database\Eloquent\Relations\HasMany * @static */ public static function hasMany($related, $foreignKey = null, $localKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19628,13 +19886,15 @@ /** * Define a has-many-through relationship. * - * @param string $related - * @param string $through + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @template TIntermediateModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related + * @param \Illuminate\Database\Eloquent\class-string $through * @param string|null $firstKey * @param string|null $secondKey * @param string|null $localKey * @param string|null $secondLocalKey - * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough + * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough * @static */ public static function hasManyThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19644,12 +19904,13 @@ /** * Define a polymorphic one-to-many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string $name * @param string|null $type * @param string|null $id * @param string|null $localKey - * @return \Illuminate\Database\Eloquent\Relations\MorphMany + * @return \Illuminate\Database\Eloquent\Relations\MorphMany * @static */ public static function morphMany($related, $name, $type = null, $id = null, $localKey = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19659,14 +19920,15 @@ /** * Define a many-to-many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string|\Illuminate\Database\Eloquent\class-string<\Illuminate\Database\Eloquent\Model>|null $table * @param string|null $foreignPivotKey * @param string|null $relatedPivotKey * @param string|null $parentKey * @param string|null $relatedKey * @param string|null $relation - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany * @static */ public static function belongsToMany($related, $table = null, $foreignPivotKey = null, $relatedPivotKey = null, $parentKey = null, $relatedKey = null, $relation = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19676,7 +19938,8 @@ /** * Define a polymorphic many-to-many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string $name * @param string|null $table * @param string|null $foreignPivotKey @@ -19685,7 +19948,7 @@ * @param string|null $relatedKey * @param string|null $relation * @param bool $inverse - * @return \Illuminate\Database\Eloquent\Relations\MorphToMany + * @return \Illuminate\Database\Eloquent\Relations\MorphToMany * @static */ public static function morphToMany($related, $name, $table = null, $foreignPivotKey = null, $relatedPivotKey = null, $parentKey = null, $relatedKey = null, $relation = null, $inverse = false) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -19695,7 +19958,8 @@ /** * Define a polymorphic, inverse many-to-many relationship. * - * @param string $related + * @template TRelatedModel of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\class-string $related * @param string $name * @param string|null $table * @param string|null $foreignPivotKey @@ -19703,7 +19967,7 @@ * @param string|null $parentKey * @param string|null $relatedKey * @param string|null $relation - * @return \Illuminate\Database\Eloquent\Relations\MorphToMany + * @return \Illuminate\Database\Eloquent\Relations\MorphToMany * @static */ public static function morphedByMany($related, $name, $table = null, $foreignPivotKey = null, $relatedPivotKey = null, $parentKey = null, $relatedKey = null, $relation = null) { //Method inherited from \Illuminate\Database\Eloquent\Model @@ -20286,6 +20550,17 @@ { //Method inherited from \Illuminate\Database\Eloquent\Model /** @var \Webpatser\Countries\Countries $instance */ return $instance->totallyGuarded(); + } + /** + * Create a new Eloquent Collection instance. + * + * @param array $models + * @return \Illuminate\Database\Eloquent\TCollection + * @static + */ public static function newCollection($models = []) + { //Method inherited from \Illuminate\Database\Eloquent\Model + /** @var \Webpatser\Countries\Countries $instance */ + return $instance->newCollection($models); } } } @@ -21069,10 +21344,10 @@ * * * @static - */ public static function withStackFrameArguments($withStackFrameArguments = true) + */ public static function withStackFrameArguments($withStackFrameArguments = true, $forcePHPIniSetting = false) { /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->withStackFrameArguments($withStackFrameArguments); + return $instance->withStackFrameArguments($withStackFrameArguments, $forcePHPIniSetting); } /** * @@ -21472,7 +21747,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Create and return an un-saved model instance. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function make($attributes = []) { @@ -21548,7 +21823,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a basic where clause to the query. * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column + * @param \Illuminate\Database\Eloquent\(\Closure(static): mixed)|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean @@ -21562,11 +21837,11 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a basic where clause to the query, and return the first result. * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column + * @param \Illuminate\Database\Eloquent\(\Closure(static): mixed)|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static|null + * @return \Illuminate\Database\Eloquent\TModel|null * @static */ public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') { @@ -21576,7 +21851,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "or where" clause to the query. * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column + * @param \Illuminate\Database\Eloquent\(\Closure(static): mixed)|array|string|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static @@ -21589,7 +21864,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a basic "where not" clause to the query. * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column + * @param \Illuminate\Database\Eloquent\(\Closure(static): mixed)|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean @@ -21603,7 +21878,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "or where not" clause to the query. * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column + * @param \Illuminate\Database\Eloquent\(\Closure(static): mixed)|array|string|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static @@ -21639,7 +21914,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Create a collection of models from plain arrays. * * @param array $items - * @return \Illuminate\Database\Eloquent\Collection + * @return \Illuminate\Database\Eloquent\Collection * @static */ public static function hydrate($items) { @@ -21651,7 +21926,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param string $query * @param array $bindings - * @return \Illuminate\Database\Eloquent\Collection + * @return \Illuminate\Database\Eloquent\Collection * @static */ public static function fromQuery($query, $bindings = []) { @@ -21663,7 +21938,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param mixed $id * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null + * @return \Illuminate\Database\Eloquent\($id is (\Illuminate\Contracts\Support\Arrayable|array) ? \Illuminate\Database\Eloquent\Collection : TModel|null) * @static */ public static function find($id, $columns = []) { @@ -21675,7 +21950,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param \Illuminate\Contracts\Support\Arrayable|array $ids * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection + * @return \Illuminate\Database\Eloquent\Collection * @static */ public static function findMany($ids, $columns = []) { @@ -21687,8 +21962,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param mixed $id * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @return \Illuminate\Database\Eloquent\($id is (\Illuminate\Contracts\Support\Arrayable|array) ? \Illuminate\Database\Eloquent\Collection : TModel) + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function findOrFail($id, $columns = []) { @@ -21700,7 +21975,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param mixed $id * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\($id is (\Illuminate\Contracts\Support\Arrayable|array) ? \Illuminate\Database\Eloquent\Collection : TModel) * @static */ public static function findOrNew($id, $columns = []) { @@ -21710,10 +21985,14 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Find a model by its primary key or call a callback. * + * @template TValue * @param mixed $id - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|mixed + * @param \Illuminate\Database\Eloquent\(\Closure(): TValue)|list|string $columns + * @param \Illuminate\Database\Eloquent\(\Closure(): TValue)|null $callback + * @return \Illuminate\Database\Eloquent\( $id is (\Illuminate\Contracts\Support\Arrayable|array) + * ? \Illuminate\Database\Eloquent\Collection + * : TModel|TValue + * ) * @static */ public static function findOr($id, $columns = [], $callback = null) { @@ -21725,7 +22004,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function firstOrNew($attributes = [], $values = []) { @@ -21737,7 +22016,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function firstOrCreate($attributes = [], $values = []) { @@ -21749,7 +22028,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function createOrFirst($attributes = [], $values = []) { @@ -21761,7 +22040,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function updateOrCreate($attributes, $values = []) { @@ -21772,8 +22051,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Execute the query and get the first result or throw an exception. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @return \Illuminate\Database\Eloquent\TModel + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function firstOrFail($columns = []) { @@ -21783,9 +22062,10 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Execute the query and get the first result or call a callback. * - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed + * @template TValue + * @param \Illuminate\Database\Eloquent\(\Closure(): TValue)|list $columns + * @param \Illuminate\Database\Eloquent\(\Closure(): TValue)|null $callback + * @return \Illuminate\Database\Eloquent\TModel|\Illuminate\Database\Eloquent\TValue * @static */ public static function firstOr($columns = [], $callback = null) { @@ -21796,8 +22076,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Execute the query and get the first result if it's the sole matching record. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @return \Illuminate\Database\Eloquent\TModel + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @throws \Illuminate\Database\MultipleRecordsFoundException * @static */ public static function sole($columns = []) @@ -21821,7 +22101,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return mixed - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @throws \Illuminate\Database\MultipleRecordsFoundException * @static */ public static function soleValue($column) @@ -21834,7 +22114,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return mixed - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException * @static */ public static function valueOrFail($column) { @@ -21845,7 +22125,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Execute the query as a "select" statement. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection|static[] + * @return \Illuminate\Database\Eloquent\Collection * @static */ public static function get($columns = []) { @@ -21856,7 +22136,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Get the hydrated models without eager loading. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model[]|static[] + * @return array * @static */ public static function getModels($columns = []) { @@ -21866,8 +22146,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Eager load the relationships for the models. * - * @param array $models - * @return array + * @param array $models + * @return array * @static */ public static function eagerLoadRelations($models) { @@ -21899,7 +22179,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Get a lazy collection for the given query. * - * @return \Illuminate\Support\LazyCollection + * @return \Illuminate\Support\LazyCollection * @static */ public static function cursor() { @@ -21911,7 +22191,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @param string|null $key - * @return \Illuminate\Support\Collection + * @return \Illuminate\Support\Collection * @static */ public static function pluck($column, $key = null) { @@ -21966,7 +22246,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Save a new model and return the instance. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function create($attributes = []) { @@ -21977,7 +22257,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Save a new model and return the instance. Allow mass-assignment. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function forceCreate($attributes) { @@ -21988,7 +22268,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Save a new model instance with mass assignment without raising model events. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function forceCreateQuietly($attributes = []) { @@ -22054,7 +22334,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Set the relationships that should be eager loaded while removing any previously added eager loading specifications. * - * @param mixed $relations + * @param \Illuminate\Database\Eloquent\array): mixed)|string>|string $relations * @return \Illuminate\Database\Eloquent\Builder|static * @static */ public static function withOnly($relations) @@ -22066,7 +22346,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Create a new instance of the model being queried. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function newModelInstance($attributes = []) { @@ -22172,7 +22452,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Get the model instance being queried. * - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\TModel * @static */ public static function getModel() { @@ -22182,8 +22462,9 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Set a model instance for the model being queried. * - * @param \Illuminate\Database\Eloquent\Model $model - * @return \Illuminate\Database\Eloquent\Builder|static + * @template TModelNew of \Illuminate\Database\Eloquent\Model + * @param \Illuminate\Database\Eloquent\TModelNew $model + * @return \Illuminate\Database\Eloquent\static * @static */ public static function setModel($model) { @@ -22246,7 +22527,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Chunk the results of the query. * * @param int $count - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(\Illuminate\Support\Collection, int): mixed $callback * @return bool * @static */ public static function chunk($count, $callback) @@ -22257,9 +22538,10 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Run a map over each item while chunking. * - * @param callable $callback + * @template TReturn + * @param \Illuminate\Database\Eloquent\callable(TValue): TReturn $callback * @param int $count - * @return \Illuminate\Support\Collection + * @return \Illuminate\Support\Collection * @static */ public static function chunkMap($callback, $count = 1000) { @@ -22269,7 +22551,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Execute a callback over each item while chunking. * - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(TValue, int): mixed $callback * @param int $count * @return bool * @throws \RuntimeException @@ -22283,7 +22565,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Chunk the results of a query by comparing IDs. * * @param int $count - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(\Illuminate\Support\Collection, int): mixed $callback * @param string|null $column * @param string|null $alias * @return bool @@ -22297,7 +22579,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Chunk the results of a query by comparing IDs in descending order. * * @param int $count - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(\Illuminate\Support\Collection, int): mixed $callback * @param string|null $column * @param string|null $alias * @return bool @@ -22311,7 +22593,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Chunk the results of a query by comparing IDs in a given order. * * @param int $count - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(\Illuminate\Support\Collection, int): mixed $callback * @param string|null $column * @param string|null $alias * @param bool $descending @@ -22326,7 +22608,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Execute a callback over each item while chunking by ID. * - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable(TValue, int): mixed $callback * @param int $count * @param string|null $column * @param string|null $alias @@ -22381,7 +22663,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Execute the query and get the first result. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null + * @return \Illuminate\Database\Eloquent\TValue|null * @static */ public static function first($columns = []) { @@ -22392,7 +22674,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Execute the query and get the first result if it's the sole matching record. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null + * @return \Illuminate\Database\Eloquent\TValue * @throws \Illuminate\Database\RecordsNotFoundException * @throws \Illuminate\Database\MultipleRecordsFoundException * @static @@ -22404,7 +22686,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Pass the query to a given callback. * - * @param callable $callback + * @param \Illuminate\Database\Eloquent\callable($this): mixed $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static */ public static function tap($callback) @@ -22445,7 +22727,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query. * - * @param \Illuminate\Database\Eloquent\Relations\Relation|string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param string $operator * @param int $count * @param string $boolean @@ -22461,7 +22743,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param string $operator * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static @@ -22474,7 +22756,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param string $boolean * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static @@ -22487,7 +22769,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @return \Illuminate\Database\Eloquent\Builder|static * @static */ public static function orDoesntHave($relation) @@ -22498,7 +22780,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with where clauses. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|null $callback * @param string $operator * @param int $count @@ -22514,7 +22796,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * Also load the relationship with same condition. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|null $callback * @param string $operator * @param int $count @@ -22528,7 +22810,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with where clauses and an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|null $callback * @param string $operator * @param int $count @@ -22542,7 +22824,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with where clauses. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22554,7 +22836,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a relationship count / exists condition to the query with where clauses and an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22566,7 +22848,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param string $operator * @param int $count @@ -22582,7 +22864,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with an "or". * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param string $operator * @param int $count @@ -22596,7 +22878,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param string $boolean * @param \Closure|null $callback @@ -22610,7 +22892,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with an "or". * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22622,7 +22904,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|null $callback * @param string $operator @@ -22637,7 +22919,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|null $callback * @param string $operator @@ -22652,7 +22934,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static @@ -22665,7 +22947,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static @@ -22678,7 +22960,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a basic where clause to a relationship query. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value @@ -22692,7 +22974,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "or where" clause to a relationship query. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value @@ -22706,7 +22988,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship condition to the query with a where clause. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator @@ -22721,7 +23003,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a polymorphic relationship condition to the query with an "or where" clause. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param string|array $types * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator @@ -22736,7 +23018,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a morph-to relationship condition to the query. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param \Illuminate\Database\Eloquent\Model|string|null $model * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22748,7 +23030,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a not morph-to relationship condition to the query. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param \Illuminate\Database\Eloquent\Model|string $model * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22760,7 +23042,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a morph-to relationship condition to the query with an "or where" clause. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param \Illuminate\Database\Eloquent\Model|string|null $model * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22772,7 +23054,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a not morph-to relationship condition to the query with an "or where" clause. * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation * @param \Illuminate\Database\Eloquent\Model|string $model * @return \Illuminate\Database\Eloquent\Builder|static * @static @@ -22784,7 +23066,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a "belongs to" relationship where clause to the query. * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection<\Illuminate\Database\Eloquent\Model> $related + * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection $related * @param string|null $relationshipName * @param string $boolean * @return \Illuminate\Database\Eloquent\Builder|static @@ -22894,7 +23176,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Merge the where constraints from another query to the current query. * - * @param \Illuminate\Database\Eloquent\Builder $from + * @param \Illuminate\Database\Eloquent\Builder<*> $from * @return \Illuminate\Database\Eloquent\Builder|static * @static */ public static function mergeConstraintsFrom($from) @@ -22916,7 +23198,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a subselect expression to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException @@ -22941,7 +23223,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Makes "from" fetch from a subquery. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException @@ -22987,7 +23269,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Set the table which the query is targeting. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $table + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|\Illuminate\Contracts\Database\Query\Expression|string $table * @param string|null $as * @return \Illuminate\Database\Query\Builder * @static @@ -23063,7 +23345,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a subquery join clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator @@ -23081,7 +23363,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a lateral join clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @param string $type * @return \Illuminate\Database\Query\Builder @@ -23094,7 +23376,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a lateral left join to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @static @@ -23134,7 +23416,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a subquery left join to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator @@ -23177,7 +23459,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a subquery right join to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator @@ -23206,7 +23488,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a subquery cross join to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @static @@ -23292,6 +23574,61 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRaw($sql, $bindings); + } + /** + * Add a "where like" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param string $value + * @param bool $caseSensitive + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function whereLike($column, $value, $caseSensitive = false, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereLike($column, $value, $caseSensitive, $boolean, $not); + } + /** + * Add an "or where like" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param string $value + * @param bool $caseSensitive + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function orWhereLike($column, $value, $caseSensitive = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereLike($column, $value, $caseSensitive); + } + /** + * Add a "where not like" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param string $value + * @param bool $caseSensitive + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function whereNotLike($column, $value, $caseSensitive = false, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotLike($column, $value, $caseSensitive, $boolean); + } + /** + * Add an "or where not like" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param string $value + * @param bool $caseSensitive + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function orWhereNotLike($column, $value, $caseSensitive = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotLike($column, $value, $caseSensitive); } /** * Add a "where in" clause to the query. @@ -23716,7 +24053,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an exists clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $callback * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder @@ -23729,7 +24066,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an or exists clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $callback * @param bool $not * @return \Illuminate\Database\Query\Builder * @static @@ -23741,7 +24078,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a where not exists clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $callback * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static @@ -23753,7 +24090,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a where not exists clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $callback * @return \Illuminate\Database\Query\Builder * @static */ public static function orWhereNotExists($callback) @@ -24018,7 +24355,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a "where" clause to the query for multiple columns with "and" conditions between them. * - * @param string[] $columns + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns * @param mixed $operator * @param mixed $value * @param string $boolean @@ -24032,8 +24369,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "or where" clause to the query for multiple columns with "and" conditions between them. * - * @param string[] $columns - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns + * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Query\Builder * @static @@ -24043,10 +24380,10 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { return $instance->orWhereAll($columns, $operator, $value); } /** - * Add an "where" clause to the query for multiple columns with "or" conditions between them. + * Add a "where" clause to the query for multiple columns with "or" conditions between them. * - * @param string[] $columns - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns + * @param mixed $operator * @param mixed $value * @param string $boolean * @return \Illuminate\Database\Query\Builder @@ -24059,8 +24396,8 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "or where" clause to the query for multiple columns with "or" conditions between them. * - * @param string[] $columns - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns + * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Query\Builder * @static @@ -24068,6 +24405,33 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereAny($columns, $operator, $value); + } + /** + * Add a "where not" clause to the query for multiple columns where none of the conditions should be true. + * + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function whereNone($columns, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNone($columns, $operator, $value, $boolean); + } + /** + * Add an "or where not" clause to the query for multiple columns where none of the conditions should be true. + * + * @param \Illuminate\Contracts\Database\Query\Expression[]|\Closure[]|string[] $columns + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function orWhereNone($columns, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNone($columns, $operator, $value); } /** * Add a "group by" clause to the query. @@ -24232,7 +24596,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add an "order by" clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|\Illuminate\Contracts\Database\Query\Expression|string $column * @param string $direction * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException @@ -24245,7 +24609,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a descending "order by" clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|\Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Query\Builder * @static */ public static function orderByDesc($column) @@ -24385,7 +24749,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a union statement to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $query * @param bool $all * @return \Illuminate\Database\Query\Builder * @static @@ -24397,7 +24761,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Add a union all statement to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*> $query * @return \Illuminate\Database\Query\Builder * @static */ public static function unionAll($query) @@ -24682,7 +25046,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Insert new records into the table using a subquery. * * @param array $columns - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @return int * @static */ public static function insertUsing($columns, $query) @@ -24694,7 +25058,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Insert new records into the table using a subquery while ignoring errors. * * @param array $columns - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder<*>|string $query * @return int * @static */ public static function insertOrIgnoreUsing($columns, $query) @@ -24717,7 +25081,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * Insert or update a record matching the attributes, and fill it with values. * * @param array $attributes - * @param array $values + * @param array|callable $values * @return bool * @static */ public static function updateOrInsert($attributes, $values = []) @@ -24969,6 +25333,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * * @param string $name * @param object|callable $macro + * @param-closure-this static $macro * @return void * @static */ public static function macro($name, $macro) @@ -25089,6 +25454,10 @@ function append_config(array $array) /** * Determine if the given value is "blank". * + * @phpstan-assert-if-false !=null|'' $value + * + * @phpstan-assert-if-true !=numeric|bool $value + * * @param mixed $value * @return bool */ @@ -25200,6 +25569,10 @@ function env($key, $default = null) /** * Determine if a value is "filled". * + * @phpstan-assert-if-true !=null|'' $value + * + * @phpstan-assert-if-false !=numeric|bool $value + * * @param mixed $value * @return bool */ @@ -25242,10 +25615,12 @@ function literal(...$arguments) /** * Get an item from an object using "dot" notation. * - * @param object $object + * @template TValue of object + * + * @param TValue $object * @param string|null $key * @param mixed $default - * @return mixed + * @return ($key is empty ? TValue : mixed) */ function object_get($object, $key, $default = null) { @@ -25289,9 +25664,12 @@ function once(callable $callback) /** * Provide access to optional objects. * - * @param mixed $value - * @param callable|null $callback - * @return mixed + * @template TValue + * @template TReturn + * + * @param TValue $value + * @param (callable(TValue): TReturn)|null $callback + * @return ($callback is null ? \Illuminate\Support\Optional : ($value is null ? null : TReturn)) */ function optional($value = null, ?callable $callback = null) { @@ -25326,11 +25704,13 @@ function preg_replace_array($pattern, array $replacements, $subject) /** * Retry an operation a given number of times. * - * @param int|array $times - * @param callable $callback - * @param int|\Closure $sleepMilliseconds - * @param callable|null $when - * @return mixed + * @template TValue + * + * @param int|array $times + * @param callable(int): TValue $callback + * @param int|\Closure(int, \Throwable): int $sleepMilliseconds + * @param (callable(\Throwable): bool)|null $when + * @return TValue * * @throws \Throwable */ @@ -25373,7 +25753,7 @@ function retry($times, callable $callback, $sleepMilliseconds = 0, $when = null) * Get a new stringable object from the given string. * * @param string|null $string - * @return \Illuminate\Support\Stringable|mixed + * @return ($string is null ? object : \Illuminate\Support\Stringable) */ function str($string = null) { @@ -25400,9 +25780,11 @@ public function __toString() /** * Call the given Closure with the given value then return the value. * - * @param mixed $value - * @param callable|null $callback - * @return mixed + * @template TValue + * + * @param TValue $value + * @param (callable(TValue): mixed)|null $callback + * @return ($callback is null ? \Illuminate\Support\HigherOrderTapProxy : TValue) */ function tap($value, $callback = null) { @@ -25420,12 +25802,13 @@ function tap($value, $callback = null) /** * Throw the given exception if the given condition is true. * + * @template TValue * @template TException of \Throwable * - * @param mixed $condition + * @param TValue $condition * @param TException|class-string|string $exception * @param mixed ...$parameters - * @return mixed + * @return TValue * * @throws TException */ @@ -25447,12 +25830,13 @@ function throw_if($condition, $exception = 'RuntimeException', ...$parameters) /** * Throw the given exception unless the given condition is true. * + * @template TValue * @template TException of \Throwable * - * @param mixed $condition + * @param TValue $condition * @param TException|class-string|string $exception * @param mixed ...$parameters - * @return mixed + * @return TValue * * @throws TException */ @@ -25487,14 +25871,14 @@ function trait_uses_recursive($trait) /** * Transform the given value if it is present. * - * @template TValue of mixed - * @template TReturn of mixed - * @template TDefault of mixed + * @template TValue + * @template TReturn + * @template TDefault * * @param TValue $value * @param callable(TValue): TReturn $callback - * @param TDefault|callable(TValue): TDefault|null $default - * @return ($value is empty ? ($default is null ? null : TDefault) : TReturn) + * @param TDefault|callable(TValue): TDefault $default + * @return ($value is empty ? TDefault : TReturn) */ function transform($value, callable $callback, $default = null) { diff --git a/app/Console/Commands/Command.php b/app/Console/Commands/Command.php index 21f4c3ccc..36590b3ca 100644 --- a/app/Console/Commands/Command.php +++ b/app/Console/Commands/Command.php @@ -31,7 +31,8 @@ abstract class Command extends \Illuminate\Console\Command { - /** + + /** * Returns true if verbosity is EXACTLY: VERBOSITY_QUIET * * @return bool @@ -147,19 +148,27 @@ protected function validate_cmd( mixed $method, array $rules ): mixed return $value; } + /** - * @param array $rules - * @param mixed $value + * Simple validator function for validating a single value against a given rule + * and error and exit it if fails. + * + * @param string $rule The Laravel validator rule e.g. 'required|string|min:8|max:255' + * @param string $name The parameter name for output in error messages + * @param mixed $value The value to validate against $rule * - * @return bool|string + * @return bool + * @throws \Exception */ - protected function validateInput( array $rules, mixed $value ): bool|string + protected function validateOrExit( string $rule, string $name, string $value ): bool { - $validator = \Validator::make( [key( $rules ) => $value], $rules ); + $validator = \Validator::make( [ $name => $value ], [ $name => $rule ] ); if ($validator->fails()) { - return $validator->errors()->first( key( $rules ) ); + $this->error( $validator->errors()->first( $name ) ); + exit -1; } + return true; } } \ No newline at end of file diff --git a/app/Console/Commands/Contact/ExportGroup.php b/app/Console/Commands/Contact/ExportGroup.php index 284b8e8b4..ee1c47f1b 100644 --- a/app/Console/Commands/Contact/ExportGroup.php +++ b/app/Console/Commands/Contact/ExportGroup.php @@ -70,7 +70,7 @@ public function handle(): int $type = $this->option('type'); $name = $this->option('name'); // Imported from Zend Framework with little change on 2017-11 - if( ( !$type && !$name ) || ( $type && $name ) ) { + if( !( $type && $name ) || ( $type && $name ) ) { $this->error( "Group name or type must be set (and not both)." ); return -1; } diff --git a/app/Console/Commands/Grapher/EmailPortUtilisation.php b/app/Console/Commands/Grapher/EmailPortUtilisation.php index 5fc764df8..0d88bc557 100644 --- a/app/Console/Commands/Grapher/EmailPortUtilisation.php +++ b/app/Console/Commands/Grapher/EmailPortUtilisation.php @@ -116,7 +116,8 @@ public function handle(): int } if( count( $excess ) ) { - Mail::to( explode( ',', $this->argument( 'email' ) ) )->send( new PortUtilisationMail( $excess, $this->option('threshold') ) ); + Mail::to( explode( ',', $this->argument( 'email' ) ) ) + ->send( new PortUtilisationMail( $excess, (float)$this->option('threshold') ) ); } return 0; diff --git a/app/Console/Commands/Grapher/PruneDailyP2p.php b/app/Console/Commands/Grapher/PruneDailyP2p.php new file mode 100644 index 000000000..31693afc3 --- /dev/null +++ b/app/Console/Commands/Grapher/PruneDailyP2p.php @@ -0,0 +1,74 @@ + + * @package IXP\Console\Commands\Grapher + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +class PruneDailyP2p extends IXPCommand +{ + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'grapher:prune-daily-p2p {--all} {--days=}'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Delete --all or records older than --days from p2p_daily_stats'; + + public function handle() + { + if( $this->option('all') ) { + $before = now(); + } else { + if( !$this->option('days') || !is_numeric( $this->option('days') ) ) { + $this->error( 'Please specify if you want to delete --all records or those from more than --days=x ago'); + } + $before = now()->subDays( (int)$this->option('days' ) ); + } + + $cnt = P2pDailyStats::where( 'day', '<', $before->format('Y-m-d') )->delete(); + + if( $this->isVerbosityVerbose() ) { + $this->info( "Deleted $cnt records older than {$before->format('Y-m-d')}" ); + } + + return 0; + } +} \ No newline at end of file diff --git a/app/Console/Commands/Grapher/UploadDailyP2p.php b/app/Console/Commands/Grapher/UploadDailyP2p.php new file mode 100644 index 000000000..86ca0f5d1 --- /dev/null +++ b/app/Console/Commands/Grapher/UploadDailyP2p.php @@ -0,0 +1,184 @@ +argument('day') ) ) { + $this->error("Invalid day parameter - expected format is " . now()->subDay()->format('Y-m-d') ); + return -1; + } + + $this->setGrapher( Grapher::getFacadeRoot() ); + + $start = Carbon::parse( $this->argument('day') . ' 00:00:00' ); + $end = $start->copy()->endOfDay(); + $startTime = microtime(true); + + Customer::currentActive(true,true,true) + ->when( $this->option('customer-id'), function ($query, string $cid) { + $query->where('id', $cid); + }) + ->each( function( Customer $c ) use ( $start, $end ) { + + $iterTime = microtime(true); + + if($this->isVerbosityNormal()) { + $this->info("Processing {$c->name} for " . $start->format('Y-m-d')); + } + + $stats = $this->collectStatistics( $c, $start, $end ); + $this->storeStatistics( $stats, $c, $start ); + + if($this->isVerbosityNormal()) { + $this->info("Completed {$c->name} in " . (microtime(true) - $iterTime) . " seconds"); + } + }); + + if($this->isVerbosityNormal()) { + $this->info("All Completed in " . (microtime(true) - $startTime) . " seconds"); + } + return 0; + } + + /** + * Collect Statistics data + * + * @param Customer $customer + * @param Carbon $start + * @param Carbon $end + * @return array + * @throws \IXP\Exceptions\Services\Grapher\ParameterException + */ + protected function collectStatistics(Customer $customer, Carbon $start, Carbon $end) : array + { + $stats = []; + + + foreach($customer->virtualinterfaces as $vi) { + + /** @var VlanInterface $svli */ + foreach($vi->vlaninterfaces as $svli) { + + if(!$svli->vlan->export_to_ixf) { + continue; + } + + foreach([4,6] as $protocol) { + + if( !$svli->ipvxEnabled($protocol) ) { + continue; + } + + + /** @var VlanInterface $dvli */ + foreach( VlanInterfaceAggregator::forVlan( $svli->vlan, $protocol ) as $dvli ) { + + // skip if it's this customer's own vlan interface or another of their own connections + if( $svli->id === $dvli->id || $customer->id == $dvli->virtualInterface->custid ) { + continue; + } + + if($this->isVerbosityVeryVerbose() ) { + $this->line( "\t- {$svli->vlan->name} ipv$protocol with {$dvli->virtualInterface->customer->name}" ); + } + + $peerId = $dvli->virtualInterface->custid; + if(!isset($stats[$peerId])) { + $stats[$peerId] = [ + 'ipv4_total_in' => 0, + 'ipv4_total_out' => 0, + 'ipv6_total_in' => 0, + 'ipv6_total_out' => 0, + 'ipv4_max_in' => 0, + 'ipv4_max_out' => 0, + 'ipv6_max_in' => 0, + 'ipv6_max_out' => 0, + ]; + } + + + $graph = $this->grapher()->p2p($svli, $dvli) + ->setProtocol('ipv'.$protocol) + ->setPeriod(Graph::PERIOD_CUSTOM, $start, $end); + + $statistics = $graph->statistics()->all(); + + $stats[$peerId]["ipv{$protocol}_total_in"] += (int)$statistics['totalin']; + $stats[$peerId]["ipv{$protocol}_total_out"] += (int)$statistics['totalout']; + $stats[$peerId]["ipv{$protocol}_max_in"] += (int)$statistics['maxin']; + $stats[$peerId]["ipv{$protocol}_max_out"] += (int)$statistics['maxout']; + } + + + } + + } + + } + + return $stats; + } + + /** + * Store the statistics data into the database + * + * @param array $stats + * @param Customer $customer + * @param Carbon $start + * @return void + */ + protected function storeStatistics(array $stats, Customer $customer, Carbon $start) : void { + + if( $this->isVerbosityVerbose() ) { + $this->line( "\tStoring date for {$customer->name} in database" ); + } + + DB::transaction(function () use( $stats, $customer, $start ) { + + foreach( $stats as $peerId => $traffic ) { + + P2pDailyStats::updateOrCreate( [ + 'cust_id' => $customer->id, + 'day' => $start->format( 'Y-m-d' ), + 'peer_id' => $peerId, + ], + $traffic + ); + + } + }); + + } +} diff --git a/app/Console/Commands/Irrdb/UpdateDb.php b/app/Console/Commands/Irrdb/UpdateDb.php index 44452eab0..8de6863aa 100644 --- a/app/Console/Commands/Irrdb/UpdateDb.php +++ b/app/Console/Commands/Irrdb/UpdateDb.php @@ -57,9 +57,9 @@ protected function setupChecks(): bool /** * Returns all customers or, if specified on the command line, a specific customer * - * @return array|Builder|Customer + * @return mixed */ - protected function resolveCustomers() + protected function resolveCustomers(): mixed { $custarg = $this->argument('customer' ); diff --git a/app/Console/Commands/MailingList/Init.php b/app/Console/Commands/MailingList/Init.php index 53b474887..5490a1f4a 100644 --- a/app/Console/Commands/MailingList/Init.php +++ b/app/Console/Commands/MailingList/Init.php @@ -25,6 +25,7 @@ use Ds\Set; +use Illuminate\Support\Collection; use IXP\Utils\MailingList as ML; /** @@ -80,6 +81,7 @@ public function handle(): int $ml = new ML( $this->argument('list') ); $stdin = fopen( "php://stdin","r" ); + /** @var Collection $addresses */ $addresses = collect(); while( $address = strtolower( trim( fgets( $stdin ) ) ) ) { diff --git a/app/Console/Commands/PeeringDB/AsnLookup.php b/app/Console/Commands/PeeringDB/AsnLookup.php index e976bac9a..e268da7ee 100644 --- a/app/Console/Commands/PeeringDB/AsnLookup.php +++ b/app/Console/Commands/PeeringDB/AsnLookup.php @@ -50,7 +50,7 @@ public function handle() $pdb = app()->make( PeeringDb::class ); - if( $net = $pdb->getNetworkByAsn($this->argument('asn')) ) { + if( $net = $pdb->getNetworkByAsn( (integer)$this->argument('asn') ) ) { echo $pdb->netAsAscii($net); return 0; } diff --git a/app/Console/Commands/RipeAtlas/CompleteRequests.php b/app/Console/Commands/RipeAtlas/CompleteRequests.php index 17ecdf324..c9892e5a8 100644 --- a/app/Console/Commands/RipeAtlas/CompleteRequests.php +++ b/app/Console/Commands/RipeAtlas/CompleteRequests.php @@ -82,7 +82,7 @@ public function handle(): int } $ars->each( function ( $ar ) use ( $bar ) { - if( CompleteRequestsJob::dispatchNow( $ar ) && $this->isVerbosityVerbose() ) { + if( CompleteRequestsJob::dispatchSync( $ar ) && $this->isVerbosityVerbose() ) { $this->info("Marking request: Atals Run ID:{$ar->id} complete"); } $bar->advance(); diff --git a/app/Console/Commands/RipeAtlas/CreateMeasurements.php b/app/Console/Commands/RipeAtlas/CreateMeasurements.php index 919c1c333..509130a91 100644 --- a/app/Console/Commands/RipeAtlas/CreateMeasurements.php +++ b/app/Console/Commands/RipeAtlas/CreateMeasurements.php @@ -74,7 +74,7 @@ public function handle(): int $bar->start(); $ars->each( function( $ar ) use ( $bar ) { - CreateMeasurementsJob::dispatchNow( $ar ); + CreateMeasurementsJob::dispatchSync( $ar ); $bar->advance(); }); diff --git a/app/Console/Commands/RipeAtlas/RunMeasurements.php b/app/Console/Commands/RipeAtlas/RunMeasurements.php index fc817904d..78b298406 100644 --- a/app/Console/Commands/RipeAtlas/RunMeasurements.php +++ b/app/Console/Commands/RipeAtlas/RunMeasurements.php @@ -88,7 +88,7 @@ public function handle(): int foreach( $ams as $am ){ $atlasRuns[ $am->run_id ] = $am->atlasRun(); - RunMeasurementsJob::dispatchNow( $am ); + RunMeasurementsJob::dispatchSync( $am ); $bar->advance(); } diff --git a/app/Console/Commands/RipeAtlas/StopAllMeasurements.php b/app/Console/Commands/RipeAtlas/StopAllMeasurements.php index f2e0d7c40..bce5f8296 100644 --- a/app/Console/Commands/RipeAtlas/StopAllMeasurements.php +++ b/app/Console/Commands/RipeAtlas/StopAllMeasurements.php @@ -84,7 +84,7 @@ public function handle(): int $bar->start(); foreach( $measurements->results as $am ) { - StopAllMeasurementsJob::dispatchNow( $am->id ); + StopAllMeasurementsJob::dispatchSync( $am->id ); $this->info("Stop requested for {$am->id}"); $bar->advance(); } diff --git a/app/Console/Commands/RipeAtlas/UpdateMeasurements.php b/app/Console/Commands/RipeAtlas/UpdateMeasurements.php index 99d8715f6..a8fea5089 100644 --- a/app/Console/Commands/RipeAtlas/UpdateMeasurements.php +++ b/app/Console/Commands/RipeAtlas/UpdateMeasurements.php @@ -76,7 +76,7 @@ public function handle(): int // find uncompleted measurements: $ams->each( function( $am ) use( $bar ) { - UpdateMeasurementsJob::dispatchNow( $am ); + UpdateMeasurementsJob::dispatchSync( $am ); $bar->advance(); }); diff --git a/app/Console/Commands/RipeAtlas/UpdateProbes.php b/app/Console/Commands/RipeAtlas/UpdateProbes.php index f712260c7..dbb2c196d 100644 --- a/app/Console/Commands/RipeAtlas/UpdateProbes.php +++ b/app/Console/Commands/RipeAtlas/UpdateProbes.php @@ -23,6 +23,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html */ +use Illuminate\Database\Eloquent\Collection; use IXP\Console\Commands\Command; use IXP\Jobs\RipeAtlas\UpdateProbes as UpdateProbesJob; @@ -75,7 +76,7 @@ public function handle(): int $bar->start(); foreach( $customers as $c ){ - UpdateProbesJob::dispatchNow( $c ); + UpdateProbesJob::dispatchSync( $c ); $bar->advance(); } @@ -92,9 +93,9 @@ public function handle(): int /** * Returns all customers or, if specified on the command line, a specific customer * - * @return array Customer + * @return Collection|array Customer */ - protected function resolveCustomers() + protected function resolveCustomers(): Collection|array { $cust = $this->argument('customer'); @@ -104,17 +105,18 @@ protected function resolveCustomers() } // assume ASN first: - if( is_numeric( $cust ) && ( $c = Customer::where( 'autsys', $cust )->first() ) ) { - return [ $c ]; - } - - // then ID: - if( is_numeric( $cust ) && ( $c = Customer::find( $cust ) ) ) { - return [ $c ]; + if( is_numeric( $cust )) { + $c = Customer::where( 'autsys', $cust )->first(); + if ( !$c ) { + // then ID: + $c = Customer::find( $cust ); + } + } else { + // then check shortname: + $c = Customer::where( 'shortname', $cust )->first(); } - // then check shortname: - if( $c = Customer::where( 'shortname', $cust )->first() ) { + if($c) { return [ $c ]; } diff --git a/app/Console/Commands/Rir/GenerateObject.php b/app/Console/Commands/Rir/GenerateObject.php index 412d7827a..6e37f50a1 100644 --- a/app/Console/Commands/Rir/GenerateObject.php +++ b/app/Console/Commands/Rir/GenerateObject.php @@ -31,7 +31,7 @@ /** * RIR Update command * - * @see https://docs.ixpmanager.org/features/rir-objects/ + * @see https://docs.ixpmanager.org/latest/features/rir-objects/ * @author Yann Robin * @author Barry O'Donovan * @package IXP\Console\Commands\Rir @@ -84,7 +84,7 @@ public function handle() Mail::raw( $obj, function( $m ) { $m->to( $this->checkEmail( 'to', $this->option( "to" ) ?? config( 'ixp_api.rir.email.to' ) ) ) - ->from( $this->checkEmail( 'from', ( $this->option( "from" ) ?? config( 'ixp_api.rir.email.from' ) ) ?? config( 'mail.from.address' ) ) ) + ->from( $this->checkEmail( 'from', ( $this->option( "from" ) ?: config( 'ixp_api.rir.email.from' ) ) ?: config( 'mail.from.address' ) ) ) ->subject( "Changes to {$this->argument ('object' )} via IXP Manager" ); } ); diff --git a/app/Console/Commands/Router/FilteredPrefixes.php b/app/Console/Commands/Router/FilteredPrefixes.php index 51d48c534..898fe8ccb 100644 --- a/app/Console/Commands/Router/FilteredPrefixes.php +++ b/app/Console/Commands/Router/FilteredPrefixes.php @@ -71,7 +71,7 @@ public function handle(): int $this->info( "Checking route server filtering for " . $customer->abbreviatedName . ". Please wait..." ); - FetchFilteredPrefixesForCustomer::dispatchNow( $customer ); + FetchFilteredPrefixesForCustomer::dispatchSync( $customer ); $filteredPrefixes = Cache::get( 'filtered-prefixes-' . $customer->id ); if( $filteredPrefixes === [] ) { @@ -111,16 +111,18 @@ protected function resolveCustomer(): Customer $custarg = $this->argument('customer'); // assume ASN first: - if( is_numeric( $custarg ) && ( $c = Customer::where( 'autsys', $custarg )->first() ) ) { - return $c; - } - - // then ID: - if( is_numeric( $custarg ) && ( $c = Customer::find( $custarg ) ) ) { - return $c; + if( is_numeric( $custarg )) { + $c = Customer::where( 'autsys', $custarg )->first(); + if(!$c) { + // then ID: + $c = Customer::find( $custarg ); + } + } else { + // then check shortname: + $c = Customer::where( 'shortname', $custarg )->first(); } - if( $c = Customer::where( 'shortname', $custarg )->first() ) { + if ($c) { return $c; } diff --git a/app/Console/Commands/Router/GenerateConfiguration.php b/app/Console/Commands/Router/GenerateConfiguration.php index 1046f0ab6..efda253c6 100644 --- a/app/Console/Commands/Router/GenerateConfiguration.php +++ b/app/Console/Commands/Router/GenerateConfiguration.php @@ -70,8 +70,10 @@ public function handle() return -1; } + /** @psalm-suppress InvalidArgument - render() casts as a string, no issue here */ echo ( new RouterConfigurationGenerator( $router ) )->render(); + /** @psalm-suppress UndefinedConstant - LARAVEL_START defined in artisan command line tool */ Log::info( sprintf( "Generated router configuration for %s and used %0.1f MB ( %0.1f MB real) of memory in %0.3f seconds.", $router->handle, memory_get_peak_usage()/1024/1024, memory_get_peak_usage( true )/1024/1024, microtime(true) - LARAVEL_START ) diff --git a/app/Console/Commands/Router/ResetAllUpdateTimestampsCommand.php b/app/Console/Commands/Router/ResetAllUpdateTimestampsCommand.php new file mode 100644 index 000000000..91ae4c882 --- /dev/null +++ b/app/Console/Commands/Router/ResetAllUpdateTimestampsCommand.php @@ -0,0 +1,22 @@ +update( [ + 'last_update_started' => null, + 'last_updated' => null, + ]); + } +} diff --git a/app/Console/Commands/User/Create.php b/app/Console/Commands/User/Create.php index 5bec7930f..aa50334d5 100644 --- a/app/Console/Commands/User/Create.php +++ b/app/Console/Commands/User/Create.php @@ -102,7 +102,7 @@ public function handle(): int $sendEmail = $this->option('send-welcome-email'); foreach( $options as $option => $value ){ - ${$option} = $value; + //${$option} = $value; if( $option !== 'send-welcome-email' ){ $validator = \Validator::make( [ $option => $value], [$option => $this->rules[ $option ] ] ); @@ -125,7 +125,7 @@ public function handle(): int ); } - ${$option} = $this->validate_cmd( function() use( $option ) { + $options[$option] = $this->validate_cmd( function() use( $option ) { if( $option === 'password' ){ return $this->secret('Enter '. $option); } @@ -142,21 +142,21 @@ public function handle(): int // Creating the User object $user = new User; $user->creator = 'artisan'; - $user->password = Hash::make( $password ); - $user->name = $name; - $user->authorisedMobile = $mobile; - $user->username = strtolower( $username ); - $user->email = strtolower( $email ); + $user->password = Hash::make( $options['password'] ); + $user->name = $options['name']; + $user->authorisedMobile = $options['mobile']; + $user->username = strtolower( $options['username'] ); + $user->email = strtolower( $options['email'] ); $user->disabled = false; - $user->privs = $priv; - $user->custid = $custid; + $user->privs = (int) $options['priv']; + $user->custid = (int) $options['custid']; $user->save(); // Creating the CustomerToUser object $c2u = new CustomerToUser; $c2u->customer_id = $user->custid; $c2u->user_id = $user->id; - $c2u->privs = $priv; + $c2u->privs = $user->privs; $c2u->extra_attributes = [ "created_by" => [ "type" => "artisan" , "user_id" => $user->id ] ]; $c2u->save(); diff --git a/app/Console/Commands/User/SetPassword.php b/app/Console/Commands/User/SetPassword.php index e2b404c38..00f4452cc 100644 --- a/app/Console/Commands/User/SetPassword.php +++ b/app/Console/Commands/User/SetPassword.php @@ -3,7 +3,7 @@ namespace IXP\Console\Commands\User; /* - * Copyright (C) 2009 - 2021 Internet Neutral Exchange Association Company Limited By Guarantee. + * Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee. * All Rights Reserved. * * This file is part of IXP Manager. @@ -61,22 +61,14 @@ class SetPassword extends Command 'password' => 'required|string|min:8|max:255', 'confirm_password' => 'required|same:password', ]; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } /** * Execute the console command. * * @return int + * @throws \Exception */ - public function handle() + public function handle(): int { $search = $this->option('search' ); $uid = $this->option('uid' ); @@ -84,10 +76,10 @@ public function handle() if( ( !$search && !$uid ) || ( $search && $uid ) ){ $this->error( "Search or UID must be set (and not both)." ); - return 0; + return -1; } - if( $search ){// Display result the --search parameter + if( $search ){ // Display result the --search parameter $this->table( ['ID', 'Name', 'Username', 'Email', 'Customers', 'Privs'], $u = $this->usersViaUsernameOrEmail( $search ) @@ -98,32 +90,26 @@ public function handle() if( !$user = User::find( $uid ) ){ $this->error( "UID does not exist !" ); - return 0; + return -1; } - $validate = $this->validateInput( [ 'password' => $this->rules[ 'password' ] ] , $password ); - if( $password && $validate !== true ){ - $this->error( $validate ); - return 0; - } - - if( !$password ){// --password option not specified, ask for password + if( !$password ){ // --password option not specified, ask for password $password = $this->secret( 'Password or (return to have one generated)' ); - if( $password ){// if the user type a password - $validate = $this->validateInput( [ 'password' => $this->rules[ 'password' ] ] , $password ); - if( $validate !== true ){ - $this->error( $validate ); - return 0; - } - $confirmPassword = $this->secret( 'Confirm password' ); + if( $password ){ // if the user type a password + $pw_valid = $this->validateOrExit( $this->rules['password'], 'password', $password ); + + $confirmPassword = $this->secret( 'Confirm password' ); + if( $password !== $confirmPassword ){// check if password match $this->error( "The passwords does not match!" ); - return 0; + return -1; } } else {// if the user type return generate password $password = Str::random(16 ); $this->info( "Generated password: " . $password ); } + } else { + $this->validateOrExit( $this->rules['password'], 'password', $password ); } $user->password = Hash::make( $password ); @@ -133,4 +119,5 @@ public function handle() return 0; } + } \ No newline at end of file diff --git a/app/Console/Commands/Utils/ExpungeLogs.php b/app/Console/Commands/Utils/ExpungeLogs.php index 056012ac9..2c518ec2c 100644 --- a/app/Console/Commands/Utils/ExpungeLogs.php +++ b/app/Console/Commands/Utils/ExpungeLogs.php @@ -55,14 +55,14 @@ class ExpungeLogs extends IXPCommand * * @var string */ - protected $signature = 'utils:expunge-logs'; + protected $signature = 'utils:expunge-logs {--all}'; /** * The console command description. * * @var string */ - protected $description = 'This command will delete old data from database tables > 6 months old'; + protected $description = 'This command will delete old data from database tables > 6 months old (or all if --all set)'; /** * Execute the console command. @@ -71,7 +71,11 @@ class ExpungeLogs extends IXPCommand */ public function handle() { - $sixmonthsago = now()->subMonths(6)->format( 'Y-m-d 00:00:00' ); + if( $this->option('all') ) { + $sixmonthsago = now()->addDay(); + } else { + $sixmonthsago = now()->subMonths( 6 )->format( 'Y-m-d 00:00:00' ); + } // Deleting user login logs older than 6 months $this->isVerbosityVerbose() && $this->output->write('Expunging user login records > 6 months...', false ); diff --git a/app/Console/Commands/Utils/SmtpMailTest.php b/app/Console/Commands/Utils/SmtpMailTest.php index 35da4e728..b9b90f265 100644 --- a/app/Console/Commands/Utils/SmtpMailTest.php +++ b/app/Console/Commands/Utils/SmtpMailTest.php @@ -25,13 +25,12 @@ use Illuminate\Support\Facades\Mail; use IXP\Console\Commands\Command as IXPCommand; - -use IXP\Mail\Utils\SmtpTest as SmtpTestMail; +use IXP\Mail\Utils\SmtpTest; /** * Class SmtpMailTest - test sending emails * - * @see https://docs.ixpmanager.org/usage/email/ + * @see https://docs.ixpmanager.org/latest/usage/email/ * @author Barry O'Donovan * @package IXP\Console\Commands\Utils * @copyright Copyright (C) 2009 - 2020 Internet Neutral Exchange Association Company Limited By Guarantee @@ -94,11 +93,7 @@ public function handle() $this->info( "Trying to send email...\n" ); - if( $this->getOutput()->isVerbose() ) { - $mail = new SmtpTestMail( true ); - } else { - $mail = new SmtpTestMail; - } + $mail = new SmtpTest(); try { Mail::to( $email )->send( $mail ); @@ -116,14 +111,7 @@ public function handle() if( $this->getOutput()->isVerbose() ) { echo $e->getTraceAsString(); - } else { - $this->warn( "If you plan to request support from the IXP Manager team, please rerun this test with the -v (verbose) " - . "option and paste the complete output to an online pastebin such as https://pastebin.ibn.ie/. Please also ensure " - . "you have read the documentation for configuring email at https://docs.ixpmanager.org/usage/email/. Lastly, if " - . "you have configured a username and password, PLEASE remove these before pasting online!" - ); } } - } } \ No newline at end of file diff --git a/app/Console/Commands/Vagrant/GenerateBirdseyeConfigurationsCommand.php b/app/Console/Commands/Vagrant/GenerateBirdseyeConfigurationsCommand.php new file mode 100644 index 000000000..d0db73dc8 --- /dev/null +++ b/app/Console/Commands/Vagrant/GenerateBirdseyeConfigurationsCommand.php @@ -0,0 +1,40 @@ +option( 'directory' ) ) || !is_writable( $this->option( 'directory' ) ) ) { + $this->error( "Directory path {$this->option('directory')} is not writable" ); + exit( 1 ); + } + + foreach( Router::get() as $router ) { + + file_put_contents( $this->option( 'directory' ) . '/birdseye-' . $router->handle . '.env', + + "# +# Bird's Eye - Vagrant generated configuration + +BIRDC=\"/usr/bin/sudo /srv/birdseye/bin/birdc -2 -s /var/run/bird/bird-{$router->handle}.ctl\" +CACHE_DRIVER=array +MAX_ROUTES=100000 +" + + ); + + } + } +} + diff --git a/app/Console/Commands/Vagrant/GenerateClientRouterConfigurationsCommand.php b/app/Console/Commands/Vagrant/GenerateClientRouterConfigurationsCommand.php new file mode 100644 index 000000000..6a1dba3ef --- /dev/null +++ b/app/Console/Commands/Vagrant/GenerateClientRouterConfigurationsCommand.php @@ -0,0 +1,60 @@ +option('directory')) || !is_writable($this->option('directory'))) { + $this->error("Directory path {$this->option('directory')} is not writable"); + exit(1); + } + + $vlis = VlanInterface::where( 'rsclient', 1 )->whereIn( 'vlanid', [1,2])->get(); + + $confNames = []; + + foreach( $vlis as $vli ) { + + // skip route servers, collector and as112 + if( in_array( $vli->virtualInterface->customer->autsys, [ 112, 65500, 65501 ] ) ) { continue; } + + + + + + $this->info( "Generating route server client for {$vli->virtualInterface->customer->name} / {$vli->vlan->name}" ); + + $confName = "as{$vli->virtualInterface->customer->autsys}-" + . strtolower($vli->virtualInterface->physicalInterfaces[0]->switchPort->switcher->infrastructureModel->shortname) + . "{$vli->id}"; + + $confNames[] = $confName; + + $confFile = $this->option('directory') . '/' . $confName . '.conf'; + + file_put_contents( + $confFile, + view('vagrant/router-client', [ 'vli' => $vli, 'confName' => $confName ] )->render() + ); + } + + file_put_contents( + $this->option('directory').'/start-reload-clients.sh', + view('vagrant/router-client-script', [ + 'directory' => $this->option('directory' ), + 'confNames' => $confNames, + ])->render() + ); + + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index f00333073..c0287ce31 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -40,21 +40,28 @@ protected function schedule( Schedule $schedule ): void // Expunge logs / GDPR data / etc. $schedule->command( 'utils:expunge-logs' )->dailyAt( '3:04' ); - // Grapher - https://docs.ixpmanager.org/grapher/mrtg/#inserting-traffic-data-into-the-database-reporting-emails + // Grapher - https://docs.ixpmanager.org/latest/grapher/mrtg/#inserting-traffic-data-into-the-database-reporting-emails $schedule->command( 'grapher:upload-stats-to-db' )->dailyAt( '2:00' ) ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_GRAPHER_UPLOAD_STATS_TO_DB', false ); } ); $schedule->command( 'grapher:upload-pi-stats-to-db' )->dailyAt( '2:10' ) ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_GRAPHER_UPLOAD_STATS_TO_DB', false ); } ); - // https://docs.ixpmanager.org/features/peeringdb/#existence-of-peeringdb-records + if( config( 'grapher.backends.sflow.enabled' ) ) { + $schedule->command( 'grapher:prune-daily-p2p --days=30' )->dailyAt( '0:05' ); + $schedule->command( 'grapher:upload-daily-p2p ' . now()->subDay()->format( 'Y-m-d' ) )->dailyAt( '0:10' ); + } + + + + // https://docs.ixpmanager.org/latest/features/peeringdb/#existence-of-peeringdb-records $schedule->command('ixp-manager:update-in-peeringdb')->daily() ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_UPDATE_IN_PEERINGDB', false ); } ); - // https://docs.ixpmanager.org/features/manrs/ + // https://docs.ixpmanager.org/latest/features/manrs/ $schedule->command('ixp-manager:update-in-manrs')->daily() ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_UPDATE_IN_MANRS', false ); } ); - // IRRDB - https://docs.ixpmanager.org/features/irrdb/ + // IRRDB - https://docs.ixpmanager.org/latest/features/irrdb/ if( config( 'ixp.irrdb.bgpq3.path' ) && is_executable( config( 'ixp.irrdb.bgpq3.path' ) ) ) { $schedule->command( 'irrdb:update-prefix-db' )->cron( '7 */6 * * *' ) ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_IRRDB_UPDATE_PREFIX_DB', false ); } ); @@ -66,11 +73,11 @@ protected function schedule( Schedule $schedule ): void // https://laravel.com/docs/5.8/telescope#data-pruning $schedule->command('telescope:prune --hours=72')->daily(); - // OUI Update - https://docs.ixpmanager.org/features/layer2-addresses/#oui-database + // OUI Update - https://docs.ixpmanager.org/latest/features/layer2-addresses/#oui-database $schedule->command( 'utils:oui-update' )->weekly()->mondays()->at('9:15') ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_UTILS_OUI_UPDATE', false ); } ); - // Switch SNMP pool - https://docs.ixpmanager.org/usage/switches/#automated-polling-snmp-updates + // Switch SNMP pool - https://docs.ixpmanager.org/latest/usage/switches/#automated-polling-snmp-updates $schedule->command( 'switch:snmp-poll' )->everyFiveMinutes() ->skip( function() { return env( 'TASK_SCHEDULER_SKIP_SWITCH_SNMP_POLL', false ); } ); diff --git a/app/Contracts/LookingGlass.php b/app/Contracts/LookingGlass.php index 4e5cb998c..42024a316 100644 --- a/app/Contracts/LookingGlass.php +++ b/app/Contracts/LookingGlass.php @@ -64,6 +64,18 @@ public function router(): Router; */ public function bgpSummary(): string; + /** + * Get BGP neighbour information as JSON + * + * Response must use equivalent structure as Bird's Eye: + * https://github.com/inex/birdseye/ + * + * @param string $protocol Protocol name + * @return string + */ + public function bgpNeighbourSummary( string $protocol ): string; + + /** * Get the router status information as JSON * @@ -121,6 +133,17 @@ public function routesForExport( string $protocol ): string; */ public function protocolRoute( string $protocol, string $network, int $mask ): string; + /** + * Get details for a specific route in a named protocol export + * + * @param string $protocol Protocol name + * @param string $network The route to lookup + * @param int $mask The mask of the route to look up + * + * @return string + */ + public function exportRoute( string $protocol, string $network, int $mask ): string; + /** * Get details for a specific route in a named table (vrf) * diff --git a/app/Events/Auth/ForgotUsername.php b/app/Events/Auth/ForgotUsername.php index e716df508..a702474e6 100644 --- a/app/Events/Auth/ForgotUsername.php +++ b/app/Events/Auth/ForgotUsername.php @@ -40,14 +40,14 @@ class ForgotUsername use Dispatchable, SerializesModels; /** - * @var array of users + * @var Collection of users */ - public $users; + public Collection $users; /** * @var String Email */ - public $email; + public string $email; /** * Create a new event instance. diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index a4af7b2f4..1b894dff2 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -80,17 +80,17 @@ public function register() * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request - * @param Throwable $exception + * @param Throwable $e * * @return \Symfony\Component\HttpFoundation\Response */ - public function render($request, Throwable $exception) + public function render($request, Throwable $e) { - if( $exception instanceof GraphCannotBeProcessedException ) { + if( $e instanceof GraphCannotBeProcessedException ) { AlertContainer::push( 'No graphing backend configured to support the requested graph type.', Alert::DANGER ); return Redirect::to(''); } - return parent::render($request, $exception); + return parent::render($request, $e); } } diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 0e236805a..f40f9b759 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -82,7 +82,7 @@ public function dashboard( Request $r ): View private function dashboardStats( Request $r ): array { // only do this once every 60 minutes - if( $r->query( 'refresh_cache', 0 ) || !( $cTypes = Cache::get( 'admin_ctypes' ) ) ) { + if( $r->query( 'refresh_cache' ) || !( $cTypes = Cache::get( 'admin_ctypes' ) ) ) { // Full / Associate / Probono / Internal $cTypes[ 'types' ] = Customer::selectRaw('type AS ctype, COUNT( type ) AS cnt') ->whereRaw(Customer::SQL_CUST_CURRENT) @@ -264,7 +264,7 @@ private function publicPeeringGraphs( Request $r ): array $period = Graph::processParameterPeriod( $r->query( 'graph_period', config( 'ixp_fe.admin_dashboard.default_graph_period' ) ) ); - if( $r->query( 'refresh_cache', 0 ) || !( $graphs = Cache::get( 'admin_stats_'.$period ) ) ) { + if( $r->query( 'refresh_cache' ) || !( $graphs = Cache::get( 'admin_stats_'.$period ) ) ) { $graphs = []; $graphs['ixp'] = $grapher->ixp() diff --git a/app/Http/Controllers/Api/V4/Customer/Note/CustomerNotesController.php b/app/Http/Controllers/Api/V4/Customer/Note/CustomerNotesController.php index b6a4601f5..47d601bbb 100644 --- a/app/Http/Controllers/Api/V4/Customer/Note/CustomerNotesController.php +++ b/app/Http/Controllers/Api/V4/Customer/Note/CustomerNotesController.php @@ -31,10 +31,7 @@ use IXP\Http\Controllers\Controller; -use IXP\Models\{ - Customer, - CustomerNote -}; +use IXP\Models\{Customer, CustomerNote, User}; use Illuminate\Http\{ JsonResponse, @@ -69,12 +66,13 @@ class CustomerNotesController extends Controller */ public function create( Request $r, Customer $cust ): JsonResponse { + /** @var User $user */ $user = Auth::getUser(); $cn = new CustomerNote; $cn->title = $r->title; $cn->note = $r->note ; - $cn->private = $r->public ? false : true; + $cn->private = $r->public ? 0 : 1; $cn->customer_id = $cust->id; $cn->save(); @@ -101,12 +99,13 @@ public function create( Request $r, Customer $cust ): JsonResponse */ public function update( Request $r, CustomerNote $cn ): JsonResponse { + /** @var User $user */ $user = Auth::getUser(); $old = clone( $cn ); $cn->title = $r->title; $cn->note = $r->note ; - $cn->private = $r->public ? false : true; + $cn->private = $r->public ? 0 : 1; $cn->save(); // update the user's notes last read so he won't be told his own is new @@ -131,8 +130,11 @@ public function update( Request $r, CustomerNote $cn ): JsonResponse */ public function get( CustomerNote $cn ): JsonResponse { + /** @var User $user */ + $user = Auth::getUser(); + // these if's could be joined with '&&' but are separated for readability: - if( !Auth::getUser()->isSuperUser() ) { + if( !$user->isSuperUser() ) { if( $cn->private || $cn->customer_id !== Auth::getUser()->custid ) { abort( 403, 'Insufficient Permissions.' ); } @@ -171,6 +173,7 @@ public function delete( CustomerNote $cn ) : JsonResponse */ public function ping( Customer $c = null ): JsonResponse { + /** @var User $u */ $u = Auth::getUser(); if( !$u->isSuperUser() ) { $c = Auth::getUser()->customer; @@ -219,6 +222,7 @@ public function notifyToggleNote( CustomerNote $cn ): JsonResponse */ private function notifyToggle( Customer $cust = null, CustomerNote $cn = null ): JsonResponse { + /** @var User $user */ $user = Auth::getUser(); $prefs = $user->prefs; diff --git a/app/Http/Controllers/Api/V4/Layer2AddressController.php b/app/Http/Controllers/Api/V4/Layer2AddressController.php index a3e5f3db8..050766168 100644 --- a/app/Http/Controllers/Api/V4/Layer2AddressController.php +++ b/app/Http/Controllers/Api/V4/Layer2AddressController.php @@ -70,13 +70,14 @@ class Layer2AddressController extends Controller public function store( Request $r, bool $showFeMessage = false ): JsonResponse { $vli = VlanInterface::findOrFail( $r->vlan_interface_id ); - - if( !Auth::getUser()->isSuperUser() ) { + /** @var User $user */ + $user = Auth::getUser(); + if( !$user->isSuperUser() ) { if( !config( 'ixp_fe.layer2-addresses.customer_can_edit' ) ) { abort( 404 ); } - if( Auth::getUser()->custid !== $vli->virtualInterface->custid ) { + if( $user->custid !== $vli->virtualInterface->custid ) { abort( 403, 'VLI / Customer mismatch' ); } @@ -128,12 +129,14 @@ public function store( Request $r, bool $showFeMessage = false ): JsonResponse */ public function delete( Layer2Address $l2a, bool $showFeMessage = false ): JsonResponse { - if( !Auth::getUser()->isSuperUser() ) { + /** @var User $user */ + $user = Auth::getUser(); + if( !$user->isSuperUser() ) { if( !config( 'ixp_fe.layer2-addresses.customer_can_edit' ) ) { abort( 404 ); } - if( Auth::getUser()->custid !== $l2a->vlanInterface->virtualInterface->custid ) { + if( $user->custid !== $l2a->vlanInterface->virtualInterface->custid ) { abort( 403, 'MAC address / Customer mismatch' ); } diff --git a/app/Http/Controllers/Api/V4/MailingListController.php b/app/Http/Controllers/Api/V4/MailingListController.php index 1f06a3351..7bf1d797e 100644 --- a/app/Http/Controllers/Api/V4/MailingListController.php +++ b/app/Http/Controllers/Api/V4/MailingListController.php @@ -143,6 +143,7 @@ public function init( Request $request, string $listname ): JsonResponse|Respons $addresses = collect(); foreach( explode( "\n", $request->addresses ) as $a ) { + /** @psalm-suppress InvalidArgument - no issue here */ $addresses->add( strtolower( trim( $a ) ) ); } diff --git a/app/Http/Controllers/Api/V4/Provisioner/YamlController.php b/app/Http/Controllers/Api/V4/Provisioner/YamlController.php index a7cbcea19..3546297cd 100644 --- a/app/Http/Controllers/Api/V4/Provisioner/YamlController.php +++ b/app/Http/Controllers/Api/V4/Provisioner/YamlController.php @@ -70,6 +70,7 @@ private function structuredResponse( array $array, string $format ): Response switch ( $format ) { case 'yaml': + /** @psalm-suppress UndefinedConstant */ $output = yaml_emit( $array, YAML_UTF8_ENCODING ); break; case 'json': @@ -433,6 +434,9 @@ public function listCoreBundle( string $format ): Response foreach( CoreBundle::all() as $cb ) { $entry = []; + $switchSideA = $cb->switchSideX(); + $switchSideB = $cb->switchSideX( false ); + $entry['id'] = $cb->id; $entry['description'] = $cb->description; $entry['graphtitle'] = $cb->graph_title; @@ -440,8 +444,10 @@ public function listCoreBundle( string $format ): Response $entry['preference'] = $cb->preference; $entry['enabled'] = (bool)$cb->enabled; $entry['type'] = $cb->type; - $entry['switchsidea'] = $cb->switchSideX( true )->name; - $entry['switchsideb'] = $cb->switchSideX( false )->name; + /** @psalm-suppress InvalidPropertyFetch */ + $entry['switchsidea'] = $switchSideA !== false ? $switchSideA->name : null; + /** @psalm-suppress InvalidPropertyFetch */ + $entry['switchsideb'] = $switchSideB !== false ? $switchSideB->name : null; $speed = $cb->corelinks()->count() * $cb->speedPi() * 1000000; @@ -451,7 +457,8 @@ public function listCoreBundle( string $format ): Response $nb = count( $formats ); for( $i = 0; $i < $nb; $i++ ) { if( ( $speed / 1000.0 < 1.0 ) || ( count( $formats ) === $i + 1 ) ) { - $prettybandwidth = round( $speed ) . $formats[ $i ]; + $offset = min( $i, 4 ); + $prettybandwidth = round( $speed ) . $formats[ $offset ]; break; } $speed /= 1000.0; diff --git a/app/Http/Controllers/Api/V4/PublicController.php b/app/Http/Controllers/Api/V4/PublicController.php index 39ead7c6a..c63030c21 100644 --- a/app/Http/Controllers/Api/V4/PublicController.php +++ b/app/Http/Controllers/Api/V4/PublicController.php @@ -67,6 +67,7 @@ public function test(): Response */ public function ping(): JsonResponse { + /** @psalm-suppress UndefinedConstant */ return response()->json([ 'software' => "IXP Manager", 'version' => APPLICATION_VERSION, diff --git a/app/Http/Controllers/Api/V4/RouterController.php b/app/Http/Controllers/Api/V4/RouterController.php index 1d14ae560..05a0a368a 100644 --- a/app/Http/Controllers/Api/V4/RouterController.php +++ b/app/Http/Controllers/Api/V4/RouterController.php @@ -66,6 +66,7 @@ public function genConfig( string $handle ): Response $configView = ( new RouterConfigurationGenerator( $router ) )->render()->render(); + /** @psalm-suppress UndefinedConstant */ \Illuminate\Support\Facades\Log::info( sprintf( "Generated router configuration for %s and used %0.1f MB ( %0.1f MB real) of memory in %0.3f seconds.", $router->handle, memory_get_peak_usage() / 1024 / 1024, memory_get_peak_usage( true ) / 1024 / 1024, microtime( true ) - LARAVEL_START ) @@ -76,23 +77,6 @@ public function genConfig( string $handle ): Response } - /** - * - * @param string $handle Handle of the router that we want - * - * @return JsonResponse - */ - public function getCanUpdate( string $handle ) : JsonResponse - { - if( !( $r = Router::whereHandle( $handle )->first() ) ) { - abort( 404, "Unknown router handle" ); - } - - - - // return response()->json( $this->lastUpdatedArray( $r ) ); - } - /** * Get 'last_updated' for the router with the handle provided * diff --git a/app/Http/Controllers/Api/V4/SflowReceiverController.php b/app/Http/Controllers/Api/V4/SflowReceiverController.php index 51eb2bbb6..40cca3a77 100644 --- a/app/Http/Controllers/Api/V4/SflowReceiverController.php +++ b/app/Http/Controllers/Api/V4/SflowReceiverController.php @@ -140,10 +140,12 @@ private function structuredResponse( array $array, string $format ): Response $httpresponse = 200; $array['timestamp'] = now()->format( 'Y-m-d\TH:i:s\Z' ); + /** @psalm-suppress UndefinedConstant */ $array['ixpmanager_version'] = APPLICATION_VERSION; switch ( $format ) { case 'yaml': + /** @psalm-suppress UndefinedConstant */ $output = yaml_emit ( $array, YAML_UTF8_ENCODING ); break; case 'json': diff --git a/app/Http/Controllers/Api/V4/SwitchController.php b/app/Http/Controllers/Api/V4/SwitchController.php index e4cd6777c..1f82d6db8 100644 --- a/app/Http/Controllers/Api/V4/SwitchController.php +++ b/app/Http/Controllers/Api/V4/SwitchController.php @@ -144,18 +144,25 @@ public function coreBundlesStatus( Switcher $s ): JsonResponse $msgs = []; foreach( $s->getCoreBundles() as $cb ) { + $switchA = $cb->switchSideX(); + /** @psalm-suppress InvalidPropertyFetch */ + $switchAName = $switchA !== false ? $switchA->name : 'none'; + $switchB = $cb->switchSideX( false ); + /** @psalm-suppress InvalidPropertyFetch */ + $switchBName = $switchB !== false ? $switchB->name : 'none'; + if( $cb->enabled ) { $linksup = count( $cb->coreLinksWithIfOperStateX() ); // with no args this defaults to X = oper state up for enabled links $linksenabled = count( $cb->corelinks()->active()->get()->toArray() ); if( $linksup === $linksenabled ) { - $msgs[] = $cb->switchSideX( true )->name . ' - ' . $cb->switchSideX( false )->name . " OK - {$linksup}/${linksenabled} links up"; + $msgs[] = $switchAName . ' - ' . $switchBName . " OK - {$linksup}/{$linksenabled} links up"; } else { $okay = false; - $msgs[] = 'ISSUE: ' . $cb->switchSideX( true )->name . ' - ' . $cb->switchSideX( false )->name . " has {$linksup}/${linksenabled} links up"; + $msgs[] = 'ISSUE: ' . $switchAName . ' - ' . $switchBName . " has {$linksup}/{$linksenabled} links up"; } } else { - $msgs[] = 'Ignoring ' . $cb->switchSideX( true )->name . ' - ' . $cb->switchSideX( false )->name . ' as core bundle disabled'; + $msgs[] = 'Ignoring ' . $switchAName . ' - ' . $switchBName . ' as core bundle disabled'; } } diff --git a/app/Http/Controllers/ApiKeyController.php b/app/Http/Controllers/ApiKeyController.php index d92685eeb..41c6ef558 100644 --- a/app/Http/Controllers/ApiKeyController.php +++ b/app/Http/Controllers/ApiKeyController.php @@ -87,7 +87,7 @@ public function feInit(): void 'listOrderBy' => 'created_at', 'listOrderByDir' => 'ASC', 'viewFolderName' => 'api-key', - 'documentation' => 'https://docs.ixpmanager.org/features/api/', + 'documentation' => 'https://docs.ixpmanager.org/latest/features/api/', 'listColumns' => [ 'id' => [ 'title' => 'UID', 'display' => false ], 'apiKey' => [ @@ -116,8 +116,10 @@ public function feInit(): void // phpunit / artisan trips up here without the cli test: if( PHP_SAPI !== 'cli' ) { + /** @var User $user */ + $user = Auth::getUser(); // custom access controls: - switch( Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC ) { + switch( Auth::check() ? $user->privs() : User::AUTH_PUBLIC ) { case User::AUTH_SUPERUSER: case User::AUTH_CUSTUSER || User::AUTH_CUSTADMIN: break; diff --git a/app/Http/Controllers/Auth/SwitchUserController.php b/app/Http/Controllers/Auth/SwitchUserController.php index 98b1a478a..edc59e729 100644 --- a/app/Http/Controllers/Auth/SwitchUserController.php +++ b/app/Http/Controllers/Auth/SwitchUserController.php @@ -64,7 +64,9 @@ class SwitchUserController extends Controller */ public function switch( CustomerToUser $c2u ): RedirectResponse { - if( !Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + if( !$us->isSuperUser() ) { AlertContainer::push( "You are not allowed to switch users!", Alert::DANGER ); return redirect()->to( "/" ); } diff --git a/app/Http/Controllers/Contact/ContactController.php b/app/Http/Controllers/Contact/ContactController.php index d45cfb81d..1061c06ae 100644 --- a/app/Http/Controllers/Contact/ContactController.php +++ b/app/Http/Controllers/Contact/ContactController.php @@ -90,7 +90,7 @@ public function feInit(): void 'pagetitle' => 'Contacts', 'titleSingular' => 'Contact', 'nameSingular' => 'contact', - 'documentation' => 'https://docs.ixpmanager.org/usage/contacts/', + 'documentation' => 'https://docs.ixpmanager.org/latest/usage/contacts/', 'defaultAction' => 'list', 'defaultController' => 'ContactController', 'listOrderBy' => 'name', @@ -98,7 +98,9 @@ public function feInit(): void 'viewFolderName' => 'contact', ]; - switch( $privs = Auth::getUser()->privs() ) { + /** @var User $us */ + $us = Auth::getUser(); + switch( $privs = $us->privs() ) { case User::AUTH_SUPERUSER: $this->feParams->listColumns = [ 'customer' => [ @@ -188,7 +190,9 @@ public function feInit(): void */ private function getFeList( stdClass $feParams, int $id = null, int $role = null, int $cgid = null ): array { - $isSuperUser = Auth::getUser()->isSuperUser(); + /** @var User $us */ + $us = Auth::getUser(); + $isSuperUser = $us->isSuperUser(); $query = Contact::select( [ 'contact.*', 'cust.name AS customer', 'cust.id AS custid' ]) ->leftJoin( 'cust', 'cust.id', 'contact.custid' ) ->when( $id , function ( Builder $query, $id ) { @@ -231,7 +235,7 @@ protected function listGetData( ?int $id = null ): array $cgs = []; if( config('contact_group.types.ROLE') ) { - $activeGroups = ContactGroupAggregator::getGroupNamesTypeArray( false, false , true); + $activeGroups = ContactGroupAggregator::getGroupNamesTypeArray( null, null , true); if( !in_array( $role = request()->role, array_column( $activeGroups[ "ROLE" ], 'id' ), false ) ) { $role = null; @@ -273,7 +277,9 @@ protected function listGetData( ?int $id = null ): array */ protected function preView(): void { - if( Auth::getUser()->custid !== (int)$this->data[ 'item' ][ 'custid' ] && !Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + if( $us->custid !== (int)$this->data[ 'item' ][ 'custid' ] && !$us->isSuperUser() ) { $this->unauthorized(); } @@ -335,13 +341,15 @@ protected function createPrepareForm(): array */ public function doStore( Request $r ): bool|RedirectResponse { + /** @var User $us */ + $us = Auth::getUser(); $this->checkForm( $r ); - $custid = Auth::getUser()->isSuperUser() ? $r->custid : Auth::getUser()->custid; + $custid = $us->isSuperUser() ? $r->custid : $us->custid; $this->object = Contact::make( array_merge( $r->all(), [ - 'creator' => Auth::getUser()->username, + 'creator' => $us->username, 'lastupdatedby' => Auth::id() ] ) ); @@ -366,11 +374,14 @@ public function doStore( Request $r ): bool|RedirectResponse */ protected function editPrepareForm( int $id ): array { + /** @var User $us */ + $us = Auth::getUser(); + $this->setRedirectSession(); $this->object = Contact::findOrFail( $id ); $data = $this->getContactsData(); - if( Auth::getUser()->custid !== $this->object->customer->id && !Auth::getUser()->isSuperUser() ){ + if( $us->custid !== $this->object->customer->id && !$us->isSuperUser() ){ $this->unauthorized(); } @@ -385,11 +396,11 @@ protected function editPrepareForm( int $id ): array ]; $contactGroupDetail = []; - $contactGroup = ContactGroupAggregator::getGroupNamesTypeArray( false, $this->object->id ); + $contactGroup = ContactGroupAggregator::getGroupNamesTypeArray( null, $this->object->id ); foreach( $data[ 'allGroups' ] as $gname => $gvalue ) { foreach( $gvalue as $g ){ - $contactGroupDetail[ $gname . '_' . $g[ 'id' ] ] = request()->old( $gname . '_' . $g[ 'id' ] , isset( $contactGroup[ $gname ][ $g[ 'id' ] ] ) ? 1 : 0 ) ; + $contactGroupDetail[ $gname . '_' . $g[ 'id' ] ] = request()->old( $gname . '_' . $g[ 'id' ] , isset( $contactGroup[ $gname ][ $g[ 'id' ] ] ) ? '1' : '0' ) ; } } @@ -416,18 +427,21 @@ protected function editPrepareForm( int $id ): array */ public function doUpdate( Request $r, int $id ): bool|RedirectResponse { + /** @var User $us */ + $us = Auth::getUser(); + $this->object = Contact::findOrFail( $id ); $this->checkForm( $r ); - $custid = Auth::getUser()->custid; + $custid = $us->custid; - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { $custid = $r->custid; } $this->object->fill( array_merge( $r->all(), [ - 'creator' => Auth::getUser()->username, + 'creator' => $us->username, 'lastupdatedby' => Auth::id() ] ) ); @@ -458,7 +472,10 @@ public function doUpdate( Request $r, int $id ): bool|RedirectResponse */ protected function postStoreRedirect(): ?string { - if( !Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( !$us->isSuperUser() ) { return route( 'contact@list' ); } @@ -485,11 +502,14 @@ protected function postStoreRedirect(): ?string */ protected function preDelete(): bool { + /** @var User $us */ + $us = Auth::getUser(); + session()->remove( 'ixp_contact_delete_custid' ); - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { // keep the customer ID for redirection on success $this->request->session()->put( "ixp_contact_delete_custid", $this->object->customer->id ); - } elseif( $this->object->customer->id !== Auth::getUser()->custid ) { + } elseif( $this->object->customer->id !== $us->custid ) { AlertContainer::push( 'You are not authorised to delete this contact.', Alert::DANGER ); return false; } @@ -535,7 +555,9 @@ public function checkForm( Request $r ): void 'notes' => 'nullable|string|max:255', ]; - if( Auth::getUser()->isSuperUser() ){ + /** @var User $us */ + $us = Auth::getUser(); + if( $us->isSuperUser() ){ $rules = array_merge( $rules, [ 'custid' => 'required|integer|exists:cust,id' ] ); @@ -573,7 +595,7 @@ private function getContactsData(): array if( config('contact_group.types.ROLE') ) { return [ 'roles' => ContactGroupAggregator::getGroupNamesTypeArray( 'ROLE' )[ "ROLE" ], - 'allGroups' => ContactGroupAggregator::getGroupNamesTypeArray( false, false, true ) + 'allGroups' => ContactGroupAggregator::getGroupNamesTypeArray( null, null, true ) ]; } return [ 'roles' => null, 'allGroups' => [] ]; diff --git a/app/Http/Controllers/Contact/ContactGroupController.php b/app/Http/Controllers/Contact/ContactGroupController.php index 547e253d2..c15a1511d 100644 --- a/app/Http/Controllers/Contact/ContactGroupController.php +++ b/app/Http/Controllers/Contact/ContactGroupController.php @@ -78,7 +78,7 @@ public function feInit(): void 'listOrderBy' => 'type', 'listOrderByDir' => 'ASC', 'viewFolderName' => 'contact-group', - 'documentation' => 'https://docs.ixpmanager.org/usage/contacts/#contact-groups', + 'documentation' => 'https://docs.ixpmanager.org/latest/usage/contacts/#contact-groups', 'listColumns' => [ 'type' => [ 'title' => 'Group Name', @@ -143,7 +143,7 @@ protected function canList(): ?RedirectResponse { // are contact groups configured? if( config( 'contact_group.types', false ) === false ) { - AlertContainer::push( 'Contact groups are not configured. Please see the documentation here.', Alert::INFO ); + AlertContainer::push( 'Contact groups are not configured. Please see the documentation here.', Alert::INFO ); return redirect( route( 'contact@list' ) ); } return null; diff --git a/app/Http/Controllers/ContentController.php b/app/Http/Controllers/ContentController.php index f476fd146..8713d858d 100644 --- a/app/Http/Controllers/ContentController.php +++ b/app/Http/Controllers/ContentController.php @@ -61,9 +61,11 @@ class ContentController extends Controller */ public function index( int $priv, string $page ): View { + /** @var User $us */ + $us = Auth::getUser(); // check privilege: if( $priv !== User::AUTH_PUBLIC ) { - if( Auth::guest() || Auth::getUser()->privs() < $priv ) { + if( Auth::guest() || $us->privs() < $priv ) { abort( 403, 'Unauthorized' ); } } @@ -100,10 +102,12 @@ public function public( string $page ): View */ public function members( int $priv, string $page ) { + /** @var User $us */ + $us = Auth::getUser(); // check privilege: if( $priv !== User::AUTH_PUBLIC ) { - if( Auth::guest() || Auth::getUser()->privs() < $priv ) { + if( Auth::guest() || $us->privs() < $priv ) { abort( 403, 'Unauthorized' ); } } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index accf6edd9..79145fa0d 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -23,7 +23,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html */ -use Auth; +use Auth, Countries; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; @@ -100,7 +100,7 @@ protected function getIp(): ?string { foreach( [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ] as $key ) { if( array_key_exists( $key, $_SERVER ) === true ) { - foreach( explode(',', $_SERVER[$key] ) as $ip ) { + foreach( explode(',', (string) $_SERVER[$key] ) as $ip ) { $ip = trim($ip); if( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) { return $ip; @@ -120,8 +120,11 @@ protected function getIp(): ?string */ protected function getAllowedPrivs(): array { + /** @var User $us */ + $us = Auth::getUser(); + $privs = User::$PRIVILEGES_TEXT_NONSUPERUSER; - $isSuperUser = Auth::getUser()->isSuperUser(); + $isSuperUser = $us->isSuperUser(); // If we add a user via the customer overview users list if( request()->custid && request()->is( 'user/create*' ) ) { @@ -136,4 +139,34 @@ protected function getAllowedPrivs(): array } return $privs; } + + /** + * Get an array of countries for a select dropdown. + * + * @return array in form [ISO 2-letter Code] => "Name" + */ + protected function getCountriesSelection(): array { + $countries = Countries::getList(); + $list = []; + foreach($countries as $country) { + $list[$country['iso_3166_2']] = $country['name']; + } + return $list; + } + + /** + * create an option list for a select input element + * @param array $data array of query data eg. ["model" => 'User', "keys" => 'id', "values" => 'name'] + * @return array + */ + protected function getSelectOptions( array $data): array { + $modelName = "IXP\\Models\\" . $data["model"]; + $model = new $modelName; + $rawList = $model::select($data["keys"],$data["values"])->get(); + $list = []; + foreach($rawList as $raw) { + $list[$raw[$data["keys"]]] = $raw[$data["values"]]; + } + return $list; + } } \ No newline at end of file diff --git a/app/Http/Controllers/Customer/CustomerController.php b/app/Http/Controllers/Customer/CustomerController.php index 1e75a6b9e..c667a2eca 100644 --- a/app/Http/Controllers/Customer/CustomerController.php +++ b/app/Http/Controllers/Customer/CustomerController.php @@ -25,6 +25,7 @@ use App, Auth, Cache, Countries, Former, Mail; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\{ @@ -216,28 +217,28 @@ public function edit( Request $r, Customer $cust ): View 'type' => $r->old( 'type', $cust->type ), 'shortname' => $r->old( 'shortname', $cust->shortname ), 'corpwww' => $r->old( 'corpwww', $cust->corpwww ), - 'datejoin' => $r->old( 'datejoin', !$cust->datejoin ?: $cust->datejoin->format( "Y-m-d" ) ) , - 'dateleave' => $r->old( 'dateleave', !$cust->dateleave ?: $cust->dateleave->format( "Y-m-d" ) ), + 'datejoin' => $r->old( 'datejoin', !$cust->datejoin ?: Carbon::parse($cust->datejoin)->format( "Y-m-d" ) ) , + 'dateleave' => $r->old( 'dateleave', !$cust->dateleave ?: Carbon::parse($cust->dateleave)->format( "Y-m-d" ) ), 'status' => $r->old( 'status', $cust->status ), 'MD5Support' => $r->old( 'MD5Support', $cust->MD5Support ), 'abbreviatedName' => $r->old( 'abbreviatedName', $cust->abbreviatedName ), - 'autsys' => $r->old( 'autsys', $cust->autsys ), - 'maxprefixes' => $r->old( 'maxprefixes', $cust->maxprefixes ), + 'autsys' => $r->old( 'autsys', (string) $cust->autsys ), + 'maxprefixes' => $r->old( 'maxprefixes', (string) $cust->maxprefixes ), 'peeringpolicy' => $r->old( 'peeringpolicy', $cust->peeringpolicy ), 'peeringemail' => $r->old( 'peeringemail', $cust->peeringemail ), 'peeringmacro' => $r->old( 'peeringmacro', $cust->peeringmacro ), 'peeringmacrov6' => $r->old( 'peeringmacrov6', $cust->peeringmacrov6 ), - 'irrdb' => $r->old( 'irrdb', $cust->irrdb ), - 'activepeeringmatrix' => $r->old( 'activepeeringmatrix', $cust->activepeeringmatrix ), + 'irrdb' => $r->old( 'irrdb', (string) $cust->irrdb ), + 'activepeeringmatrix' => $r->old( 'activepeeringmatrix', (string) $cust->activepeeringmatrix ), 'nocphone' => $r->old( 'nocphone', $cust->nocphone ), 'noc24hphone' => $r->old( 'noc24hphone', $cust->noc24hphone ), 'nocemail' => $r->old( 'nocemail', $cust->nocemail ), 'nochours' => $r->old( 'nochours', $cust->nochours ), 'nocwww' => $r->old( 'nocwww', $cust->nocwww ), - 'isReseller' => $r->old( 'isReseller', $cust->isReseller ), - 'isResold' => $r->old( 'isResold', ( $this->resellerMode() && $cust->reseller ) ), - 'reseller' => $r->old( 'reseller', ( $this->resellerMode() && $cust->reseller ) ? $cust->reseller : false ), - 'peeringdb_oauth' => $r->old( 'peeringdb_oauth', $cust->peeringdb_oauth ), + 'isReseller' => $r->old( 'isReseller', (string) $cust->isReseller ), + 'isResold' => $r->old( 'isResold', ( $this->resellerMode() && $cust->reseller ) ? '1' : '0' ), + 'reseller' => $r->old( 'reseller', ( $this->resellerMode() && $cust->reseller ) ? (string) $cust->reseller : null ), + 'peeringdb_oauth' => $r->old( 'peeringdb_oauth', (string) $cust->peeringdb_oauth ), ]); return view( 'customer/edit' )->with([ @@ -485,7 +486,7 @@ public function loadPeersFrag( Request $r, Customer $cust ): JsonResponse return response()->json( [ 'success' => true, 'htmlFrag' => view('customer/overview-tabs/peers')->with([ - 'peers' => CustomerAggregator::getPeeringManagerArrayByType( $cust, Vlan::peeringManager()->orderBy( 'number' )->get(), [ 4,6 ] ) ?: false + 'peers' => CustomerAggregator::getPeeringManagerArrayByType( $cust, Vlan::peeringManager()->orderBy( 'number' )->get()->toArray(), [ 4,6 ] ) ?: false ])->render() ] ); } diff --git a/app/Http/Controllers/Customer/CustomerNotesController.php b/app/Http/Controllers/Customer/CustomerNotesController.php index 317499e33..002240979 100644 --- a/app/Http/Controllers/Customer/CustomerNotesController.php +++ b/app/Http/Controllers/Customer/CustomerNotesController.php @@ -37,6 +37,7 @@ Container as AlertContainer }; +use IXP\Models\User; use Illuminate\Http\{ RedirectResponse }; @@ -57,7 +58,10 @@ class CustomerNotesController extends Controller */ public function readAll() : RedirectResponse { - $prefs = Auth::getUser()->prefs; + /** @var User $us */ + $us = Auth::getUser(); + + $prefs = $us->prefs; // Delete all last_read notes prefs if( isset( $prefs[ 'notes' ][ 'last_read' ] ) ) { unset( $prefs[ 'notes' ][ 'last_read' ] ); @@ -66,8 +70,8 @@ public function readAll() : RedirectResponse // Set read_upto at now() $prefs[ 'notes' ][ 'read_upto' ] = now()->format( 'Y-m-d H:i:s' ); - Auth::getUser()->prefs = $prefs; - Auth::getUser()->save(); + $us->prefs = $prefs; + $us->save(); AlertContainer::push( 'All notes have been mark as read.', Alert::SUCCESS ); @@ -81,8 +85,10 @@ public function readAll() : RedirectResponse */ public function unreadNotes() { - $lastRead = Auth::getUser()->prefs[ 'notes' ][ 'last_read' ] ?? []; - $readUpto = Auth::getUser()->prefs[ 'notes' ][ 'read_upto' ] ?? null; + /** @var User $us */ + $us = Auth::getUser(); + $lastRead = $us->prefs[ 'notes' ][ 'last_read' ] ?? []; + $readUpto = $us->prefs[ 'notes' ][ 'read_upto' ] ?? null; $latestNotes = []; $custs = Customer::selectRaw( diff --git a/app/Http/Controllers/Customer/CustomerTagController.php b/app/Http/Controllers/Customer/CustomerTagController.php index dfce8b454..a149512f8 100644 --- a/app/Http/Controllers/Customer/CustomerTagController.php +++ b/app/Http/Controllers/Customer/CustomerTagController.php @@ -81,7 +81,7 @@ public function feInit(): void 'listOrderByDir' => 'ASC', 'viewFolderName' => 'customer/tag', 'extraDeleteMessage' => "This tag will be removed from all " . config( 'ixp_fe.lang.customer.many' ) . " tagged with it.", - 'documentation' => 'https://docs.ixpmanager.org/usage/customer-tags/', + 'documentation' => 'https://docs.ixpmanager.org/latest/usage/customer-tags/', 'listColumns' => [ 'tag' => 'Tag', 'display_as' => 'Display As', diff --git a/app/Http/Controllers/Customer/LogoController.php b/app/Http/Controllers/Customer/LogoController.php index 1c2ae765f..7019ab72c 100644 --- a/app/Http/Controllers/Customer/LogoController.php +++ b/app/Http/Controllers/Customer/LogoController.php @@ -36,10 +36,7 @@ use IXP\Http\Controllers\Controller; -use IXP\Models\{ - Customer, - Logo -}; +use IXP\Models\{Customer, Logo, User}; use IXP\Http\Requests\Customer\Logo as LogoRequest; @@ -104,6 +101,8 @@ public function manage( ?int $id ): View */ public function store( LogoRequest $r ): RedirectResponse { + /** @var User $us */ + $us = Auth::getUser(); $c = $this->loadCustomer( $r->id ); if( !$r->hasFile( 'logo' ) ) { @@ -128,7 +127,7 @@ public function store( LogoRequest $r ): RedirectResponse $logo = Logo::make( [ 'original_name' => $file->getClientOriginalName(), 'stored_name' => sha1( $img->getEncoded() ) . '.png', - 'uploaded_by' => Auth::getUser()->username, + 'uploaded_by' => $us->username, 'width' => $img->width(), 'height' => $img->height(), ] ); @@ -145,7 +144,7 @@ public function store( LogoRequest $r ): RedirectResponse $img->save( $saveTo ); AlertContainer::push( "Logo uploaded.", Alert::SUCCESS ); - return redirect( Auth::getUser()->isSuperUser() ? route( "customer@overview" , [ 'cust' => $c->id ] ) : route( "dashboard@index" ) ); + return redirect( $us->isSuperUser() ? route( "customer@overview" , [ 'cust' => $c->id ] ) : route( "dashboard@index" ) ); } /** @@ -159,6 +158,9 @@ public function store( LogoRequest $r ): RedirectResponse */ public function delete( int $id ) : RedirectResponse { + /** @var User $us */ + $us = Auth::getUser(); + $c = $this->loadCustomer( $id ); // do we have a logo? @@ -173,7 +175,8 @@ public function delete( int $id ) : RedirectResponse $oldLogo->delete(); AlertContainer::push( "Logo deleted.", Alert::SUCCESS ); - return redirect( Auth::getUser()->isSuperUser() ? route( 'customer@overview', [ 'cust' => $c->id ] ) : route( 'dashboard@index' ) ); + + return redirect( $us->isSuperUser() ? route( 'customer@overview', [ 'cust' => $c->id ] ) : route( 'dashboard@index' ) ); } /** @@ -185,7 +188,9 @@ public function delete( int $id ) : RedirectResponse */ private function loadCustomer( ?int $id ): Customer { - if( Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + if( $us->isSuperUser() ) { return Customer::findOrFail( $id ); } return Customer::find( Auth::getUser()->custid ); diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 29441e438..69d283e58 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -40,12 +40,7 @@ BillingDetailsRequest }; -use IXP\Models\{ - Aggregators\RsPrefixAggregator, - Customer, - CustomerNote, - NetworkInfo -}; +use IXP\Models\{Aggregators\RsPrefixAggregator, Customer, CustomerNote, NetworkInfo, P2pDailyStats, User}; use IXP\Utils\View\Alert\{ Alert, @@ -77,8 +72,10 @@ class DashboardController extends Controller */ public function index( Request $r, string $tab = null ): RedirectResponse|View { + /** @var User $us */ + $us = Auth::getUser(); // Redirect Super user - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return redirect( '/'); } @@ -120,7 +117,6 @@ public function index( Request $r, string $tab = null ): RedirectResponse|View 'recentMembers' => Customer::getConnected( true, true, 'datejoin', 'desc' )->take( 5 ), 'crossConnects' => $c->patchPanelPorts()->masterPort()->get(), 'notesInfo' => CustomerNote::analyseForUser( $cns, $c, Auth::getUser() ), - 'rsRoutes' => $rsRoutes ?? null, 'resoldCustomer' => $resoldCustomer ?? null, 'netInfo' => $netinfo ?? null, 'c' => $c->load( [ @@ -138,6 +134,8 @@ public function index( Request $r, string $tab = null ): RedirectResponse|View 'dataNocDetail' => $dataNocDetail, 'countries' => Countries::getList('name' ), 'tab' => strtolower( $tab ) ?: false, + 'p2pstats' => P2pDailyStats::latestN( $c ), + ]); } diff --git a/app/Http/Controllers/DiagnosticsController.php b/app/Http/Controllers/DiagnosticsController.php new file mode 100644 index 000000000..ea92f28b9 --- /dev/null +++ b/app/Http/Controllers/DiagnosticsController.php @@ -0,0 +1,153 @@ + + * @author Barry O'Donovan + * @category IXP + * @package IXP\Http\Controllers + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +class DiagnosticsController extends Controller +{ + + /** + * Run the diagnostics suite + */ + public function customer( Customer $customer, Diagnostics $diagnostics ): View + { + $resultSets = []; + + $resultSets[] = $diagnostics->getCustomerDiagnostics($customer); + + //info("resSets\n".var_export($resultSets, true)); + $resultSets[] = $diagnostics->getCustomerIrrdbDiagnostics($customer); + + foreach( $customer->virtualInterfaces as $vi ) { + $viSet = $diagnostics->getVirtualInterfaceDiagnostics( $vi ); + + // get the Physical Interface Diagnostics Data and integrate here into the VI array + foreach( $vi->physicalInterfaces as $pi ) { + $viSet->addSubset( $diagnostics->getPhysicalInterfaceDiagnostics( $pi ) ); + $viSet->addSubset( $diagnostics->getTransceiverDiagnostics( $pi ) ); + } + + // get the Vlan Interface Diagnostics data + $protocols = [4,6]; + foreach( $vi->vlanInterfaces as $vli ) { + + $viSet->addSubset( $diagnostics->getVlanInterfaceL2Diagnostics( $vli ) ); + + foreach( $protocols as $protocol ) { + + // if the protocol disabled, there is no diagnostics info + $protocolCellEnabled = "ipv" . $protocol . "enabled"; + if($vli->$protocolCellEnabled) { + $viSet->addSubset( $diagnostics->getVlanInterfaceL3Diagnostics( $vli, $protocol ) ); + $viSet->addSubset( $diagnostics->getRouterBgpSessionsDiagnostics( $vli, $protocol ) ); + } + + } + + } + + $resultSets[] = $viSet; + + } + + $badges = []; + $enabledBadges = [ + DiagnosticResult::TYPE_FATAL, + DiagnosticResult::TYPE_ERROR, + DiagnosticResult::TYPE_WARN, + DiagnosticResult::TYPE_INFO, + //DiagnosticResult::TYPE_DEBUG, + //DiagnosticResult::TYPE_TRACE, + DiagnosticResult::TYPE_GOOD, + ]; + + $badgeTypes = [ + DiagnosticResult::TYPE_FATAL => 'tw-border-red-600 tw-bg-red-600', + DiagnosticResult::TYPE_ERROR => 'tw-border-red-400 tw-bg-red-400', + DiagnosticResult::TYPE_WARN => 'tw-border-amber-400 tw-bg-amber-400', + DiagnosticResult::TYPE_INFO => 'tw-border-teal-400 tw-bg-teal-400', + DiagnosticResult::TYPE_DEBUG => 'tw-border-gray-400 tw-bg-gray-400', + DiagnosticResult::TYPE_TRACE => 'tw-border-gray-300 tw-bg-gray-300', + DiagnosticResult::TYPE_GOOD => 'tw-border-lime-500 tw-bg-lime-500', + ]; + + foreach(DiagnosticResult::$RESULT_TYPES_TEXT as $result => $text) { + + $plainResult = new DiagnosticResult( + name: '', + result: $result, + narrative: '', + ); + $enable = ' tw-opacity-40'; + if(in_array($result, $enabledBadges)) { + $enable = ''; + } + + $badgeExtension = 'badge()); + } + + // former view: diagnostics.results (still works) + return view( 'diagnostics.newresults')->with([ + "badgeTypes" => $badgeTypes, + "badges" => $badges, + "customer" => $customer, + "resultSets" => $resultSets, + ]); + } + + + /** + * Run the diagnostics suite + */ + public function irrdb( Customer $customer, Diagnostics $diagnostics ): View + { + $resultSets = []; + + $resultSets[] = $diagnostics->getCustomerIrrdbDiagnostics($customer); + + return view( 'diagnostics.results')->with([ + "customer" => $customer, + "resultSets" => $resultSets, + ]); + } + + +} diff --git a/app/Http/Controllers/Docstore/DirectoryController.php b/app/Http/Controllers/Docstore/DirectoryController.php index 2abfd7e5b..c56979e4f 100644 --- a/app/Http/Controllers/Docstore/DirectoryController.php +++ b/app/Http/Controllers/Docstore/DirectoryController.php @@ -73,7 +73,10 @@ public function list( DocstoreDirectory $dir = null ): View|RedirectResponse $privs = $user->privs; } - $dirs = DocstoreDirectory::getHierarchyForUserClass( optional( $user )->privs() ?? 0 )[ $dir->id ?? '' ] ?? []; + /** @var User $us */ + $us = optional($user); + + $dirs = DocstoreDirectory::getHierarchyForUserClass( $us->privs() ?? 0 )[ $dir->id ?? '' ] ?? []; $files = DocstoreFile::getListing( $dir, $privs ); $nbTotalDirs = count( DocstoreDirectory::getHierarchyForUserClass( User::AUTH_SUPERUSER )[ $dir->id ?? '' ] ?? [] ); diff --git a/app/Http/Controllers/Docstore/FileController.php b/app/Http/Controllers/Docstore/FileController.php index 823dc7a8f..6908ea8c3 100644 --- a/app/Http/Controllers/Docstore/FileController.php +++ b/app/Http/Controllers/Docstore/FileController.php @@ -42,7 +42,7 @@ use Illuminate\View\View; -use League\Flysystem\Exception as FlySystemException; +use League\Flysystem\FilesystemException; use IXP\Http\Controllers\Controller; @@ -84,7 +84,7 @@ public function upload( Request $r ): View $this->authorize( 'create', DocstoreFile::class ); Former::populate([ - 'min_privs' => $r->old( 'min_privs', User::AUTH_SUPERUSER ) + 'min_privs' => $r->old( 'min_privs', (string) User::AUTH_SUPERUSER ) ]); return view( 'docstore/file/upload', [ @@ -110,6 +110,7 @@ public function store( Request $r ): RedirectResponse $file = $r->file('uploadedFile'); $path = $file->store( '', 'docstore' ); + /** @psalm-suppress InvalidArgument */ $file = DocstoreFile::create( [ 'name' => $r->name, 'description' => $r->description, @@ -144,7 +145,7 @@ public function edit( Request $r , DocstoreFile $file ): View 'name' => $r->old( 'name', $file->name ), 'description' => $r->old( 'descripton', $file->description ), 'sha256' => $r->old( 'sha256', $file->sha256 ), - 'min_privs' => $r->old( 'min_privs', $file->min_privs ), + 'min_privs' => $r->old( 'min_privs', (string) $file->min_privs ), 'docstore_directory_id' => $r->old( 'docstore_directory_id', $file->docstore_directory_id ?: '' ), ]); @@ -178,6 +179,7 @@ public function update( Request $r , DocstoreFile $file ): RedirectResponse $uploadedFile = $r->file('uploadedFile'); $path = $uploadedFile->store( '', 'docstore' ); + /** @psalm-suppress InvalidArgument */ $file->update([ 'path' => $path, 'sha256' => hash_file( 'sha256', $uploadedFile ), @@ -251,8 +253,9 @@ public function download( DocstoreFile $file ): mixed } try { + /** @psalm-suppress UndefinedInterfaceMethod */ return Storage::disk( $file->disk )->download( $file->path, $file->name ); - } catch( FlySystemException $e ) { + } catch( FilesystemException $e ) { AlertContainer::push( "This file could not be found / downloaded. Please report this error to the support team.", Alert::DANGER ); return redirect()->back(); } @@ -316,6 +319,7 @@ public function delete( Request $r , DocstoreFile $file ): RedirectResponse */ private function checkForm( Request $r, ?DocstoreFile $file = null ): void { + /** @psalm-suppress InvalidArgument */ $r->validate( [ 'name' => 'required|max:100', 'uploadedFile' => Rule::requiredIf( function() use ( $r, $file ) { diff --git a/app/Http/Controllers/DocstoreCustomer/FileController.php b/app/Http/Controllers/DocstoreCustomer/FileController.php index 485e4544c..123191b1b 100644 --- a/app/Http/Controllers/DocstoreCustomer/FileController.php +++ b/app/Http/Controllers/DocstoreCustomer/FileController.php @@ -52,7 +52,7 @@ Container as AlertContainer }; -use League\Flysystem\Exception as FlySystemException; +use League\Flysystem\FilesystemException; /** * FileController Controller @@ -106,8 +106,9 @@ public function download( Customer $cust, DocstoreCustomerFile $file ) $this->authorize( 'download', $file ); try { + /** @psalm-suppress UndefinedInterfaceMethod */ return Storage::disk( $file->disk )->download( $file->path, $file->name ); - } catch( FlySystemException $e ) { + } catch( FilesystemException $e ) { AlertContainer::push( "This customer file could not be found / downloaded. Please report this error to the support team.", Alert::DANGER ); return redirect( route( 'docstore-c-dir@list', [ 'cust' => $file->customer->id , 'dir' => $file->docstore_customer_directory_id ] ) ); } @@ -151,7 +152,7 @@ public function upload( Request $r, Customer $cust ): view $this->authorize( 'create', DocstoreCustomerFile::class ); Former::populate([ - 'min_privs' => $r->old( 'min_privs', User::AUTH_SUPERUSER ) + 'min_privs' => $r->old( 'min_privs', (string) User::AUTH_SUPERUSER ) ]); return view( 'docstore-customer/file/upload', [ @@ -179,8 +180,9 @@ public function store( Request $r, Customer $cust ): RedirectResponse $uploadedFile = $r->file('uploadedFile' ); - $path = $uploadedFile->store( $cust->id, 'docstore_customers' ); + $path = $uploadedFile->store( (string) $cust->id, 'docstore_customers' ); + /** @psalm-suppress InvalidArgument */ $file = DocstoreCustomerFile::create( [ 'name' => $r->name, 'description' => $r->description, @@ -218,7 +220,7 @@ public function edit( Request $r, Customer $cust, DocstoreCustomerFile $file ): 'name' => $r->old( 'name', $file->name ), 'description' => $r->old( 'descripton', $file->description ), 'sha256' => $r->old( 'sha256', $file->sha256 ), - 'min_privs' => $r->old( 'min_privs', $file->min_privs ), + 'min_privs' => $r->old( 'min_privs', (string) $file->min_privs ), 'docstore_customer_directory_id' => $r->old( 'docstore_customer_directory_id',$file->docstore_customer_directory_id ?? '' ), ]); @@ -254,6 +256,7 @@ public function update( Request $r, Customer $cust, DocstoreCustomerFile $file ) $uploadedFile = $r->file('uploadedFile'); $path = $uploadedFile->store( $file->customer->id, 'docstore_customers' ); + /** @psalm-suppress InvalidArgument */ $file->update([ 'path' => $path, 'sha256' => hash_file( 'sha256', $uploadedFile ), @@ -322,9 +325,11 @@ private function checkForm( Request $r, ?DocstoreCustomerFile $file = null ): vo }), 'sha256' => [ 'nullable', 'max:64', function ( $attribute, $value, $fail ) use( $r ) { + /** @psalm-suppress InvalidArgument */ if( $value && $r->file('uploadedFile' ) && $value !== hash_file( 'sha256', $r->file( 'uploadedFile' ) ) ) { return $fail( 'The sha256 checksum calculated on the server does not match the one you provided.' ); } + return null; }, ], 'min_privs' => 'required|integer|in:' . implode( ',', array_keys( User::$PRIVILEGES ) ), diff --git a/app/Http/Controllers/FilteredPrefixesController.php b/app/Http/Controllers/FilteredPrefixesController.php index dd8191bec..0c3938b77 100644 --- a/app/Http/Controllers/FilteredPrefixesController.php +++ b/app/Http/Controllers/FilteredPrefixesController.php @@ -32,6 +32,7 @@ use IXP\Jobs\FetchFilteredPrefixesForCustomer; use IXP\Models\Customer; +use IXP\Models\User; /** * Filtered Prefixes Controller @@ -57,10 +58,13 @@ class FilteredPrefixesController extends Controller */ public function list( Request $r, Customer $cust ): View { + /** @var User $us */ + $us = Auth::getUser(); + $this->authorize('view', $cust); // are we busting the cache? - if( $r->reset_cache === "1" && Auth::getUser()->isSuperUser() ) { + if( $r->reset_cache === "1" && $us->isSuperUser() ) { Cache::forget('filtered-prefixes-' . $cust->id ); } diff --git a/app/Http/Controllers/Interfaces/Common.php b/app/Http/Controllers/Interfaces/Common.php index 19822e679..ed918cd5e 100644 --- a/app/Http/Controllers/Interfaces/Common.php +++ b/app/Http/Controllers/Interfaces/Common.php @@ -146,11 +146,15 @@ public function processFanoutPhysicalInterface( $r, PhysicalInterface $pi, Virtu } } + $relatedInterface = $pi->relatedInterface(); + // if the physical interface already has a related physical interface and it's not the same as the fanout physical interface - if( $pi->relatedInterface() && $pi->relatedInterface()->id !== $fnpi->id ) { + /** @psalm-suppress InvalidPropertyFetch */ + if( $relatedInterface !== false && $relatedInterface->id !== $fnpi->id ) { // if fanout does not have a virtual interface, relate it with old fanout port virtual interface. if( !$fnpi->virtualInterface ) { - $fnpi->virtualinterfaceid = $pi->relatedInterface()->virtualinterfaceid; + /** @psalm-suppress InvalidPropertyFetch */ + $fnpi->virtualinterfaceid = $relatedInterface->virtualinterfaceid; } $this->removeRelatedInterface( $pi ); @@ -333,58 +337,61 @@ public function warnIfIrrdbFilteringButNoIrrdbSourceSet( VlanInterface $vli ): v /** * Build everything that a Core Bundle need (core link, core Interface etc) * - * @param CoreBundle $cb Core bundle object - * @param Request $r instance of the current HTTP request - * @param array $vis array of the Virtual interfaces ( side A and B ) linked to the core bundle + * @param CoreBundle $coreBundle Core bundle object + * @param Request $request instance of the current HTTP request + * @param array $virtualInterfaces array of the Virtual interfaces ( side A and B ) linked to the core bundle * @param bool $edit Are we editing the core bundle ? * * @return RedirectResponse|bool * * @throws */ - public function buildCorelink( CoreBundle $cb, Request $r, array $vis, bool $edit ) + public function buildCorelink( CoreBundle $coreBundle, Request $request, array $virtualInterfaces, bool $edit ) { - foreach( $r->input( "cl-details" ) as $clDetail ) { - $cl = new CoreLink; + foreach( $request->input( "cl-details" ) as $coreLinkDetail ) { + $coreLink = new CoreLink; - $cl->core_bundle_id = $cb->id; - $cl->enabled = $clDetail[ 'enabled-cl' ] ?? false; + $coreLink->core_bundle_id = $coreBundle->id; + $coreLink->enabled = $coreLinkDetail[ 'enabled-cl' ] ?? false; - $bfd = $clDetail[ 'bfd' ] ?? false; - $type = $edit ? $cb->type : $r->type; + $bfd = $coreLinkDetail[ 'bfd' ] ?? false; + $type = $edit ? $coreBundle->type : $request->type; - $cl->bfd = (int)$type === CoreBundle::TYPE_ECMP ? $bfd : false; - $cl->ipv4_subnet = $clDetail[ 'subnet' ] ?? null; + $coreLink->bfd = (int)$type === CoreBundle::TYPE_ECMP ? $bfd : false; + $coreLink->ipv4_subnet = $coreLinkDetail[ 'subnet' ] ?? null; - foreach( $vis as $side => $vi ) { - if( !( ${ 'sp' . $side } = SwitchPort::find( $clDetail[ "hidden-sp-$side" ] ) ) ) { - return Redirect::back()->withInput( $r->all() ); + $switchPort = []; + $physicalInterface = []; + $coreInterface = []; + foreach( $virtualInterfaces as $side => $virtualInterface ) { + $switchPort[$side] = SwitchPort::find( $coreLinkDetail[ "hidden-sp-$side" ] ); + if( !$switchPort[$side] ) { + return Redirect::back()->withInput( $request->all() ); } - ${ 'sp' . $side }->type = SwitchPort::TYPE_CORE; - ${ 'sp' . $side }->save(); - - // Creating $pia|$pib - ${ 'pi' . $side } = new PhysicalInterface; - ${ 'pi' . $side }->switchportid = ${ 'sp' . $side }->id; - ${ 'pi' . $side }->virtualinterfaceid = $vi->id; - ${ 'pi' . $side }->speed = $edit ? $cb->speedPi() : $r->speed; - ${ 'pi' . $side }->duplex = $edit ? $cb->duplexPi() : $r->duplex; - ${ 'pi' . $side }->autoneg = $edit ? $cb->autoNegPi() : $r->input('auto-neg' ) ?? false; - ${ 'pi' . $side }->status = PhysicalInterface::STATUS_CONNECTED; - ${ 'pi' . $side }->virtualinterfaceid = $vis[ $side ]->id; - ${ 'pi' . $side }->save(); - - // Creating $cia|$cib - ${ 'ci' . $side } = new CoreInterface; - ${ 'ci' . $side }->physical_interface_id = ${ 'pi' . $side }->id; - ${ 'ci' . $side }->save(); + $switchPort[$side]->type = SwitchPort::TYPE_CORE; + $switchPort[$side]->save(); + + // Creating $physicalInterface A/B + $physicalInterface[$side] = new PhysicalInterface; + $physicalInterface[$side]->switchportid = $switchPort[$side]->id; + $physicalInterface[$side]->virtualinterfaceid = $virtualInterface->id; + $physicalInterface[$side]->speed = $edit ? $coreBundle->speedPi() : $request->speed; + $physicalInterface[$side]->duplex = $edit ? $coreBundle->duplexPi() : $request->duplex; + $physicalInterface[$side]->autoneg = $edit ? $coreBundle->autoNegPi() : $request->input('auto-neg' ) ?? false; + $physicalInterface[$side]->status = PhysicalInterface::STATUS_CONNECTED; + $physicalInterface[$side]->save(); + + // Creating $coreInterface A/B + $coreInterface[$side] = new CoreInterface; + $coreInterface[$side]->physical_interface_id = $physicalInterface[$side]->id; + $coreInterface[$side]->save(); } - $cl->core_interface_sidea_id = $cia->id;/** @var $cia CoreInterface */ - $cl->core_interface_sideb_id = $cib->id;/** @var $cib CoreInterface */ + $coreLink->core_interface_sidea_id = $coreInterface['a']->id; + $coreLink->core_interface_sideb_id = $coreInterface['b']->id; - $cl->save(); + $coreLink->save(); } return true; } diff --git a/app/Http/Controllers/Interfaces/CoreBundleController.php b/app/Http/Controllers/Interfaces/CoreBundleController.php index 22ff6b37d..b9e630a85 100644 --- a/app/Http/Controllers/Interfaces/CoreBundleController.php +++ b/app/Http/Controllers/Interfaces/CoreBundleController.php @@ -139,28 +139,39 @@ public function storeWizard( Store $r ): RedirectResponse * * @return View */ - public function edit( Request $r, CoreBundle $cb ): View + public function edit( Request $r, CoreBundle $cb ): View { - // fill the form with the core bundle data - Former::populate([ - 'custid' => $r->old('custid', $cb->customer()->id ), - 'description' => $r->old('description', $cb->description ), - 'graph_title' => $r->old('graph_title', $cb->graph_title ), - 'cost' => $r->old('cost', $cb->cost ), - 'preference' => $r->old('preference', $cb->preference ), - 'type' => $r->old('type', $cb->type ), - 'ipv4_subnet' => $r->old('ipv4_subnet', $cb->ipv4_subnet ), - 'enabled' => $r->old('enabled', $cb->enabled ), - 'bfd' => $r->old('bfd', $cb->bfd ), - 'stp' => $r->old('stp', $cb->stp ), - ]); + $customer = $cb->customer(); + /** @psalm-suppress InvalidPropertyFetch */ + $customerId = !$customer ? 0 : $customer->id; - return view( 'interfaces/core-bundle/edit/edit-wizard' )->with([ - 'cb' => $cb, - 'customers' => Customer::internal()->get(), - 'switchPortsSideA' => SwitcherAggregator::allPorts( $cb->switchSideX( true )->id ,[ SwitchPort::TYPE_CORE, SwitchPort::TYPE_UNSET ], notAssignToPI: true ), - 'switchPortsSideB' => SwitcherAggregator::allPorts( $cb->switchSideX( false )->id ,[ SwitchPort::TYPE_CORE, SwitchPort::TYPE_UNSET ], notAssignToPI: true ), - ]); + // fill the form with the core bundle data + Former::populate( [ + 'custid' => $r->old( 'custid', (string)$customerId ), + 'description' => $r->old( 'description', $cb->description ), + 'graph_title' => $r->old( 'graph_title', $cb->graph_title ), + 'cost' => $r->old( 'cost', (string)$cb->cost ), + 'preference' => $r->old( 'preference', (string)$cb->preference ), + 'type' => $r->old( 'type', (string)$cb->type ), + 'ipv4_subnet' => $r->old( 'ipv4_subnet', $cb->ipv4_subnet ), + 'enabled' => $r->old( 'enabled', (string)$cb->enabled ), + 'bfd' => $r->old( 'bfd', (string)$cb->bfd ), + 'stp' => $r->old( 'stp', (string)$cb->stp ), + ] ); + + $switchSideA = $cb->switchSideX(); + /** @psalm-suppress InvalidPropertyFetch */ + $switchSideAId = $switchSideA ? $switchSideA->id : null; + $switchSideB = $cb->switchSideX( false ); + /** @psalm-suppress InvalidPropertyFetch */ + $switchSideBId = $switchSideB ? $switchSideB->id : null; + + return view( 'interfaces/core-bundle/edit/edit-wizard' )->with( [ + 'cb' => $cb, + 'customers' => Customer::internal()->get(), + 'switchPortsSideA' => SwitcherAggregator::allPorts( $switchSideAId, [ SwitchPort::TYPE_CORE, SwitchPort::TYPE_UNSET ], notAssignToPI: true ), + 'switchPortsSideB' => SwitcherAggregator::allPorts( $switchSideBId, [ SwitchPort::TYPE_CORE, SwitchPort::TYPE_UNSET ], notAssignToPI: true ), + ] ); } /** diff --git a/app/Http/Controllers/Interfaces/PhysicalInterfaceController.php b/app/Http/Controllers/Interfaces/PhysicalInterfaceController.php index 8671ac536..e7912459d 100644 --- a/app/Http/Controllers/Interfaces/PhysicalInterfaceController.php +++ b/app/Http/Controllers/Interfaces/PhysicalInterfaceController.php @@ -201,18 +201,18 @@ public function edit( Request $r, PhysicalInterface $pi, VirtualInterface $vi = // fill the form with physical interface data $data = [ 'switch' => $r->old( 'switch', $pi->switchPort->switchid ), - 'switchportid' => $r->old( 'switchportid', $pi->switchportid ), + 'switchportid' => $r->old( 'switchportid', (string)$pi->switchportid ), 'status' => $r->old( 'status', $pi->status ), 'speed' => $r->old( 'speed', $pi->speed ), 'duplex' => $r->old( 'duplex', $pi->duplex ), - 'rate_limit' => $r->old( 'rate_limit', $pi->rate_limit ), - 'autoneg' => $r->old( 'autoneg', $pi->autoneg ), + 'rate_limit' => $r->old( 'rate_limit', (string)$pi->rate_limit ), + 'autoneg' => $r->old( 'autoneg', (string)$pi->autoneg ), 'notes' => $r->old( 'notes', $pi->notes ), ]; // get all the switch ports available and add the switch port associated to the physical interface in the list $switchports = SwitcherAggregator::allPorts( $pi->switchPort->switchid, [], [], true, true ) + - [ $pi->switchportid => + [ (string)$pi->switchportid => [ "name" => $pi->switchPort->name, "id" => $pi->switchportid, "type" => $pi->switchPort->type, @@ -341,7 +341,7 @@ private function mergeCoreLinkDetails( ?PhysicalInterface $pi, array $data ): ar return $data; } - /** @var $piB PhysicalInterface */ + /** @var PhysicalInterface $piB */ $data['switch-b'] = $piB->switchPort->switchid; $data['switch-port-b'] = $piB->switchportid; $data['status-b'] = $piB->status; diff --git a/app/Http/Controllers/Interfaces/SflowReceiverController.php b/app/Http/Controllers/Interfaces/SflowReceiverController.php index 4b73f5817..a4c976e2f 100644 --- a/app/Http/Controllers/Interfaces/SflowReceiverController.php +++ b/app/Http/Controllers/Interfaces/SflowReceiverController.php @@ -109,7 +109,7 @@ public function edit( Request $r, SflowReceiver $sflr, VirtualInterface $vi = nu { Former::populate([ 'dst_ip' => $r->old( 'dst_ip', $sflr->dst_ip ), - 'dst_port' => $r->old( 'dst_port', $sflr->dst_port ), + 'dst_port' => $r->old( 'dst_port', (string)$sflr->dst_port ), ]); return view( 'interfaces/sflow-receiver/edit' )->with([ diff --git a/app/Http/Controllers/Interfaces/VirtualInterfaceController.php b/app/Http/Controllers/Interfaces/VirtualInterfaceController.php index 9b0344994..43c51ffb1 100644 --- a/app/Http/Controllers/Interfaces/VirtualInterfaceController.php +++ b/app/Http/Controllers/Interfaces/VirtualInterfaceController.php @@ -141,7 +141,7 @@ public function create( Request $r, Customer $cust = null ): View { if( $cust ) { Former::populate( [ - 'custid' => $r->old( 'cust', $cust->id ), + 'custid' => $r->old( 'cust', (string)$cust->id ), ] ); } @@ -196,13 +196,13 @@ public function edit( Request $r, VirtualInterface $vi ): View // fill the form with Virtual interface data Former::populate([ - 'custid' => $r->old( 'custid', $vi->custid ), - 'trunk' => $r->old( 'trunk', $vi->trunk ), - 'lag_framing' => $r->old( 'lag_framing', $vi->lag_framing ), - 'fastlacp' => $r->old( 'fastlacp', $vi->fastlacp ), + 'custid' => $r->old( 'custid', (string)$vi->custid ), + 'trunk' => $r->old( 'trunk', (string)$vi->trunk ), + 'lag_framing' => $r->old( 'lag_framing', (string)$vi->lag_framing ), + 'fastlacp' => $r->old( 'fastlacp', (string)$vi->fastlacp ), 'description' => $r->old( 'description', $vi->description ), - 'channelgroup' => $r->old( 'channel-group', $vi->channelgroup ), - 'mtu' => $r->old( 'mtu', $vi->mtu ), + 'channelgroup' => $r->old( 'channel-group', (string)$vi->channelgroup ), + 'mtu' => $r->old( 'mtu', (string)$vi->mtu ), 'name' => $name, ]); diff --git a/app/Http/Controllers/Interfaces/VlanInterfaceController.php b/app/Http/Controllers/Interfaces/VlanInterfaceController.php index b67a4d922..fb5fab1d5 100644 --- a/app/Http/Controllers/Interfaces/VlanInterfaceController.php +++ b/app/Http/Controllers/Interfaces/VlanInterfaceController.php @@ -69,62 +69,62 @@ class VlanInterfaceController extends Common */ public function list(): View { - return view( 'interfaces/vlan/list' )->with([ - 'vlis' => VlanInterface::with( 'virtualInterface.customer' ) + return view( 'interfaces/vlan/list' )->with( [ + 'vlis' => VlanInterface::with( 'virtualInterface.customer' ) ->with( 'vlan' ) ->with( 'ipv4address' ) ->with( 'ipv6address' ) - ->get() - ]); + ->get(), + ] ); } /** * Duplicate a VLAN interface * - * @param VlanInterface $vli VLI that we will get the information from - * @param Vlan $v vlan where we will create the new VLI + * @param VlanInterface $vli VLI that we will get the information from + * @param Vlan $v vlan where we will create the new VLI * * @return View */ public function duplicateForm( VlanInterface $vli, Vlan $v ): View { - return $this->edit( request(), $vli, null , $v ); + return $this->edit( request(), $vli, null, $v ); } /** * Display the form to edit a VLAM interface * - * @param Request $r - * @param VirtualInterface $vi The virtual interface to add this VLI to + * @param Request $r + * @param VirtualInterface $vi The virtual interface to add this VLI to * * @return View */ public function create( Request $r, VirtualInterface $vi ): View { - Former::populate([ - 'maxbgpprefix' => $r->old( 'maxbgpprefix', $vi->customer->maxprefixes ), - ]); - - return view( 'interfaces/vlan/edit' )->with([ - 'vlans' => Vlan::orderBy('number')->get(), - 'vli' => false, - 'vi' => $vi, - 'redirect2vi' => $vi ? true : false, - 'duplicateTo' => false - ]); + Former::populate( [ + 'maxbgpprefix' => $r->old( 'maxbgpprefix', $vi->customer->maxprefixes ), + ] ); + + return view( 'interfaces/vlan/edit' )->with( [ + 'vlans' => Vlan::orderBy( 'number' )->get(), + 'vli' => false, + 'vi' => $vi, + 'redirect2vi' => $vi ? true : false, + 'duplicateTo' => false, + ] ); } /** * Create a vlan interface * - * @param StoreVlanInterface $r instance of the current HTTP request + * @param StoreVlanInterface $r instance of the current HTTP request * * @return RedirectResponse */ public function store( StoreVlanInterface $r ): RedirectResponse { - $vli = VlanInterface::make( $r->all() ); - $v = Vlan::find( $r->vlanid ); + $vli = VlanInterface::make( $r->all() ); + $v = Vlan::find( $r->vlanid ); if( !$this->setIp( $r, $v, $vli, false ) || !$this->setIp( $r, $v, $vli, true ) ) { return Redirect::back()->withInput( $r->all() ); @@ -142,60 +142,58 @@ public function store( StoreVlanInterface $r ): RedirectResponse /** * Display the form to edit a VLAN interface * - * @param Request $r - * @param VlanInterface $vli The VLAN interface - * @param VirtualInterface|null $vi The virtual interface to add this VLI to - * @param Vlan|null $duplicateTo The ID of the vlan Interface that will receive the data of the the other vli ( $id ) + * @param Request $r + * @param VlanInterface $vli The VLAN interface + * @param VirtualInterface|null $vi The virtual interface to add this VLI to + * @param Vlan|null $duplicateTo The ID of the vlan Interface that will receive the data of the the other vli ( $id ) * * @return View */ - public function edit( Request $r, VlanInterface $vli, VirtualInterface $vi = null, Vlan $duplicateTo = null ): View + public function edit( Request $r, VlanInterface $vli, VirtualInterface $vi = null, Vlan $duplicateTo = null ): View { - Former::populate([ - 'vlanid' => $r->old( 'vlanid', $duplicateTo->id ?? $vli->vlanid ), - 'irrdbfilter' => $r->old( 'irrdbfilter', $vli->irrdbfilter ), - 'mcastenabled' => $r->old( 'mcastenabled', $vli->mcastenabled ), - - 'ipv4enabled' => $r->old( 'ipv4enabled', $vli->ipv4enabled ), - 'ipv4address' => $r->old( 'ipv4address', $vli->ipv4addressid ), - 'ipv4hostname' => $r->old( 'ipv4hostname', $vli->ipv4hostname ), - 'ipv4bgpmd5secret' => $r->old( 'ipv4bgpmd5secret', $vli->ipv4bgpmd5secret ), - 'ipv4canping' => $r->old( 'ipv4canping', $vli->ipv4canping ), - 'ipv4monitorrcbgp' => $r->old( 'ipv4monitorrcbgp', $vli->ipv4monitorrcbgp ), - - 'maxbgpprefix' => $r->old( 'maxbgpprefix', $vli->maxbgpprefix ), - 'rsclient' => $r->old( 'rsclient', $vli->rsclient ), - 'rsmorespecifics' => $r->old( 'rsmorespecifics', $vli->rsmorespecifics ), - 'as112client' => $r->old( 'as112client', $vli->as112client ), - 'busyhost' => $r->old( 'busyhost', $vli->busyhost ), - - 'ipv6enabled' => $r->old( 'ipv6enabled', $vli->ipv6enabled ), - 'ipv6address' => $r->old( 'ipv6address', $vli->ipv6addressid ), - 'ipv6hostname' => $r->old( 'ipv6hostname', $vli->ipv6hostname ), - 'ipv6bgpmd5secret' => $r->old( 'ipv6bgpmd5secret', $vli->ipv6bgpmd5secret ), - 'ipv6canping' => $r->old( 'ipv6canping', $vli->ipv6canping ), - 'ipv6monitorrcbgp' => $r->old( 'ipv6monitorrcbgp', $vli->ipv6monitorrcbgp ), - ]); - - $redirect2vi = (bool) $vi; - if( !$vi ){ + $vlanId = $duplicateTo->id ?? $vli->vlanid; + Former::populate( [ + 'vlanid' => $r->old( 'vlanid', (string)$vlanId ), + 'irrdbfilter' => $r->old( 'irrdbfilter', (string)$vli->irrdbfilter ), + 'mcastenabled' => $r->old( 'mcastenabled', (string)$vli->mcastenabled ), + 'ipv4enabled' => $r->old( 'ipv4enabled', (string)$vli->ipv4enabled ), + 'ipv4address' => $r->old( 'ipv4address', (string)$vli->ipv4addressid ), + 'ipv4hostname' => $r->old( 'ipv4hostname', $vli->ipv4hostname ), + 'ipv4bgpmd5secret' => $r->old( 'ipv4bgpmd5secret', $vli->ipv4bgpmd5secret ), + 'ipv4canping' => $r->old( 'ipv4canping', (string)$vli->ipv4canping ), + 'ipv4monitorrcbgp' => $r->old( 'ipv4monitorrcbgp', (string)$vli->ipv4monitorrcbgp ), + 'maxbgpprefix' => $r->old( 'maxbgpprefix', (string)$vli->maxbgpprefix ), + 'rsclient' => $r->old( 'rsclient', (string)$vli->rsclient ), + 'rsmorespecifics' => $r->old( 'rsmorespecifics', (string)$vli->rsmorespecifics ), + 'as112client' => $r->old( 'as112client', (string)$vli->as112client ), + 'busyhost' => $r->old( 'busyhost', (string)$vli->busyhost ), + 'ipv6enabled' => $r->old( 'ipv6enabled', (string)$vli->ipv6enabled ), + 'ipv6address' => $r->old( 'ipv6address', (string)$vli->ipv6addressid ), + 'ipv6hostname' => $r->old( 'ipv6hostname', $vli->ipv6hostname ), + 'ipv6bgpmd5secret' => $r->old( 'ipv6bgpmd5secret', $vli->ipv6bgpmd5secret ), + 'ipv6canping' => $r->old( 'ipv6canping', (string)$vli->ipv6canping ), + 'ipv6monitorrcbgp' => $r->old( 'ipv6monitorrcbgp', (string)$vli->ipv6monitorrcbgp ), + ] ); + + $redirect2vi = (bool)$vi; + if( !$vi ) { $vi = $vli->virtualInterface; } - return view( 'interfaces/vlan/edit' )->with([ - 'vlans' => Vlan:: orderBy('number')->get(), - 'vli' => $vli, - 'vi' => $vi ?: false, - 'duplicateTo' => $duplicateTo ?: false, - 'redirect2vi' => $redirect2vi - ]); + return view( 'interfaces/vlan/edit' )->with( [ + 'vlans' => Vlan:: orderBy( 'number' )->get(), + 'vli' => $vli, + 'vi' => $vi ?: false, + 'duplicateTo' => $duplicateTo ?: false, + 'redirect2vi' => $redirect2vi, + ] ); } /** * Update a vlan interface * - * @param StoreVlanInterface $r instance of the current HTTP request - * @param VlanInterface $vli + * @param StoreVlanInterface $r instance of the current HTTP request + * @param VlanInterface $vli * * @return RedirectResponse * @@ -222,8 +220,8 @@ public function update( StoreVlanInterface $r, VlanInterface $vli ): RedirectRes /** * Duplicate a vlan interface * - * @param StoreVlanInterface $r instance of the current HTTP request - * @param VlanInterface $vli + * @param StoreVlanInterface $r instance of the current HTTP request + * @param VlanInterface $vli * * @return RedirectResponse * @@ -236,7 +234,7 @@ public function duplicate( StoreVlanInterface $r, VlanInterface $vli ): Redirect $v = Vlan::find( $r->vlanid ); DB::beginTransaction(); - $vli = VlanInterface::make(); + $vli = VlanInterface::make(); if( !$this->setIp( $r, $v, $vli, false ) || !$this->setIp( $r, $v, $vli, true ) ) { // Rollback if there is issue to avoid to insert the data created above @@ -251,7 +249,7 @@ public function duplicate( StoreVlanInterface $r, VlanInterface $vli ): Redirect Layer2Address::create( [ 'vlan_interface_id' => $vli->id, - 'mac' => $l2a->mac + 'mac' => $l2a->mac, ] ); } @@ -275,15 +273,15 @@ public function duplicate( StoreVlanInterface $r, VlanInterface $vli ): Redirect */ public function view( VlanInterface $vli ): View { - return view( 'interfaces/vlan/view' )->with([ - 'vli' => $vli - ]); + return view( 'interfaces/vlan/view' )->with( [ + 'vli' => $vli, + ] ); } /** * Delete a VLAN Interface and the Layer2Address associated * - * @param VlanInterface $vli + * @param VlanInterface $vli * * @return RedirectResponse * @@ -296,9 +294,9 @@ public function delete( VlanInterface $vli ): RedirectResponse AlertContainer::push( 'VLAN Interface deleted.', Alert::SUCCESS ); - if( $_SERVER[ "HTTP_REFERER" ] === route( 'vlan-interface@list' ) ){ + if( $_SERVER[ "HTTP_REFERER" ] === route( 'vlan-interface@list' ) ) { return redirect( route( 'vlan-interface@list' ) ); } - return redirect( route( 'virtual-interface@edit' , [ 'vi' => $vli->virtualinterfaceid ] ) ); + return redirect( route( 'virtual-interface@edit', [ 'vi' => $vli->virtualinterfaceid ] ) ); } } \ No newline at end of file diff --git a/app/Http/Controllers/IrrdbConfigController.php b/app/Http/Controllers/IrrdbConfigController.php index a51a32b5a..f97858a4c 100644 --- a/app/Http/Controllers/IrrdbConfigController.php +++ b/app/Http/Controllers/IrrdbConfigController.php @@ -74,7 +74,7 @@ public function feInit(): void 'listOrderBy' => 'host', 'listOrderByDir' => 'ASC', 'viewFolderName' => 'irrdb-config', - 'documentation' => 'https://docs.ixpmanager.org/features/irrdb/', + 'documentation' => 'https://docs.ixpmanager.org/latest/features/irrdb/', 'listColumns' => [ 'host' => 'Host', 'source' => 'Source' diff --git a/app/Http/Controllers/IrrdbController.php b/app/Http/Controllers/IrrdbController.php index a463041ea..ad8f1a614 100644 --- a/app/Http/Controllers/IrrdbController.php +++ b/app/Http/Controllers/IrrdbController.php @@ -32,10 +32,7 @@ use IXP\Http\Requests\Irrdb as IrrdbRequest; -use IXP\Models\{ - Aggregators\IrrdbAggregator, - Customer -}; +use IXP\Models\{Aggregators\IrrdbAggregator, Customer, User}; /** * Irrdb Controller @@ -61,10 +58,13 @@ class IrrdbController extends Controller */ public function list( IrrdbRequest $r, Customer $cust, string $type, int $protocol ) : View { + /** @var User $us */ + $us = Auth::getUser(); + $irrdbList = IrrdbAggregator::forCustomerAndProtocol( $cust->id, $protocol, $type ); // are we busting the cache? - if( $r->reset_cache === "1" && Auth::getUser()->isSuperUser() ) { + if( $r->reset_cache === "1" && $us->isSuperUser() ) { Cache::forget('updated-irrdb-' . $type . '-' . $cust->id ); } @@ -90,8 +90,10 @@ public function list( IrrdbRequest $r, Customer $cust, string $type, int $protoc */ public function update( IrrdbRequest $r, Customer $cust, string $type, int $protocol ) : RedirectResponse { + /** @var User $us */ + $us = Auth::getUser(); // are we busting the cache? - if( $r->reset_cache === "1" && Auth::getUser()->isSuperUser() ) { + if( $r->reset_cache === "1" && $us->isSuperUser() ) { Cache::forget('updated-irrdb-' . $type . '-' . $protocol . '-' . $cust->id ); } diff --git a/app/Http/Controllers/Layer2AddressController.php b/app/Http/Controllers/Layer2AddressController.php index 1066b4ee8..e5876b551 100644 --- a/app/Http/Controllers/Layer2AddressController.php +++ b/app/Http/Controllers/Layer2AddressController.php @@ -79,6 +79,9 @@ class Layer2AddressController extends EloquentController */ public function feInit(): void { + /** @var User $us */ + $us = Auth::getUser(); + $this->feParams = (object)[ 'model' => Layer2Address::class, 'pagetitle' => 'Configured MAC Addresses', @@ -88,7 +91,7 @@ public function feInit(): void 'listOrderByDir' => 'ASC', 'viewFolderName' => 'layer2-address', 'readonly' => self::$read_only, - 'documentation' => 'https://docs.ixpmanager.org/features/layer2-addresses/', + 'documentation' => 'https://docs.ixpmanager.org/latest/features/layer2-addresses/', 'listColumns' => [ 'customer' => 'Customer', 'switchport' => 'Interface(s)', @@ -106,7 +109,7 @@ public function feInit(): void // phpunit / artisan trips up here without the cli test: if( PHP_SAPI !== 'cli' ) { // custom access controls: - switch( Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC ) { + switch( Auth::check() ? $us->privs() : User::AUTH_PUBLIC ) { case User::AUTH_SUPERUSER: break; case User::AUTH_CUSTUSER || User::AUTH_CUSTADMIN: @@ -189,11 +192,14 @@ protected function listGetData( ?int $id = null ): array */ public function forVlanInterface( VlanInterface $vli ): View|RedirectResponse { - if( Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( $us->isSuperUser() ) { return view( 'layer2-address/vlan-interface' )->with( [ 'vli' => $vli ] ); } - if( config( 'ixp_fe.layer2-addresses.customer_can_edit' ) && Auth::getUser()->custid === $vli->virtualInterface->customer->id ) { + if( config( 'ixp_fe.layer2-addresses.customer_can_edit' ) && $us->custid === $vli->virtualInterface->customer->id ) { return view( 'layer2-address/vlan-interface-cust' )->with( [ 'vli' => $vli ] ); } return redirect(''); diff --git a/app/Http/Controllers/LoginHistoryController.php b/app/Http/Controllers/LoginHistoryController.php index 1314e3db2..ac8ee5162 100644 --- a/app/Http/Controllers/LoginHistoryController.php +++ b/app/Http/Controllers/LoginHistoryController.php @@ -62,6 +62,9 @@ class LoginHistoryController extends EloquentController */ public function feInit(): void { + /** @var User $us */ + $us = Auth::getUser(); + $this->feParams = (object)[ 'model' => UserLoginHistory::class, 'pagetitle' => 'Login History', @@ -95,7 +98,7 @@ public function feInit(): void // phpunit / artisan trips up here without the cli test: if( PHP_SAPI !== 'cli' ) { // custom access controls: - switch( Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC ) { + switch( Auth::check() ? $us->privs() : User::AUTH_PUBLIC ) { case User::AUTH_SUPERUSER: break; default: diff --git a/app/Http/Controllers/MacAddressController.php b/app/Http/Controllers/MacAddressController.php index 6e3f0400a..30baf465e 100644 --- a/app/Http/Controllers/MacAddressController.php +++ b/app/Http/Controllers/MacAddressController.php @@ -70,7 +70,7 @@ public function feInit(): void 'listOrderByDir' => 'ASC', 'viewFolderName' => 'mac-address', 'readonly' => self::$read_only, - 'documentation' => 'https://docs.ixpmanager.org/features/layer2-addresses/', + 'documentation' => 'https://docs.ixpmanager.org/latest/features/layer2-addresses/', 'listColumns' => [ 'customer' => 'Customer', 'switchport' => 'Interface(s)', diff --git a/app/Http/Controllers/PatchPanel/PatchPanelController.php b/app/Http/Controllers/PatchPanel/PatchPanelController.php index d28ab0aa5..23725a7c7 100644 --- a/app/Http/Controllers/PatchPanel/PatchPanelController.php +++ b/app/Http/Controllers/PatchPanel/PatchPanelController.php @@ -132,18 +132,18 @@ public function store( StorePatchPanel $r ): RedirectResponse public function edit( Request $r, PatchPanel $pp ): View { Former::populate([ - 'cabinet_id' => $r->old( 'cabinet_id', $pp->cabinet_id ), + 'cabinet_id' => $r->old( 'cabinet_id', (string)$pp->cabinet_id ), 'name' => $r->old( 'name', $pp->name ), 'colo_reference' => $r->old( 'colo_reference', $pp->colo_reference ), - 'cable_type' => $r->old( 'cable_type', $pp->cable_type ), - 'connector_type' => $r->old( 'connector_type', $pp->connector_type ), + 'cable_type' => $r->old( 'cable_type', (string)$pp->cable_type ), + 'connector_type' => $r->old( 'connector_type', (string)$pp->connector_type ), 'installation_date' => $r->old( 'installation_date', $pp->installation_date ), 'port_prefix' => $r->old( 'port_prefix', $pp->port_prefix ), 'location_notes' => $r->old( 'location_notes', $pp->location_notes ), - 'u_position' => $r->old( 'u_position', $pp->u_position ), - 'colo_pp_type' => $r->old( 'colo_pp_type', $pp->colo_pp_type ), - 'mounted_at' => $r->old( 'mounted_at', $pp->mounted_at ), - 'numberOfPorts' => $r->old( 'numberOfPorts',0 ), + 'u_position' => $r->old( 'u_position', (string)$pp->u_position ), + 'colo_pp_type' => $r->old( 'colo_pp_type', (string)$pp->colo_pp_type ), + 'mounted_at' => $r->old( 'mounted_at', (string)$pp->mounted_at ), + 'numberOfPorts' => $r->old( 'numberOfPorts','0' ), ]); return view( 'patch-panel/edit' )->with([ diff --git a/app/Http/Controllers/PatchPanel/Port/PortController.php b/app/Http/Controllers/PatchPanel/Port/PortController.php index a2c6014bf..88876a596 100644 --- a/app/Http/Controllers/PatchPanel/Port/PortController.php +++ b/app/Http/Controllers/PatchPanel/Port/PortController.php @@ -37,16 +37,15 @@ use IXP\Http\Requests\StorePatchPanelPort as StorePatchPanelPortRequest; -use IXP\Models\{ - Aggregators\PatchPanelPortAggregator, +use IXP\Models\{Aggregators\PatchPanelPortAggregator, Cabinet, Customer, Location, PatchPanel, PatchPanelPort, Switcher, - SwitchPort -}; + SwitchPort, + User}; use IXP\Utils\View\Alert\{ Alert, @@ -184,10 +183,10 @@ public function edit( Request $r, PatchPanelPort $ppp, string $formType = null ) $duplexSlaveId = $ppp->duplexSlavePorts()->exists() ? $ppp->duplexSlavePorts()->first()->id : null; // fill the form with patch panel port data Former::populate( [ - 'switch_port_id' => $r->old( 'switch_port_id', $ppp->switch_port_id ), + 'switch_port_id' => $r->old( 'switch_port_id', (string)$ppp->switch_port_id ), 'patch_panel' => $ppp->patchPanel->name, - 'customer_id' => $r->old( 'customer_id', $ppp->customer_id ), - 'state' => $r->old( 'state', $ppp->state ), + 'customer_id' => $r->old( 'customer_id', (string)$ppp->customer_id ), + 'state' => $r->old( 'state', (string)$ppp->state ), 'notes' => $r->old( 'notes', $ppp->notes ), 'assigned_at' => $r->old( 'assigned_at', $ppp->assigned_at ), 'connected_at' => $r->old( 'connected_at', $ppp->connected_at ), @@ -199,7 +198,7 @@ public function edit( Request $r, PatchPanelPort $ppp, string $formType = null ) 'colo_circuit_ref' => $r->old( 'colo_circuit_ref', $ppp->colo_circuit_ref ), 'ticket_ref' => $r->old( 'ticket_ref', $ppp->ticket_ref ), 'private_notes' => $r->old( 'private_notes', $ppp->private_notes ), - 'owned_by' => $r->old( 'owned_by', $ppp->owned_by ), + 'owned_by' => $r->old( 'owned_by', (string)$ppp->owned_by ), 'description' => $r->old( 'description', $ppp->description ), 'colo_billing_ref' => $r->old( 'colo_billing_ref', $ppp->colo_billing_ref ), 'cabinet_name' => $ppp->patchPanel->cabinet->name, @@ -368,12 +367,15 @@ public function update( StorePatchPanelPortRequest $r, PatchPanelPort $ppp ): Re */ public function view( PatchPanelPort $ppp ): View { + /** @var User $us */ + $us = Auth::getUser(); + $listHistory[] = $ppp->load( [ 'patchPanel', 'duplexSlavePorts', 'switchPort', 'customer' ] ); - if( !Auth::getUser()->isSuperUser() ) { - if( !$ppp->customer || $ppp->customer_id !== Auth::getUser()->custid ) { + if( !$us->isSuperUser() ) { + if( !$ppp->customer || $ppp->customer_id !== $us->custid ) { abort(404); } } else { diff --git a/app/Http/Controllers/PeeringManagerController.php b/app/Http/Controllers/PeeringManagerController.php index 2618a0dde..5775533e1 100644 --- a/app/Http/Controllers/PeeringManagerController.php +++ b/app/Http/Controllers/PeeringManagerController.php @@ -85,6 +85,7 @@ public function index(): View|RedirectResponse $protos = [ 4, 6 ]; $c = Customer::find( Auth::getUser()->custid ); $vlans = Vlan::peeringManager()->orderBy( 'number' )->get(); + /** @psalm-suppress InvalidArgument */ $peers = CustomerAggregator::getPeeringManagerArrayByType( $c , $vlans, $protos ) ?? []; if( !count( $peers ) ) { @@ -260,12 +261,12 @@ public function markPeering( int $custid, string $status ): RedirectResponse $pm = $this->loadPeeringManager( Customer::find( Auth::getUser()->custid ), $peer ); if( $status === "peered" ) { - $pm->peered = !$pm->peered; + $pm->peered = $pm->peered === 0 ? 1 : 0; if( $pm->peered && $pm->rejected ){ $pm->rejected = false; } } else{ - $pm->rejected = !$pm->rejected; + $pm->rejected = $pm->rejected === 0 ? 1 : 0; if( $pm->peered && $pm->rejected ){ $pm->peered = false; } diff --git a/app/Http/Controllers/PeeringMatrixController.php b/app/Http/Controllers/PeeringMatrixController.php index d8bfb7204..b4b4ed35a 100644 --- a/app/Http/Controllers/PeeringMatrixController.php +++ b/app/Http/Controllers/PeeringMatrixController.php @@ -35,11 +35,7 @@ Request }; -use IXP\Models\{ - BgpSession, - Customer, - Vlan -}; +use IXP\Models\{BgpSession, Customer, User, Vlan}; use IXP\Utils\View\Alert\{ Alert, @@ -138,8 +134,10 @@ public function index( Request $r ): View|RedirectResponse } } + /** @var User $us */ + $us = Auth::getUser(); $restrictActivePeeringMatrix = true; - if( Auth::check() && Auth::getUser()->isSuperUser() ){ + if( Auth::check() && $us->isSuperUser() ){ $restrictActivePeeringMatrix = false; } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index e18ccfcb8..6f823e1cb 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -166,6 +166,7 @@ public function updateProfile( ProfileRequest $r ): RedirectResponse */ public function updateNotificationPreference( NotificationRequest $r ) : RedirectResponse { + /** @var User $user */ $user = Auth::getUser(); $prefs = $user->prefs; @@ -190,6 +191,7 @@ public function updateNotificationPreference( NotificationRequest $r ) : Redirec public function updateMailingLists( Request $r ) : RedirectResponse { if( config( 'mailinglists.enabled', false ) ) { + /** @var User $user */ $user = Auth::getUser(); $prefs = $user->prefs; $mailintLists = []; diff --git a/app/Http/Controllers/RipeAtlas/MeasurementController.php b/app/Http/Controllers/RipeAtlas/MeasurementController.php index 118cdb4e1..906f9d4f5 100644 --- a/app/Http/Controllers/RipeAtlas/MeasurementController.php +++ b/app/Http/Controllers/RipeAtlas/MeasurementController.php @@ -187,14 +187,14 @@ protected static function additionalRoutes( string $route_prefix ): void /** * List the contents of a database table. * - * @param Request $r + * @param Request $param * * @return View */ - public function list( Request $r ) : View + public function list( Request $param ) : View { $rid = false; - if( $run = AtlasRun::find( $r->atlasrun ) ) { + if( $run = AtlasRun::find( $param->atlasrun ) ) { $rid = $run->id; } diff --git a/app/Http/Controllers/RipeAtlas/ProbesController.php b/app/Http/Controllers/RipeAtlas/ProbesController.php index f9b53c613..62eb9b78f 100644 --- a/app/Http/Controllers/RipeAtlas/ProbesController.php +++ b/app/Http/Controllers/RipeAtlas/ProbesController.php @@ -145,20 +145,20 @@ public function feInit() /** * List the contents of a database table. * - * @param Request $r + * @param Request $param * * @return View */ - public function list( Request $r ): View + public function list( Request $param ): View { $cid = $protocol = false; - if( $cust = Customer::find( $r->cust ) ) { + if( $cust = Customer::find( $param->cust ) ) { $cid = $cust->id; } - if( array_key_exists( $r->protocol, Router::$PROTOCOLS ) ) { - $protocol = $r->protocol; + if( array_key_exists( $param->protocol, Router::$PROTOCOLS ) ) { + $protocol = $param->protocol; } $this->data[ 'params' ][ 'cid' ] = $cid; diff --git a/app/Http/Controllers/RipeAtlas/RunController.php b/app/Http/Controllers/RipeAtlas/RunController.php index 0bb49db11..f62dac654 100644 --- a/app/Http/Controllers/RipeAtlas/RunController.php +++ b/app/Http/Controllers/RipeAtlas/RunController.php @@ -182,7 +182,7 @@ protected function createPrepareForm(): array { Former::populate( [ 'protocol' => request()->old( 'protocol', Router::PROTOCOL_IPV4 ), - 'scheduled_at' => request()->old( 'scheduled_at', AtlasRun::SCHEDULED_AT_NOW ), + 'scheduled_at' => request()->old( 'scheduled_at', (string)AtlasRun::SCHEDULED_AT_NOW ), 'scheduled_date' => request()->old( 'scheduled_date' ), 'scheduled_time' => request()->old( 'scheduled_time' ), ] ); @@ -244,7 +244,7 @@ public function doStore( Request $r ): bool|RedirectResponse 'vlan_id' => $r->vlan_id ] ); - CreateMeasurementsJob::dispatchNow( $this->object, $r->selected_custs ); + CreateMeasurementsJob::dispatchSync( $this->object, $r->selected_custs ); if( (int)$r->scheduled_at === AtlasRun::SCHEDULED_AT_NOW ) { $this->object->atlasMeasurements()->each( function( $am ) { @@ -269,7 +269,7 @@ public function completeRun( AtlasRun $atlasrun ): RedirectResponse { if( $atlasrun->completed_at ) { AlertContainer::push( 'The command complete atlas run have already executed.', Alert::DANGER ); - } elseif( CompleteRequestsJob::dispatchNow( $atlasrun ) ) { + } elseif( CompleteRequestsJob::dispatchSync( $atlasrun ) ) { AlertContainer::push( 'The command complete atlas run executed with success.', Alert::SUCCESS ); } else { AlertContainer::push( 'The command complete atlas run cannot be executed, some atlas measurements are not ended.', Alert::DANGER ); diff --git a/app/Http/Controllers/RouterController.php b/app/Http/Controllers/RouterController.php index 7f2b52380..9d4951f9e 100644 --- a/app/Http/Controllers/RouterController.php +++ b/app/Http/Controllers/RouterController.php @@ -141,28 +141,28 @@ public function edit( Router $router ): View { Former::populate([ 'handle' => request()->old( 'handle', $router->handle ), - 'vlan_id' => request()->old( 'vlan_id', $router->vlan_id ), + 'vlan_id' => request()->old( 'vlan_id', (string)$router->vlan_id ), 'protocol' => request()->old( 'protocol', $router->protocol ), 'type' => request()->old( 'type', $router->type ), 'name' => request()->old( 'name', $router->name ), 'shortname' => request()->old( 'shortname', $router->shortname ), 'router_id' => request()->old( 'router_id', $router->router_id ), 'peering_ip' => request()->old( 'peering_ip', $router->peering_ip ), - 'asn' => request()->old( 'asn', $router->asn ), + 'asn' => request()->old( 'asn', (string)$router->asn ), 'software' => request()->old( 'software', $router->software ), 'software_version' => request()->old( 'software_version', $router->software_version ), 'operating_system' => request()->old( 'operating_system', $router->operating_system ), 'operating_system_version' => request()->old( 'operating_system_version', $router->operating_system_version ), 'mgmt_host' => request()->old( 'mgmt_host', $router->mgmt_host ), - 'api_type' => request()->old( 'api_type', $router->api_type ), + 'api_type' => request()->old( 'api_type', (string)$router->api_type ), 'api' => request()->old( 'api', $router->api ), - 'lg_access' => request()->old( 'lg_access', $router->lg_access ), - 'quarantine' => request()->old( 'quarantine', $router->quarantine ), - 'bgp_lc' => request()->old( 'bgp_lc', $router->bgp_lc ), - 'rpki' => request()->old( 'rpki', $router->rpki ), - 'rfc1997_passthru' => request()->old( 'rfc1997_passthru', $router->rfc1997_passthru ), - 'skip_md5' => request()->old( 'skip_md5', $router->skip_md5 ), - 'pair_id' => request()->old( 'pair_id', $router->pair_id ), + 'lg_access' => request()->old( 'lg_access', (string)$router->lg_access ), + 'quarantine' => request()->old( 'quarantine', (string)$router->quarantine ), + 'bgp_lc' => request()->old( 'bgp_lc', (string)$router->bgp_lc ), + 'rpki' => request()->old( 'rpki', (string)$router->rpki ), + 'rfc1997_passthru' => request()->old( 'rfc1997_passthru', (string)$router->rfc1997_passthru ), + 'skip_md5' => request()->old( 'skip_md5', (string)$router->skip_md5 ), + 'pair_id' => request()->old( 'pair_id', (string)$router->pair_id ), 'template' => request()->old( 'template', $router->template ), ]); @@ -233,7 +233,7 @@ public function delete( Router $router): RedirectResponse */ public function pause( Router $router): RedirectResponse { - $router->pause_updates = true; + $router->pause_updates = 1; $router->save(); AlertContainer::push( 'Automatic updates for router ' . $router->handle . ' paused.', Alert::SUCCESS ); diff --git a/app/Http/Controllers/RsFilterController.php b/app/Http/Controllers/RsFilterController.php index fe2e9ca60..a8c9f1ecd 100644 --- a/app/Http/Controllers/RsFilterController.php +++ b/app/Http/Controllers/RsFilterController.php @@ -172,7 +172,7 @@ public function create( Request $r, Customer $cust ): View } $peers = array_merge( [ '0' => [ 'id' => '0', 'name' => "All Peers" ] ], - CustomerAggregator::getByVlanAndProtocol( $vlanid , $protocol ) ); + CustomerAggregator::getByVlanAndProtocol( (int)$vlanid , (int)$protocol ) ); // exclude this network foreach( $peers as $i => $p ) { @@ -237,9 +237,9 @@ public function edit( Request $r, RouteServerFilter $rsf ): View { $this->authorize( 'checkRsfObject', [ RouteServerFilter::class, $rsf ] ); - $vlanid = $r->old( 'vlan_id', $rsf->vlan_id ?? null ); + $vlanid = $r->old( 'vlan_id', (string)$rsf->vlan_id ?? null ); $protocol = $r->old( 'protocol', $rsf->protocol ?? null ); - $peerid = $r->old( 'peer_id', $rsf->peer_id ?? null ); + $peerid = $r->old( 'peer_id', (string)$rsf->peer_id ?? null ); Former::populate( [ 'vlan_id' => $vlanid ?? "null", @@ -256,7 +256,7 @@ public function edit( Request $r, RouteServerFilter $rsf ): View 'c' => $rsf->customer, 'vlans' => array_merge( [ '0' => [ 'id' => '0', 'name' => "All LANs" ] ], $this->getPublicPeeringVLANs( $rsf->customer_id ) ), 'protocols' => Router::$PROTOCOLS, - 'peers' => array_merge( [ '0' => [ 'id' => '0', 'name' => "All Peers" ] ], CustomerAggregator::getByVlanAndProtocol( $vlanid , $protocol ) ), + 'peers' => array_merge( [ '0' => [ 'id' => '0', 'name' => "All Peers" ] ], CustomerAggregator::getByVlanAndProtocol( (int)$vlanid , (int)$protocol ) ), ] ); } diff --git a/app/Http/Controllers/Services/Grapher/Api.php b/app/Http/Controllers/Services/Grapher/Api.php index d02235557..84f1e696a 100644 --- a/app/Http/Controllers/Services/Grapher/Api.php +++ b/app/Http/Controllers/Services/Grapher/Api.php @@ -22,7 +22,7 @@ * * http://www.gnu.org/licenses/gpl-2.0.html */ -use Grapher as GrapherService; +use IXP\Services\Grapher as GrapherService; use Illuminate\Http\{ Request, @@ -33,8 +33,6 @@ use IXP\Http\Controllers\Controller; -use IXP\Services\Grapher; - /** * Grapher Controller * @@ -50,9 +48,9 @@ class Api extends Controller /** * The grapher service * - * @var Grapher + * @var GrapherService */ - private $grapher; + private GrapherService $grapher; /** * Constructor @@ -77,7 +75,7 @@ private function grapher(): GrapherService public function generateConfiguration( Request $request ): Response { // get the appropriate backend - $grapher = GrapherService::backend( $request->input( 'backend', 'mrtg' ) ); + $grapher = $this->grapher()->backend( $request->input( 'backend', 'mrtg' ) ); if( !$grapher->isConfigurationRequired() ) { abort( 404, "This grapher backend (" . $grapher->name() . ") does not require any configuration to be generated" ); diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php new file mode 100644 index 000000000..20fdbd7b7 --- /dev/null +++ b/app/Http/Controllers/SettingsController.php @@ -0,0 +1,243 @@ + + * @author Barry O'Donovan + * @category IXP + * @package IXP\Http\Controllers + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +class SettingsController extends Controller +{ + protected array $fe_settings; + + + public function __construct( + protected Former $former, + protected DotEnvWriter $envWriter + ) { + $this->fe_settings = config( 'ixp_fe_settings'); + } + + /** + * Collect rules from the fe_settings configuration file which contains + * arrays of 'panels' for the UI. + * + * @param array $panels + * @return array + */ + private function gatherRules(array $panels): array + { + $rules = []; + foreach($panels as $panel) { + foreach($panel["fields"] as $label => $field) { + if(isset($field["rules"]) && $field["rules"] !== '') { + $rules[$label] = $field["rules"]; + } + } + } + return $rules; + } + + /** + * Replace substitution in value + * + * @param string|null $value + * @param array $attributes + * + * @return string|null + */ + private function patternReplace(string|null $value,array $attributes): string|null + { + // check value: if it is points to another value grab that and replace it + preg_match_all('/\${([\w\.]+)}/',$value,$matches); + if (count($matches) > 0) { + $search = $matches[0]; + $replace = []; + foreach($matches[1] as $key) { + $replace[] = $attributes[$key]["value"] ?: ''; + } + $value = str_replace($search,$replace,$value); + } + return $value; + } + + /** + * Display the form to update the .env + */ + private function createForm() + { + $envValues = $this->envWriter->getVariables(); + + $form = $this->former::open()->method('POST') + ->id('envForm') + ->action(route('settings@update')) + ->customInputWidthClass( 'col-8' ) + ->customLabelWidthClass( 'col-4' ) + ->actionButtonsCustomClass( "grey-box") + ->rules($this->gatherRules($this->fe_settings["panels"])); + + $form .= '
    '; + $first = true; + $tabContents = []; + + foreach($this->fe_settings["panels"] as $panel => $content) { + $form .= '
  • ' + .'
  • '; + + $tab = '
    '; + + if(isset($content["description"]) && $content["description"] !== "") { + $tab .= ''; + } + + if(isset($content["fields"]) && count($content["fields"])) { + + foreach($content["fields"] as $field => $param) { + $title = $param["name"]; + if(isset($param["docs_url"]) && $param["docs_url"]) { + $title .= ''; + } + + // value comes from config, not .env. Config includes defaults not covered by .env and so + // using .env could overwrite defaults. + $value = config( $param['config_key'] ); + + switch($param["type"]) { + + case 'radio': + if( isset( $param["invert"] ) && $param["invert"] ) { + $value = !$value; + } + $input = Former::checkbox($field)->label($title)->check( $value ); + break; + + case 'select': + if($param["options"]["type"] === 'array') { + $options = $param["options"]["list"]; + } else if($param["options"]["type"] === 'countries') { + $options = $this->getCountriesSelection();; + } else { + $options = $this->getSelectOptions($param["options"]["list"]); + } + + $input = Former::select($field)->label($title)->options($options,$value)->placeholder('Select an Option')->addClass( 'chzn-select' ); + break; + + case 'textarea': + $value = $this->patternReplace($value,$envValues); + + $input = Former::textarea($field)->label($title)->value($value); + break; + + default: // text + $value = $this->patternReplace($value,$envValues); + $input = Former::text($field)->label($title)->value($value); + } + + $tab .= '
    '.$input; + + if(isset($param["help"]) && $param["help"] !== '') { + $tab .= '
    '.$param["help"].'
    '; + } + + $tab .= '
    '; + } + } + + $tab .= '
    '; + $tabContents[] = $tab; + $first = false; + } + + + $form .= '
'; + $form .= implode('',$tabContents).'
'; + $form .= $this->former::actions( + Former::primary_button( 'Save Changes' )->id('updateButton')->class( "mb-2 mb-sm-0" ) + ); + $form .= $this->former::close(); + return $form; + } + + + /** + * Display the form to edit an object + */ + protected function index() + { + return view( 'settings.index' )->with( [ + 'form' => $this->createForm(), + ] ); + } + + /** + * Function to do the actual validation and storing of the submitted object. + * + * @param Request $request + * + * @return array + * + * @throws + */ + public function update( Request $request ): array + { + $changes = $request->all(); + + foreach($this->fe_settings["panels"] as $panel) { + foreach($panel["fields"] as $label => $field) { + switch($field["type"]) { + case 'radio': + $value = $changes[ $label ] === '1'; + if( isset( $field["invert"] ) && $field["invert"] ) { + $value = !$value; + } + + $this->envWriter->set($field["dotenv_key"],$value ? "true" : "false"); + break; + default: + if(!isset($changes[$label]) || $changes[$label] === NULL || $changes[$label] === '') { + $this->envWriter->disable($field["dotenv_key"]); + } else { + $this->envWriter->set($field["dotenv_key"],$changes[$label]); + } + } + + } + } + $this->envWriter->write(); + + return ["status" => "success", "message" => "Modification done"]; + } + +} diff --git a/app/Http/Controllers/StatisticsController.php b/app/Http/Controllers/StatisticsController.php index 87c609ade..d671c57b5 100644 --- a/app/Http/Controllers/StatisticsController.php +++ b/app/Http/Controllers/StatisticsController.php @@ -3,7 +3,7 @@ namespace IXP\Http\Controllers; /* - * Copyright (C) 2009 - 2021 Internet Neutral Exchange Association Company Limited By Guarantee. + * Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee. * All Rights Reserved. * * This file is part of IXP Manager. @@ -23,11 +23,14 @@ * http://www.gnu.org/licenses/gpl-2.0.html */ -use App, Auth, Carbon\Carbon; +use App, Carbon\Carbon; + +use Illuminate\Support\Facades\Auth; use Illuminate\Auth\Access\AuthorizationException; use IXP\Exceptions\Services\Grapher\ParameterException; +use IXP\Http\Requests\StatisticsP2pRequest; use Illuminate\Http\{ Request, RedirectResponse @@ -45,10 +48,12 @@ Customer, Infrastructure, Location, + P2pDailyStats, PhysicalInterface, Switcher, TrafficDaily, TrafficDailyPhysInt, + User, VirtualInterface, Vlan, VlanInterface}; @@ -72,7 +77,7 @@ * @author Yann Robin * @category IXP * @package IXP\Http\Controllers - * @copyright Copyright (C) 2009 - 2021 Internet Neutral Exchange Association Company Limited By Guarantee + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 */ class StatisticsController extends Controller @@ -82,16 +87,16 @@ class StatisticsController extends Controller * * These are safe for use from the request. * - * @param StatisticsRequest $r + * @param StatisticsRequest $request * * @return void */ - private function processGraphParams( StatisticsRequest $r ): void + private function processGraphParams( StatisticsRequest $request ): void { - $r->period = Graph::processParameterPeriod( $r->period ); - $r->category = Graph::processParameterCategory( $r->category ); - $r->protocol = Graph::processParameterProtocol( $r->protocol ); - $r->type = Graph::processParameterType( $r->type ); + $request->period = Graph::processParameterPeriod( $request->period ); + $request->category = Graph::processParameterCategory( $request->category ); + $request->protocol = Graph::processParameterProtocol( $request->protocol ); + $request->type = Graph::processParameterType( $request->type ); } /** @@ -274,7 +279,7 @@ public function trunk( string $trunk = null, string $category = Graph::CATEGORY_ { if( !is_array( config('grapher.backends.mrtg.trunks') ) || !count( config('grapher.backends.mrtg.trunks') ) ) { AlertContainer::push( - "Trunk graphs have not been configured. Please see this documentation for instructions.", + "Trunk graphs have not been configured. Please see this documentation for instructions.", Alert::DANGER ); return redirect(''); @@ -503,157 +508,270 @@ public function latency( VlanInterface $vli, string $protocol ): View|RedirectRe } + + /** * sFlow Peer to Peer statistics * - * @param Request $r - * @param Customer|null $cust + * @param Request $request + * @param Customer|null $customer * - * @return RedirectResponse|View + * @return array * * @throws ParameterException */ - public function p2p( Request $r, Customer $cust = null ): RedirectResponse|View + public function p2pPrepare( Request $request, ?Customer $customer, ?VlanInterface $dstVli = null ): array { - // default to the current user: - if( !$cust && Auth::check() ) { - $cust = Auth::getUser()->customer; + if( !$customer ) { + $customer = Auth::user()->customer; } - $showGraphsOption = false; - $showGraphs = true; - - // for larger IXPs, it's quite intensive to display all the graphs - decide if we need to do this or not - if( config('grapher.backends.sflow.show_graphs_on_index_page') !== null ) { - $showGraphsOption = true; - $showGraphs = config('grapher.backends.sflow.show_graphs_on_index_page'); - } - - if( $showGraphsOption ) { - if( $r->submit === "Show Graphs" ) { - $showGraphs = true; - $r->session()->put( 'controller.statistics.p2p.show_graphs', true ); - } else if( $r->submit === "Hide Graphs" ) { - $showGraphs = false; - $r->session()->put( 'controller.statistics.p2p.show_graphs', false ); - } else { - $showGraphs = $r->session()->get( 'controller.statistics.p2p.show_graphs', config('grapher.backends.sflow.show_graphs_on_index_page') ); - } - } - - $r->category = Graph::processParameterCategory( $r->category, true ); - $r->period = Graph::processParameterPeriod( $r->period ); - $r->protocol = Graph::processParameterRealProtocol( $r->protocol ); + $requestCategory = Graph::processParameterCategory( $request->category, true ); + $requestPeriod = Graph::processParameterPeriod( $request->period ); + $requestProtocol = Graph::processParameterRealProtocol( $request->protocol ); + // on the p2ps page, we need to provide a dropdown of all possible source vlis for this customer $srcVlis = VlanInterface::select( [ 'vli.*' ] ) ->from( 'vlaninterface AS vli' ) - ->Join( 'virtualinterface AS vi', 'vi.id', 'vli.virtualinterfaceid' ) - ->Join( 'cust AS c', 'c.id', 'vi.custid' ) - ->Join( 'vlan AS v', 'v.id', 'vli.vlanid' ) - ->where( 'c.id', $cust->id ) + ->join( 'virtualinterface AS vi', 'vi.id', 'vli.virtualinterfaceid' ) + ->join( 'cust AS c', 'c.id', 'vi.custid' ) + ->join( 'vlan AS v', 'v.id', 'vli.vlanid' ) + ->where( 'c.id', $customer->id ) + ->where( 'vli.' . $requestProtocol . 'enabled', '1' ) ->with( [ 'vlan' ] ) ->orderBy( 'v.number' )->get()->keyBy( 'id' ); // Find the possible VLAN interfaces that this customer has for the given IXP if( !count( $srcVlis ) ) { - AlertContainer::push( "There were no interfaces available for the given criteria.", Alert::WARNING ); - return redirect()->back(); + throw new ParameterException("There were no interfaces available for the given criteria."); } - if( ( $svlid = $r->svli ) && isset( $srcVlis[ $svlid ] ) ) { - /** @var VlanInterface $srcVli */ + // svli will hold a source vli selected by the user on the p2ps page or else a default + /** @var VlanInterface $srcVli */ + $srcVli = $srcVlis[ $srcVlis->first()->id ]; + if( ( $svlid = $request->svli ) && isset( $srcVlis[ $svlid ] ) ) { $srcVli = $srcVlis[ $svlid ]; - } else { - $srcVli = $srcVlis[ $srcVlis->first()->id ]; } - // is the requested protocol support? - if( !$srcVli->vlan->private && !$srcVli->ipvxEnabled( $r->protocol ) ) { - AlertContainer::push( Graph::resolveProtocol( $r->protocol ) . " is not supported on the requested VLAN interface.", Alert::WARNING ); - return redirect()->back(); + // is the requested protocol supported? (we have no protocols on private vlans) + if( !$srcVli->vlan->private && !$srcVli->ipvxEnabled( $requestProtocol ) ) { + throw new ParameterException(Graph::resolveProtocol( $requestProtocol ) . " is not supported on the requested VLAN interface." ); } + // Now find the possible other VLAN interfaces that this customer could exchange traffic with // (as well as removing the source vli) $dstVlis = VlanInterfaceAggregator::forVlan( $srcVli->vlan ); unset( $dstVlis[ $srcVli->id ] ); if( !$dstVlis->count() ) { - AlertContainer::push( "There were no destination interfaces available for traffic exchange for the given criteria.", Alert::WARNING ); - return redirect()->back(); + throw new ParameterException("There were no destination interfaces available for traffic exchange for the given criteria." ); } - if( ( $dvlid = $r->dvli ) && isset( $dstVlis[ $dvlid ] ) ) { - $dstVli = $dstVlis[ $dvlid ]; - } else { - $dstVli = false; - - // possibility that we've changed the source VLI in the UI and so the destination dli provided is on another LAN - if( $dvlid && $otherDstVli = VlanInterface::find( $dvlid ) ) { - // does this customer have a VLAN interface on the same VLAN as the srcVli? - foreach( $otherDstVli->virtualInterface->customer->virtualInterfaces as $vi ) { + if( $dstVli ) { + if( $srcVli->vlan->id !== $dstVli->vlan->id ) { + // otherwise, is there an appropriate dstVLi on srcVli->vlan? + foreach( $dstVli->virtualInterface->customer->virtualInterfaces as $vi ) { foreach( $vi->vlanInterfaces as $vli ) { - if( $srcVli->vlan->id === $vli->vlan->id ) { + if( $vli->vlan->id === $srcVli->vlan->id ) { $dstVli = $vli; - break 2; } } } } - if( !$dstVli && $r->dvli !== null ) { - AlertContainer::push( "The customer selected for destination traffic does not have any interfaces on the requested VLAN", Alert::WARNING ); - return redirect()->back(); + if( $srcVli->vlan->id !== $dstVli->vlan->id ) { + // okay, bounce back to p2p overview page + throw new ParameterException( "No valid destination customer in this peering LAN" ); } } - // if we have a $dstVli, then remove any VLANs from $srcVlis where both src and dst do not have VLIs on the same VLAN: - if( $dstVli ) { - foreach( $srcVlis as $i => $svli ) { - $haveMatch = false; - foreach( $dstVli->virtualInterface->customer->virtualInterfaces as $vi ) { - foreach( $vi->vlanInterfaces as $dvli ) { - if( $svli->vlan->id === $dvli->vlan->id ) { - $haveMatch = true; - break 2; - } - } - } - if( !$haveMatch ) { - unset( $srcVlis[ $i ] ); - } + return [ + 'c' => $customer, + 'category' => $requestCategory, + 'period' => $requestPeriod, + 'protocol' => $requestProtocol, + 'srcVlis' => $srcVlis, + 'srcVli' => $srcVli, + 'dstVlis' => $dstVlis, + 'dstVli' => $dstVli, + ]; + } + + + + /** + * sFlow Peer to Peer statistics + * + * @param Request $request + * @param Customer|null $customer + * + * @return RedirectResponse|View + * + * @throws ParameterException + */ + public function p2ps( Request $request, ?Customer $customer = null ): RedirectResponse|View + { + try { + $data = $this->p2pPrepare( $request, $customer ); + } catch( ParameterException $e ) { + AlertContainer::push( $e->getMessage(), Alert::WARNING ); + return redirect()->back(); + } + + // for larger IXPs, it's quite intensive to display all the graphs - decide if we need to do this or not + $showGraphs = $request->input( 'show_graphs', config('grapher.backends.sflow.show_graphs_on_index_page') ? 'show' : 'hide' ) === 'show'; + $orderBy = $request->input( 'order_by', 'traffic' ); + + // ordering is by customer name by default due to VlanInterfaceAggregator::forVlan() + if( $orderBy !== 'name' ) { + $trafficByPeerId = P2pDailyStats::latestTotalTraffic( $data['c']); + + /** @var VlanInterface $dstVli */ + foreach( $data['dstVlis'] as $idx => $dstVli) { + $data['dstVlis'][$idx]->total_traffic = $trafficByPeerId[ $dstVli->virtualInterface->custid ] ?? 0; } + + $data['dstVlis'] = $data['dstVlis']->sortByDesc( 'total_traffic', SORT_NUMERIC ); } + // authenticate on one of the graphs $graph = App::make( Grapher::class ) - ->p2p( $srcVli, $dstVli ?: $dstVlis[ $dstVlis->first()->id ]) - ->setProtocol( $r->protocol ) - ->setCategory( $r->category ) - ->setPeriod( $r->period ); + ->p2p( $data['srcVli'], $data['dstVlis'][ $data['dstVlis']->first()->id ] ) + ->setProtocol( $data['protocol'] ) + ->setCategory( $data['category'] ) + ->setPeriod( $data['period'] ); $graph->authorise(); - - $viewOptions = [ - 'c' => $cust, - 'category' => $r->category, - 'dstVlis' => $dstVlis, - 'dstVli' => $dstVli, + + return view( 'statistics/p2ps', array_merge( $data, [ 'graph' => $graph, - 'period' => $r->period, - 'protocol' => $r->protocol, + 'orderBy' => $orderBy, 'showGraphs' => $showGraphs, - 'showGraphsOption' => $showGraphsOption, - 'srcVlis' => $srcVlis, - 'srcVli' => $srcVli, - ]; + ]) ); + } - if( $dstVli ) { - return view( 'statistics/p2p-single', $viewOptions ); + /** + * sFlow Peer to Peer statistics + * + * @param Request $request + * @param VlanInterface $srcVli + * @param VlanInterface $dstVli + * @return RedirectResponse|View + * @throws ParameterException + */ + public function p2pPost( Request $request ): RedirectResponse|View + { + // svli and dvli via top of page post form. + // svli may have changed and so dvli may not be appropriate anymore + $srcVli = VlanInterface::findOrFail($request->svli); + $dstVli = VlanInterface::findOrFail($request->dvli); + + return $this->p2p( $request, $srcVli, $dstVli ); + } + + /** + * sFlow Peer to Peer statistics + * + * @param Request $request + * @param VlanInterface $srcVli + * @param VlanInterface $dstVli + * @return RedirectResponse|View + * @throws ParameterException + */ + public function p2p( Request $request, VlanInterface $srcVli, VlanInterface $dstVli ): RedirectResponse|View + { + try { + $data = $this->p2pPrepare( $request, $srcVli->virtualInterface->customer, $dstVli ); + $srcVli = $data['srcVli']; + $dstVli = $data['dstVli']; + } catch( ParameterException $e ) { + AlertContainer::push( $e->getMessage(), Alert::WARNING ); + return redirect()->back(); } - return view( 'statistics/p2p', $viewOptions ); + if( !$srcVli->ipvxEnabled( $data['protocol'] ) || !$dstVli->ipvxEnabled( $data['protocol'] ) ) { + AlertContainer::push( Graph::resolveProtocol( $data['protocol'] ) . " is not supported on the requested VLAN interfaces.", Alert::WARNING ); + return redirect( route('statistics@p2ps-get', ['customer' => $srcVli->virtualInterface->custid ] ) ); + } + + $possibleProtocols = []; + foreach( Graph::PROTOCOL_REAL_DESCS as $p => $desc ) { + if( $srcVli->ipvxEnabled($p) && $dstVli->ipvxEnabled($p) ) { + $possibleProtocols[$p] = $desc; + } + } + + $graph = App::make( Grapher::class ) + ->p2p( $srcVli, $dstVli ) + ->setProtocol( $data['protocol'] ) + ->setCategory( $data['category'] ) + ->setPeriod( $data['period'] ); + + $graph->authorise(); + + return view( 'statistics/p2p-single', array_merge( $data, [ + 'graph' => $graph, + 'dstVli' => $dstVli, + 'possibleProtocols' => $possibleProtocols, + ]) ); } + + + /** + * Show p2p stats for a given customer and day. + * + * @param Request $r + * + * @return \Illuminate\Foundation\Application|\Illuminate\Routing\Redirector|RedirectResponse + * + * @throws + */ + public function p2pTable( Request $r ): View|RedirectResponse + { + if( !Auth::check() ) { + abort( 403, "You are not authorised to view this page." ); + } + + if( !Auth::user()->isSuperUser() ) { + $r->merge( [ 'custid' => Auth::user()->custid ] ); + } + + $days = P2pDailyStats::select('day')->distinct('day')->orderBy('day','desc')->get()->pluck('day')->toArray(); + + if( empty( $days ) ) { + AlertContainer::push( "The P2P daily stats database table is empty.", Alert::WARNING ); + return redirect( route('statistics@member', ['cust' => $r->custid ] ) ); + } + + if( !$r->day || !in_array( $r->day, $days ) ) { + $r->merge( [ 'day' => $days[0] ] ); + } + + $customers = Customer::currentActive(true,true,true) + ->get()->keyBy('id'); + + $stats = []; + if( $r->custid ) { + $stats = P2pDailyStats::with('peer') + ->where('day', $r->day)->where('cust_id', $r->custid )->get(); + } + + return view( 'statistics/p2p-table' )->with( [ + 'day' => $r->day, + 'days' => $days, + 'stats' => $stats, + 'customers' => $customers, + 'c' => $r->custid ? $customers[$r->custid] : false, + ] ); + } + + + + + + /** * Show daily traffic for customers in a table. * @@ -668,7 +786,7 @@ public function leagueTable( Request $r ): View $metrics = [ 'Total' => 'data', 'Max' => 'max', - 'Average' => 'average' + 'Average' => 'average', ]; $metric = $r->input( 'metric', $metrics['Total'] ); @@ -693,6 +811,13 @@ public function leagueTable( Request $r ): View ] ); } + + + + + + + /** * Display graphs for a core bundle * @@ -705,6 +830,9 @@ public function leagueTable( Request $r ): View */ public function coreBundle( StatisticsRequest $r, CoreBundle $cb ): RedirectResponse|View { + /** @var User $us */ + $us = Auth::getUser(); + $category = Graph::processParameterCategory( $r->input( 'category' ) ); $graph = App::make( Grapher::class ) ->coreBundle( $cb )->setCategory( $category ) @@ -722,7 +850,7 @@ public function coreBundle( StatisticsRequest $r, CoreBundle $cb ): RedirectResp "cb" => $cb, "graph" => $graph, "category" => $category, - "categories" => Auth::check() && Auth::getUser() && Auth::getUser()->isSuperUser() ? Graph::CATEGORY_DESCS : Graph::CATEGORIES_BITS_PKTS_DESCS, + "categories" => Auth::check() && $us && $us->isSuperUser() ? Graph::CATEGORY_DESCS : Graph::CATEGORIES_BITS_PKTS_DESCS, ]); } @@ -738,7 +866,7 @@ public function utilisation( StatisticsRequest $r ): View $metrics = [ 'Max' => 'max', 'Total' => 'data', - 'Average' => 'average' + 'Average' => 'average', ]; $metric = $r->input( 'metric', $metrics['Max'] ); diff --git a/app/Http/Controllers/Switches/SwitchController.php b/app/Http/Controllers/Switches/SwitchController.php index 8a6c78e95..6cc94cc57 100644 --- a/app/Http/Controllers/Switches/SwitchController.php +++ b/app/Http/Controllers/Switches/SwitchController.php @@ -87,6 +87,9 @@ class SwitchController extends EloquentController */ public function feInit(): void { + /** @var User $us */ + $us = Auth::getUser(); + $this->feParams = (object)[ 'model' => Switcher::class, 'pagetitle' => 'Switches', @@ -96,7 +99,7 @@ public function feInit(): void 'listOrderByDir' => 'ASC', 'viewFolderName' => 'switches', 'addRoute' => route( static::route_prefix() . '@create-by-snmp' ), - 'documentation' => 'https://docs.ixpmanager.org/usage/switches/', + 'documentation' => 'https://docs.ixpmanager.org/latest/usage/switches/', 'listColumns' => [ 'name' => 'Name', 'cabinet' => [ @@ -172,7 +175,7 @@ public function feInit(): void // phpunit / artisan trips up here without the cli test: if( PHP_SAPI !== 'cli' ) { // custom access controls: - switch( Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC ) { + switch( Auth::check() ? $us->privs() : User::AUTH_PUBLIC ) { case User::AUTH_SUPERUSER: break; case User::AUTH_CUSTUSER || User::AUTH_CUSTADMIN: @@ -211,38 +214,38 @@ protected static function additionalRoutes( string $route_prefix ): void /** * List the contents of a database table. * - * @param Request $r + * @param Request $param * * @return View */ - public function list( Request $r ) : View + public function list( Request $param ) : View { - if( ( $showActiveOnly = $r->activeOnly ) !== null ) { - $r->session()->put( "switch-list-active-only", $showActiveOnly ); - } else if( $r->session()->exists( "switch-list-active-only" ) ) { - $showActiveOnly = $r->session()->get( "switch-list-active-only" ); + if( ( $showActiveOnly = $param->activeOnly ) !== null ) { + $param->session()->put( "switch-list-active-only", $showActiveOnly ); + } else if( $param->session()->exists( "switch-list-active-only" ) ) { + $showActiveOnly = $param->session()->get( "switch-list-active-only" ); } else { $showActiveOnly = false; } - if( $vtype = $r->vtype ) { - $r->session()->put( "switch-list-vtype", $vtype ); - } elseif( $r->session()->exists( "switch-list-vtype" ) ) { - $vtype = $r->session()->get( "switch-list-vtype" ); + if( $vtype = $param->vtype ) { + $param->session()->put( "switch-list-vtype", $vtype ); + } elseif( $param->session()->exists( "switch-list-vtype" ) ) { + $vtype = $param->session()->get( "switch-list-vtype" ); } else { - $r->session()->remove( "switch-list-vtype" ); + $param->session()->remove( "switch-list-vtype" ); $vtype = Switcher::VIEW_MODE_DEFAULT; } - if( $r->infra ) { - if( $infra = Infrastructure::find( $r->infra ) ) { - $r->session()->put( "switch-list-infra", $infra ); + if( $param->infra ) { + if( $infra = Infrastructure::find( $param->infra ) ) { + $param->session()->put( "switch-list-infra", $infra ); } else { - $r->session()->remove( "switch-list-infra" ); + $param->session()->remove( "switch-list-infra" ); $infra = false; } - } else if( $r->session()->exists( "switch-list-infra" ) ) { - $infra = $r->session()->get( "switch-list-infra" ); + } else if( $param->session()->exists( "switch-list-infra" ) ) { + $infra = $param->session()->get( "switch-list-infra" ); } else { $infra = false; } @@ -364,7 +367,7 @@ protected function createPrepareForm(): array { return [ 'object' => $this->object, - 'addBySnmp' => request()->old( 'add_by_snnp', false ), + 'addBySnmp' => request()->old( 'add_by_snnp', null ), 'preAddForm' => false, 'cabinets' => Location::with( 'cabinets' ) ->has( 'cabinets' )->get()->toArray(),// getting the cabinets via the location to build the grouped options dropdown @@ -415,8 +418,8 @@ protected function editPrepareForm( int $id ): array 'snmppasswd' => request()->old( 'snmppasswd', $this->object->snmppasswd ), 'vendorid' => request()->old( 'vendorid', $this->object->vendorid ), 'model' => request()->old( 'model', $this->object->model ), - 'active' => request()->old( 'active', ( $this->object->active ? 1 : 0 ) ), - 'poll' => request()->old( 'poll', ( $this->object->poll ? 1 : 0 ) ), + 'active' => request()->old( 'active', ( $this->object->active ? '1' : '0' ) ), + 'poll' => request()->old( 'poll', ( $this->object->poll ? '1' : '0' ) ), 'asn' => request()->old( 'asn', $this->object->asn ), 'loopback_ip' => request()->old( 'loopback_ip', $this->object->loopback_ip ), 'loopback_name' => request()->old( 'loopback_name', $this->object->loopback_name ), @@ -426,7 +429,7 @@ protected function editPrepareForm( int $id ): array return [ 'object' => $this->object, - 'addBySnmp' => request()->old( 'add_by_snnp', false ), + 'addBySnmp' => request()->old( 'add_by_snnp', null ), 'preAddForm' => false, 'cabinets' => Location::with( 'cabinets' ) ->has( 'cabinets' )->get()->toArray(),// getting the cabinets via the location to build the grouped options dropdown @@ -693,11 +696,11 @@ public function configuration( Request $r ) : View } $config = SwitcherAggregator::getConfiguration( - $switch->id ?? null, - $infra->id ?? null, - $location->id ?? null, + $switch ? $switch->id : null, + $infra ? $infra->id : null, + $location ? $location->id : null, $speed, - $vlan->id ?? null, + $vlan ? $vlan->id : null, (bool) $r->input('rs-client'), (bool) $r->input('ipv6-enabled') ); @@ -713,7 +716,7 @@ public function configuration( Request $r ) : View 'infras' => $switch ? [ Infrastructure::find( $switch->infrastructure ) ] : Infrastructure::orderBy( 'name' )->get(), 'vlans' => Vlan::orderBy( 'name' )->get(), 'locations' => $switch ? [ Location::find( $switch->cabinet->locationid ) ] : Location::orderBy( 'name' )->get(), - 'switches' => SwitcherAggregator::getByLocationInfrastructureSpeed( $infra->id ?? null, $location->id ?? null, $speed ?: null ), + 'switches' => SwitcherAggregator::getByLocationInfrastructureSpeed( $infra ? $infra->id : null, $location ? $location->id : null, $speed ?: null ), 'config' => $config, ]); } diff --git a/app/Http/Controllers/Switches/SwitchPortController.php b/app/Http/Controllers/Switches/SwitchPortController.php index e1b9fdda1..b7a193a1f 100644 --- a/app/Http/Controllers/Switches/SwitchPortController.php +++ b/app/Http/Controllers/Switches/SwitchPortController.php @@ -172,25 +172,25 @@ protected function listGetData( int $id = null ): array /** * List the contents of a database table. * - * @param Request $r + * @param Request $param * * @return View */ - public function list( Request $r ) : View + public function list( Request $param ) : View { - $s = false; - if( $r->switch !== null ) { - if( $s = Switcher::find( $r->switch ) ) { - $r->session()->put( "switch-port-list", $s->id ); + $switch = false; + if( $param->switch !== null ) { + if( $switch = Switcher::find( $param->switch ) ) { + $param->session()->put( "switch-port-list", $switch->id ); } else { - $r->session()->remove( "switch-port-list" ); - $s = false; + $param->session()->remove( "switch-port-list" ); + $switch = false; } - } else if( $r->session()->exists( "switch-port-list" ) ) { - $s = Switcher::find( $r->session()->get( "switch-port-list" ) ); + } else if( $param->session()->exists( "switch-port-list" ) ) { + $switch = Switcher::find( $param->session()->get( "switch-port-list" ) ); } - $this->data[ 'params' ][ 'switch' ] = $s; + $this->data[ 'params' ][ 'switch' ] = $switch; $this->data[ 'params' ][ 'switches' ] = Switcher::orderBy( 'name' )->get()->keyBy( 'id' ); $this->data[ 'rows' ] = $this->listGetData(); diff --git a/app/Http/Controllers/User/CustomerToUserController.php b/app/Http/Controllers/User/CustomerToUserController.php index 0f4614b38..67b9524e4 100644 --- a/app/Http/Controllers/User/CustomerToUserController.php +++ b/app/Http/Controllers/User/CustomerToUserController.php @@ -76,7 +76,9 @@ class CustomerToUserController extends Controller */ public function create( Request $r, string $email ): View { - if( Auth::getUser()->isCustUser() ){ + /** @var User $us */ + $us = Auth::getUser(); + if( $us->isCustUser() ){ abort( 403, 'Action no allowed' ); } // search user via email address @@ -140,6 +142,9 @@ public function store( StoreCustomerToUser $r ): RedirectResponse */ public function updatePrivs( Request $r ): JsonResponse { + /** @var User $us */ + $us = Auth::getUser(); + /** @var CustomerToUser $c2u */ $c2u = CustomerToUser::findOrFail( $r->id ); @@ -148,7 +153,7 @@ public function updatePrivs( Request $r ): JsonResponse } if( (int)$r->privs === User::AUTH_SUPERUSER ) { - if( !Auth::user()->isSuperUser() ) { + if( !$us->isSuperUser() ) { return response()->json( [ 'success' => false, 'message' => "You are not allowed to set the super user privilege" ] ); } diff --git a/app/Http/Controllers/User/User2FAController.php b/app/Http/Controllers/User/User2FAController.php index 4a9e339ba..ce13f2299 100644 --- a/app/Http/Controllers/User/User2FAController.php +++ b/app/Http/Controllers/User/User2FAController.php @@ -71,6 +71,7 @@ class User2FAController extends Controller */ public function configure(): View { + /** @var User $user */ $user = Auth::getUser(); if( !$user->user2FA ) { diff --git a/app/Http/Controllers/User/UserController.php b/app/Http/Controllers/User/UserController.php index 90896c8df..1e62caf33 100644 --- a/app/Http/Controllers/User/UserController.php +++ b/app/Http/Controllers/User/UserController.php @@ -27,6 +27,7 @@ use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Routing\Redirector; use Illuminate\Support\Str; use Illuminate\View\View; @@ -239,26 +240,29 @@ public function create( Request $r ): View * * @param StoreUser $r instance of the current HTTP request * - * @return RedirectResponse + * @return RedirectResponse|Redirector * * @throws AuthorizationException */ - public function store( StoreUser $r ): RedirectResponse + public function store( StoreUser $r ): RedirectResponse|Redirector { + /** @var User $us */ + $us = Auth::getUser(); + $this->authorize( 'any', User::class ); // Creating the User object $user = new User; - $user->creator = Auth::user()->username; + $user->creator = $us->username; $user->password = Hash::make( Str::random(16) ); $user->name = $r->name; $user->authorisedMobile = $r->authorisedMobile; $user->username = strtolower( $r->username ); $user->email = strtolower( $r->email ); - $user->disabled = !$r->disabled; // input as enable in the view + $user->disabled = $r->disabled ? 0 : 1; // input as enable in the view $user->lastupdatedby = Auth::id(); $user->privs = $r->privs; - $user->custid = Auth::user()->isSuperUser() ? $r->custid : Auth::user()->custid; + $user->custid = $us->isSuperUser() ? $r->custid : $us->custid; $user->save(); // Creating the CustomerToUser object @@ -296,9 +300,11 @@ public function store( StoreUser $r ): RedirectResponse */ public function edit( Request $r, User $u ): View { + /** @var User $us */ + $us = Auth::user(); $this->authorize( 'access', $u ); - $isSuperUser = Auth::user()->isSuperUser(); + $isSuperUser = $us->isSuperUser(); if( !request()->session()->exists( 'user_post_store_redirect' ) ) { $this->redirectLink(); @@ -309,7 +315,7 @@ public function edit( Request $r, User $u ): View 'username' => $r->old( 'username', $u->username ), 'email' => $r->old( 'email', $u->email ), 'authorisedMobile' => $r->old( 'authorisedMobile', $u->authorisedMobile ), - 'disabled' => $r->old( 'disabled', !$u->disabled ), + 'disabled' => $r->old( 'disabled', $u->disabled ? '0' : '1' ), 'linkCancel' => $r->old( 'linkCancel', $r->headers->get( 'referer', "" ) ), ]; @@ -340,19 +346,21 @@ public function edit( Request $r, User $u ): View /** * Allow to update a User * - * @param UpdateUser $r instance of the current HTTP request - * @param User $u + * @param UpdateUser $r instance of the current HTTP request + * @param User $u * - * @return RedirectResponse + * @return RedirectResponse|Redirector * * @throws AuthorizationException */ - public function update( UpdateUser $r, User $u ): RedirectResponse + public function update( UpdateUser $r, User $u ): RedirectResponse|Redirector { + /** @var User $us */ + $us = Auth::user(); $this->authorize( 'access', $u ); // Superuser OR Logged User edit his own user - if( ( $isSuperUser = Auth::user()->isSuperUser() ) || $u->id === Auth::id() ) { + if( ( $isSuperUser = $us->isSuperUser() ) || $u->id === Auth::id() ) { $u->name = $r->name; $u->authorisedMobile = $r->authorisedMobile; } @@ -360,7 +368,7 @@ public function update( UpdateUser $r, User $u ): RedirectResponse if( $isSuperUser ) { $u->username = strtolower( $r->username ); $u->email = $r->email; - $u->disabled = !$r->disabled;// displayed as enabled in the view + $u->disabled = $r->disabled ? 0 : 1;// displayed as enabled in the view // Delete Remember Token for the user if disabled if(!$r->disabled){ @@ -391,7 +399,10 @@ public function update( UpdateUser $r, User $u ): RedirectResponse */ protected function postStoreRedirect() { - if( Auth::user()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::user(); + + if( $us->isSuperUser() ) { $redirect = session( "user_post_store_redirect" ); session()->forget( "user_post_store_redirect" ); @@ -400,7 +411,7 @@ protected function postStoreRedirect() } } - if( Auth::user()->isCustUser() ) { + if( $us->isCustUser() ) { return ''; } @@ -444,6 +455,9 @@ public function view( User $u ): View */ public function delete( DeleteRequest $r, User $u ) : RedirectResponse { + /** @var User $us */ + $us = Auth::user(); + $this->authorize( 'any', User::class ); // delete all the user's API keys @@ -465,7 +479,7 @@ public function delete( DeleteRequest $r, User $u ) : RedirectResponse $u->delete(); AlertContainer::push('User deleted.', Alert::SUCCESS ); - Log::notice( Auth::user()->username." deleted user" . $u->username ); + Log::notice( $us->username." deleted user" . $u->username ); // If the user delete itself and is loggued as the same customer logout if( Auth::id() === $u->id ) { @@ -473,7 +487,7 @@ public function delete( DeleteRequest $r, User $u ) : RedirectResponse return redirect( route( "login@showForm" ) ); } - if( Auth::user()->isSuperUser() && strpos( request()->headers->get('referer', "" ), "customer/overview" ) ) { + if( $us->isSuperUser() && strpos( request()->headers->get('referer', "" ), "customer/overview" ) ) { return redirect( route( "customer@overview", [ 'cust' => $u->custid , "tab" => "users"] ) ); } @@ -489,10 +503,13 @@ public function delete( DeleteRequest $r, User $u ) : RedirectResponse */ public function resendWelcomeEmail( User $u ): RedirectResponse { + /** @var User $us */ + $us = Auth::user(); + Mail::to( $u->email )->send( new UserCreatedeMailable( $u, true ) ); AlertContainer::push( sprintf( 'The welcome email has been resent' ), Alert::SUCCESS ); - if( Auth::user()->isSuperUser() && strpos( request()->headers->get('referer', "" ), "customer/overview" ) ) { + if( $us->isSuperUser() && strpos( request()->headers->get('referer', "" ), "customer/overview" ) ) { return redirect( route( "customer@overview", [ 'cust' => $u->custid , "tab" => "users"] ) ); } diff --git a/app/Http/Middleware/ApiAuthenticate.php b/app/Http/Middleware/ApiAuthenticate.php index 71520c008..42e4a3a46 100644 --- a/app/Http/Middleware/ApiAuthenticate.php +++ b/app/Http/Middleware/ApiAuthenticate.php @@ -61,7 +61,7 @@ class ApiAuthenticate */ public function handle( Request $r, Closure $next ) { - // are we already logged in? + // are we already logged in? if( !Auth::check() ) { // find API key. Prefer header to URL: @@ -101,10 +101,15 @@ public function handle( Request $r, Closure $next ) 'lastseenAt' => now(), 'lastseenFrom' => ixp_get_client_ip(), ] ); - }elseif( Auth::user()->disabled ){ - return response( 'User is disabled', 403 ); - }elseif( Auth::user()->customer()->active()->notDeleted()->doesntExist() ){// Check if default customer is disabled - return response( ucfirst( config( 'ixp_fe.lang.customer.one' ) ) . ' of the user is disabled', 403 ); + } else { + /** @var User $us */ + $us = Auth::user(); + + if( $us->disabled ){ + return response( 'User is disabled', 403 ); + } elseif( $us->customer()->active()->notDeleted()->doesntExist() ){// Check if default customer is disabled + return response( ucfirst( config( 'ixp_fe.lang.customer.one' ) ) . ' of the user is disabled', 403 ); + } } return $next( $r ); diff --git a/app/Http/Middleware/ApiMaybeAuthenticate.php b/app/Http/Middleware/ApiMaybeAuthenticate.php index 4e11c389f..d7b1b5fe9 100644 --- a/app/Http/Middleware/ApiMaybeAuthenticate.php +++ b/app/Http/Middleware/ApiMaybeAuthenticate.php @@ -62,7 +62,10 @@ class ApiMaybeAuthenticate */ public function handle( Request $r, Closure $next ) { - // are we already logged in? + /** @var User $us */ + $us = Auth::user(); + + // are we already logged in? if( !Auth::check() ) { // find API key. Prefer header to URL: $apikey = false; @@ -98,12 +101,12 @@ public function handle( Request $r, Closure $next ) 'lastseenFrom' => ixp_get_client_ip(), ] ); } - } elseif( Auth::user()->disabled ){ + } elseif( $us->disabled ){ return response( 'User is disabled', 403 ); } // Check if default customer is disabled - if( Auth::check() && Auth::user()->customer()->active()->notDeleted()->doesntExist() ){ + if( Auth::check() && $us->customer()->active()->notDeleted()->doesntExist() ){ return response( ucfirst( config( 'ixp_fe.lang.customer.one' ) ) . ' of the user is disabled', 403 ); } diff --git a/app/Http/Middleware/AssertUserPrivilege.php b/app/Http/Middleware/AssertUserPrivilege.php index 0fcb2d01f..9312fa248 100644 --- a/app/Http/Middleware/AssertUserPrivilege.php +++ b/app/Http/Middleware/AssertUserPrivilege.php @@ -26,6 +26,7 @@ use Auth, Closure; use Illuminate\Http\Request; +use IXP\Models\User; /** * Middleware: Assert an authenticated user is of a given privilege @@ -51,7 +52,10 @@ class AssertUserPrivilege */ public function handle( Request $r, Closure $next, int $privilege ) { - if( Auth::getUser()->privs() !== $privilege ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( $us->privs() !== $privilege ) { return response( 'Insufficient permissions', 403 ); } diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 5ea1895cc..28af6e1b7 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -29,6 +29,7 @@ use Illuminate\Http\Request; use IXP\Models\CustomerToUser; +use IXP\Models\User; use IXP\Utils\View\Alert\Alert; use IXP\Utils\View\Alert\Container as AlertContainer; @@ -80,21 +81,24 @@ public function handle( Request $r, Closure $next ) return redirect()->guest(route( "login@showForm" ) ); } - // Check if use has at least one customer linked, if not logout - if( !Auth::getUser()->custid || !CustomerToUser::where( [ 'user_id' => Auth::id() ] )->where( [ 'customer_id' => Auth::getUser()->custid ] )->first() ){ + /** @var User $us */ + $us = Auth::user(); + + // Check if use has at least one customer linked, if not logout + if( !$us->custid || !CustomerToUser::where( [ 'user_id' => Auth::id() ] )->where( [ 'customer_id' => $us->custid ] )->first() ){ Auth::logout(); return redirect()->guest( route( "login@showForm" ) ); } // Check if user is disabled - if( Auth::getUser()->disabled ){ + if( $us->disabled ){ AlertContainer::push( 'You account is disabled.', Alert::DANGER ); Auth::logout(); return redirect()->guest( route( "login@showForm" ) ); } // Check if default customer is disabled - if( Auth::getUser()->customer()->active()->notDeleted()->doesntExist() ){ + if( $us->customer()->active()->notDeleted()->doesntExist() ){ Auth::logout(); return redirect()->guest( route( "login@showForm" ) ); } diff --git a/app/Http/Middleware/ControllerEnabled.php b/app/Http/Middleware/ControllerEnabled.php index 9096a2f0b..a48620ab0 100644 --- a/app/Http/Middleware/ControllerEnabled.php +++ b/app/Http/Middleware/ControllerEnabled.php @@ -85,8 +85,17 @@ public function handle( Request $r, Closure $next ) } $name = substr( $name, 0, -1 ); + $enabled = true; + // is the controller enabled? if( config( 'ixp_fe.frontend.disabled.' . $name, false ) ) { + $enabled = false; + } else if( str_starts_with( $controller, 'ConsoleServer' ) && config( 'ixp_fe.frontend.disabled.console-server-connection', false ) ) { + dump('here'); + $enabled = false; + } + + if( !$enabled ) { AlertContainer::push( "This controller has been disabled (see: config/ixp_fe.php).", Alert::DANGER ); return redirect( '' ); } diff --git a/app/Http/Middleware/Eloquent2Frontend.php b/app/Http/Middleware/Eloquent2Frontend.php index 447cde45d..24993f898 100644 --- a/app/Http/Middleware/Eloquent2Frontend.php +++ b/app/Http/Middleware/Eloquent2Frontend.php @@ -27,6 +27,7 @@ use Illuminate\Http\Request; +use IXP\Http\Controllers\Contact\ContactController; use IXP\Models\User; use IXP\Utils\View\Alert\{ @@ -56,16 +57,20 @@ class Eloquent2Frontend */ public function handle( Request $r, Closure $next ) { + /** @var User $us */ + $us = Auth::user(); + // get the class and method that has been called: [ $controller, $method ] = explode('@', Route::currentRouteAction() ); // what's the user's privilege? - $user_priv = Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC; + $user_priv = Auth::check() ? $us->privs() : User::AUTH_PUBLIC; // first check - do we have the necessary privileges to access this? + /** @psalm-suppress InvalidPropertyFetch */ if( $user_priv < $controller::$minimum_privilege ) { AlertContainer::push( "You do not have the required privileges to access this function.", Alert::DANGER ); - Log::info( ( Auth::check() ? Auth::getUser()->username : 'Anonymous user' ) . " tried to access {$controller}@{$method} but does not have the required privileges" ); + Log::info( ( Auth::check() ? $us->username : 'Anonymous user' ) . " tried to access {$controller}@{$method} but does not have the required privileges" ); return redirect( '' ); } diff --git a/app/Http/Middleware/RsPrefixes.php b/app/Http/Middleware/RsPrefixes.php index 7922cc7b8..f826e63c0 100644 --- a/app/Http/Middleware/RsPrefixes.php +++ b/app/Http/Middleware/RsPrefixes.php @@ -60,13 +60,16 @@ class RsPrefixes */ public function handle( Request $r, Closure $next ) { + /** @var User $us */ + $us = Auth::getUser(); + // there are only two routes for rs prefixes - authorise each one as follows: if( $r->is( 'rs-prefixes/list' ) ) { if( (int)config( 'ixp_fe.rs-prefixes.access' ) === User::AUTH_PUBLIC ) { return $next( $r ); } - if( Auth::guest() || config( 'ixp_fe.rs-prefixes.access' ) > Auth::getUser()->privs() ) { + if( Auth::guest() || config( 'ixp_fe.rs-prefixes.access' ) > $us->privs() ) { AlertContainer::push( "You do not have the required privileges to access this function.", Alert::DANGER ); return redirect( '' ); } @@ -76,11 +79,11 @@ public function handle( Request $r, Closure $next ) } if( Auth::check() ) { - if( (int)config( 'ixp_fe.rs-prefixes.access' ) <= Auth::getUser()->privs() ) { + if( (int)config( 'ixp_fe.rs-prefixes.access' ) <= $us->privs() ) { return $next( $r ); } - if( Auth::getUser()->custid === $r->cust->id ) { + if( $us->custid === $r->cust->id ) { return $next( $r ); } } diff --git a/app/Http/Middleware/Services/Grapher.php b/app/Http/Middleware/Services/Grapher.php index b5c9ac801..f2147aeeb 100644 --- a/app/Http/Middleware/Services/Grapher.php +++ b/app/Http/Middleware/Services/Grapher.php @@ -91,108 +91,95 @@ public function handle( Request $r, Closure $next ) /** * All graphs have common parameters. We process these here for every request - and set sensible defaults. * - * @param Request $r + * @param Request $request * @param GrapherService $grapher * * @return Graph */ - private function processParameters( Request $r, GrapherService $grapher ): Graph + private function processParameters( Request $request, GrapherService $grapher ): Graph { // while the Grapher service stores the processed parameters in its own object, we update the $request // parameters here also just in case we need to final versions later in the request. - $target = explode( '/', $r->path() ); + $target = explode( '/', $request->path() ); $target = array_pop( $target ); - $r->period = Graph::processParameterPeriod( $r->period ); - $r->category = Graph::processParameterCategory( $r->category ); - $r->protocol = Graph::processParameterProtocol( $r->protocol ); - $r->type = Graph::processParameterType( $r->type ); - switch( $target ) { case 'ixp': - $r->id = 1; - $graph = $grapher->ixp()->setParamsFromArray( $r->all() ); + $graph = $grapher->ixp(); break; case 'infrastructure': - $infra = InfrastructureGraph::processParameterInfrastructure( (int)$r->input( 'id', 0 ) ); - $r->infrastructure = $infra->id; - $graph = $grapher->infrastructure( $infra )->setParamsFromArray( $r->all() ); + $infra = InfrastructureGraph::processParameterInfrastructure( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->infrastructure( $infra ); break; case 'vlan': - $vlan = VlanGraph::processParameterVlan( (int)$r->input( 'id', 0 ) ); - $r->vlan = $vlan->id; - $graph = $grapher->vlan( $vlan )->setParamsFromArray( $r->all() ); + $vlan = VlanGraph::processParameterVlan( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->vlan( $vlan ); break; case 'trunk': - $trunkname = TrunkGraph::processParameterTrunkname( (string)$r->input( 'id', '' ) ); - $r->trunkname = $trunkname; - $graph = $grapher->trunk( $trunkname )->setParamsFromArray( $r->all() ); + $trunkname = TrunkGraph::processParameterTrunkname( (string)$request->input( 'id', '' ) ); + $graph = $grapher->trunk( $trunkname ); break; case 'corebundle': - $corebundle = CoreBundleGraph::processParameterCoreBundle( (int)$r->input( 'id', 0 ) ); - $side = CoreBundleGraph::processParameterSide( $r->input( 'side', 'a' ) ); - $r->corebundle = $corebundle->id; - $r->side = $side; - $graph = $grapher->coreBundle( $corebundle, $side )->setParamsFromArray( $r->all() ); + $corebundle = CoreBundleGraph::processParameterCoreBundle( (int)$request->input( 'id', 0 ) ); + $side = CoreBundleGraph::processParameterSide( $request->input( 'side', 'a' ) ); + $graph = $grapher->coreBundle( $corebundle, $side ); break; case 'location': - $location = LocationGraph::processParameterLocation( (int)$r->input( 'id', 0 ) ); - $r->location = $location->id; - $graph = $grapher->location( $location )->setParamsFromArray( $r->all() ); + $location = LocationGraph::processParameterLocation( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->location( $location ); break; case 'switch': - $switch = SwitchGraph::processParameterSwitch( (int)$r->input( 'id', 0 ) ); - $r->switch = $switch->id; - $graph = $grapher->switch( $switch )->setParamsFromArray( $r->all() ); + $switch = SwitchGraph::processParameterSwitch( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->switch( $switch ); break; case 'physicalinterface': - $physint = PhysIntGraph::processParameterPhysicalInterface( (int)$r->input( 'id', 0 ) ); - $r->physint = $physint->id; - $graph = $grapher->physint( $physint )->setParamsFromArray( $r->all() ); + $physint = PhysIntGraph::processParameterPhysicalInterface( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->physint( $physint ); break; case 'virtualinterface': - $virtint = VirtIntGraph::processParameterVirtualInterface( (int)$r->input( 'id', 0 ) ); - $r->virtint = $virtint->id; - $graph = $grapher->virtint( $virtint )->setParamsFromArray( $r->all() ); + $virtint = VirtIntGraph::processParameterVirtualInterface( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->virtint( $virtint ); break; case 'customer': - $customer = CustomerGraph::processParameterCustomer( (int)$r->input( 'id', 0 ) ); - $r->customer = $customer->id; - $graph = $grapher->customer( $customer )->setParamsFromArray( $r->all() ); + $customer = CustomerGraph::processParameterCustomer( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->customer( $customer ); break; case 'vlaninterface': - $vlanint = VlanIntGraph::processParameterVlanInterface( (int)$r->input( 'id', 0 ) ); - $r->vlanint = $vlanint->id; - $graph = $grapher->vlanint( $vlanint )->setParamsFromArray( $r->all() ); + $vlanint = VlanIntGraph::processParameterVlanInterface( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->vlanint( $vlanint ); break; case 'latency': - $vli = LatencyGraph::processParameterVlanInterface( (int)$r->input( 'id', 0 ) ); - $r->vli = $vli; - $graph = $grapher->latency( $vli )->setParamsFromArray( $r->all() ); + $vli = LatencyGraph::processParameterVlanInterface( (int)$request->input( 'id', 0 ) ); + $graph = $grapher->latency( $vli ); break; case 'p2p': - $srcvlanint = P2pGraph::processParameterSourceVlanInterface( (int)$r->input( 'svli', 0 ) ); - $dstvlanint = P2pGraph::processParameterDestinationVlanInterface( (int)$r->input( 'dvli', 0 ) ); - $r->srcvlanint = $srcvlanint->id; - $r->dstvlanint = $dstvlanint->id; - $graph = $grapher->p2p( $srcvlanint, $dstvlanint )->setParamsFromArray( $r->all() ); + $srcvlanint = P2pGraph::processParameterSourceVlanInterface( (int)$request->input( 'svli', 0 ) ); + $dstvlanint = P2pGraph::processParameterDestinationVlanInterface( (int)$request->input( 'dvli', 0 ) ); + $graph = $grapher->p2p( $srcvlanint, $dstvlanint ); break; + default: abort(404, 'No such graph type'); } + + $graph->setPeriod( $graph->processParameterPeriod( $request->period ) ); + $graph->setCategory( $graph->processParameterCategory( $request->category ) ); + $graph->setProtocol( $graph->processParameterProtocol( $request->protocol ) ); + $graph->setType( $graph->processParameterType( $request->type ) ); + /** @var Graph $graph */ return $graph; } diff --git a/app/Http/Middleware/Services/LookingGlass.php b/app/Http/Middleware/Services/LookingGlass.php index 5ee8d9483..a37a45a29 100644 --- a/app/Http/Middleware/Services/LookingGlass.php +++ b/app/Http/Middleware/Services/LookingGlass.php @@ -148,7 +148,10 @@ public function handle( Request $r, Closure $next ) */ private function authorise( Router $router ): bool { - if( $router->authorise( Auth::check() ? Auth::getUser()->privs() : User::AUTH_PUBLIC ) ) { + /** @var User $us */ + $us = Auth::user(); + + if( $router->authorise( Auth::check() ? $us->privs() : User::AUTH_PUBLIC ) ) { return true; } return false; diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index ffc1bc8cd..3c67bd126 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -25,7 +25,7 @@ use Illuminate\Http\Request; -use Fideloper\Proxy\TrustProxies as Middleware; +use Illuminate\Http\Middleware\TrustProxies as Middleware; /** * Middleware: TrustProxies @@ -49,7 +49,7 @@ class TrustProxies extends Middleware /** * The current proxy header mappings. * - * @var array + * @var int */ protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | diff --git a/app/Http/Requests/CoreBundle/Store.php b/app/Http/Requests/CoreBundle/Store.php index c07243d54..9bd2f9b38 100644 --- a/app/Http/Requests/CoreBundle/Store.php +++ b/app/Http/Requests/CoreBundle/Store.php @@ -29,10 +29,7 @@ use Illuminate\Validation\Validator; -use IXP\Models\{ - CoreBundle, - SwitchPort -}; +use IXP\Models\{CoreBundle, SwitchPort, User}; use IXP\Utils\View\Alert\{ Alert, @@ -58,8 +55,10 @@ class Store extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/CoreBundle/StoreCoreLink.php b/app/Http/Requests/CoreBundle/StoreCoreLink.php index bdfe1d78f..ec4e36863 100644 --- a/app/Http/Requests/CoreBundle/StoreCoreLink.php +++ b/app/Http/Requests/CoreBundle/StoreCoreLink.php @@ -26,6 +26,7 @@ use Auth; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; /** * Store CoreLink FormRequest @@ -46,8 +47,10 @@ class StoreCoreLink extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Customer/BillingInformation.php b/app/Http/Requests/Customer/BillingInformation.php index d750f6957..3a3ce7a50 100644 --- a/app/Http/Requests/Customer/BillingInformation.php +++ b/app/Http/Requests/Customer/BillingInformation.php @@ -29,6 +29,7 @@ use IXP\Models\CompanyBillingDetail; +use IXP\Models\User; use Webpatser\Countries\CountriesFacade as Countries; /** @@ -50,7 +51,9 @@ class BillingInformation extends FormRequest */ public function authorize(): bool { - return Auth::getUser()->isSuperUser(); + /** @var User $us */ + $us = Auth::getUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Customer/Store.php b/app/Http/Requests/Customer/Store.php index 21d3ccb78..e9d88898b 100644 --- a/app/Http/Requests/Customer/Store.php +++ b/app/Http/Requests/Customer/Store.php @@ -29,6 +29,7 @@ use Illuminate\Validation\Validator; use IXP\Models\Customer; +use IXP\Models\User; /** * Customer Store Request @@ -48,8 +49,10 @@ class Store extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Dashboard/BillingDetailsRequest.php b/app/Http/Requests/Dashboard/BillingDetailsRequest.php index cf0d65353..cd0b71afd 100644 --- a/app/Http/Requests/Dashboard/BillingDetailsRequest.php +++ b/app/Http/Requests/Dashboard/BillingDetailsRequest.php @@ -26,6 +26,7 @@ use Auth, Countries; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; /** * Dashboard Billing Store Request @@ -46,8 +47,10 @@ class BillingDetailsRequest extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures custadmin access only so always authorised here: - return Auth::getUser()->isCustAdmin(); + return $us->isCustAdmin(); } /** diff --git a/app/Http/Requests/Dashboard/NocDetailsRequest.php b/app/Http/Requests/Dashboard/NocDetailsRequest.php index 2379e0f7a..5e4cd9261 100644 --- a/app/Http/Requests/Dashboard/NocDetailsRequest.php +++ b/app/Http/Requests/Dashboard/NocDetailsRequest.php @@ -28,6 +28,7 @@ use Illuminate\Foundation\Http\FormRequest; use IXP\Models\Customer; +use IXP\Models\User; /** * Dashboard Noc details Request @@ -48,8 +49,10 @@ class NocDetailsRequest extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures custadmin access only so always authorised here: - return Auth::getUser()->isCustAdmin(); + return $us->isCustAdmin(); } /** diff --git a/app/Http/Requests/EmailPatchPanelPort.php b/app/Http/Requests/EmailPatchPanelPort.php index a1403cc47..8e7e12307 100644 --- a/app/Http/Requests/EmailPatchPanelPort.php +++ b/app/Http/Requests/EmailPatchPanelPort.php @@ -25,6 +25,7 @@ use Auth; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; class EmailPatchPanelPort extends FormRequest { @@ -35,8 +36,10 @@ class EmailPatchPanelPort extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/IpAddress/DeleteByNetwork.php b/app/Http/Requests/IpAddress/DeleteByNetwork.php index e603e046f..fa81a7edf 100644 --- a/app/Http/Requests/IpAddress/DeleteByNetwork.php +++ b/app/Http/Requests/IpAddress/DeleteByNetwork.php @@ -31,6 +31,7 @@ IP, Network }; +use IXP\Models\User; /** * Delete IP Address Request @@ -51,8 +52,10 @@ class DeleteByNetwork extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/IpAddress/Store.php b/app/Http/Requests/IpAddress/Store.php index 5f82399ad..4303f707f 100644 --- a/app/Http/Requests/IpAddress/Store.php +++ b/app/Http/Requests/IpAddress/Store.php @@ -31,6 +31,7 @@ IP, Network }; +use IXP\Models\User; /** * IP Address Request @@ -51,8 +52,10 @@ class Store extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Irrdb.php b/app/Http/Requests/Irrdb.php index 96ad397b9..0e196adf9 100644 --- a/app/Http/Requests/Irrdb.php +++ b/app/Http/Requests/Irrdb.php @@ -50,7 +50,9 @@ class Irrdb extends FormRequest */ public function authorize(): bool { - $privs = Auth::getUser()->privs(); + /** @var User $us */ + $us = Auth::getUser(); + $privs = $us->privs(); if( $privs < User::AUTH_CUSTUSER ) { return false; diff --git a/app/Http/Requests/MovePatchPanelPort.php b/app/Http/Requests/MovePatchPanelPort.php index f1edea9b9..24a466ddd 100644 --- a/app/Http/Requests/MovePatchPanelPort.php +++ b/app/Http/Requests/MovePatchPanelPort.php @@ -26,6 +26,7 @@ use Auth; use Illuminate\Foundation\Http\FormRequest; use IXP\Models\PatchPanelPort; +use IXP\Models\User; class MovePatchPanelPort extends FormRequest { @@ -36,8 +37,10 @@ class MovePatchPanelPort extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StatisticsRequest.php b/app/Http/Requests/StatisticsRequest.php index a4f7b5c62..c92614614 100644 --- a/app/Http/Requests/StatisticsRequest.php +++ b/app/Http/Requests/StatisticsRequest.php @@ -39,6 +39,11 @@ */ class StatisticsRequest extends FormRequest { + public ?string $period = null; + public ?string $category = null; + public ?string $protocol = null; + public ?string $type = null; + /** * Determine if the user is authorized to make this request. * diff --git a/app/Http/Requests/StorePatchPanel.php b/app/Http/Requests/StorePatchPanel.php index b0ede793f..5ac6670d4 100644 --- a/app/Http/Requests/StorePatchPanel.php +++ b/app/Http/Requests/StorePatchPanel.php @@ -28,6 +28,7 @@ use Illuminate\Foundation\Http\FormRequest; use IXP\Models\PatchPanel; +use IXP\Models\User; /** * Store PatchPanel FormRequest @@ -48,8 +49,10 @@ class StorePatchPanel extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StorePatchPanelPort.php b/app/Http/Requests/StorePatchPanelPort.php index 10c695dd8..6b3f4eb65 100644 --- a/app/Http/Requests/StorePatchPanelPort.php +++ b/app/Http/Requests/StorePatchPanelPort.php @@ -28,6 +28,7 @@ use Illuminate\Foundation\Http\FormRequest; use IXP\Models\PatchPanelPort; +use IXP\Models\User; /** * Store PatchPanelPort FormRequest @@ -48,8 +49,10 @@ class StorePatchPanelPort extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StorePhysicalInterface.php b/app/Http/Requests/StorePhysicalInterface.php index ae711bd67..b9a7e7c8b 100644 --- a/app/Http/Requests/StorePhysicalInterface.php +++ b/app/Http/Requests/StorePhysicalInterface.php @@ -28,6 +28,7 @@ use IXP\Models\PhysicalInterface; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; /** * Store PhysicalInterface FormRequest @@ -48,8 +49,10 @@ class StorePhysicalInterface extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StoreRouter.php b/app/Http/Requests/StoreRouter.php index 203044873..0b3e58526 100644 --- a/app/Http/Requests/StoreRouter.php +++ b/app/Http/Requests/StoreRouter.php @@ -51,8 +51,10 @@ class StoreRouter extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StoreSflowReceiver.php b/app/Http/Requests/StoreSflowReceiver.php index 26fb2155d..c0f415eeb 100644 --- a/app/Http/Requests/StoreSflowReceiver.php +++ b/app/Http/Requests/StoreSflowReceiver.php @@ -26,6 +26,7 @@ use Auth; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; /** * Store SflowReceiver FormRequest @@ -46,8 +47,10 @@ class StoreSflowReceiver extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StoreVirtualInterface.php b/app/Http/Requests/StoreVirtualInterface.php index 9645cea6b..38f928604 100644 --- a/app/Http/Requests/StoreVirtualInterface.php +++ b/app/Http/Requests/StoreVirtualInterface.php @@ -26,6 +26,7 @@ use Auth; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; /** * Store VirtualInterface FormRequest @@ -46,8 +47,10 @@ class StoreVirtualInterface extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StoreVirtualInterfaceWizard.php b/app/Http/Requests/StoreVirtualInterfaceWizard.php index bb1394f1b..3bf2cdd10 100644 --- a/app/Http/Requests/StoreVirtualInterfaceWizard.php +++ b/app/Http/Requests/StoreVirtualInterfaceWizard.php @@ -29,6 +29,7 @@ use IXP\Models\PhysicalInterface; +use IXP\Models\User; use IXP\Rules\IdnValidate; /** @@ -50,8 +51,10 @@ class StoreVirtualInterfaceWizard extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/StoreVlanInterface.php b/app/Http/Requests/StoreVlanInterface.php index e3b46d8b6..d5e54bb73 100644 --- a/app/Http/Requests/StoreVlanInterface.php +++ b/app/Http/Requests/StoreVlanInterface.php @@ -27,6 +27,7 @@ use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; use IXP\Rules\IdnValidate; /** @@ -48,8 +49,10 @@ class StoreVlanInterface extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Switches/Store.php b/app/Http/Requests/Switches/Store.php index f74b37251..069fe2609 100644 --- a/app/Http/Requests/Switches/Store.php +++ b/app/Http/Requests/Switches/Store.php @@ -28,6 +28,7 @@ use Illuminate\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; use IXP\Rules\IdnValidate; class Store extends FormRequest @@ -39,8 +40,10 @@ class Store extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/Switches/StoreBySmtp.php b/app/Http/Requests/Switches/StoreBySmtp.php index 1919d01a3..923487a49 100644 --- a/app/Http/Requests/Switches/StoreBySmtp.php +++ b/app/Http/Requests/Switches/StoreBySmtp.php @@ -27,6 +27,7 @@ use Illuminate\Foundation\Http\FormRequest; +use IXP\Models\User; use IXP\Rules\IdnValidate; /** @@ -48,8 +49,10 @@ class StoreBySmtp extends FormRequest */ public function authorize(): bool { + /** @var User $us */ + $us = Auth::getUser(); // middleware ensures superuser access only so always authorised here: - return Auth::getUser()->isSuperUser(); + return $us->isSuperUser(); } /** diff --git a/app/Http/Requests/User/CheckEmail.php b/app/Http/Requests/User/CheckEmail.php index 1e5827d76..4a8c13058 100644 --- a/app/Http/Requests/User/CheckEmail.php +++ b/app/Http/Requests/User/CheckEmail.php @@ -78,10 +78,12 @@ public function rules(): array */ public function withValidator( Validator $validator ): void { - $validator->after( function( Validator $validator ) { - if( !Auth::user()->isSuperUser() && User::leftJoin( 'customer_to_users AS c2u', 'c2u.user_id', 'user.id' ) + /** @var User $us */ + $us = Auth::user(); + $validator->after( function( Validator $validator ) use ( $us ) { + if( !$us->isSuperUser() && User::leftJoin( 'customer_to_users AS c2u', 'c2u.user_id', 'user.id' ) ->where( 'email', $this->email ) - ->where( 'customer_id', Auth::user()->custid )->exists() ) { + ->where( 'customer_id', $us->custid )->exists() ) { AlertContainer::push( "A user already exists with that email address for your company." , Alert::DANGER ); $validator->errors()->add( 'email', " " ); diff --git a/app/Http/Requests/User/CustomerToUser/Store.php b/app/Http/Requests/User/CustomerToUser/Store.php index f32f64cfb..7b6e57fdf 100644 --- a/app/Http/Requests/User/CustomerToUser/Store.php +++ b/app/Http/Requests/User/CustomerToUser/Store.php @@ -67,12 +67,14 @@ public function authorize(): bool */ public function rules(): array { + /** @var User $us */ + $us = Auth::user(); $rules = [ 'user_id' => 'required|integer|exists:user,id', 'privs' => 'required|integer|in:' . implode( ',', array_keys( User::$PRIVILEGES_ALL ) ), ]; - if( Auth::user()->isSuperUser() ) { + if( $us->isSuperUser() ) { $extraRules = [ 'customer_id' => 'required|integer|exists:cust,id', ]; @@ -86,13 +88,15 @@ public function rules(): array */ public function withValidator( Validator $validator ): void { - $validator->after( function( Validator $validator ) { + /** @var User $us */ + $us = Auth::user(); + $validator->after( function( Validator $validator ) use ($us) { if( !$this->user_id ) { AlertContainer::push( "You must select one user from the list." , Alert::DANGER ); return false; } - $this->cust = Auth::user()->isSuperUser() ? Customer::find( $this->customer_id ) : Auth::user()->customer; + $this->cust = $us->isSuperUser() ? Customer::find( $this->customer_id ) : $us->customer; if( CustomerToUser::where( 'customer_id', $this->cust->id )->where( 'user_id', $this->user_id )->get()->isNotEmpty() ) { AlertContainer::push( "This user is already associated with " . $this->cust->name, Alert::DANGER ); diff --git a/app/Http/Requests/User/Delete.php b/app/Http/Requests/User/Delete.php index a76e6772b..4aadcc9ce 100644 --- a/app/Http/Requests/User/Delete.php +++ b/app/Http/Requests/User/Delete.php @@ -82,10 +82,12 @@ public function rules(): array */ public function withValidator( Validator $validator ): bool { - if( !$validator->fails() && !Auth::getUser()->isSuperUser() ) { - $validator->after( function( ) { + /** @var User $us */ + $us = Auth::getUser(); + if( !$validator->fails() && !$us->isSuperUser() ) { + $validator->after( function( ) use ($us) { // Check if the custadmin try to delete a user from an other Customer - if( CustomerToUser::where( 'customer_id', Auth::getUser()->custid )->where( 'user_id', $this->u->id )->doesntExist() ) { + if( CustomerToUser::where( 'customer_id', $us->custid )->where( 'user_id', $this->u->id )->doesntExist() ) { Log::notice( Auth::user()->username . " tried to delete other customer user " . $this->u->username ); abort( 401, 'You are not authorised to delete this user. The administrators have been notified.' ); } diff --git a/app/Http/Requests/User/Store.php b/app/Http/Requests/User/Store.php index db68c5fae..648769973 100644 --- a/app/Http/Requests/User/Store.php +++ b/app/Http/Requests/User/Store.php @@ -83,10 +83,12 @@ public function rules(): array */ public function withValidator( Validator $validator ): bool { + /** @var User $us */ + $us = Auth::getUser(); if( !$validator->fails() ) { - $validator->after( function( Validator $validator ) { - $isSuperUser = Auth::getUser()->isSuperUser(); - $cust = $isSuperUser ? Customer::find( $this->custid ) : Auth::user()->customer; + $validator->after( function( Validator $validator ) use( $us ) { + $isSuperUser = $us->isSuperUser(); + $cust = $isSuperUser ? Customer::find( $this->custid ) : $us->customer; if( (int)$this->privs === User::AUTH_SUPERUSER ) { if( !$isSuperUser || ( $isSuperUser && !$cust->typeInternal() ) ) { diff --git a/app/Http/Requests/User/Update.php b/app/Http/Requests/User/Update.php index 4e2266819..b6c6e9e4b 100644 --- a/app/Http/Requests/User/Update.php +++ b/app/Http/Requests/User/Update.php @@ -66,10 +66,12 @@ public function authorize(): bool */ public function rules(): array { - $addUserInfo = []; + /** @var User $us */ + $us = Auth::user(); + $addUserInfo = []; // If its a superuser - if( Auth::user()->isSuperUser() ) { + if( $us->isSuperUser() ) { $infoArray = [ 'name' => 'required|string|max:255', 'username' => 'required|string|min:3|max:255|regex:/^[a-z0-9\-_\.]{3,255}$/|unique:user,username,' . $this->u->id, @@ -100,10 +102,12 @@ public function rules(): array */ public function withValidator( Validator $validator ): bool { - $isSuperUser = Auth::user()->isSuperUser(); + /** @var User $us */ + $us = Auth::user(); + $isSuperUser = $us->isSuperUser(); if( !$validator->fails() && !$isSuperUser ) { - $validator->after( function( Validator $validator ) use ( $isSuperUser ) { - $cust = $isSuperUser ? Customer::find( $this->custid ) : Auth::user()->customer; + $validator->after( function( Validator $validator ) use ( $us, $isSuperUser ) { + $cust = $isSuperUser ? Customer::find( $this->custid ) : $us->customer; if( (int)$this->privs === User::AUTH_SUPERUSER ) { if( !$isSuperUser || ( $isSuperUser && !$cust->typeInternal() ) ) { diff --git a/app/IXP.php b/app/IXP.php new file mode 100644 index 000000000..e0242e794 --- /dev/null +++ b/app/IXP.php @@ -0,0 +1,178 @@ + + * @category IXP + * @package IXP + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class IXP +{ + public const int IPv4 = 4; + public const int IPv6 = 6; + + public static array $PROTOCOLS = [ + self::IPv4 => 'IPv4', + self::IPv6 => 'IPv6', + ]; + + public static function protocol( int $p ): string { + return self::$PROTOCOLS[$p] ?? ''; + } + + + + /** + * Scale function + * + * This function will scale a number to (for example for traffic + * measured in bits/second) to Kbps, Mbps, Gbps or Tbps; or data. + * measured in bytes to KB, MB, GB or TB. + * + * Valid string formats ($strFormats) and what they return are: + * bytes => Bytes, KBytes, MBytes, GBytes, TBytes + * pkts / errs / discs => pps, Kpps, Mpps, Gpps, Tpps + * bits / * => bits, Kbits, Mbits, Gbits, Tbits + * + * Valid return types ($format) are: + * 0 => fully formatted and scaled value. E.g. 12,354.235 Tbits + * 1 => scaled value without string. E.g. 12,354.235 + * 2 => just the string. E.g. Tbits + * + * @param float $v The value to scale + * @param string $format The format to sue (as above: bytes / pkts / errs / etc ) + * @param int $decs Number of decimals after the decimal point. Defaults to 3. + * @param int $returnType Type of string to return. Valid values are listed above. Defaults to 0. + * + * @return string Scaled / formatted number / type. + */ + public static function scale( float $v, string $format, int $decs = 3, int $returnType = 0 ): string + { + if( $format === 'bytes' ) { + $formats = [ + 'Bytes', 'KBytes', 'MBytes', 'GBytes', 'TBytes' + ]; + } else if( in_array( $format, [ 'pkts', 'errs', 'discs', 'bcasts' ] ) ) { + $formats = [ + 'pps', 'Kpps', 'Mpps', 'Gpps', 'Tpps' + ]; + } else if( $format === 'speed' ) { + $formats = [ + 'Mbps', 'Gbps', 'Tbps' + ]; + } else { + $formats = [ + 'bits', 'Kbits', 'Mbits', 'Gbits', 'Tbits' + ]; + } + + $num_formats = count( $formats ); + for( $i = 0; $i < $num_formats; $i++ ) { + $format = $i > 4 ? $formats[ 4 ] : $formats[ $i ]; + if( ( $v / 1000.0 < 1.0 ) || ( $num_formats === $i + 1 ) ) { + if( $returnType === 0 ) { + return number_format( $v, $decs ) . ' ' . $format; + } + + if( $returnType === 1 ) { + return number_format( $v, $decs ); + } + + return $format; + } + + $v /= 1000.0; + } + + return (string)$v; + } + + /** + * See scale above + * @param float $v + * @param int $decs + * + * @return string + */ + public static function scaleBits( float $v, int $decs = 3 ): string + { + return self::scale( $v, 'bits', $decs ); + } + + /** + * See scale above + * @param float $v + * @param int $decs + * + * @return string + */ + public static function scaleSpeed( float $v, int $decs = 0 ): string + { + return self::scale( $v, 'speed', $decs ); + } + + + /** + * See scale above + * @param float $v + * @param int $decs + * + * @return string + */ + public static function scaleBytes( float $v, int $decs = 3 ): string + { + return self::scale( $v, 'bytes', $decs ); + } + + /** + * Scale a size in bytes in human style filesize + * + * @param int $bytes The value to scale + * @return string Scaled / formatted number / type. + */ + public static function scaleFilesize( int $bytes ): string + { + if( $bytes >= 1073741824 ) { + return number_format( $bytes / 1073741824, 2 ) . ' GB'; + } + + if( $bytes >= 1048576 ) { + return number_format( $bytes / 1048576, 2 ) . ' MB'; + } + + if( $bytes >= 1024 ) { + return number_format( $bytes / 1024, 2 ) . ' KB'; + } + + return $bytes . ' bytes'; + } + + +} \ No newline at end of file diff --git a/app/Listeners/Auth/ForgotUsername.php b/app/Listeners/Auth/ForgotUsername.php index d2c9966d2..efc8d47e3 100644 --- a/app/Listeners/Auth/ForgotUsername.php +++ b/app/Listeners/Auth/ForgotUsername.php @@ -54,6 +54,7 @@ public function __construct(){} */ public function handle( ForgotUsernameEvent $e ): void { - Mail::to( $e->email )->send( new ForgotPasswordMailable( $e->users ) ); + Mail::to( $e->email ) + ->send( new ForgotPasswordMailable( $e->users ) ); } } \ No newline at end of file diff --git a/app/Listeners/Auth/LoginSuccessful.php b/app/Listeners/Auth/LoginSuccessful.php index 158339851..de1093845 100644 --- a/app/Listeners/Auth/LoginSuccessful.php +++ b/app/Listeners/Auth/LoginSuccessful.php @@ -26,6 +26,7 @@ use Illuminate\Auth\Events\Login as LoginEvent; +use IXP\Models\User; use IXP\Models\UserLoginHistory; /** @@ -47,9 +48,12 @@ class LoginSuccessful */ public function handle( LoginEvent $e ): void { - Log::notice( 'Login successful for user "' . $e->user->username. '" from IP ' . ixp_get_client_ip() . '.' ); + /** @var User $user */ + $user = $e->user; - if( !session()->exists( "switched_user_from" ) && ( $c2u = $e->user->currentCustomerToUser() ) ) { + Log::notice( 'Login successful for user "' . $user->username. '" from IP ' . ixp_get_client_ip() . '.' ); + + if( !session()->exists( "switched_user_from" ) && ( $c2u = $user->currentCustomerToUser() ) ) { $c2u->update( [ 'last_login_date' => now(), 'last_login_from' => ixp_get_client_ip(), diff --git a/app/Mail/Grapher/PortsWithCounts.php b/app/Mail/Grapher/PortsWithCounts.php index 352d26a1d..581238072 100644 --- a/app/Mail/Grapher/PortsWithCounts.php +++ b/app/Mail/Grapher/PortsWithCounts.php @@ -46,7 +46,7 @@ class PortsWithCounts extends Mailable public $ports; /** - * @var float + * @var string */ public $category; diff --git a/app/Mail/User/UserCreated.php b/app/Mail/User/UserCreated.php index b761b23b6..c4c488276 100644 --- a/app/Mail/User/UserCreated.php +++ b/app/Mail/User/UserCreated.php @@ -55,7 +55,7 @@ class UserCreated extends Mailable /** * Existing? - * @var bool + * @var mixed */ public $token = null; diff --git a/app/Mail/Utils/SmtpTest.php b/app/Mail/Utils/SmtpTest.php index 363cf8f07..b5d702b5b 100644 --- a/app/Mail/Utils/SmtpTest.php +++ b/app/Mail/Utils/SmtpTest.php @@ -3,7 +3,7 @@ namespace IXP\Mail\Utils; /* - * Copyright (C) 2009 - 2020 Internet Neutral Exchange Association Company Limited By Guarantee. + * Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee. * All Rights Reserved. * * This file is part of IXP Manager. @@ -25,7 +25,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -use Illuminate\Support\Facades\Mail; + /** * Mailable for SMTP test utility * @@ -38,25 +38,6 @@ class SmtpTest extends Mailable { use Queueable, SerializesModels; - /** - * @var SwiftMail SMTP dialog logging - */ - private $logger = null; - - /** - * @var bool Debug flag to indicate if the SMTP dialog should be recorded - */ - protected $debug; - - /** - * SmtpTest constructor. - * @param bool $debug If true, record the SMTP dialog - */ - public function __construct( bool $debug = false ) - { - $this->debug = $debug; - } - /** * Build the message. * @@ -64,20 +45,7 @@ public function __construct( bool $debug = false ) */ public function build(): self { -// if( $this->debug ) { -// $this->logger = new \Swift_Plugins_Loggers_ArrayLogger; -// Mail::getSwiftMailer()->registerPlugin( new \Swift_Plugins_LoggerPlugin($this->logger)); -// } - return $this->markdown( 'utils.emails.smtp-test' ) ->subject( 'SMTP test email from IXP Manager' ); } - - /** - * @return SwiftMail|null - */ - public function logger() - { - return $this->logger; - } } diff --git a/app/Models/Aggregators/BgpSessionDataAggregator.php b/app/Models/Aggregators/BgpSessionDataAggregator.php index 91cb4ba99..17e885422 100644 --- a/app/Models/Aggregators/BgpSessionDataAggregator.php +++ b/app/Models/Aggregators/BgpSessionDataAggregator.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model; use IXP\Models\BgpSessionData; use IXP\Models\Vlan; -use IXP_Exception; +use IXP\Exceptions\GeneralException as IXP_Exception; /** * IXP\Models\BGPSessionData @@ -74,11 +74,11 @@ class BgpSessionDataAggregator extends BgpSessionData * @param int|null $asn Optional ASN to limit the query to * @param bool $forceDb Set to true to ignore the cache and force the query to the database * - * @return array Array of peerings (as described above) + * @return array|string Array of peerings (as described above) * * @throws */ - public static function getPeers( ?int $vlan = null, int $protocol = 6, ?int $asn = null, bool $forceDb = false ): array + public static function getPeers( ?int $vlan = null, int $protocol = 6, ?int $asn = null, bool $forceDb = false ): array|string { $key = "pm_sessions_{$vlan}_{$protocol}"; diff --git a/app/Models/Aggregators/ConsoleServerConnectionAggregatore.php b/app/Models/Aggregators/ConsoleServerConnectionAggregatore.php index e83907d0b..20d94bf3d 100644 --- a/app/Models/Aggregators/ConsoleServerConnectionAggregatore.php +++ b/app/Models/Aggregators/ConsoleServerConnectionAggregatore.php @@ -63,6 +63,8 @@ * @method static Builder|ConsoleServerConnectionAggregatore whereSpeed($value) * @method static Builder|ConsoleServerConnectionAggregatore whereStopbits($value) * @method static Builder|ConsoleServerConnectionAggregatore whereUpdatedAt($value) + * @property int|null $switchid + * @method static Builder|ConsoleServerConnectionAggregatore whereSwitchid($value) * @mixin \Eloquent */ class ConsoleServerConnectionAggregatore extends ConsoleServerConnection diff --git a/app/Models/Aggregators/ContactGroupAggregator.php b/app/Models/Aggregators/ContactGroupAggregator.php index b174a7bfc..ce9b6ad74 100644 --- a/app/Models/Aggregators/ContactGroupAggregator.php +++ b/app/Models/Aggregators/ContactGroupAggregator.php @@ -53,6 +53,8 @@ * @method static Builder|ContactGroupAggregator whereName($value) * @method static Builder|ContactGroupAggregator whereType($value) * @method static Builder|ContactGroupAggregator whereUpdatedAt($value) + * @property string $created + * @method static Builder|ContactGroupAggregator whereCreated($value) * @mixin \Eloquent */ class ContactGroupAggregator extends ContactGroup diff --git a/app/Models/Aggregators/CustomerAggregator.php b/app/Models/Aggregators/CustomerAggregator.php index d96cea59d..595a02118 100644 --- a/app/Models/Aggregators/CustomerAggregator.php +++ b/app/Models/Aggregators/CustomerAggregator.php @@ -178,6 +178,10 @@ * @method static Builder|CustomerAggregator whereStatus($value) * @method static Builder|CustomerAggregator whereType($value) * @method static Builder|CustomerAggregator whereUpdatedAt($value) + * @property string|null $lastupdated + * @property string|null $created + * @method static Builder|CustomerAggregator whereCreated($value) + * @method static Builder|CustomerAggregator whereLastupdated($value) * @mixin \Eloquent */ class CustomerAggregator extends Customer @@ -303,7 +307,7 @@ public static function getByVlanAndProtocol( int $vlanid = null, int $protocol = * ] * * @param Customer $cust Current customer - * @param Vlan[] $vlans Array of Vlans + * @param Vlan[] $vlans Array of Vlans * @param array $protos Array of protos * * @return array|null @@ -318,7 +322,7 @@ public static function getPeeringManagerArrayByType( Customer $cust, $vlans, arr $bilat = []; foreach( $vlans as $vlan ) { foreach( $protos as $proto ) { - $bilat[ $vlan->number ][ $proto ] = BgpSessionDataAggregator::getPeers( $vlan->id, $proto ); + $bilat[ $vlan['number'] ][ $proto ] = BgpSessionDataAggregator::getPeers( $vlan['id'], $proto ); } } $vlanNumbers = Vlan::select( ['id', 'number'] )->get()->keyBy( 'id' )->toArray(); @@ -346,17 +350,17 @@ public static function getPeeringManagerArrayByType( Customer $cust, $vlans, arr foreach( $custs as $c ) { $custs[ $c[ 'autsys' ] ][ 'ispotential' ] = false; foreach( $vlans as $vlan ) { - if( isset( $me[ 'vlan_interfaces' ][ $vlan->number ] ) ) { - if( isset( $c[ 'vlan_interfaces' ][$vlan->number] ) ) { + if( isset( $me[ 'vlan_interfaces' ][ $vlan['number'] ] ) ) { + if( isset( $c[ 'vlan_interfaces' ][$vlan['number']] ) ) { foreach( $protos as $proto ) { - if( $me[ 'vlan_interfaces' ][ $vlan->number ][ 0 ][ "ipv{$proto}enabled" ] && $c[ 'vlan_interfaces' ][ $vlan->number ][ 0 ][ "ipv{$proto}enabled" ] ) { - if( isset( $bilat[ $vlan->number ][ 4 ][ $me['autsys' ] ][ 'peers' ] ) && in_array( $c[ 'autsys' ], $bilat[ $vlan->number ][ 4 ][ $me[ 'autsys' ] ][ 'peers' ] ) ){ - $custs[ $c[ 'autsys' ] ][ $vlan->number ][$proto] = 2; - } else if( $me[ 'vlan_interfaces' ][ $vlan->number ][ 0 ][ 'rsclient' ] && $c[ 'vlan_interfaces' ][ $vlan->number ][ 0 ][ 'rsclient' ] ){ - $custs[ $c[ 'autsys' ] ][ $vlan->number ][ $proto ] = 1; + if( $me[ 'vlan_interfaces' ][ $vlan['number'] ][ 0 ][ "ipv{$proto}enabled" ] && $c[ 'vlan_interfaces' ][ $vlan['number'] ][ 0 ][ "ipv{$proto}enabled" ] ) { + if( isset( $bilat[ $vlan['number'] ][ 4 ][ $me['autsys' ] ][ 'peers' ] ) && in_array( $c[ 'autsys' ], $bilat[ $vlan['number'] ][ 4 ][ $me[ 'autsys' ] ][ 'peers' ] ) ){ + $custs[ $c[ 'autsys' ] ][ $vlan['number'] ][$proto] = 2; + } else if( $me[ 'vlan_interfaces' ][ $vlan['number'] ][ 0 ][ 'rsclient' ] && $c[ 'vlan_interfaces' ][ $vlan['number'] ][ 0 ][ 'rsclient' ] ){ + $custs[ $c[ 'autsys' ] ][ $vlan['number'] ][ $proto ] = 1; $custs[ $c[ 'autsys' ] ][ 'ispotential' ] = true; } else { - $custs[ $c[ 'autsys' ] ][ $vlan->number ][ $proto ] = 0; + $custs[ $c[ 'autsys' ] ][ $vlan['number'] ][ $proto ] = 0; $custs[ $c[ 'autsys' ] ][ 'ispotential' ] = true; } } @@ -374,8 +378,8 @@ public static function getPeeringManagerArrayByType( Customer $cust, $vlans, arr foreach( $vlans as $vlan ) { foreach( $protos as $proto ) { - if( isset( $c[ $vlan->number ][ $proto ] ) ) { - switch( $c[ $vlan->number ][ $proto ] ) { + if( isset( $c[ $vlan['number'] ][ $proto ] ) ) { + switch( $c[ $vlan['number'] ][ $proto ] ) { case 2: $peered[ $c[ 'autsys' ] ] = true; break; diff --git a/app/Models/Aggregators/IrrdbAggregator.php b/app/Models/Aggregators/IrrdbAggregator.php index d5fa8fac2..f730f6342 100644 --- a/app/Models/Aggregators/IrrdbAggregator.php +++ b/app/Models/Aggregators/IrrdbAggregator.php @@ -93,11 +93,11 @@ public static function prefixesForRouterConfiguration( int|Customer $cust, int $ } if( $resetCache ) { - Cache::store('file')->forget( 'irrdb:prefix:ipv' . $protocol . ':' . $cust->asMacro( $protocol ) ); + Cache::store()->forget( 'irrdb:prefix:ipv' . $protocol . ':' . $cust->asMacro( $protocol ) ); } // Pull these out of the cache if possible, otherwise the database. - return Cache::store('file')->rememberForever( 'irrdb:prefix:ipv' . $protocol . ':' . $cust->asMacro( $protocol ), function() use ($cust,$protocol) { + return Cache::store()->rememberForever( 'irrdb:prefix:ipv' . $protocol . ':' . $cust->asMacro( $protocol ), function() use ($cust,$protocol) { return IrrdbPrefix::select('prefix') ->where( 'customer_id', $cust->id ) ->where('protocol', $protocol ) @@ -128,11 +128,11 @@ public static function asnsForRouterConfiguration( int|Customer $cust, int $prot } if( $resetCache ) { - Cache::store('file')->forget( 'irrdb:asn:ipv' . $protocol . ':' . $cust->asMacro( $protocol ) ); + Cache::store()->forget( 'irrdb:asn:ipv' . $protocol . ':' . $cust->asMacro( $protocol ) ); } // Pull these out of the cache if possible, otherwise the database. - return Cache::store('file')->rememberForever( 'irrdb:asn:ipv' . $protocol . ':' . $cust->asMacro( $protocol ), function() use ($cust,$protocol) { + return Cache::store()->rememberForever( 'irrdb:asn:ipv' . $protocol . ':' . $cust->asMacro( $protocol ), function() use ($cust,$protocol) { return IrrdbAsn::select('asn') ->where( 'customer_id', $cust->id ) ->where('protocol', $protocol ) diff --git a/app/Models/Aggregators/RouterAggregator.php b/app/Models/Aggregators/RouterAggregator.php index 89a1dc172..140ae5668 100644 --- a/app/Models/Aggregators/RouterAggregator.php +++ b/app/Models/Aggregators/RouterAggregator.php @@ -103,6 +103,9 @@ * @method static Builder|RouterAggregator whereType($value) * @method static Builder|RouterAggregator whereUpdatedAt($value) * @method static Builder|RouterAggregator whereVlanId($value) + * @method static Builder|RouterAggregator routeCollector() + * @method static Builder|RouterAggregator ipvX(int $protocol) + * @method static Builder|RouterAggregator ipProtocol(int $protocol) * @mixin \Eloquent */ class RouterAggregator extends Router diff --git a/app/Models/Aggregators/SwitcherAggregator.php b/app/Models/Aggregators/SwitcherAggregator.php index d92b3e604..689aa43ab 100644 --- a/app/Models/Aggregators/SwitcherAggregator.php +++ b/app/Models/Aggregators/SwitcherAggregator.php @@ -116,6 +116,7 @@ class SwitcherAggregator extends Switcher */ public static function getByLocationInfrastructureSpeed( int $infra = null, int $location = null, int $speed = null ): Collection { + /** @psalm-suppress InvalidArgument - psalm can not recognise eloquent grouped conditions */ return self::select( 'switch.*' ) ->when( $location , function( Builder $q, $location ) { return $q->leftJoin( 'cabinet AS c', 'c.id', 'switch.cabinetid' ) @@ -131,7 +132,7 @@ public static function getByLocationInfrastructureSpeed( int $infra = null, int ->leftjoin( 'vlaninterface AS vli', 'vli.virtualinterfaceid','vi.id' ) ->leftjoin( 'ipv4address AS ipv4', 'ipv4.id', '=', 'vli.ipv4addressid' ) ->leftjoin( 'ipv6address AS ipv6', 'ipv4.id', '=', 'vli.ipv6addressid' ) - ->where( function($query ) use ($speed) { + ->where( function( $query ) use ( $speed ) { $query->where( 'pi.speed', $speed ) ->orWhere( 'pi.rate_limit', $speed ); }); @@ -158,6 +159,7 @@ public static function getConfiguration( int $switchid = null, int $infraid = nu // BUGLET: see https://github.com/inex/IXP-Manager/issues/757 // "Switch configuration port list erroneously lists non-rate limited port as rate limited" + /** @psalm-suppress InvalidArgument - psalm can not recognise eloquent grouped conditions */ return self::selectRaw( 's.name AS switchname, s.id AS switchid, @@ -294,6 +296,7 @@ public static function linkAddr( string $net, string $side, bool $maskneeded = t */ public static function coreBundleNeighbors( Switcher $switch ): array { + /** @psalm-suppress InvalidArgument - psalm can not recognise eloquent grouped conditions */ return self::query()->selectRaw( 'cb.type, cb.ipv4_subnet as cbSubnet, cb.cost, cb.preference, cl.ipv4_subnet as clSubnet, sA.id as sAid, sB.id as sBid, sA.name as sAname , sB.name as sBname, sA.asn as sAasn , diff --git a/app/Models/Aggregators/UserAggregator.php b/app/Models/Aggregators/UserAggregator.php index 169166e4a..1845a7cf3 100644 --- a/app/Models/Aggregators/UserAggregator.php +++ b/app/Models/Aggregators/UserAggregator.php @@ -92,6 +92,10 @@ * @method static \Illuminate\Database\Eloquent\Builder|UserAggregator whereUid($value) * @method static \Illuminate\Database\Eloquent\Builder|UserAggregator whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|UserAggregator whereUsername($value) + * @property string|null $lastupdated + * @property string|null $created + * @method static \Illuminate\Database\Eloquent\Builder|UserAggregator whereCreated($value) + * @method static \Illuminate\Database\Eloquent\Builder|UserAggregator whereLastupdated($value) * @mixin \Eloquent */ class UserAggregator extends User diff --git a/app/Models/Aggregators/VlanAggregator.php b/app/Models/Aggregators/VlanAggregator.php index 3d2b194e8..609434ca8 100644 --- a/app/Models/Aggregators/VlanAggregator.php +++ b/app/Models/Aggregators/VlanAggregator.php @@ -79,6 +79,7 @@ * @method static \Illuminate\Database\Eloquent\Builder|VlanAggregator wherePeeringMatrix($value) * @method static \Illuminate\Database\Eloquent\Builder|VlanAggregator wherePrivate($value) * @method static \Illuminate\Database\Eloquent\Builder|VlanAggregator whereUpdatedAt($value) + * @method static Builder|VlanAggregator publicProductionPeeringLan() * @mixin \Eloquent */ class VlanAggregator extends Vlan @@ -120,13 +121,13 @@ public static function ipAddresses( int $vid, int $proto ) : array } return Vlan::select( [ - "${table}.id", "${table}.address", + "{$table}.id", "{$table}.address", 'vlan.id AS vid', 'vli.id as vliid' ] ) - ->leftJoin( $table, "${table}.vlanid", 'vlan.id' ) - ->leftJoin( 'vlaninterface as vli', "vli.${table}id", "${table}.id" ) + ->leftJoin( $table, "{$table}.vlanid", 'vlan.id' ) + ->leftJoin( 'vlaninterface as vli', "vli.{$table}id", "{$table}.id" ) ->where( 'vlan.id', $vid ) - ->orderByRaw( "${orderBy}(address) ASC" ) + ->orderByRaw( "{$orderBy}(address) ASC" ) ->get()->toArray(); } @@ -174,11 +175,11 @@ public static function usedAcrossVlans( string $ip ) : array 'v.id AS vid', 'v.name AS vname', 'v.number AS vnumber' ] ) ->from( 'vlaninterface AS vli' ) - ->leftJoin( $table, "${table}.id", "vli.${table}id" ) + ->leftJoin( $table, "{$table}.id", "vli.{$table}id" ) ->leftJoin( 'virtualinterface AS vi', 'vi.id', 'vli.virtualinterfaceid') ->leftJoin( 'cust AS c', 'c.id', 'vi.custid' ) ->leftJoin( 'vlan AS v', 'v.id', 'vli.vlanid') - ->where( "${table}.address", $ip )->get()->toArray(); + ->where( "{$table}.address", $ip )->get()->toArray(); } /** @@ -219,7 +220,7 @@ public static function arpaDetails( Vlan $vlan, int $proto ): array ) ->from( 'vlan AS v' ) ->join( 'vlaninterface AS vli', 'vli.vlanid', 'v.id' ) - ->join( "{$table} AS addr", 'addr.id', "vli.${table}id" ) + ->join( "{$table} AS addr", 'addr.id', "vli.{$table}id" ) ->where( 'v.id', $vlan->id ) ->whereNotNull( "vli.ipv{$proto}hostname" ) ->where( "vli.ipv{$proto}hostname", '!=', '' ) diff --git a/app/Models/Aggregators/VlanInterfaceAggregator.php b/app/Models/Aggregators/VlanInterfaceAggregator.php index 584137ff5..10febd177 100644 --- a/app/Models/Aggregators/VlanInterfaceAggregator.php +++ b/app/Models/Aggregators/VlanInterfaceAggregator.php @@ -103,7 +103,7 @@ class VlanInterfaceAggregator extends VlanInterface * Utility function to provide an array of VLAN interface objects on a given VLAN. * * @param Vlan $vlan The VLAN to gather VlanInterfaces for - * @param bool $protocol Either 4 or 6 to limit the results to interface with IPv4 / IPv6 + * @param bool|mixed $protocol Either 4 or 6 to limit the results to interface with IPv4 / IPv6 * * @return Collection * @@ -112,10 +112,10 @@ public static function forVlan( Vlan $vlan, $protocol = false ) { return self::select( [ 'vli.*' ] ) ->from( 'vlaninterface AS vli' ) - ->Join( 'vlan AS v', 'v.id', 'vli.vlanid' ) - ->Join( 'virtualinterface AS vi', 'vi.id', 'vli.virtualinterfaceid' ) - ->Join( 'physicalinterface AS pi', 'pi.virtualinterfaceid', 'vi.id' ) - ->Join( 'cust', 'cust.id', 'vi.custid' ) + ->join( 'vlan AS v', 'v.id', 'vli.vlanid' ) + ->join( 'virtualinterface AS vi', 'vi.id', 'vli.virtualinterfaceid' ) + ->join( 'physicalinterface AS pi', 'pi.virtualinterfaceid', 'vi.id' ) + ->join( 'cust', 'cust.id', 'vi.custid' ) ->where( 'v.id', $vlan->id ) ->whereRaw( Customer::SQL_CUST_ACTIVE ) ->whereRaw( Customer::SQL_CUST_CURRENT ) @@ -171,19 +171,19 @@ public static function forVlan( Vlan $vlan, $protocol = false ) * * @param Vlan $vlan The VLAN * @param int $proto Either 4 or 6 - * @param int $pistatus The status of the physical interface + * @param ?int $pistatus The status of the physical interface * * @return array * * @throws */ - public static function forProto( Vlan $vlan, int $proto, int $pistatus = PhysicalInterface::STATUS_CONNECTED ) : array + public static function forProto( Vlan $vlan, int $proto, ?int $pistatus = PhysicalInterface::STATUS_CONNECTED ) : array { if( !in_array( $proto, [ 4, 6 ] ) ){ $proto = 4; } - return self::select( [ + $q = self::select( [ 'cust.id AS cid', 'cust.name AS cname', 'cust.abbreviatedName AS abrevcname', 'cust.shortname AS cshortname', @@ -232,9 +232,13 @@ public static function forProto( Vlan $vlan, int $proto, int $pistatus = Physica ->where( 'v.id', $vlan->id ) ->whereRaw( Customer::SQL_CUST_ACTIVE ) ->whereRaw( Customer::SQL_CUST_CURRENT ) - ->whereRaw( Customer::SQL_CUST_TRAFFICING ) - ->where( 'pi.status', $pistatus ) - ->groupByRaw( "vli.id, cust.id, cust.name, cust.abbreviatedName, cust.shortname, cust.autsys, + ->whereRaw( Customer::SQL_CUST_TRAFFICING ); + + if( $pistatus !== null ) { + $q->where( 'pi.status', $pistatus ); + } + + $q->groupByRaw( "vli.id, cust.id, cust.name, cust.abbreviatedName, cust.shortname, cust.autsys, cust.maxprefixes, cust.peeringmacro, cust.peeringmacrov6, vli.ipv{$proto}enabled, addr.address, vli.ipv{$proto}bgpmd5secret, vli.maxbgpprefix, vli.ipv{$proto}hostname, vli.ipv{$proto}monitorrcbgp, vli.busyhost, @@ -242,7 +246,9 @@ public static function forProto( Vlan $vlan, int $proto, int $pistatus = Physica s.id, s.name, cab.id, cab.name, l.name, l.shortname, l.tag" ) - ->orderByRaw( 'cust.autsys ASC, vli.id ASC' )->get()->toArray(); + ->orderByRaw( 'cust.autsys ASC, vli.id ASC' ); + + return $q->get()->toArray(); } @@ -324,7 +330,7 @@ public static function getAllIPsForASN( Vlan $v, int $asn, int $proto ): array */ public static function sanitiseVlanInterfaces( Vlan $vlan, int $protocol = 4, int $target = Router::TYPE_ROUTE_SERVER, bool $quarantine = false ): array { - $ints = self::forProto( $vlan, $protocol, $quarantine ? PhysicalInterface::STATUS_QUARANTINE : PhysicalInterface::STATUS_CONNECTED ); + $ints = self::forProto( $vlan, $protocol, $quarantine ? null : PhysicalInterface::STATUS_CONNECTED ); $newints = []; diff --git a/app/Models/ApiKey.php b/app/Models/ApiKey.php index 5b488841b..4b71633bc 100644 --- a/app/Models/ApiKey.php +++ b/app/Models/ApiKey.php @@ -56,6 +56,8 @@ * @method static Builder|ApiKey whereLastseenFrom($value) * @method static Builder|ApiKey whereUpdatedAt($value) * @method static Builder|ApiKey whereUserId($value) + * @property string $created + * @method static Builder|ApiKey whereCreated($value) * @mixin \Eloquent */ class ApiKey extends Model diff --git a/app/Models/BgpSessionData.php b/app/Models/BgpSessionData.php index fbc735857..f42b60489 100644 --- a/app/Models/BgpSessionData.php +++ b/app/Models/BgpSessionData.php @@ -36,17 +36,17 @@ * @property int|null $packetcount * @property string|null $timestamp * @property string|null $source - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData query() - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereDstipaddressid($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData wherePacketcount($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereProtocol($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereSource($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereSrcipaddressid($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereTimestamp($value) - * @method static \Illuminate\Database\Eloquent\Builder|BgpSessionData whereVlan($value) + * @method static Builder|BgpSessionDataAggregator newModelQuery() + * @method static Builder|BgpSessionDataAggregator newQuery() + * @method static Builder|BgpSessionDataAggregator query() + * @method static Builder|BgpSessionDataAggregator whereDstipaddressid( $value ) + * @method static Builder|BgpSessionDataAggregator whereId( $value ) + * @method static Builder|BgpSessionDataAggregator wherePacketcount( $value ) + * @method static Builder|BgpSessionDataAggregator whereProtocol( $value ) + * @method static Builder|BgpSessionDataAggregator whereSource( $value ) + * @method static Builder|BgpSessionDataAggregator whereSrcipaddressid( $value ) + * @method static Builder|BgpSessionDataAggregator whereTimestamp( $value ) + * @method static Builder|BgpSessionDataAggregator whereVlan( $value ) * @mixin \Eloquent */ class BgpSessionData extends Model diff --git a/app/Models/Cabinet.php b/app/Models/Cabinet.php index 915fbc9e3..0d12187dc 100644 --- a/app/Models/Cabinet.php +++ b/app/Models/Cabinet.php @@ -68,6 +68,8 @@ * @method static Builder|Cabinet whereType($value) * @method static Builder|Cabinet whereUCountsFrom($value) * @method static Builder|Cabinet whereUpdatedAt($value) + * @property string|null $cololocation + * @method static Builder|Cabinet whereCololocation($value) * @mixin \Eloquent */ class Cabinet extends Model diff --git a/app/Models/ConsoleServerConnection.php b/app/Models/ConsoleServerConnection.php index 4625786dd..684b4037b 100644 --- a/app/Models/ConsoleServerConnection.php +++ b/app/Models/ConsoleServerConnection.php @@ -66,6 +66,8 @@ * @method static Builder|ConsoleServerConnection whereSpeed($value) * @method static Builder|ConsoleServerConnection whereStopbits($value) * @method static Builder|ConsoleServerConnection whereUpdatedAt($value) + * @property int|null $switchid + * @method static Builder|ConsoleServerConnection whereSwitchid($value) * @mixin \Eloquent */ class ConsoleServerConnection extends Model diff --git a/app/Models/Contact.php b/app/Models/Contact.php index 56b7e73e4..fb131e794 100644 --- a/app/Models/Contact.php +++ b/app/Models/Contact.php @@ -73,6 +73,12 @@ * @method static Builder|Contact wherePhone($value) * @method static Builder|Contact wherePosition($value) * @method static Builder|Contact whereUpdatedAt($value) + * @property int|null $user_id + * @property string|null $lastupdated + * @property string|null $created + * @method static Builder|Contact whereCreated($value) + * @method static Builder|Contact whereLastupdated($value) + * @method static Builder|Contact whereUserId($value) * @mixin \Eloquent */ class Contact extends Model @@ -131,7 +137,7 @@ public function contactGroups(): BelongsToMany { return $this->belongsToMany(ContactGroup::class, 'contact_to_group', 'contact_id' ) ->where( 'type', '!=', ContactGroup::TYPE_ROLE ) - ->orderBy( 'name' ); + ->orderBy( 'name' )->withTimestamps(); } /** diff --git a/app/Models/ContactGroup.php b/app/Models/ContactGroup.php index f0c6b565d..5527c55b5 100644 --- a/app/Models/ContactGroup.php +++ b/app/Models/ContactGroup.php @@ -54,6 +54,8 @@ * @method static Builder|ContactGroup whereName($value) * @method static Builder|ContactGroup whereType($value) * @method static Builder|ContactGroup whereUpdatedAt($value) + * @property string $created + * @method static Builder|ContactGroup whereCreated($value) * @mixin \Eloquent */ class ContactGroup extends Model diff --git a/app/Models/CoreBundle.php b/app/Models/CoreBundle.php index 80cc54ea9..cad0783b0 100644 --- a/app/Models/CoreBundle.php +++ b/app/Models/CoreBundle.php @@ -195,12 +195,12 @@ public function scopeActive( Builder $query ): Builder * * @return Switcher|bool */ - public function switchSideX( bool $sideA = true ) + public function switchSideX( bool $sideA = true ): Switcher|bool { $cl = $this->corelinks->first() ?? false; if( $cl ){ - /** @var CoreInterface $side */ + /** @var Switcher $side */ $side = $sideA ? $cl->coreInterfaceSideA : $cl->coreInterfaceSideB; return $side->physicalinterface->switchPort->switcher; } diff --git a/app/Models/Customer.php b/app/Models/Customer.php index 607409fc9..0ef3bb6c9 100644 --- a/app/Models/Customer.php +++ b/app/Models/Customer.php @@ -184,6 +184,10 @@ * @method static Builder|Customer whereStatus($value) * @method static Builder|Customer whereType($value) * @method static Builder|Customer whereUpdatedAt($value) + * @property string|null $lastupdated + * @property string|null $created + * @method static Builder|Customer whereCreated($value) + * @method static Builder|Customer whereLastupdated($value) * @mixin Eloquent */ class Customer extends Model @@ -838,10 +842,10 @@ public function getFormattedName( $fmt = null ): ?string return str_replace( [ '%n', '%a', '%s', '%i', '%j', '%k', '%l' ], [ - $this->name, - $this->abbreviatedName, - $this->shortname, - $as ?: '', + $this->name ?: '', + $this->abbreviatedName ?: '', + $this->shortname ?: '', + $as ? (string) $as : '', $as ? "[AS{$as}]" : '', $as ? "AS{$as}" : '', $as ? " - AS{$as}" : '' @@ -921,7 +925,40 @@ public function irrdbFiltered(): bool { return (bool)self::leftJoin( 'virtualinterface AS vi', 'vi.custid', 'cust.id' ) ->leftJoin( 'vlaninterface AS vli', 'vli.virtualinterfaceid', 'vi.id' ) - ->where( 'cust.id', $this->id )->where( 'irrdbfilter', true ) + ->where( 'cust.id', $this->id )->where( 'rsclient', true ) + ->where( 'irrdbfilter', true ) + ->get()->count(); + } + + /** + * Is the customer IRRDB filtered (usually for route server clients) on ALL of their rsclient VLAN interfaces? + * + * @return boolean + */ + public function fullyIrrdbFiltered(): bool + { + return !(bool)self::leftJoin( 'virtualinterface AS vi', 'vi.custid', 'cust.id' ) + ->leftJoin( 'vlaninterface AS vli', 'vli.virtualinterfaceid', 'vi.id' ) + ->where( 'cust.id', $this->id )->where( 'rsclient', true ) + ->where( 'irrdbfilter', false ) + ->get()->count(); + } + + + /** + * If the customer is IRRDB filtered on any of their VLAN interfaces, are more specifics allowed? + * + * @return boolean + */ + public function irrdbMoreSpecificsAllowed(): bool + { + if( !$this->irrdbFiltered() ) { + return false; + } + + return (bool)self::leftJoin( 'virtualinterface AS vi', 'vi.custid', 'cust.id' ) + ->leftJoin( 'vlaninterface AS vli', 'vli.virtualinterfaceid', 'vi.id' ) + ->where( 'cust.id', $this->id )->where( 'rsmorespecifics', true ) ->get()->count(); } diff --git a/app/Models/CustomerTag.php b/app/Models/CustomerTag.php index 92a653d69..8743c34b1 100644 --- a/app/Models/CustomerTag.php +++ b/app/Models/CustomerTag.php @@ -51,6 +51,10 @@ * @method static Builder|CustomerTag whereInternalOnly($value) * @method static Builder|CustomerTag whereTag($value) * @method static Builder|CustomerTag whereUpdatedAt($value) + * @property string $created + * @property string $updated + * @method static Builder|CustomerTag whereCreated($value) + * @method static Builder|CustomerTag whereUpdated($value) * @mixin \Eloquent */ class CustomerTag extends Model diff --git a/app/Models/DocstoreCustomerDirectory.php b/app/Models/DocstoreCustomerDirectory.php index d37860699..653a42dde 100644 --- a/app/Models/DocstoreCustomerDirectory.php +++ b/app/Models/DocstoreCustomerDirectory.php @@ -119,12 +119,15 @@ protected static function boot(): void parent::boot(); static::addGlobalScope('privs', function ( Builder $builder ) { + /** @var User $us */ + $us = Auth::getUser(); + if( !Auth::check() ) { // if public user make sure that no records is returned $builder->where('id', null ); - } elseif( !Auth::getUser()->isSuperUser() ) { + } elseif( !$us->isSuperUser() ) { // if not super user make sure only records from the same customer are returned - $builder->where('cust_id', Auth::getUser()->custid ); + $builder->where('cust_id', $us->custid ); } }); } @@ -241,7 +244,7 @@ public static function getHierarchyForCustomerAndUserClass( Customer $cust, int } )->get()->isNotEmpty(); if( $rootDirVisible && $showRoot ) { - self::$dirs[null] = [ 'id' => null, 'name' => 'Root Directory' ]; + self::$dirs[] = [ 'id' => null, 'name' => 'Root Directory' ]; } } diff --git a/app/Models/DocstoreCustomerFile.php b/app/Models/DocstoreCustomerFile.php index bd3239653..8ea1a19ba 100644 --- a/app/Models/DocstoreCustomerFile.php +++ b/app/Models/DocstoreCustomerFile.php @@ -129,12 +129,15 @@ protected static function boot(): void parent::boot(); static::addGlobalScope('privs', function ( Builder $builder ) { + /** @var User $us */ + $us = Auth::getUser(); + if( !Auth::check() ) { // if public user make sure that no records is returned $builder->where('id', null ); - } elseif( !Auth::getUser()->isSuperUser() ) { + } elseif( !$us->isSuperUser() ) { // If not super user make sure only allowed files are returned - $builder->where('min_privs', '<=', Auth::getUser()->privs() ); + $builder->where('min_privs', '<=', $us->privs() ); } }); } diff --git a/app/Models/DocstoreDirectory.php b/app/Models/DocstoreDirectory.php index b229bc813..a2ad57d61 100644 --- a/app/Models/DocstoreDirectory.php +++ b/app/Models/DocstoreDirectory.php @@ -207,7 +207,7 @@ public static function getHierarchyForUserClass( int $priv = User::AUTH_SUPERUSE } )->get()->isNotEmpty(); if( $rootDirVisible ) { - self::$dirs[null] = [ 'id' => null, 'name' => 'Root Directory' ]; + self::$dirs[] = [ 'id' => null, 'name' => 'Root Directory' ]; } } return self::$dirs; diff --git a/app/Models/Infrastructure.php b/app/Models/Infrastructure.php index e49d25627..0a49684da 100644 --- a/app/Models/Infrastructure.php +++ b/app/Models/Infrastructure.php @@ -64,6 +64,8 @@ * @method static Builder|Infrastructure wherePeeringdbIxId($value) * @method static Builder|Infrastructure whereShortname($value) * @method static Builder|Infrastructure whereUpdatedAt($value) + * @property int $ixp_id + * @method static Builder|Infrastructure whereIxpId($value) * @mixin Eloquent */ class Infrastructure extends Model diff --git a/app/Models/IrrdbConfig.php b/app/Models/IrrdbConfig.php index 13b69c1da..c714a2273 100644 --- a/app/Models/IrrdbConfig.php +++ b/app/Models/IrrdbConfig.php @@ -51,6 +51,8 @@ * @method static Builder|IrrdbConfig whereNotes($value) * @method static Builder|IrrdbConfig whereSource($value) * @method static Builder|IrrdbConfig whereUpdatedAt($value) + * @property string|null $protocol + * @method static Builder|IrrdbConfig whereProtocol($value) * @mixin \Eloquent */ class IrrdbConfig extends Model diff --git a/app/Models/IrrdbUpdateLog.php b/app/Models/IrrdbUpdateLog.php new file mode 100644 index 000000000..f3cc6bfe0 --- /dev/null +++ b/app/Models/IrrdbUpdateLog.php @@ -0,0 +1,115 @@ + + */ + protected function casts(): array + { + return [ + 'prefix_v4' => 'datetime', + 'prefix_v6' => 'datetime', + 'asn_v4' => 'datetime', + 'asn_v6' => 'datetime', + ]; + } + + /** + * Find the /oldest/ /relevant/ last update: + * + * - oldest: will be null if never updated + * - relevant: if customer is not v6 enabled, ignore these fields + * + * @param Customer $c + * @return Carbon + */ + public static function lastUpdatedMax( Customer $c ): ?Carbon + { + /** @var IrrdbUpdateLog $log */ + $log = self::firstWhere('cust_id', $c->id); + + if( !$log || !$c->irrdbFiltered() ) { + return null; + } + + $oldest = null; + + if( $c->isIPvXEnabled(4) ) { + if( !$oldest && $log->prefix_v4 ) { + $oldest = $log->prefix_v4; + } else if( $oldest && $oldest > $log->prefix_v4 ) { + $oldest = $log->prefix_v4; + } + + if( !$oldest && $log->asn_v4 ) { + $oldest = $log->asn_v4; + } else if( $oldest && $oldest > $log->asn_v4 ) { + $oldest = $log->asn_v4; + } + } + + if( $c->isIPvXEnabled(6) ) { + if( !$oldest && $log->prefix_v6 ) { + $oldest = $log->prefix_v6; + } else if( $oldest && $oldest > $log->prefix_v6 ) { + $oldest = $log->prefix_v6; + } + + if( !$oldest && $log->asn_v6 ) { + $oldest = $log->asn_v6; + } else if( $oldest && $oldest > $log->asn_v6 ) { + $oldest = $log->asn_v6; + } + } + + return $oldest; + } + +} diff --git a/app/Models/Layer2Address.php b/app/Models/Layer2Address.php index 0e9643139..27cd1c7b1 100644 --- a/app/Models/Layer2Address.php +++ b/app/Models/Layer2Address.php @@ -52,6 +52,8 @@ * @method static Builder|Layer2Address whereMac($value) * @method static Builder|Layer2Address whereUpdatedAt($value) * @method static Builder|Layer2Address whereVlanInterfaceId($value) + * @property string|null $created + * @method static Builder|Layer2Address whereCreated($value) * @mixin \Eloquent */ class Layer2Address extends Model diff --git a/app/Models/Logo.php b/app/Models/Logo.php index da97af2c5..9278ba2fb 100644 --- a/app/Models/Logo.php +++ b/app/Models/Logo.php @@ -57,6 +57,8 @@ * @method static \Illuminate\Database\Eloquent\Builder|Logo whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Logo whereUploadedBy($value) * @method static \Illuminate\Database\Eloquent\Builder|Logo whereWidth($value) + * @property string $uploaded_at + * @method static \Illuminate\Database\Eloquent\Builder|Logo whereUploadedAt($value) * @mixin \Eloquent */ class Logo extends Model diff --git a/app/Models/P2pDailyStats.php b/app/Models/P2pDailyStats.php new file mode 100644 index 000000000..156a6ce28 --- /dev/null +++ b/app/Models/P2pDailyStats.php @@ -0,0 +1,158 @@ +hasOne(Customer::class, 'id', 'peer_id' ); + } + + /** + * Accessor for total traffic + */ + public function total_traffic(): int + { + return $this->ipv4_total_out + $this->ipv4_total_in + $this->ipv6_total_out + $this->ipv6_total_in; + } + + + + /** + * Get the total traffic a customer exchanges with its peers for the latest day in the database. + * + * Only peers with entries on the the most recent day for this customer will be included. + * + * @param Customer $c + * @return array [ peerid => total_traffic, ... ] + */ + public static function latestTotalTraffic( Customer $c ): array + { + // latest day for which we have results + if( !( $day = self::whereCustId( $c->id )->max('day') ) ) { + return []; + } + + return self::select( DB::raw('peer_id, ipv6_total_out + ipv4_total_out + ipv6_total_in + ipv4_total_in as total_traffic') ) + ->where( 'cust_id', $c->id )->where( 'day', $day) + ->get()->pluck('total_traffic', 'peer_id')->toArray(); + } + + /** + * Get the latest n P2pDailyStats for this customer. + * + * @param Customer $c + * @return P2pDailyStats[] + */ + public static function latestN( Customer $c, int $n = 5 ): Collection + { + // latest day for which we have results + if( !( $day = self::whereCustId( $c->id )->max('day') ) ) { + return []; + } + + return self::select( DB::raw( '*, ipv6_total_out + ipv4_total_out + ipv6_total_in + ipv4_total_in as total_traffic' ) ) + ->where( 'cust_id', $c->id )->where( 'day', $day) + ->limit( $n )->orderBy( 'total_traffic', 'desc' )->get(); + } + + +} diff --git a/app/Models/PatchPanelPort.php b/app/Models/PatchPanelPort.php index cc439228d..907ec0240 100644 --- a/app/Models/PatchPanelPort.php +++ b/app/Models/PatchPanelPort.php @@ -341,6 +341,7 @@ public function patchPanelPortHistories(): HasMany /** * Get the public patch panel port files for this patch panel port + * @psalm-suppress all */ public function patchPanelPortFilesPublic(): HasMany { diff --git a/app/Models/PeeringManager.php b/app/Models/PeeringManager.php index 8b7a2d668..cfa4c7cd4 100644 --- a/app/Models/PeeringManager.php +++ b/app/Models/PeeringManager.php @@ -56,6 +56,10 @@ * @method static \Illuminate\Database\Eloquent\Builder|PeeringManager wherePeerid($value) * @method static \Illuminate\Database\Eloquent\Builder|PeeringManager whereRejected($value) * @method static \Illuminate\Database\Eloquent\Builder|PeeringManager whereUpdatedAt($value) + * @property string|null $created + * @property string|null $updated + * @method static \Illuminate\Database\Eloquent\Builder|PeeringManager whereCreated($value) + * @method static \Illuminate\Database\Eloquent\Builder|PeeringManager whereUpdated($value) * @mixin \Eloquent */ class PeeringManager extends Model diff --git a/app/Models/PhysicalInterface.php b/app/Models/PhysicalInterface.php index 33d536e04..744d95ce0 100644 --- a/app/Models/PhysicalInterface.php +++ b/app/Models/PhysicalInterface.php @@ -384,7 +384,7 @@ public function relatedInterface() * * @return PhysicalInterface|bool */ - public function otherPICoreLink() + public function otherPICoreLink(): PhysicalInterface|bool { if( $ci = $this->coreInterface ){ if( $this->id === $ci->coreLink()->coreInterfaceSideA->physical_interface_id ){ diff --git a/app/Models/Router.php b/app/Models/Router.php index 08d7526a3..bfe96a9fa 100644 --- a/app/Models/Router.php +++ b/app/Models/Router.php @@ -107,6 +107,9 @@ * @method static Builder|Router whereType($value) * @method static Builder|Router whereUpdatedAt($value) * @method static Builder|Router whereVlanId($value) + * @method static Builder|Router routeCollector() + * @method static Builder|Router ipvX(int $protocol) + * @method static Builder|Router ipProtocol(int $protocol) * @mixin \Eloquent */ class Router extends Model @@ -281,6 +284,18 @@ public function scopeHasApi( Builder $query ): Builder return $query->where('api_type', '>', 0); } + /** + * Scope a query to only include route collectors + * + * @param Builder $query + * + * @return Builder + */ + public function scopeRouteCollector( Builder $query ): Builder + { + return $query->where('type', self::TYPE_ROUTE_COLLECTOR); + } + /** * Scope a query to only include route servers * @@ -317,6 +332,19 @@ public function scopeIpv6( Builder $query ): Builder return $query->where('protocol', self::PROTOCOL_IPV6); } + /** + * Scope a query to match IPvX routers only + * + * @param Builder $query + * + * @return Builder + */ + public function scopeIpProtocol( Builder $query, int $protocol ): Builder + { + return $query->where('protocol', $protocol === 4 ? self::PROTOCOL_IPV4 : self::PROTOCOL_IPV6 ); + } + + /** * Scope a query to match BGP Large Communities enabled * @@ -406,6 +434,18 @@ public function type(): string return self::$TYPES[ $this->type ] ?? 'Unknown'; } + /** + * Check if the given type matches the routers's type. + * + * @param int $type The type to check against. + * @return bool True if the given type matches, false otherwise. + */ + public function isType( int $type ): bool + { + return $this->type === $type; + } + + /** * Turn the database integer representation of the lg access into text as * defined in the User::$PRIVILEGES_ALL array (or 'Unknown') diff --git a/app/Models/Switcher.php b/app/Models/Switcher.php index de766b20d..c06e79ffa 100644 --- a/app/Models/Switcher.php +++ b/app/Models/Switcher.php @@ -320,9 +320,9 @@ public function snmpPoll( $host, bool $logger = false, bool $nosave = false ): S // does this switch support the IANA MAU MIB? try { $host->useMAU()->types(); - $this->mauSupported = true; + $this->mauSupported = 1; } catch( \OSS_SNMP\Exception $e ) { - $this->mauSupported = false; + $this->mauSupported = 0; } // uptime data @@ -381,7 +381,7 @@ public function snmpPollSwitchPorts( $host, $logger = false, bool|array &$result // iterate over all the ports discovered on the switch: foreach( $host->useIface()->indexes() as $index ) { - // Port types - see https://docs.ixpmanager.org/usage/switches/#snmp-and-port-types-iftype + // Port types - see https://docs.ixpmanager.org/latest/usage/switches/#snmp-and-port-types-iftype if( !in_array( $host->useIface()->types()[ $index ], config('ixp.snmp.allowed_interface_types') ) ) { continue; } diff --git a/app/Models/TrafficDaily.php b/app/Models/TrafficDaily.php index 78bb0b3f1..1e2aa93c2 100644 --- a/app/Models/TrafficDaily.php +++ b/app/Models/TrafficDaily.php @@ -98,6 +98,8 @@ * @method static Builder|TrafficDaily whereYearMaxOut($value) * @method static Builder|TrafficDaily whereYearTotIn($value) * @method static Builder|TrafficDaily whereYearTotOut($value) + * @property int $ixp_id + * @method static Builder|TrafficDaily whereIxpId($value) * @mixin \Eloquent */ class TrafficDaily extends Model diff --git a/app/Models/User.php b/app/Models/User.php index 588fe181c..19d0c1c24 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -104,6 +104,10 @@ * @method static Builder|User whereUid($value) * @method static Builder|User whereUpdatedAt($value) * @method static Builder|User whereUsername($value) + * @property string|null $lastupdated + * @property string|null $created + * @method static Builder|User whereCreated($value) + * @method static Builder|User whereLastupdated($value) * @mixin Eloquent */ class User extends Model implements AuthenticatableContract, CanResetPasswordContract diff --git a/app/Models/UserRememberToken.php b/app/Models/UserRememberToken.php index c77f02519..4e315ef27 100644 --- a/app/Models/UserRememberToken.php +++ b/app/Models/UserRememberToken.php @@ -54,6 +54,8 @@ * @method static Builder|UserRememberToken whereToken($value) * @method static Builder|UserRememberToken whereUpdatedAt($value) * @method static Builder|UserRememberToken whereUserId($value) + * @property string $created + * @method static Builder|UserRememberToken whereCreated($value) * @mixin \Eloquent */ class UserRememberToken extends Model diff --git a/app/Models/VirtualInterface.php b/app/Models/VirtualInterface.php index 17402b342..d1ba72306 100644 --- a/app/Models/VirtualInterface.php +++ b/app/Models/VirtualInterface.php @@ -232,9 +232,9 @@ public function fanoutPhysicalInterface(): array /** * Get a Switch Port of a virtual interface. * - * @return SwitchPort|bool The switch port or false if no switch port. + * @return bool|SwitchPort|null The switch port or false if no switch port. */ - public function switchPort() + public function switchPort(): bool|SwitchPort|null { if( $this->physicalInterfaces()->count() ){ return $this->physicalInterfaces()->first()->switchPort; diff --git a/app/Models/Vlan.php b/app/Models/Vlan.php index c58611133..e8bc91521 100644 --- a/app/Models/Vlan.php +++ b/app/Models/Vlan.php @@ -80,6 +80,7 @@ * @method static Builder|Vlan wherePeeringMatrix($value) * @method static Builder|Vlan wherePrivate($value) * @method static Builder|Vlan whereUpdatedAt($value) + * @method static Builder|Vlan publicProductionPeeringLan() * @mixin \Eloquent */ class Vlan extends Model @@ -219,6 +220,23 @@ public function scopePeeringManager( Builder $query ): Builder return $query->where( 'peering_manager', 1 ); } + /** + * Scope a query to only include public production peering LANs + * + * This is a bit of a hack right now as there is no specific flag for + * this but we'll use export_to_ixf for now as that is as good an + * inidicator as any. + * + * @param Builder $query + * @return Builder + */ + public function scopePublicProductionPeeringLan( Builder $query ): Builder + { + return $query->where( 'export_to_ixf', 1 ); + } + + + /** * String to describe the model being updated / deleted / created * diff --git a/app/Models/VlanInterface.php b/app/Models/VlanInterface.php index 05e89660a..88a8bb175 100644 --- a/app/Models/VlanInterface.php +++ b/app/Models/VlanInterface.php @@ -233,14 +233,30 @@ public function canGraphForLatency( string $proto ): bool /** * Convenience function to get an IP address based on a given protocol * - * @param string $proto Either ipv4 / ipv6 (as defined in Grapher) + * @param int|string $proto Either 4/ipv4 / 6/ipv6 (as defined in Grapher) * * @return null|IPv4Address|IPv6Address * * @throws */ - public function getIPAddress( string $proto ) + public function getIPAddress( int|string $proto ) { + if( is_string( $proto ) ) { + $proto = strtolower( $proto ); + } + + return match( $proto ) { + 4, 'ipv4' => $this->ipv4address, + 6, 'ipv6' => $this->ipv6address, + }; +/* + if( is_int( $proto ) ) { + return match( $proto ) { + 4 => $this->ipv4address, + 6 => $this->ipv6address, + }; + } + switch( strtolower( $proto ) ) { case 'ipv4': return $this->ipv4address; @@ -251,6 +267,7 @@ public function getIPAddress( string $proto ) default: return null; } +*/ } /** diff --git a/app/Policies/CustomerPolicy.php b/app/Policies/CustomerPolicy.php index feef6f6ce..a716720f5 100644 --- a/app/Policies/CustomerPolicy.php +++ b/app/Policies/CustomerPolicy.php @@ -79,7 +79,6 @@ public function view( User $user, Customer $customer ): bool * * @param User $user * - * @return mixed */ public function create( User $user ) { @@ -92,7 +91,6 @@ public function create( User $user ) * @param User $user * @param Customer $customer * - * @return mixed */ public function update(User $user, Customer $customer) { @@ -104,7 +102,7 @@ public function update(User $user, Customer $customer) * * @param User $user * @param Customer $customer - * @return mixed + * */ public function delete( User $user, Customer $customer ) { @@ -116,7 +114,7 @@ public function delete( User $user, Customer $customer ) * * @param User $user * @param Customer $customer - * @return mixed + * */ public function restore( User $user, Customer $customer ) { @@ -129,7 +127,6 @@ public function restore( User $user, Customer $customer ) * @param User $user * @param Customer $customer * - * @return mixed */ public function forceDelete( User $user, Customer $customer ) { diff --git a/app/Policies/DocstoreLogPolicy.php b/app/Policies/DocstoreLogPolicy.php index 0f7ae4f46..fb4bc6b53 100644 --- a/app/Policies/DocstoreLogPolicy.php +++ b/app/Policies/DocstoreLogPolicy.php @@ -55,7 +55,6 @@ public function before( $user, $ability ) * * @param User $user * - * @return mixed */ public function viewAny( User $user ) {} } diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php index 3f98577f3..ab18ed6b0 100644 --- a/app/Providers/BroadcastServiceProvider.php +++ b/app/Providers/BroadcastServiceProvider.php @@ -45,6 +45,6 @@ class BroadcastServiceProvider extends ServiceProvider public function boot(): void { Broadcast::routes(); - require base_path('routes/channels.php'); + /* require base_path('routes/channels.php'); */ } } \ No newline at end of file diff --git a/app/Providers/DiagnosticsServiceProvider.php b/app/Providers/DiagnosticsServiceProvider.php new file mode 100644 index 000000000..1f5980831 --- /dev/null +++ b/app/Providers/DiagnosticsServiceProvider.php @@ -0,0 +1,93 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Providers + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +class DiagnosticsServiceProvider extends ServiceProvider +{ + protected $defer = true; + + + /** + * Bootstrap the application services. + * + * @return void + * + * @throws + */ + public function boot(): void + { + Route::group([ + 'middleware' => config( 'google2fa.enabled' ) + ? [ 'web' , 'auth' , '2fa' , 'assert.privilege:' . User::AUTH_SUPERUSER ] + : [ 'web' , 'auth', 'assert.privilege:' . User::AUTH_SUPERUSER ], + 'namespace' => 'IXP\Http\Controllers' ], function(){ + + Route::get( 'diagnostics/customer/{customer}', 'DiagnosticsController@customer')->name('diagnostics@customer' ); + Route::get( 'diagnostics/irrdb/{customer}', 'DiagnosticsController@irrdb' )->name('diagnostics@irrdb' ); + }); + + // we have a few rendering functions we want to include here: + // $this->app->make( Engine::class )->loadExtension( new GrapherRendererExtension(), [] ); + } + + /** + * Register the application services. + * + * @return void|Diagnostics + * + * @throws + */ + public function register() + { + $this->app->singleton( + Diagnostics::class, function() { + return new Diagnostics; + }); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides(): array + { + return [ Diagnostics::class ]; + } +} \ No newline at end of file diff --git a/app/Providers/HelpdeskServiceProvider.php b/app/Providers/HelpdeskServiceProvider.php index 71729a2ee..79456b722 100644 --- a/app/Providers/HelpdeskServiceProvider.php +++ b/app/Providers/HelpdeskServiceProvider.php @@ -90,7 +90,7 @@ public function register(): void * * @return array */ - public function provides(): arrau + public function provides(): array { return [ Helpdesk::class ]; } diff --git a/app/Providers/HorizonServiceProvider.php b/app/Providers/HorizonServiceProvider.php index bbc742380..a2284e5cc 100644 --- a/app/Providers/HorizonServiceProvider.php +++ b/app/Providers/HorizonServiceProvider.php @@ -26,6 +26,7 @@ use Auth; use Illuminate\Support\Facades\Gate; +use IXP\Models\User; use Laravel\Horizon\HorizonApplicationServiceProvider; /** @@ -66,7 +67,9 @@ public function boot(): void protected function gate(): void { Gate::define('viewHorizon', function ( $user ) { - return Auth::check() && Auth::getUser()->isSuperUser(); + /** @var User $us */ + $us = Auth::getUser(); + return Auth::check() && $us->isSuperUser(); }); } } \ No newline at end of file diff --git a/app/Providers/IxpServiceProvider.php b/app/Providers/IxpServiceProvider.php index 8a526f106..9385bf60c 100644 --- a/app/Providers/IxpServiceProvider.php +++ b/app/Providers/IxpServiceProvider.php @@ -27,6 +27,7 @@ use Illuminate\Support\ServiceProvider; use IXP\Models\Customer; +use IXP\Models\User; /** * IXP Service Provider @@ -56,7 +57,10 @@ public function register(): void { $this->app->resolving('view', function( $view ) { View::composer('*', function($view) { - if( ( Auth::check() && Auth::getUser()->isSuperUser() ) || env( 'IXP_PHPUNIT_RUNNING', false ) ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( ( Auth::check() && $us->isSuperUser() ) || config( 'IXP_PHPUNIT_RUNNING', false ) ) { // get an array of customer id => names if( !( $customers = Cache::get( 'admin_home_customers' ) ) ) { $customers = Customer::select( [ 'id', 'name' ] )->current()->orderBy( 'name' )->get()->keyBy( 'id' )->toArray(); diff --git a/app/Providers/ParsedownServiceProvider.php b/app/Providers/ParsedownServiceProvider.php index ba3aed8cc..759f7e7a5 100644 --- a/app/Providers/ParsedownServiceProvider.php +++ b/app/Providers/ParsedownServiceProvider.php @@ -35,6 +35,7 @@ public function boot(): void /** * @return BladeCompiler + * @psalm-suppress all */ protected function compiler(): BladeCompiler { diff --git a/app/Providers/PurifierServiceProvider.php b/app/Providers/PurifierServiceProvider.php index 1fddd027f..92caf0f15 100644 --- a/app/Providers/PurifierServiceProvider.php +++ b/app/Providers/PurifierServiceProvider.php @@ -7,6 +7,7 @@ use Illuminate\Container\Container; use Illuminate\Support\ServiceProvider; +use Illuminate\Foundation\Application as LaravelApplication; use IXP\Services\Purifier; @@ -22,9 +23,8 @@ class PurifierServiceProvider extends ServiceProvider /** * Boot the service provider. * - * @return null */ - public function boot() + public function boot(): void { $this->setupConfig(); } @@ -34,7 +34,7 @@ public function boot() * * @return void */ - protected function setupConfig() + protected function setupConfig(): void { $source = config_path( 'purifier.php' ); if ($this->app instanceof LaravelApplication && $this->app->runningInConsole()) { diff --git a/app/Providers/TelescopeServiceProvider.php b/app/Providers/TelescopeServiceProvider.php index 244d21e63..4d3b6d001 100644 --- a/app/Providers/TelescopeServiceProvider.php +++ b/app/Providers/TelescopeServiceProvider.php @@ -52,6 +52,7 @@ public function register(): void $this->hideSensitiveRequestDetails(); Telescope::filter( function ( IncomingEntry $entry ) { + /** @psalm-suppress UndefinedInterfaceMethod - Telescope package provides the isLocal method */ if ($this->app->isLocal()) { return true; } @@ -70,6 +71,7 @@ public function register(): void */ protected function hideSensitiveRequestDetails(): void { + /** @psalm-suppress UndefinedInterfaceMethod - Telescope package provides the isLocal method */ if( $this->app->isLocal() ) { return; } diff --git a/app/Services/Auth/EloquentUserProvider.php b/app/Services/Auth/EloquentUserProvider.php index 199afa341..c8fb64784 100644 --- a/app/Services/Auth/EloquentUserProvider.php +++ b/app/Services/Auth/EloquentUserProvider.php @@ -47,7 +47,7 @@ * A small set of functions we need to override from LaravelDoctrine's provider to allow for IXP Manager's * user session management functionality. * - * @see https://docs.ixpmanager.org/dev/authentication/ + * @see https://docs.ixpmanager.org/latest/dev/authentication/ * @author Barry O'Donovan * @author Yann Robin * @package IXP\Services\Auth diff --git a/app/Services/Auth/SessionGuard.php b/app/Services/Auth/SessionGuard.php index a967f9784..193d68ff1 100644 --- a/app/Services/Auth/SessionGuard.php +++ b/app/Services/Auth/SessionGuard.php @@ -41,7 +41,7 @@ * A small set of functions we need to override from Laravel's SessionGuard to allow for IXP Manager's * user session management functionality. * - * @see https://docs.ixpmanager.org/dev/authentication/ + * @see https://docs.ixpmanager.org/latest/dev/authentication/ * @author Barry O'Donovan * @author Yann Robin * @package IXP\Services\Auth @@ -148,6 +148,7 @@ public function user() * @param AuthenticatableContract $user * * @return void + * @psalm-suppress UndefinedInterfaceMethod */ protected function ensureRememberTokenIsSet( AuthenticatableContract $user ): void { diff --git a/app/Services/Diagnostics.php b/app/Services/Diagnostics.php new file mode 100644 index 000000000..63b75b252 --- /dev/null +++ b/app/Services/Diagnostics.php @@ -0,0 +1,139 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +class Diagnostics +{ + + /** + * @param Customer $customer + * @return DiagnosticResultSet + * @throws GeneralException + */ + public function getCustomerDiagnostics(Customer $customer): DiagnosticResultSet + { + $d = new CustomerDiagnosticSuite( $customer ); + return $d->run()->results(); + } + + /** + * @param Customer $customer + * @return DiagnosticResultSet + */ + public function getCustomerIrrdbDiagnostics(Customer $customer): DiagnosticResultSet + { + $d = new IrrdbDiagnosticSuite( $customer ); + return $d->run()->results(); + } + + /** + * @param VirtualInterface $vi + * @return DiagnosticResultSet + */ + public function getVirtualInterfaceDiagnostics( VirtualInterface $vi ): DiagnosticResultSet + { + $d = new VirtualInterfaceDiagnosticSuite( $vi ); + return $d->run()->results(); + } + + /** + * @param PhysicalInterface $pi + * @return DiagnosticResultSet + */ + public function getPhysicalInterfaceDiagnostics(PhysicalInterface $pi): DiagnosticResultSet + { + $d = new PhysicalInterfaceDiagnosticSuite( $pi ); + return $d->run()->results(); + } + + /** + * @param PhysicalInterface $pi + * @return DiagnosticResultSet + */ + public function getTransceiverDiagnostics(PhysicalInterface $pi): DiagnosticResultSet + { + $d = new TransceiverDiagnosticSuite( $pi ); + return $d->run()->results(); + } + + /** + * @param VlanInterface $vli + * @param int $protocol + * @return DiagnosticResultSet + * @throws \Illuminate\Contracts\Container\BindingResolutionException + */ + public function getRouterBgpSessionsDiagnostics(VlanInterface $vli, int $protocol): DiagnosticResultSet + { + $d = new RouterBgpSessionsDiagnosticSuite( $vli, $protocol ); + return $d->run()->results(); + } + + /** + * @param VlanInterface $vli + * @return DiagnosticResultSet + * @throws \Illuminate\Contracts\Container\BindingResolutionException + */ + public function getVlanInterfaceL2Diagnostics(VlanInterface $vli): DiagnosticResultSet + { + $d = new VlanInterfaceL2DiagnosticSuite( $vli ); + return $d->run()->results(); + } + + /** + * @param VlanInterface $vli + * @param int $protocol + * @return DiagnosticResultSet + * @throws \Illuminate\Contracts\Container\BindingResolutionException + */ + public function getVlanInterfaceL3Diagnostics(VlanInterface $vli, int $protocol): DiagnosticResultSet + { + $d = new VlanInterfaceL3DiagnosticSuite( $vli, $protocol ); + return $d->run()->results(); + } + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/DiagnosticResult.php b/app/Services/Diagnostics/DiagnosticResult.php new file mode 100644 index 000000000..4081b7e5b --- /dev/null +++ b/app/Services/Diagnostics/DiagnosticResult.php @@ -0,0 +1,95 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Grapher + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class DiagnosticResult +{ + public const int TYPE_FATAL = 1000; + public const int TYPE_ERROR = 900; + public const int TYPE_WARN = 800; + public const int TYPE_GOOD = 600; + public const int TYPE_INFO = 500; + public const int TYPE_DEBUG = 200; + public const int TYPE_TRACE = 100; + + public static array $RESULT_TYPES_TEXT = [ + self::TYPE_FATAL => 'Fatal', + self::TYPE_ERROR => 'Error', + self::TYPE_WARN => 'Warning', + self::TYPE_INFO => 'Info', + self::TYPE_GOOD => 'Good', + self::TYPE_DEBUG => 'Debug', + self::TYPE_TRACE => 'Trace', + ]; + + public static array $RESULT_TYPES_ICON_STYLE = [ + self::TYPE_FATAL => 'tw-bg-red-50 tw-text-red-700 tw-ring-red-600/10', + self::TYPE_ERROR => 'tw-bg-pink-50 tw-text-pink-700 tw-ring-pink-700/10', + self::TYPE_WARN => 'tw-bg-yellow-50 -text-yellow-800 tw-ring-yellow-600/20', + self::TYPE_INFO => 'tw-bg-blue-50 tw-text-blue-700 tw-ring-blue-700/10', + self::TYPE_GOOD => 'tw-bg-green-50 tw-text-green-700 tw-ring-green-600/20', + self::TYPE_DEBUG => 'tw-bg-gray-50 tw-text-gray-600 tw-ring-gray-500/10', + self::TYPE_TRACE => 'tw-bg-gray-100 tw-text-gray-800 tw-ring-gray-800/10', + ]; + + + public function __construct( + public string $name, + public int $result, + public ?string $narrative = null, + public int $auth = User::AUTH_SUPERUSER, // whether the diagnostic result should be visible to the member + public ?string $narrativeHtml = null, + public ?string $infoBadge = null, + ) { } + + public function iconStyle(): string { + return "tw-inline-flex tw-items-center tw-rounded-md tw-ml-2 tw-px-2 tw-py-1 tw-text-xs tw-font-medium " + . self::$RESULT_TYPES_ICON_STYLE[$this->result] + . " tw-ring-1 tw-ring-inset"; + } + + public function result(): string { + return self::$RESULT_TYPES_TEXT[$this->result]; + } + + + public function badge(): string { + return "iconStyle() . "\">" . $this->result() . ""; + } + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/DiagnosticResultSet.php b/app/Services/Diagnostics/DiagnosticResultSet.php new file mode 100644 index 000000000..f3a40149d --- /dev/null +++ b/app/Services/Diagnostics/DiagnosticResultSet.php @@ -0,0 +1,89 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Grapher + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class DiagnosticResultSet +{ + public DiagnosticSuite $suite; + + /** @var DiagnosticResult[] */ + public array $results = []; + + /** @var DiagnosticResultSet[] */ + protected array $subsets = []; + + + /** + * @param DiagnosticResult|null $result + */ + public function __construct( DiagnosticSuite $suite, ?DiagnosticResult $result = null ) { + $this->suite = $suite; + + if ($result !== null) { + $this->results[] = $result; + } + } + + /** + * Adds a diagnostic result to the result set. + * + * @param DiagnosticResult|DiagnosticResult[] $result The diagnostic result to add. + * @return DiagnosticResultSet This diagnostic result set. + */ + public function add( DiagnosticResult|array $result ): DiagnosticResultSet { + + $this->results = array_merge( + $this->results, + is_array($result) ? $result : [$result] + ); + + return $this; + } + + + public function addSubset(DiagnosticResultSet $subset) { + $this->subsets[] = $subset; + } + + /** + * @return DiagnosticResultSet[] + */ + public function subsets(): array { + return $this->subsets; + } + + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/DiagnosticSuite.php b/app/Services/Diagnostics/DiagnosticSuite.php new file mode 100644 index 000000000..8298699d8 --- /dev/null +++ b/app/Services/Diagnostics/DiagnosticSuite.php @@ -0,0 +1,69 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Grapher + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ +abstract class DiagnosticSuite +{ + protected string $name = 'Err: Suite name not set!'; + protected string $description = 'Err: No suite description set!'; + protected string $type = 'Err: No suite type set!'; + + protected DiagnosticResultSet $results; + + + public function __construct() { + $this->results = new DiagnosticResultSet( $this ); + } + + + /** + * @return DiagnosticResultSet + */ + public function results(): DiagnosticResultSet { + return $this->results; + } + + public function name(): string { + return $this->name; + } + + public function description(): string { + return $this->description; + } + + public function type(): string { + return $this->type; + } + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Exception.php b/app/Services/Diagnostics/Exception.php new file mode 100644 index 000000000..c7f14604a --- /dev/null +++ b/app/Services/Diagnostics/Exception.php @@ -0,0 +1,26 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class CustomerDiagnosticSuite extends DiagnosticSuite +{ + + public function __construct( + private readonly Customer $customer + ) { + $this->name = 'Member Overview'; + $this->description = 'Diagnostics for the overall member\'s set-up.'; + $this->type = 'CUSTOMER'; + + parent::__construct(); + } + + /** + * Run the diagnostics suite + * @throws GeneralException + */ + public function run(): CustomerDiagnosticSuite + { + // ordering here will determine order on view + $this->results->add( $this->customerType( $this->customer ) ); + $this->results->add( $this->customerStatus( $this->customer ) ); + $this->results->add( $this->customerHasLeft( $this->customer ) ); + $this->results->add( $this->customerRouteServerClient( $this->customer ) ); + + return $this; + } + + + /** + * Examine the customer type and provide information on it. + * + * @param Customer $customer + * @return DiagnosticResult + */ + public function customerType( Customer $customer ): DiagnosticResult { + $mainName = 'Member Type: '; + + return match ( $customer->type ) { + + Customer::TYPE_FULL => new DiagnosticResult( + name: $mainName . $customer->type(), + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member is a standard full member", + ), + + Customer::TYPE_PROBONO => new DiagnosticResult( + name: $mainName . $customer->type(), + result: DiagnosticResult::TYPE_INFO, + narrative: "The member is a pro bono member", + ), + + Customer::TYPE_INTERNAL => new DiagnosticResult( + name: $mainName . $customer->type(), + result: DiagnosticResult::TYPE_WARN, + narrative: "The member is an internal member used for IXP infrastructure. Do not assume normal member interfaces and behaviors.", + ), + + Customer::TYPE_ASSOCIATE => new DiagnosticResult( + name: $mainName .$customer->type(), + result: DiagnosticResult::TYPE_WARN, + narrative: "The member is an associate member and should not have any connections or other services.", + ), + + default => new DiagnosticResult( + name: $mainName . 'UNKNOWN', + result: DiagnosticResult::TYPE_FATAL, + narrative: "The member type {$this->customer->type()} is an unknown type to the diagnostic logic.", + ), + }; + + } + + + /** + * Examine the customer status and provide information on it. + * + * @param Customer $customer + * @return DiagnosticResult + */ + public function customerStatus( Customer $customer ): DiagnosticResult { + $mainName = 'Member Status: '; + + return match ($customer->status ) { + + Customer::STATUS_NOTCONNECTED, Customer::STATUS_SUSPENDED => new DiagnosticResult( + name: $mainName .$customer->status(), + result: DiagnosticResult::TYPE_WARN, + narrative: "The member's status is " .$customer->status(), + ), + + Customer::STATUS_NORMAL => new DiagnosticResult( + name: $mainName .$customer->status(), + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member's status is " .$customer->status(), + ), + + default => new DiagnosticResult( + name: $mainName . 'UNKNOWN', + result: DiagnosticResult::TYPE_FATAL, + narrative: "The member's status {$this->customer->status()} is an unknown status to the diagnostic logic.", + ), + }; + + } + + + /** + * Examine the customer left the IXP and provide information on it. + * + */ + public function customerHasLeft( Customer $customer ): DiagnosticResult { + + if($customer->hasLeft() ) { + return new DiagnosticResult( + name: "This member left the IXP " . Carbon::parse($this->customer->dateleave)->diffForHumans(), + result: DiagnosticResult::TYPE_ERROR, + narrative: "The member left the IXP on " . Carbon::parse($this->customer->dateleave)->format('Y-m-d'), + ); + } + + return new DiagnosticResult( + name: "This member has not left the IXP", + result: DiagnosticResult::TYPE_TRACE, + narrative: "The member has not left the IXP", + ); + } + + + /** + * Examine the customer Route Server Client status and provide information on it. + * + * @param Customer $customer + * @return DiagnosticResult + * @throws GeneralException + */ + public function customerRouteServerClient( Customer $customer ): DiagnosticResult { + $mainName = 'Route Server Client: '; + + if($customer->routeServerClient() ) { + return new DiagnosticResult( + name: $mainName . 'Yes', + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member is a route server client", + ); + } + + return new DiagnosticResult( + name: $mainName . 'No', + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member is not a route server client", + ); + + } + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/IrrdbDiagnosticSuite.php b/app/Services/Diagnostics/Suites/IrrdbDiagnosticSuite.php new file mode 100644 index 000000000..e11f8d823 --- /dev/null +++ b/app/Services/Diagnostics/Suites/IrrdbDiagnosticSuite.php @@ -0,0 +1,256 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class IrrdbDiagnosticSuite extends DiagnosticSuite +{ + + public function __construct( + private readonly Customer $customer + ) { + $this->name = 'IRRDB Filtering'; + $this->description = "Diagnostics related to IRRDB filtering."; + $this->type = 'CUSTOMER'; + + parent::__construct(); + } + + /** + * Run the diagnostics suite + * @throws GeneralException + */ + public function run(): IrrdbDiagnosticSuite + { + // ordering here will determine order on view + $this->results->add( $this->customerIrrdbFiltered( $this->customer ) ); + + if( $this->customer->routeServerClient() && $this->customer->irrdbFiltered() ) { + $this->results->add( $this->customerIrrdbAsnsPresent( $this->customer,IXP::IPv4 ) ); + $this->results->add( $this->customerIrrdbAsnsPresent( $this->customer,IXP::IPv6 ) ); + $this->results->add( $this->customerIrrdbPrefixesPresent( $this->customer,IXP::IPv4 ) ); + $this->results->add( $this->customerIrrdbPrefixesPresent( $this->customer,IXP::IPv6 ) ); + } + + return $this; + } + + + /** + * Examine the customer IRRDB filtering status and provide information on it. + * + * @param Customer $customer + * @return DiagnosticResult + * @throws GeneralException + */ + public function customerIrrdbFiltered( Customer $customer ): DiagnosticResult { + + if( !$this->customer->routeServerClient() ) { + return new DiagnosticResult( + name: 'IRRDB Filtering: not a route server client so no IRRDB filtering', + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member is not a route server client so IRRDB filtering not considered", + ); + } + + if($customer->fullyIrrdbFiltered() ) { + + if($this->customer->irrdbMoreSpecificsAllowed()) { + return new DiagnosticResult( + name: 'IRRDB Filtering: yes but more specifics allowed', + result: DiagnosticResult::TYPE_INFO, + narrative: "The member is IRRDB filtered but note that more specific prefixes are allowed on at least one VLAN interface", + ); + } + + return new DiagnosticResult( + name: 'IRRDB Filtering: yes', + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The member is IRRDB filtered", + ); + + } + + return new DiagnosticResult( + name: 'IRRDB Filtering: no, route server sessions not secured with IRRDB', + result: DiagnosticResult::TYPE_ERROR, + narrative: "The member is a route server client but is not IRRDB filtered on at least one VLAN interface", + ); + } + + + /** + * Examine the customer IRRDB filtering status and provide information on it. + * + * @param Customer $customer + * @param int $proto + * @return DiagnosticResult + * @throws GeneralException + */ + public function customerIrrdbAsnsPresent( Customer $customer, int $proto ): DiagnosticResult { + + if( !$this->customer->isIPvXEnabled($proto) ) { + return new DiagnosticResult( + name: "No IRRDB ASNs as " . IXP::protocol($proto) . ' not enabled for this member', + result: DiagnosticResult::TYPE_TRACE, + narrative: IXP::protocol($proto) . ' not enabled for this member', + ); + } + + try { + $irrdblog = IrrdbUpdateLog::where( [ 'cust_id' =>$customer->id ] )->firstOrFail(); + + $m = 'asn_v' . $proto; + + if( $irrdblog->$m === null ) { + // the exception is irrelevant as we just want to catch and send a diagnostic result. + throw new Exception(); + } + + } catch( Exception ) { + return new DiagnosticResult( + name: "IRRDB ASNs have never been updated for " . IXP::protocol($proto), + result: DiagnosticResult::TYPE_ERROR, + narrative: "IRRDB ASNs have never been updated for " . IXP::protocol($proto), + ); + } + + $count = IrrdbAsn::where( 'customer_id',$customer->id ) + ->where( 'protocol', $proto ) + ->count(); + + if( $count === 0 ) { + return new DiagnosticResult( + name: "Zero IRRDB ASNs for " . IXP::protocol($proto) . "(last update was " . $irrdblog->$m->diffForHumans() . ")", + result: DiagnosticResult::TYPE_ERROR, + narrative: "There are zero IRRDB ASNs for " . IXP::protocol($proto) . " (last update was " . $irrdblog->$m->diffForHumans() . ")", + ); + } + + if( $irrdblog->$m < now()->subDay() ) { + return new DiagnosticResult( + name: "IRRDB ASNs (x{$count}) for " . IXP::protocol($proto) . " have not been updated since " . $irrdblog->$m->diffForHumans(), + result: DiagnosticResult::TYPE_WARN, + narrative: "IRRDB ASNs (x{$count}) for " . IXP::protocol($proto) . " have not been updated since " . $irrdblog->$m->diffForHumans(), + ); + } + + + return new DiagnosticResult( + name: "IRRDB ASNs (x{$count}) for " . IXP::protocol($proto) . " last updated " . $irrdblog->$m->diffForHumans(), + result: DiagnosticResult::TYPE_GOOD, + narrative: "IRRDB ASNs (x{$count}) for " . IXP::protocol($proto) . " last updated " . $irrdblog->$m->diffForHumans(), + ); + + } + + + /** + * Examine the customer IRRDB filtering status and provide information on it. + * + * @param Customer $customer + * @param int $proto + * @return DiagnosticResult + * @throws GeneralException + */ + public function customerIrrdbPrefixesPresent( Customer $customer , int $proto ): DiagnosticResult { + + if( !$this->customer->isIPvXEnabled($proto) ) { + return new DiagnosticResult( + name: "No " . IXP::protocol($proto) . " IRRDB prefixes, " . IXP::protocol($proto) . ' not enabled for this member', + result: DiagnosticResult::TYPE_TRACE, + narrative: IXP::protocol($proto) . ' not enabled for this member', + ); + } + + try { + $irrdblog = IrrdbUpdateLog::where( [ 'cust_id' =>$customer->id ] )->firstOrFail(); + + $m = 'prefix_v' . $proto; + + if( $irrdblog->$m === null ) { + // the exception is irrelevant as we just want to catch and send a diagnostic result. + throw new Exception(); + } + } catch( Exception ) { + return new DiagnosticResult( + name: "IRRDB prefixes have never been updated for " . IXP::protocol($proto), + result: DiagnosticResult::TYPE_ERROR, + narrative: "IRRDB prefixes have never been updated for " . IXP::protocol($proto), + ); + } + + $count = IrrdbPrefix::where( 'customer_id',$customer->id ) + ->where( 'protocol', $proto ) + ->count(); + + if( $count === 0 ) { + return new DiagnosticResult( + name: "There are zero IRRDB prefixes for " . IXP::protocol($proto) . " (last update was " . $irrdblog->$m->diffForHumans() . ")", + result: DiagnosticResult::TYPE_ERROR, + narrative: "There are zero IRRDB prefixes for " . IXP::protocol($proto) . " (last update was " . $irrdblog->$m->diffForHumans() . ")", + ); + } + + if( $irrdblog->$m < now()->subDay() ) { + return new DiagnosticResult( + name: "IRRDB prefixes (x{$count}) for " . IXP::protocol($proto) . " have not been updated since " . $irrdblog->$m->diffForHumans(), + result: DiagnosticResult::TYPE_WARN, + narrative: "IRRDB prefixes (x{$count}) for " . IXP::protocol($proto) . " have not been updated since " . $irrdblog->$m->diffForHumans(), + ); + } + + + return new DiagnosticResult( + name: "IRRDB prefixes (x{$count}) for " . IXP::protocol($proto) . " last updated " . $irrdblog->$m->diffForHumans(), + result: DiagnosticResult::TYPE_GOOD, + narrative: "IRRDB prefixes (x{$count}) for " . IXP::protocol($proto) . " last updated " . $irrdblog->$m->diffForHumans(), + ); + + } + + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/PhysicalInterfaceDiagnosticSuite.php b/app/Services/Diagnostics/Suites/PhysicalInterfaceDiagnosticSuite.php new file mode 100644 index 000000000..994390f29 --- /dev/null +++ b/app/Services/Diagnostics/Suites/PhysicalInterfaceDiagnosticSuite.php @@ -0,0 +1,456 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class PhysicalInterfaceDiagnosticSuite extends DiagnosticSuite +{ + public const string DIAGNOSTIC_SUITE_NAME = 'Physical Interfaces Overview'; + + public const string DIAGNOSTIC_SUITE_DESCRIPTION = "Physical Interfaces overview diagnostics."; + + public const string DIAGNOSTIC_SUITE_TYPE = 'PHYSICAL_INTERFACE'; + + private VirtualInterface $vi; + + private SNMP|bool $snmpClient; + + private bool $stale = true; + + private static string $badgeStale = 'Stale'; + private static string $badgeLive = 'Live'; + + + + public function __construct( + private PhysicalInterface $pi, + ) { + + if( $pi?->switchPort ) { + $this->name = $pi->switchPort->switcher->name . ' :: ' . $pi->switchPort->name . ' [Physical Interface #' . $pi->id . ']'; + } else { + $this->name = 'Physical Interface #' . $pi->id; + } + + $this->description = 'Physical Interfaces general diagnostics.'; + $this->type = 'INTERFACE'; + + if( empty( $pi?->switchPort->switcher->snmppasswd ) ) { + $this->snmpClient = false; + } else { + $this->snmpClient = new SNMP( $pi->switchPort->switcher->hostname, $pi->switchPort->switcher->snmppasswd ); + } + + parent::__construct(); + } + + /** + * Run the diagnostics suite + */ + public function run(): PhysicalInterfaceDiagnosticSuite + { + $this->results->add( $this->switchportLastPoll() ); + $this->results->add( $this->switchportCanPoll() ); + + $this->results->add( new DiagnosticResult( + name: "Switch port last change registered " + . ( $this->pi->switchPort->ifLastChange ? Carbon::parse($this->pi->switchPort->ifLastChange)->diffForHumans() : 'never' ), + result: DiagnosticResult::TYPE_DEBUG, + narrative: "Switch port last change counter: " + . ( $this->pi->switchPort->ifLastChange ? Carbon::parse($this->pi->switchPort->ifLastChange)->format('Y-m-d H:i:s') : 'never' ), + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ) ); + + $this->results->add( $this->mtu() ); + + $this->results->add( $this->adminStatus() ); + $this->results->add( $this->operatingStatus() ); + $this->results->add( $this->switchPortActive() ); + $this->results->add( $this->speed() ); + $this->results->add( $this->mauState() ); + + + return $this; + } + + + private function snmpReachError($mainName) { + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_WARN, + narrative: "SNMP host cannot be reached", + ); + } + + /** + * Examine the physical interface last poll and provide information on it. + * + * @return DiagnosticResult + */ + private function switchportLastPoll(): DiagnosticResult + { + $mainName = "Switch port information current?"; + + $lastPolled = Carbon::parse( $this->pi->switchPort->lastSnmpPoll ); + + if( now()->diffInHours( $lastPolled ) >= 1 || is_null($this->pi->switchPort->lastSnmpPoll ) ) { + return new DiagnosticResult( + name: $mainName . " No, last polled: " . $lastPolled ? $lastPolled->diffForHumans() : 'never', + result: DiagnosticResult::TYPE_WARN, + narrative: "No, last polled: " . $lastPolled ? $lastPolled->diffForHumans() : 'never', + ); + } + + return new DiagnosticResult( + name: $mainName . " Yes, last polled: " . $lastPolled->diffForHumans(), + result: DiagnosticResult::TYPE_DEBUG, + narrative: "SNMP information has been recently retrieved for this port.", + ); + } + + /** + * We want to poll the port now to (a) make sure we can and (b) use live data + * for the remaining tests without making multiple snmp get requests. + * + * @return DiagnosticResult + */ + private function switchportCanPoll(): DiagnosticResult + { + $mainName = "Can poll switch port via snmp?"; + + $before = $this->pi->switchPort->lastSnmpPoll; + + while( $before === now()->format('Y-m-d H:i:s') ) { + sleep(1); + } + + $this->pi->switchPort->snmpUpdate( $this->snmpClient ); + + if( $before !== $this->pi->switchPort->lastSnmpPoll->format('Y-m-d H:i:s') ) { + $this->stale = false; + return new DiagnosticResult( + name: $mainName . " Yes, refreshed successfully now", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "SNMP information has been retrieved for this port.", + ); + } + + $this->stale = true; + return new DiagnosticResult( + name: $mainName . " No, could not poll the switch port", + result: DiagnosticResult::TYPE_FATAL, + narrative: "As we could not poll the switch port via SNMP, all other diagnostics tests relying on this information may not be accurate.", + ); + + } + + /** + * Examine the physical interface mtu and provide information on it. + * + * @return DiagnosticResult + */ + private function mtu(): DiagnosticResult + { + $mainName = " MTU - "; + + if ( $this->pi->switchPort->ifMtu < 1500 ) { + + return new DiagnosticResult( + name: $mainName . "switch port is reporting a MTU of {$this->pi->switchPort->ifMtu} which is <1500", + result: DiagnosticResult::TYPE_FATAL, + narrative: "Switch port is reporting a MTU of <1500", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if( $this->pi->switchPort->ifMtu === $this->pi->virtualInterface->mtu ) { + + return new DiagnosticResult( + name: $mainName . "both set to {$this->pi->virtualInterface->mtu}", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "Switch port matches configured MTU of {$this->pi->virtualInterface->mtu}", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if ( !$this->pi->virtualInterface->mtu ) { + + return new DiagnosticResult( + name: $mainName ."configured as null/0 but switch port reports " . $this->pi->switchPort->ifMtu ?: 'null', + result: DiagnosticResult::TYPE_INFO, + narrative: "Configured MTU is null/0 but switch port reports " . $this->pi->switchPort->ifMtu ?: 'null', + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + return new DiagnosticResult( + name: $mainName . ( $this->pi->virtualInterface->mtu ?? 'null' ) . " configured but switch port reports ({$this->pi->switchPort->ifMtu})", + result: DiagnosticResult::TYPE_ERROR, + narrative: "Configured MTU of {$this->pi->virtualInterface->mtu} does not match the switch port MTU of {$this->pi->switchPort->ifMtu}", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + + + + /** + * Examine the physical interface status and provide information on it. + * + * @return DiagnosticResult + */ + private function adminStatus(): DiagnosticResult + { + $mainName = 'Admin status: ' . ( $this->pi->status ? 'Enabled' : 'Disabled' ) + . " in IXP Manager; Switch port configured as " . Iface::$IF_ADMIN_STATES[$this->pi->switchPort->ifAdminStatus]; + + if( $this->pi->status && $this->pi->switchPort->ifAdminStatus != Iface::IF_ADMIN_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "The switch configuration state of the switch port is not up - perhaps it is shutdown/disabled in switch configuration? " + . "However, the configuration of the physical interface on IXP Manager is enabled.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if( !$this->pi->status && $this->pi->switchPort->ifAdminStatus == Iface::IF_ADMIN_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "The switch configuration state of the switch port is up. " + . "However, the configuration of the physical interface on IXP Manager is disabled.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if( $this->pi->status && $this->pi->switchPort->ifAdminStatus == Iface::IF_ADMIN_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The physical interface admin status is up.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_WARN, + narrative: "Unknown administrative (configuration) state on switch.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + + /** + * Examine the physical interface status and provide information on it. + * + * @return DiagnosticResult + */ + private function switchPortActive(): DiagnosticResult + { + $mainName = 'Within IXP Manager, the phsyical interface is ' + . ( $this->pi->status ? 'enabled' : 'disabled' ) + . ' and the switchport is ' + . ( $this->pi->switchPort->active ? 'active' : 'inactive' ); + + if( $this->pi->status != $this->pi->switchPort->active ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "IXP Manager is configured with conflicted state for physical interface and switch port.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_DEBUG, + narrative: "IXP Manager is configured with a consistent state for physical interface and switch port.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + + + /** + * Examine the physical interface status and provide information on it. + * + * @return DiagnosticResult + */ + private function operatingStatus(): DiagnosticResult + { + $mainName = 'Operating status: ' . ( $this->pi->status ? 'Enabled' : 'Disabled' ) + . " in IXP Manager; Switch port reports as " . Iface::$IF_OPER_STATES[$this->pi->switchPort->ifOperStatus]; + + if( $this->pi->status && $this->pi->switchPort->ifOperStatus != Iface::IF_OPER_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "The switch port is not up - perhaps it is shutdown/disabled in switch configuration or disconnected or no light rx? " + . "The configuration of the physical interface on IXP Manager is enabled.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if( !$this->pi->status && $this->pi->switchPort->ifOperStatus == Iface::IF_OPER_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "The switch port is up. " + . "However, the configuration of the physical interface on IXP Manager is disabled.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else if( $this->pi->status && $this->pi->switchPort->ifOperStatus == Iface::IF_OPER_STATUS_UP ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_GOOD, + narrative: "The switch port is up/up.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_WARN, + narrative: "Unknown port operating state on switch.", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + + + /** + * Examine the Switch Port physical speed and provide information on it. + * + * @return DiagnosticResult + */ + private function speed(): DiagnosticResult + { + $mainName = "Switch port speed configured as {$this->pi->speed()}; actual switch port speed: " . ( PhysicalInterface::$SPEED[$this->pi->switchPort->ifSpeed] ?? $this->pi->switchPort->ifSpeed ?? 'null' ); + + if( $this->pi->switchPort->ifSpeed == $this->pi->speed ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The configured and actual switch port speeds match", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } else { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_ERROR, + narrative: "The configured and actual switch port speeds DO NOT match", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + } + + } + + /** + * Examine the Switch Port physical speed and provide information on it. + * + * @return DiagnosticResult[] + */ + private function mauState(): array + { + $results = []; + + if( !$this->pi->switchPort->switcher->mauSupported ) { + + return [ new DiagnosticResult( + name: "Switch does not support MAU (optic) information via SNMP", + result: DiagnosticResult::TYPE_INFO, + narrative: "Switch does not support MAU (optic) information via SNMP", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ) ]; + + } + + + $results[] = new DiagnosticResult( + name: "Switch supports MAU (optic) information via SNMP", + result: DiagnosticResult::TYPE_TRACE, + narrative: "Switch supports MAU (optic) information via SNMP", + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + $results[] = new DiagnosticResult( + name: "MAU type: " . $this->pi->switchPort->mauType . ( $this->pi->switchPort->mauJacktype ? '(jack type: ' . $this->pi->switchPort->mauJacktype . ')' : '' ), + result: DiagnosticResult::TYPE_INFO, + narrative: "MAU type: " . $this->pi->switchPort->mauType . ( $this->pi->switchPort->mauJacktype ? '(jack type: ' . $this->pi->switchPort->mauJacktype . ')' : '' ), + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + $results[] = new DiagnosticResult( + name: "MAU state: " . $this->pi->switchPort->mauState, + result: DiagnosticResult::TYPE_DEBUG, + narrative: "MAU state: " . $this->pi->switchPort->mauState, + infoBadge: $this->stale ? self::$badgeStale : self::$badgeLive + ); + + + return $results; + + } + + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/RouterBgpSessionsDiagnosticSuite.php b/app/Services/Diagnostics/Suites/RouterBgpSessionsDiagnosticSuite.php new file mode 100644 index 000000000..76934f8a8 --- /dev/null +++ b/app/Services/Diagnostics/Suites/RouterBgpSessionsDiagnosticSuite.php @@ -0,0 +1,208 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class RouterBgpSessionsDiagnosticSuite extends DiagnosticSuite +{ + /** @var Router[] */ + private $routers = []; + + /** @var LookingGlassContract[] */ + private array $lg = []; + + /** + * @param VlanInterface $vli + * @param int $protocol + */ + public function __construct( + private readonly VlanInterface $vli, + private readonly int $protocol, + ) { + + $this->name = 'BGP Sessions over ' . $vli->vlan->name . ' via ' . $vli->getIPAddress($this->protocol)->address; + $this->description = " "; + $this->type = 'VLAN_INTERFACE'; + + $this->routers = Router::where( 'protocol', $protocol === 4 ? Router::PROTOCOL_IPV4 : Router::PROTOCOL_IPV6 ) + ->where( 'vlan_id', $vli->vlan->id ) + ->get(); + + parent::__construct(); + } + + /** + * Run the diagnostics suite + * @throws BindingResolutionException + */ + public function run(): RouterBgpSessionsDiagnosticSuite + { + foreach( $this->routers as $router ) { + + if( $router->hasApi() ) { + + $this->lg[$router->handle] = App::make( LookingGlassService::class )->forRouter( $router ); + + if( $status = json_decode( $this->lg[ $router->handle ]->status() ) ) { + + $this->results->add( new DiagnosticResult( + name: "Router {$router->handle} up, last reconfig " . + Carbon::parse( $status->status->last_reconfig )->diffForHumans(), + result: DiagnosticResult::TYPE_TRACE, + ) ); + + } else { + + $this->results->add( new DiagnosticResult( + name: "Router {$router->handle} not up or looking glass failure", + result: DiagnosticResult::TYPE_FATAL, + ) ); + continue; + } + + } else { + + $this->results->add( new DiagnosticResult( + name: "Router {$router->handle} does not have an API, skipping tests", + result: DiagnosticResult::TYPE_DEBUG + ) ); + continue; + } + + $this->results->add( $this->protocolStatus( $this->vli, $this->protocol, $router, $this->lg[ $router->handle ] ) ); + + } + + return $this; + } + + + /** + * Examine the Router Protocol Status and provide information on it. + * + * @return DiagnosticResult + */ + public function protocolStatus( VlanInterface $vli, int $protocol, Router $r, LookingGlassContract $lg ) + { + $mainName = "BGP status for {$r->handle} - "; + + // we have inconsistent protocol naming which needs to be corrected + if( $r->isType( Router::TYPE_ROUTE_SERVER ) ) { + $pb = "pb_" . sprintf( "%04d", $vli->id ) . "_as" . $vli->virtualInterface->customer->autsys; + } else { + $pb = "pb_as" . $vli->virtualInterface->customer->autsys . "_vli{$vli->id}_ipv{$protocol}"; + } + + try { + if( !( $bgpsum = json_decode( $lg->bgpNeighbourSummary( $pb ) ) ) ) { + + return new DiagnosticResult( + name: $mainName . 'could not query looking glass', + result: DiagnosticResult::TYPE_FATAL, + narrative: "API call to looking glass failed.", + ); + + } + } catch( \Exception $e ) { + + return new DiagnosticResult( + name: $mainName . 'exception thrown when querying looking glass', + result: DiagnosticResult::TYPE_FATAL, + narrative: $e->getMessage(), + ); + + } + + $bgpsum = $bgpsum->protocol; // narrow focus to what interests us + + if( !isset($bgpsum->import_limit) ) { + $bgpsum->import_limit = 0; + $max_prefixes = false; + } else { + $max_prefixes = true; + $max_prefixes_percent = (int) ($bgpsum->route_limit_at / $bgpsum->import_limit) * 100; + } + + $narrative = <<State: {$bgpsum->state}
+ Changed: {$bgpsum->state_changed}
+ Connection: {$bgpsum->connection}
+ Hold timer (now): {$bgpsum->hold_timer} ({$bgpsum->hold_timer_now})
+ Keepalive (now): {$bgpsum->keepalive} ({$bgpsum->keepalive_now})
+ Max prefixes: {$bgpsum->import_limit}
+ # Routes: {$bgpsum->route_limit_at}
+ ENDNARR; + + if( $bgpsum->state !== 'up' ) { + + return new DiagnosticResult( + name: $mainName . 'session state ' . $bgpsum->state, + result: DiagnosticResult::TYPE_ERROR, + narrativeHtml: $narrative, + ); + + } + + + if( $max_prefixes && $max_prefixes_percent > 80 ) { + + return new DiagnosticResult( + name: $mainName . "session up but max prefixes at {$max_prefixes_percent}% ({$bgpsum->route_limit_at}/{$bgpsum->import_limit})", + result: DiagnosticResult::TYPE_WARN, + narrativeHtml: $narrative, + ); + + } + + return new DiagnosticResult( + name: $mainName . "session up " . ( $max_prefixes ? "({$bgpsum->route_limit_at}/{$bgpsum->import_limit} prefixes) " : "(no max prefixes) " ) + . "(last keepalive " . ($bgpsum->keepalive-$bgpsum->keepalive_now) . "/{$bgpsum->keepalive})", + result: DiagnosticResult::TYPE_GOOD, + narrativeHtml: $narrative, + ); + } + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/TransceiverDiagnosticSuite.php b/app/Services/Diagnostics/Suites/TransceiverDiagnosticSuite.php new file mode 100644 index 000000000..8a140bb41 --- /dev/null +++ b/app/Services/Diagnostics/Suites/TransceiverDiagnosticSuite.php @@ -0,0 +1,383 @@ + + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class TransceiverDiagnosticSuite extends DiagnosticSuite +{ + public const string DIAGNOSTIC_SUITE_NAME = 'Transceiver Diagnostic'; + + public const string DIAGNOSTIC_SUITE_DESCRIPTION = "Transceiver diagnostics."; + + public const string DIAGNOSTIC_SUITE_TYPE = 'PHYSICAL_INTERFACE'; + + private SNMP|bool $snmpClient; + + + const OID_XCVR_DOM_TEMPERATURE = '.1.3.6.1.2.1.47.1.1.1.1.2.1003%02d201'; // %d => XX port number + const OID_XCVR_DOM_VOLTAGE = '.1.3.6.1.2.1.47.1.1.1.1.2.1003%02d202'; // %d => XX port number + + const OID_XCVR_DOM_LANE_SENSOR = '.1.3.6.1.2.1.47.1.1.1.1.2.1003%02d2%d%d'; // %d => XX port number + // %d => 1-4: Lane number + // %d => 1: DOM TX Bias Sensor + // => 2: DOM TX Power Sensor + // => 3: DOM RX Power Sensor + + const OID_XCVR_DOM_TEMPERATURE_UNITS = '.1.3.6.1.2.1.99.1.1.1.6.1003%02d201'; // %d => XX port number + const OID_XCVR_DOM_VOLTAGE_UNITS = '.1.3.6.1.2.1.99.1.1.1.6.1003%02d202'; // %d => XX port number + + const OID_XCVR_DOM_LANE_SENSOR_UNITS = '.1.3.6.1.2.1.99.1.1.1.6.1003%02d2%D%D'; // %d => XX port number + // %d => 1-4: Lane number + // %d => 1: DOM TX Bias Sensor + // => 2: DOM TX Power Sensor + // => 3: DOM RX Power Sensor + + const OID_XCVR_DOM_TEMPERATURE_THRESHOLD = '.1.3.6.1.4.1.30065.3.12.1.1.1.5.1003%02d201'; // %d => XX port number - "Sensor value 38.1 Celsius is within bounds" + const OID_XCVR_DOM_VOLTAGE_UNITS_THRESHOLD = '.1.3.6.1.4.1.30065.3.12.1.1.1.5.1003%02d202'; // %d => XX port number - "Sensor value 3.29 Volts is within bounds" + + + // 1 - "Sensor value 42.21 mA is within bounds" + // 2 - "Sensor value 1.0030 mW is within bounds" + // 3 - "Sensor value 0.6926 mW is within bounds" + const OID_XCVR_DOM_LANE_SENSOR_UNITS_THRESHOLD = '.1.3.6.1.4.1.30065.3.12.1.1.1.5.1003%02d2%d%d'; // %d => XX port number + // %d => 1-4: Lane number + // %d => 1: DOM TX Bias Sensor + // => 2: DOM TX Power Sensor + // => 3: DOM RX Power Sensor + + const OID_XCVR_SERIAL_NUMBER = '.1.3.6.1.2.1.47.1.1.1.1.11.1003%02d100'; // %d => XX port number + const OID_XCVR_MANUFACTURER = '.1.3.6.1.2.1.47.1.1.1.1.12.1003%02d100'; // %d => XX port number + const OID_XCVR_MODEL = '.1.3.6.1.2.1.47.1.1.1.1.13.1003%02d100'; // %d => XX port number + + + public function __construct( + private PhysicalInterface $pi, + ) { + + if( $pi?->switchPort ) { + $this->name = 'Transceiver diagnostics for: ' . $pi->switchPort->switcher->name . ' :: ' . $pi->switchPort->name . ' [Physical Interface #' . $pi->id . ']'; + } else { + $this->name = 'Physical Interface #' . $pi->id; + } + + if( empty( $pi?->switchPort->switcher->snmppasswd ) ) { + $this->snmpClient = false; + } else { + $this->snmpClient = new SNMP( $pi->switchPort->switcher->hostname, $pi->switchPort->switcher->snmppasswd ); + $this->snmpClient->disableCache(); + } + + parent::__construct(); + } + + /** + * Run the diagnostics suite + */ + public function run(): TransceiverDiagnosticSuite + { + + // check if we can even run these first + if( !$this->snmpClient ) { + + $this->results->add( new DiagnosticResult( + name: "Transceiver diagnostics not available via SNMP for this switch.", + result: DiagnosticResult::TYPE_WARN, + narrative: "Please log into the switch and run transceiver diagnostics manually.", + ) ); + + return $this; + } + + // check if we can even run these first + if( $this->pi->switchPort->switcher->os !== 'EOS' ) { + + $this->results->add( new DiagnosticResult( + name: "Transceiver diagnostics not available for non-Arista EOS switches currently.", + result: DiagnosticResult::TYPE_WARN, + narrative: "Please log into the switch and run transceiver diagnostics manually.", + ) ); + + return $this; + } + + $this->results->add( $this->info( $this->pi ) ); + $this->results->add( $this->temperature( $this->pi ) ); + $this->results->add( $this->voltage( $this->pi ) ); + $this->results->add( $this->lightLevels( $this->pi ) ); + + return $this; + } + + + /** + * Get general information on the transceiver + * + * @return DiagnosticResult + */ + private function temperature( PhysicalInterface $pi ): DiagnosticResult + { + $mainName = "Transceiver temperature - "; + + try { + $t = $this->snmpClient->get( sprintf( self::OID_XCVR_DOM_TEMPERATURE_THRESHOLD, $this->oidPort( $this->pi->switchPort->name ) ) ); + } catch( \Exception $e ) { + return new DiagnosticResult( + name: $mainName . "could not find xcvr temperature thresholds", + result: DiagnosticResult::TYPE_ERROR, + narrative: $e->getMessage(), + ); + } + + if( str_ends_with( $t, 'is within bounds' ) ) { + + return new DiagnosticResult( + name: $mainName . "{$t}", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "{$t}", + ); + + } + + return new DiagnosticResult( + name: $mainName . "{$t}", + result: DiagnosticResult::TYPE_ERROR, + narrative: "{$t}", + ); + + } + + + /** + * Get general information on the transceiver + * + * @return DiagnosticResult + */ + private function voltage( PhysicalInterface $pi ): DiagnosticResult + { + $mainName = "Transceiver voltage - "; + + try { + $v = $this->snmpClient->get( sprintf( self::OID_XCVR_DOM_VOLTAGE_UNITS_THRESHOLD, $this->oidPort( $this->pi->switchPort->name ) ) ); + } catch( \Exception $e ) { + return new DiagnosticResult( + name: $mainName . "could not find xcvr voltage thresholds", + result: DiagnosticResult::TYPE_ERROR, + narrative: $e->getMessage(), + ); + } + + if( str_ends_with( $v, 'is within bounds' ) ) { + + return new DiagnosticResult( + name: $mainName . "{$v}", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "{$v}", + ); + + } + + return new DiagnosticResult( + name: $mainName . "{$v}", + result: DiagnosticResult::TYPE_ERROR, + narrative: "{$v}", + ); + + } + + + /** + * Get general information on the transceiver + * + * const OID_XCVR_DOM_LANE_SENSOR_UNITS_THRESHOLD = '.1.3.6.1.4.1.30065.3.12.1.1.1.5.1003%d2%D%D'; + * // %d => XX port number + * // %d => 1-4: Lane number + * // %d => 1: DOM TX Bias Sensor + * // => 2: DOM TX Power Sensor + * // => 3: DOM RX Power Sensor + * + * @return DiagnosticResult[] + */ + private function lightLevels( PhysicalInterface $pi ): array + { + $mainName = "Light levels - "; + $results = []; + + $sensors = [ + 1 => 'DOM TX Bias Sensor', + 2 => 'DOM TX Power Sensor', + 3 => 'DOM RX Power Sensor', + ]; + + if( $pi->speed <= 10_000 ) { + $lanes = [1]; + } else { + $lanes = [ 1, 2, 3, 4 ]; + } + + $readings = []; + + foreach( array_keys( $sensors ) as $sensor ) { + foreach( $lanes as $lane ) { + + try { + $v = null; + $v = $this->snmpClient->get( sprintf( self::OID_XCVR_DOM_LANE_SENSOR_UNITS_THRESHOLD, $this->oidPort( $this->pi->switchPort->name ), $lane, $sensor ) ); + } catch( \Exception $e ) { + if( $lane > 1) { + continue; + } + + $results[] = new DiagnosticResult( + name: $mainName . "could not find {$sensors[$sensor]} for lane {$lane} thresholds", + result: DiagnosticResult::TYPE_ERROR, + narrative: $e->getMessage(), + ); + + $readings[ $sensor ][ $lane ] = 'ERR'; + + continue; + } + + if( str_ends_with( $v, 'is within bounds' ) ) { + + $results[] = new DiagnosticResult( + name: $mainName . "{$sensors[$sensor]} for lane {$lane} - {$v}", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "{$v}", + ); + + } else { + + $results[] = new DiagnosticResult( + name: $mainName . "{$sensors[$sensor]} for lane {$lane} - {$v}", + result: DiagnosticResult::TYPE_ERROR, + narrative: "{$v}", + ); + + } + + // "Sensor value 42.21 mA is within bounds" + // "Sensor value 1.0030 mW is within bounds" + // "Sensor value 0.6926 mW is within bounds" + $matches = []; + preg_match( "/Sensor value ([\d\.]+) ([a-zA-Z]+)\s.*/", $v, $matches ); + + if( isset( $matches[2] ) && $matches[2] == 'mW') { + $matches[1] = 10 * log10($matches[1]); // to dbm + } + $readings[ $sensor ][ $lane ] = sprintf( "%+2.2f", $matches[ 1 ] ); + + } + } + + $swoutput = <<{$swoutput}", + ); + + return $results; + + } + + /** + * Get general information on the transceiver + * + * @return DiagnosticResult + */ + private function info( PhysicalInterface $pi ): DiagnosticResult + { + $mainName = "Transceiver information - "; + + try { + $serial = trim( $this->snmpClient->get( sprintf( self::OID_XCVR_SERIAL_NUMBER, $this->oidPort($pi->switchPort->name) ) ) ); + $manuf = trim( $this->snmpClient->get( sprintf( self::OID_XCVR_MANUFACTURER, $this->oidPort($pi->switchPort->name) ) ) ); + $model = trim( $this->snmpClient->get( sprintf( self::OID_XCVR_MODEL, $this->oidPort($pi->switchPort->name) ) ) ); + } catch( \Exception $e ) { + return new DiagnosticResult( + name: $mainName . "could not find xcvr serial, model and/or manufacturer", + result: DiagnosticResult::TYPE_ERROR, + narrative: $e->getMessage(), + ); + } + + return new DiagnosticResult( + name: $mainName . "{$manuf} {$model}, serial #{$serial}", + result: DiagnosticResult::TYPE_INFO, + narrativeHtml: "Manufacturer: {$manuf}
Model: {$model}
Serial: {$serial}", + ); + } + + + /** + * PoC - assumes Arista right now + * @param string $name + * @return string + */ + private function oidPort( string $name ): string { + $matches = []; + preg_match( '/Ethernet(\d+).*/', $name, $matches ); + return sprintf( '%02d', (int)$matches[1] ); + } + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/VirtualInterfaceDiagnosticSuite.php b/app/Services/Diagnostics/Suites/VirtualInterfaceDiagnosticSuite.php new file mode 100644 index 000000000..45597397f --- /dev/null +++ b/app/Services/Diagnostics/Suites/VirtualInterfaceDiagnosticSuite.php @@ -0,0 +1,443 @@ + + * @author Laszlo Kiss + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class VirtualInterfaceDiagnosticSuite extends DiagnosticSuite +{ + public function __construct( + private readonly VirtualInterface $vi, + ) { + + $name = 'Connection to '; + + if( $vi->physicalInterfaces ) { + $name .= $vi->physicalInterfaces[0]?->switchPort?->switcher?->infrastructureModel->name + . ' - ' . $vi->physicalInterfaces[0]?->switchPort?->switcher?->name; + } + + $this->name = $name . '[Virtual Interface #' . $vi->id . ']'; + $this->description = "Virtual interfaces general diagnostics."; + $this->type = 'INTERFACE'; + + parent::__construct(); + } + + /** + * Run the diagnostics suite + */ + public function run(): VirtualInterfaceDiagnosticSuite + { + $this->results->add( $this->portType( $this->vi ) ); + $this->results->add( $this->sameSwitch( $this->vi ) ); + $this->results->add( $this->lag( $this->vi ) ); + $this->results->add( $this->lagSpeeds( $this->vi ) ); + $this->results->add( $this->lagName( $this->vi ) ); + $this->results->add( $this->trunk( $this->vi ) ); + $this->results->add( $this->mtu( $this->vi ) ); + + return $this; + } + + + /** + * Examine the virtual interface type and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function portType( VirtualInterface $vi ): DiagnosticResult { + + $mainName = 'Switch Port Type(s): '; + + if( $vi->physicalInterfaces->isEmpty() ) { + + return new DiagnosticResult( + name: $mainName . "can not determine type as there are no physical interfaces", + result: DiagnosticResult::TYPE_ERROR, + narrative: "Can not determine type as there are no physical interfaces for this virtual interface.", + ); + + } + + $piTypes = []; + foreach( $vi->physicalInterfaces as $pi ) { + $piTypes[] = $pi->switchPort->type; + } + + $piTypes = array_unique($piTypes); + + if( count($piTypes) > 1 ) { + + $piTypesDesc = []; + foreach( $piTypes as $piType ) { + $piTypesDesc[] = SwitchPort::$TYPES[ $piType ]; + } + + return new DiagnosticResult( + name: $mainName . "physical interfaces have mixed types: " . implode(', ', $piTypesDesc), + result: DiagnosticResult::TYPE_ERROR, + narrative: "There are multiple physical interfaces but they have mixed types: " . implode(', ', $piTypesDesc), + ); + } + + if( $vi->typePeering() ) { + return new DiagnosticResult( + name: $mainName . " peering", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The physical interface(s) type is: peering", + ); + } + + return new DiagnosticResult( + name: $mainName . $vi->resolveType(), + result: DiagnosticResult::TYPE_WARN, + narrative: "The physical interface(s) type is: " . $vi->resolveType(), + ); + + } + + + /** + * Examine the virtual interface physical interfaces position in switch and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function sameSwitch( VirtualInterface $vi ): DiagnosticResult { + $mainName = 'Physical Interfaces on the Same Switch'; + + if( count( $vi->physicalInterfaces ) <= 1 ) { + return new DiagnosticResult( + name: $mainName . ' - n/a as <=1 port', + result: DiagnosticResult::TYPE_TRACE, + narrative: "N/A as this virtual interface does not have multiple physical interfaces.", + ); + } + + if( $vi->sameSwitchForEachPI() ) { + return new DiagnosticResult( + name: $mainName . ' - yes', + result: DiagnosticResult::TYPE_DEBUG, + narrative: "The physical interfaces of this virtual interface are connected to the same switch", + ); + } + + return new DiagnosticResult( + name: $mainName . ' - no, this is not support!', + result: DiagnosticResult::TYPE_ERROR, + narrative: "The physical interfaces are on different switches", + ); + } + + + /** + * Examine the virtual interface LAG and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function lag( VirtualInterface $vi ): DiagnosticResult { + + $mainName = 'LAG/LACP Configuration'; + + $numPis = count( $vi->physicalInterfaces ); + $lacpMode = $vi->fastlacp ? 'fast' : 'slow'; + + if( $numPis > 1 ) { + + if( $vi->lag_framing ) { + + return new DiagnosticResult( + name: $mainName . " - yes with {$lacpMode} timeout", + result: DiagnosticResult::TYPE_INFO, + narrative: "Configured as a LAG with " . $lacpMode . " timeout", + ); + + } else { // !$vi->lag_framing + + return new DiagnosticResult( + name: $mainName . ' - no BUT there are multiple physical interfaces!', + result: DiagnosticResult::TYPE_ERROR, + narrative: "Multiple physical interfaces but not configured as a LAG", + ); + } + + } else if( $numPis === 1 ) { + + if( $vi->lag_framing ) { + + return new DiagnosticResult( + name: $mainName . " - configured as single member LAG with {$lacpMode} timeout", + result: DiagnosticResult::TYPE_INFO, + narrative: "Configured as a single member LAG with " . $lacpMode . " timeout", + ); + + } else { // !$this->vi->lag_framing + + return new DiagnosticResult( + name: $mainName . ' - no', + result: DiagnosticResult::TYPE_TRACE, + narrative: "Single physical interface and not configured as a LAG", + ); + } + } + + // no physical interfaces + return new DiagnosticResult( + name: $mainName . ' - n/a, no physical interfaces', + result: DiagnosticResult::TYPE_TRACE, + narrative: "No physical interfaces configured for this connection", + ); + } + + + /** + * All ports in a LAG have the same speed? + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function lagSpeeds( VirtualInterface $vi ): DiagnosticResult { + + $mainName = 'LAG - Port Speeds Match?'; + + $numPis = count( $vi->physicalInterfaces ); + + if( $numPis <= 1 ) { + + // no physical interfaces + return new DiagnosticResult( + name: $mainName . ' - n/a, applies only if multiple physical interfaces', + result: DiagnosticResult::TYPE_TRACE, + narrative: "The connection does not have multiple physical interfaces and so we cannot compare speeds.", + ); + + } + + $speeds = []; + + foreach( $vi->physicalInterfaces as $pi ) { + $speeds[] = $pi->speed(); + } + + $speeds = array_unique($speeds); + + if( count( $speeds ) > 1 ) { + + return new DiagnosticResult( + name: $mainName . " - no, multiple speeds found: " . implode( ', ', $speeds ), + result: DiagnosticResult::TYPE_ERROR, + narrative: "Physical interfaces in a LAG port must all have the same speed but we found different speeds configured.", + ); + + } + + return new DiagnosticResult( + name: $mainName . ' - yes, all speeds configured as ' . array_pop( $speeds ), + result: DiagnosticResult::TYPE_INFO, + narrative: "Physical interfaces in a LAG port must all have the same speed, which is what we found.", + ); + + } + + + /** + * Examine the virtual interface LAG framing and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function lagName(VirtualInterface $vi): DiagnosticResult { + + $mainName = 'LAG Interface Naming'; + + if( !$vi->lag_framing && count( $vi->physicalInterfaces ) <= 1 ) { + return new DiagnosticResult( + name: $mainName . " - n/a, no LACP configuration", + result: DiagnosticResult::TYPE_TRACE, + narrative: "N/A - LAG framing not set and <= 1 physical interface", + ); + } + + if( !$vi->name || !$vi->channelgroup ) { + + $narratives = []; + + if(!$vi->name) { + $narratives[] = "no name"; + } else if(!$vi->channelgroup) { + $narratives[] = "no channel group number"; + } + + $narrative = implode(', ', $narratives); + + return new DiagnosticResult( + name: $mainName . " - LAG framing but {$narrative} defined", + result: DiagnosticResult::TYPE_ERROR, + narrative: "LAG framing required but " . $narrative . " defined on the virtual interface", + ); + } + + + $switchIds = SwitchPort::join( 'physicalinterface', 'switchport.id', '=', 'physicalinterface.switchportid' ) + ->join( 'virtualinterface', 'virtualinterface.id', '=', 'physicalinterface.virtualinterfaceid' ) + ->where( 'virtualinterface.id', $vi->id ) + ->pluck('switchport.switchid'); + + $bundleNamesCount = VirtualInterface::select('virtualinterface.id') + ->where( 'virtualinterface.name', $vi->name ) + ->where( 'virtualinterface.channelgroup', $vi->channelgroup ) + ->join( 'physicalinterface', 'virtualinterface.id', '=', 'physicalinterface.virtualinterfaceid' ) + ->join( 'switchport', 'physicalinterface.switchportid', '=', 'switchport.id' ) + ->whereIn( 'switchport.switchid', $switchIds ) + ->groupBy('virtualinterface.id') + ->get()->toArray(); + + if( count($bundleNamesCount) > 1 ) { + return new DiagnosticResult( + name: $mainName . " - LAG bundle name not unique!", + result: DiagnosticResult::TYPE_ERROR, + narrative: "LAG interface bundle name (" . $vi->bundleName() . ") is not unique for the switch", + ); + } else { + return new DiagnosticResult( + name: $mainName . " - unique bundle name ({$vi->bundleName()})", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "LAG interface bundle name (" . $vi->bundleName() . ") is unique for the switch", + ); + } + } + + + /** + * Examine the virtual interface VLAN and Trunks and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function trunk( VirtualInterface $vi ): DiagnosticResult { + $mainName = 'Trunk / 802.1q Configuration'; + + $numVlis = count( $vi->vlanInterfaces ); + + if( $numVlis > 1 ) { + + if( $vi->trunk ) { + return new DiagnosticResult( + name: $mainName . " - yes and >1 vlan interfaces", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "More than one vlan interface and so correctly configured as a trunk port", + ); + + } else { // !$vi->trunk + + return new DiagnosticResult( + name: $mainName . " - no but >1 vlan interfaces", + result: DiagnosticResult::TYPE_ERROR, + narrative: "Multiple vlan interfaces exist but virtual interface is not configured as a trunk port", + ); + + } + + } else if( $numVlis === 1 ) { + + if( $vi->trunk ) { + + return new DiagnosticResult( + name: $mainName . " - yes but only one vlan interface", + result: DiagnosticResult::TYPE_INFO, + narrative: "Configured as a trunk port while there is only one vlan interface", + ); + + } else { // !$vi->trunk + + return new DiagnosticResult( + name: $mainName . " - no and single vlan interface", + result: DiagnosticResult::TYPE_DEBUG, + narrative: "Single vlan interface and not configured as a trunk port", + ); + + } + } + + return new DiagnosticResult( + name: $mainName . " - n/a, no vlan interfaces", + result: DiagnosticResult::TYPE_WARN, + narrative: "No VLAN interfaces configured for this virtual interface", + ); + + } + + + + /** + * Examine the virtual interface MTU values and provide information on it. + * + * @param VirtualInterface $vi + * @return DiagnosticResult + */ + public function mtu(VirtualInterface $vi): DiagnosticResult { + $mainName = 'L2 MTU - '; + + if(is_null($vi->mtu) || $vi->mtu === 1500 || $vi->mtu >= 9000) { + return new DiagnosticResult( + name: $mainName . "set to " . ( $vi->mtu ?: 'null' ), + result: DiagnosticResult::TYPE_DEBUG, + narrative: "L2 MTU is set to " . ( $vi->mtu ?: 'null' ), + ); + } else if ($vi->mtu < 1500) { + return new DiagnosticResult( + name: $mainName . "<1500 (" . $vi->mtu . ")", + result: DiagnosticResult::TYPE_ERROR, + narrative: "L2 MTU on virtual interface is <1500 (" . $vi->mtu . ")", + ); + } + + return new DiagnosticResult( + name: $mainName . "non-standard L2 MTU {$vi->mtu}", + result: DiagnosticResult::TYPE_WARN, + narrative: "Non-standard L2 MTU on the virtual interface: " . $vi->mtu, + ); + } + + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/VlanInterfaceL2DiagnosticSuite.php b/app/Services/Diagnostics/Suites/VlanInterfaceL2DiagnosticSuite.php new file mode 100644 index 000000000..5286de914 --- /dev/null +++ b/app/Services/Diagnostics/Suites/VlanInterfaceL2DiagnosticSuite.php @@ -0,0 +1,108 @@ + + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class VlanInterfaceL2DiagnosticSuite extends DiagnosticSuite +{ + + /** + * @param VlanInterface $vli + */ + public function __construct( + private readonly VlanInterface $vli, + ) { + + $this->name = 'Vlan Interface / L2 diagnostics on ' . $vli->vlan->name; + $this->description = " "; + $this->type = 'VLAN_INTERFACE'; + + parent::__construct(); + } + + /** + * Run the diagnostics suite + * @throws BindingResolutionException + */ + public function run(): VlanInterfaceL2DiagnosticSuite + { + + $this->results->add( $this->arping( $this->vli ) ); + + return $this; + } + + + + /** + * + * @return DiagnosticResult[] + */ + public function arping( VlanInterface $vli ): array + { + $results = []; + + foreach( $vli->layer2addresses as $l2a ) { + + $mainName = $l2a->macFormatted(':') . ' responds to arp pings'; + + $result = Process::run( sprintf( config( "ixp.exec.arping.{$vli->vlanid}" ), $l2a->macFormatted(':') ) ); + + if( $result->successful() ) { + + $results[] = new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_GOOD, + narrativeHtml: "
{$result->output()}
", + ); + + } + + $results[] = new DiagnosticResult( + name: $mainName . ' - no, see detail for more information', + result: DiagnosticResult::TYPE_ERROR, + narrativeHtml: "
{$result->output()}
", + ); + + } + + return $results; + } + +} \ No newline at end of file diff --git a/app/Services/Diagnostics/Suites/VlanInterfaceL3DiagnosticSuite.php b/app/Services/Diagnostics/Suites/VlanInterfaceL3DiagnosticSuite.php new file mode 100644 index 000000000..9404e56e2 --- /dev/null +++ b/app/Services/Diagnostics/Suites/VlanInterfaceL3DiagnosticSuite.php @@ -0,0 +1,108 @@ + + * @category IXP + * @package IXP\Services\Diagnostics + * @copyright Copyright (C) 2009 - 2024 Internet Neutral Exchange Association Company Limited By Guarantee + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL V2.0 + */ + +class VlanInterfaceL3DiagnosticSuite extends DiagnosticSuite +{ + + /** + * @param VlanInterface $vli + * @param int $protocol + */ + public function __construct( + private readonly VlanInterface $vli, + private readonly int $protocol, + ) { + + $this->name = 'Vlan Interface / L3 diagnostics on ' . $vli->vlan->name . ' via ' . $vli->getIPAddress($this->protocol)->address; + $this->description = " "; + $this->type = 'VLAN_INTERFACE'; + + parent::__construct(); + } + + /** + * Run the diagnostics suite + * @throws BindingResolutionException + */ + public function run(): VlanInterfaceL3DiagnosticSuite + { + + $this->results->add( $this->ping( $this->vli, $this->protocol ) ); + + return $this; + } + + + /** + * + * @return DiagnosticResult + */ + public function ping( VlanInterface $vli, int $protocol ): DiagnosticResult + { + $mainName = $vli->getIPAddress($protocol)->address . ' responds to pings'; + + $result = Process::run( sprintf( config( "ixp.exec.ping{$protocol}" ), $vli->getIPAddress($protocol)->address ) ); + + if( $result->successful() ) { + + return new DiagnosticResult( + name: $mainName, + result: DiagnosticResult::TYPE_GOOD, + narrativeHtml: "
{$result->output()}
", + ); + + } + + return new DiagnosticResult( + name: $mainName . ' - no, see detail for more information', + result: DiagnosticResult::TYPE_ERROR, + narrativeHtml: "
{$result->output()}
", + ); + + } + +} \ No newline at end of file diff --git a/app/Services/DotEnvWriter.php b/app/Services/DotEnvWriter.php new file mode 100644 index 000000000..414d95bbb --- /dev/null +++ b/app/Services/DotEnvWriter.php @@ -0,0 +1,402 @@ +sourceFile = $sourceFile; + $this->content = file_get_contents( $sourceFile ); + $this->parse(); + } + + /** + * Set the value of an environment variable, + * updated if exists and enabled if disabled, + * added if it doesn't exist + * + * @param string $key The key + * @param string $value The value + * @param string|null $description The description (remarked line before variable, only on new variable) + * + * @return self + * @throws InvalidArgumentException If a new key contains invalid characters + */ + public function set( string $key, string $value, string|null $description = null ): self + { + // If the key exists, replace its value + if( $lineId = $this->findVariable( $key ) ) { + $this->variables[ $lineId ][ "value" ] = $this->formatValue( $value ); + $this->variables[ $lineId ][ "status" ] = true; + $this->variables[ $lineId ][ "changed" ] = true; + $this->changed = true; + } else { + if( $description ) { + $this->variables[] = [ + "key" => null, + "value" => "# " . $description, + "status" => false, + "changed" => true, + ]; + } + $this->variables[] = [ + "key" => $key, + "value" => $this->formatValue( $value ), + "status" => true, + "changed" => true, + ]; + $this->changed = true; + } + + return $this; + } + + /** + * Set more values at once + * + * @param array $values The values as key => value pairs + * @return self + */ + public function setValues( array $values ): self + { + foreach( $values as $key => $value ) { + $this->set( $key, $value ); + } + + return $this; + } + + /** + * Delete an environment variable if present + * + * @param string $key The key + * @param bool $removeDescription Remove the description before the variable + * @return self + */ + public function delete( string $key, bool $removeDescription = false ): self + { + if( $lineId = $this->findVariable( $key ) ) { + unset( $this->variables[ $lineId ] ); + if( $removeDescription && $this->variables[ $lineId - 1 ][ "key" ] === null ) { + unset( $this->variables[ $lineId - 1 ] ); + } + $this->changed = true; + } + + return $this; + } + + /** + * Comment out an environment variable if present + * + * @param string $key The key + * @return self + */ + public function disable( string $key ): self + { + if( $lineId = $this->findVariable( $key ) ) { + $this->variables[ $lineId ][ "status" ] = false; + $this->variables[ $lineId ][ "changed" ] = true; + $this->changed = true; + } + + return $this; + } + + /** + * Uncomment out an environment variable if present + * + * @param string $key The key + * @return self + */ + public function enable( string $key ): self + { + if( $lineId = $this->findVariable( $key ) ) { + $this->variables[ $lineId ][ "status" ] = true; + $this->variables[ $lineId ][ "changed" ] = true; + $this->changed = true; + } + + return $this; + } + + + + /** + * States if one or more values has changed + * + * @return bool + */ + public function hasChanged(): bool + { + return $this->changed; + } + + /** + * Returns the id of the variable array or the full content for a variable is present + * + * @param string $key The key + * @param bool $full Give full content of the found variable + * @return array|int|false + */ + public function get( string $key, bool $full = false ): array|int|false + { + $lineId = $this->findVariable( $key ); + if ($full) { + if($lineId !== false) { + return [$lineId => $this->variables[ $lineId ]]; + } else { + return false; + } + } else { + return $lineId; + } + } + + /** + * Returns all full variable collection parsed + * + * @return array + */ + public function getAll(): array + { + return $this->variables; + } + + /** + * Returns the variable collection without empty lines, key as env key + * + * @return array + */ + public function getVariables(): array + { + $varList = []; + foreach($this->variables as $var) { + if(!is_null($var["key"])) { + $varList[$var["key"]] = ["value" => $var["value"], "status" => $var["status"]]; + } + } + return $varList; + } + + /** + * Write the contents to the env file + * + * @param bool $force By default, we only write when something has changed, but you can force to write the file + * + * @return void + */ + public function write( bool $force = false ): void + { + if( $this->hasChanged() || $force ) { + + $content = ""; + foreach($this->variables as $lineId => $variable) { + if(is_null($variable["key"])) { + $pre = ""; + if( !str_starts_with( $variable[ "value" ], "#") && trim($variable[ "value" ]) !== '' ) { + $pre = "# "; + } + $content .= $pre.$variable["value"]."\n"; + } else if($variable["status"] === false) { + $content .= "# ".$variable["key"]."=".$this->escapeValue($variable["value"])."\n"; + } else { + $content .= $variable["key"]."=".$this->escapeValue($variable["value"])."\n"; + } + } + file_put_contents($this->sourceFile, $content, LOCK_EX); + } + } + + /** + * Check if a variable exists or not + * + * @param string $key The key + * @return bool + */ + public function exists( string $key ): bool + { + return in_array( $key, array_column( $this->variables, 'key' ) ); + } + + /** + * Find a variable line id in the $variables array + * + * @param string $key + * @return false|int + */ + protected function findVariable( string $key ): false|int + { + $result = false; + foreach($this->variables as $index => $variable) { + if($variable["key"] === $key) { $result = $index; break; } + } + return $result; + } + + /** + * Determines whether the specified key is valid name for .env files. + * + * @param string $key The key + * + * @return bool + */ + protected function isValidName( string $key ): bool + { + return (bool)preg_match( '/^[\w\.]+$/', $key ); + } + + /** + * Parses the environment file line by line and store the variables + */ + protected function parse(): void + { + $lines = preg_split( '/\r\n|\r|\n/', $this->content ); + + foreach( $lines as $line ) { + + $line = trim($line); + + if( mb_strlen( $line ) && !( mb_strpos( $line, '#' ) === 0 ) ) { + [ $key, $value ] = explode( '=', $line ); + $this->variables[] = [ + "key" => $key, + "value" => $this->formatValue( $value ), + "status" => true, + "changed" => false, + ]; + } else { + $validVariable = preg_match( "/^#\s{0,}(\w+)=(.+)$/", $line, $matches ); + if( $validVariable ) { + $this->variables[] = [ + "key" => $matches[ 1 ], + "value" => $this->formatValue( $matches[ 2 ] ), + "status" => false, + "changed" => false, + ]; + } else { + $this->variables[] = [ + "key" => null, + "value" => $line, + "status" => false, + "changed" => false, + ]; + } + } + } + } + + /** + * Strips quotes from the values when reading + * + * @param string $value The value + * @return string + */ + protected function stripQuotes( string $value ): string + { + return preg_replace( '/^(\'(.*)\'|"(.*)")$/u', '$2$3', $value ); + } + + /** + * Formats the value for human friendly output + * + * @param string $value The value + * @return string + */ + protected function formatValue( string $value ): string + { + $value = trim( explode( '#', trim( $value ) )[ 0 ] ); + + return htmlspecialchars($this->stripQuotes( $value ), ENT_QUOTES, 'UTF-8'); + } + + /** + * Escapes the value before writing to the contents + * + * @param string $value The value + * @return string + */ + protected function escapeValue( string $value ): string + { + if( $value !== '' ) { + $value = '"' . htmlspecialchars_decode( $value ) . '"'; + } + + return $value; + } +} \ No newline at end of file diff --git a/app/Services/FoilEngine.php b/app/Services/FoilEngine.php index 9d6adf22d..fcdcbe9ea 100644 --- a/app/Services/FoilEngine.php +++ b/app/Services/FoilEngine.php @@ -28,8 +28,7 @@ class FoilEngine implements EngineInterface { - /** @var PlatesEngine */ - private $engine; + private EngineFoil $engine; public function __construct( EngineFoil $engine ) { @@ -49,7 +48,7 @@ public function engine(): EngineFoil * * @return string */ - public function get( $path, array $data = array() ) + public function get( $path, array $data = array() ): string { return $this->engine->render( $path, $data ); } diff --git a/app/Services/Grapher.php b/app/Services/Grapher.php index ef7a81aba..c6012804e 100644 --- a/app/Services/Grapher.php +++ b/app/Services/Grapher.php @@ -85,7 +85,7 @@ class Grapher /** * Is the cache enabled? * - * @var bool + * @var integer */ private $cacheLifetime = 300; diff --git a/app/Services/Grapher/Backend/Mrtg.php b/app/Services/Grapher/Backend/Mrtg.php index 53917bfc1..c973f357f 100644 --- a/app/Services/Grapher/Backend/Mrtg.php +++ b/app/Services/Grapher/Backend/Mrtg.php @@ -471,7 +471,7 @@ public function png( Graph $graph ): string return @file_get_contents( $rrd->png() ); } catch( FileErrorException $e ) { Log::notice("[Grapher] {$this->name()} png(): could not load rrd file " . ( isset( $rrd ) ? $rrd->file() : '???' ) ); - return false; // FIXME check handling of this + return ''; // FIXME check handling of this } } diff --git a/app/Services/Grapher/Backend/Sflow.php b/app/Services/Grapher/Backend/Sflow.php index 0a76fe813..66db95c8d 100644 --- a/app/Services/Grapher/Backend/Sflow.php +++ b/app/Services/Grapher/Backend/Sflow.php @@ -141,12 +141,15 @@ public static function supports(): array 'protocols' => $graphProtocols, 'categories' => [ Graph::CATEGORY_BITS => Graph::CATEGORY_BITS, Graph::CATEGORY_PACKETS => Graph::CATEGORY_PACKETS ], - 'periods' => Graph::PERIODS, + 'periods' => Graph::PERIODS_EXTENDED, 'types' => Graph::TYPES, ], ]; } + + + /** * Get the data points for a given graph * @@ -203,7 +206,7 @@ public function png( Graph $graph ): string return @file_get_contents( $rrd->png() ); } catch( FileErrorException $e ) { Log::notice("[Grapher] {$this->name()} png(): could not load rrd file " . ( isset( $rrd ) ? $rrd->file() : '???' ) ); - return false; // FIXME check handling of this + return ''; // FIXME check handling of this } } @@ -225,7 +228,7 @@ public function rrd( Graph $graph ): string return $rrd->rrd(); } catch( FileErrorException $e ) { Log::notice("[Grapher] {$this->name()} rrd(): could not load rrd file {$rrd->file()}"); - return false; // FIXME check handling of this + return ''; // FIXME check handling of this } } diff --git a/app/Services/Grapher/Backend/Smokeping.php b/app/Services/Grapher/Backend/Smokeping.php index 7c89332b0..a65b8ae45 100644 --- a/app/Services/Grapher/Backend/Smokeping.php +++ b/app/Services/Grapher/Backend/Smokeping.php @@ -236,7 +236,7 @@ public function rrd( Graph $graph ): string * * However we allow per VLAN overrides. See the documentation for details above this: * - * @see https://docs.ixpmanager.org/grapher/smokeping/ + * @see https://docs.ixpmanager.org/latest/grapher/smokeping/ * * @param LatencyGraph $graph * diff --git a/app/Services/Grapher/Graph.php b/app/Services/Grapher/Graph.php index ce0c683ee..873baab45 100644 --- a/app/Services/Grapher/Graph.php +++ b/app/Services/Grapher/Graph.php @@ -23,6 +23,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html */ +use Carbon\Carbon; use IXP\Services\Grapher; use IXP\Contracts\Grapher\Backend as GrapherBackend; @@ -114,6 +115,22 @@ abstract class Graph */ public const PERIOD_YEAR = 'year'; + /** + * Custom periods allow any start time and an end time that is not "now" + */ + public const PERIOD_CUSTOM = 'custom'; + + /** + * Custom Period range parameters - start + */ + protected ?Carbon $custom_date_start; + + /** + * Custom Period range parameters - end + */ + protected ?Carbon $custom_date_end; + + /** * Default period */ @@ -129,22 +146,46 @@ abstract class Graph * Array of valid periods for drill down graphs */ public const PERIODS = [ - self::PERIOD_DAY => self::PERIOD_DAY, - self::PERIOD_WEEK => self::PERIOD_WEEK, - self::PERIOD_MONTH => self::PERIOD_MONTH, - self::PERIOD_YEAR => self::PERIOD_YEAR + self::PERIOD_DAY => self::PERIOD_DAY, + self::PERIOD_WEEK => self::PERIOD_WEEK, + self::PERIOD_MONTH => self::PERIOD_MONTH, + self::PERIOD_YEAR => self::PERIOD_YEAR, ]; + /** + * Array of valid periods for drill down graphs + */ + public const PERIODS_EXTENDED = [ + self::PERIOD_DAY => self::PERIOD_DAY, + self::PERIOD_WEEK => self::PERIOD_WEEK, + self::PERIOD_MONTH => self::PERIOD_MONTH, + self::PERIOD_YEAR => self::PERIOD_YEAR, + self::PERIOD_CUSTOM => self::PERIOD_CUSTOM, + ]; + + /** * Array of valid periods for drill down graphs */ public const PERIOD_DESCS = [ - self::PERIOD_DAY => 'Day', - self::PERIOD_WEEK => 'Week', - self::PERIOD_MONTH => 'Month', - self::PERIOD_YEAR => 'Year' + self::PERIOD_DAY => 'Day', + self::PERIOD_WEEK => 'Week', + self::PERIOD_MONTH => 'Month', + self::PERIOD_YEAR => 'Year', ]; + /** + * Array of valid periods for drill down graphs + */ + public const PERIOD_DESCS_EXTENDED = [ + self::PERIOD_DAY => 'Day', + self::PERIOD_WEEK => 'Week', + self::PERIOD_MONTH => 'Month', + self::PERIOD_YEAR => 'Year', + self::PERIOD_CUSTOM => 'Custom', + ]; + + /** * 'Bits' category for graphs */ @@ -706,26 +747,83 @@ public function period(): string /** * Set the period we should use * - * @param string $v + * @param string $value + * @param Carbon $start + * @param Carbon $end * * @return Graph Fluid interface * * @throws ParameterException */ - public function setPeriod( string $v ): Graph + public function setPeriod( string $value, ?Carbon $start = null, ?Carbon $end = null ): Graph { - if( !isset( $this::PERIODS[ $v ] ) ) { - throw new ParameterException('Invalid period ' . $v ); + if( !isset( $this::PERIODS_EXTENDED[ $value ] ) ) { + throw new ParameterException('Invalid period ' . $value ); } - if( $this->period() !== $v ) { + if( $this->period() !== $value ) { $this->wipe(); } - $this->period = $v; + $this->period = $value; + + if( $value === $this::PERIOD_CUSTOM ) { + $this->setPeriodStart( $start ); + $this->setPeriodEnd( $end ); + } else { + $this->setPeriodStart(); + $this->setPeriodEnd(); + } + + return $this; + } + + /** + * Set the start date for the custom period + * + * @param Carbon|null $value + * + * @return Graph + */ + public function setPeriodStart( ?Carbon $value = null ): Graph + { + $this->custom_date_start = $value; + return $this; + } + + /** + * Get the start date for the custom period + * + * @return Carbon|null $value + */ + public function periodStart(): ?Carbon + { + return $this->custom_date_start; + } + + /** + * Set the start date for the custom period + * + * @param Carbon|null $value + * + * @return Graph + */ + public function setPeriodEnd( ?Carbon $value = null ): Graph + { + $this->custom_date_end = $value; return $this; } + /** + * Get the end date for the custom period + * + * @return Carbon|null $value + */ + public function periodEnd(): ?Carbon + { + return $this->custom_date_end; + } + /** * Get the period description for a given period identifier * @@ -751,23 +849,23 @@ public function protocol(): string /** * Set the protocol we should use * - * @param string $v + * @param string $value * * @return Graph Fluid interface * * @throws ParameterException */ - public function setProtocol( string $v ): Graph + public function setProtocol( string $value ): Graph { - if( !isset( $this::PROTOCOLS[ $v ] ) ) { - throw new ParameterException('Invalid protocol ' . $v ); + if( !isset( $this::PROTOCOLS[ $value ] ) ) { + throw new ParameterException('Invalid protocol ' . $value ); } - if( $this->protocol() !== $v ) { + if( $this->protocol() !== $value ) { $this->wipe(); } - $this->protocol = $v; + $this->protocol = $value; return $this; } @@ -817,23 +915,23 @@ public static function resolveCategory( string $category ): string /** * Set the category we should use * - * @param string $v + * @param string $category_value * * @return Graph Fluid interface * * @throws ParameterException */ - public function setCategory( string $v ): Graph + public function setCategory( string $category_value ): Graph { - if( !isset( $this::CATEGORIES[ $v ] ) ) { - throw new ParameterException('Invalid category ' . $v ); + if( !isset( $this::CATEGORIES[ $category_value ] ) ) { + throw new ParameterException('Invalid category ' . $category_value ); } - if( $this->category() !== $v ) { + if( $this->category() !== $category_value ) { $this->wipe(); } - $this->category = $v; + $this->category = $category_value; return $this; } @@ -849,23 +947,23 @@ public function type(): string /** * Set the type we should use * - * @param string $v + * @param string $type_value * * @return Graph Fluid interface * * @throws ParameterException */ - public function setType( string $v ): Graph + public function setType( string $type_value ): Graph { - if( !isset( $this::TYPES[ $v ] ) ) { - throw new ParameterException('Invalid type ' . $v ); + if( !isset( $this::TYPES[ $type_value ] ) ) { + throw new ParameterException('Invalid type ' . $type_value ); } - if( $this->type() !== $v ) { + if( $this->type() !== $type_value ) { $this->wipe(); } - $this->type = $v; + $this->type = $type_value; return $this; } @@ -886,6 +984,15 @@ public function setParamsFromArray( array $params ): Graph if( isset( $params[$param] ) ) { $fn = 'set' . ucfirst( $param ); $this->$fn( $params[$param] ); + + if($param === 'period' && $params[ 'period' ] === $this::PERIOD_CUSTOM) { + if(isset($params[ 'period_start' ])) { + $this->setPeriodStart( Carbon::parse( $params[ 'period_start' ] ) ); + } + if(isset($params[ 'period_end' ])) { + $this->setPeriodEnd( Carbon::parse( $params[ 'period_end' ] ) ); + } + } } } return $this; @@ -900,11 +1007,16 @@ public function setParamsFromArray( array $params ): Graph */ public function getParamsAsArray(): array { - $p = []; + // todo: extend for PERIOD_CUSTOM + $parameters = []; foreach( [ 'type', 'category', 'period', 'protocol'] as $param ){ - $p[ $param ] = $this->$param(); + $parameters[ $param ] = $this->$param(); + if($param === 'period' && $this->period === $this::PERIOD_CUSTOM) { + $parameters[ 'period_start' ] = $this->custom_date_start; + $parameters[ 'period_end' ] = $this->custom_date_end; + } } - return $p; + return $parameters; } /** @@ -913,17 +1025,20 @@ public function getParamsAsArray(): array * Note that this function just sets the default if the input is invalid. * If you want to force an exception in such cases, use setPeriod() * - * @param string|null $v The user input value - * @param string|null $d The preferred default value + * @param string|null $value The user input value + * @param string|null $default The preferred default value * - * @return string The verified / sanitised / default value + * @return string|null The verified / sanitised / default value */ - public static function processParameterPeriod( $v = null, $d = null ): string + public static function processParameterPeriod( string $value = null, string $default = null, $withExtended = false ): string|null { - if( !isset( self::PERIODS[ $v ] ) ) { - $v = $d ?? self::PERIOD_DEFAULT; + if( $withExtended && !isset( self::PERIODS_EXTENDED[ $value ] ) ) { + $value = $default ?? self::PERIOD_DEFAULT; + } else if( !isset( self::PERIODS[ $value ] ) ) { + $value = $default ?? self::PERIOD_DEFAULT; } - return $v; + + return $value; } /** @@ -932,16 +1047,16 @@ public static function processParameterPeriod( $v = null, $d = null ): string * Note that this function just sets the default if the input is invalid. * If you want to force an exception in such cases, use setProtocol() * - * @param string|null $v The user input value + * @param string|null $value The user input value * - * @return string The verified / sanitised / default value + * @return string|null The verified / sanitised / default value */ - public static function processParameterProtocol( $v = null ): string + public static function processParameterProtocol( string $value = null ): string|null { - if( !isset( self::PROTOCOLS[ $v ] ) ) { - $v = self::PROTOCOL_DEFAULT; + if( !isset( self::PROTOCOLS[ $value ] ) ) { + $value = self::PROTOCOL_DEFAULT; } - return $v; + return $value; } /** @@ -950,15 +1065,15 @@ public static function processParameterProtocol( $v = null ): string * Note that this function just sets the default (ipv4) if the input is invalid. * If you want to force an exception in such cases, use setProtocol() * - * @param string|null $v The user input value - * @return string The verified / sanitised / default value + * @param string|null $value The user input value + * @return string|null The verified / sanitised / default value */ - public static function processParameterRealProtocol( $v = null ): string + public static function processParameterRealProtocol( string $value = null ): string|null { - if( !isset( self::PROTOCOLS_REAL[ $v ] ) ) { - $v = self::PROTOCOL_IPV4; + if( !isset( self::PROTOCOLS_REAL[ $value ] ) ) { + $value = self::PROTOCOL_IPV4; } - return $v; + return $value; } /** @@ -967,17 +1082,17 @@ public static function processParameterRealProtocol( $v = null ): string * Note that this function just sets the default if the input is invalid. * If you want to force an exception in such cases, use setCategory() * - * @param string|null $v The user input value + * @param string|null $value The user input value * @param bool $bits_pkts_only * - * @return string The verified / sanitised / default value + * @return string|null The verified / sanitised / default value */ - public static function processParameterCategory( $v = null, $bits_pkts_only = false ): string + public static function processParameterCategory( string $value = null, bool $bits_pkts_only = false ): string|null { - if( ( $bits_pkts_only && !isset( self::CATEGORIES_BITS_PKTS[$v] ) ) || ( !$bits_pkts_only && !isset( self::CATEGORIES[ $v ] ) ) ) { - $v = self::CATEGORY_DEFAULT; + if( ( $bits_pkts_only && !isset( self::CATEGORIES_BITS_PKTS[$value] ) ) || ( !$bits_pkts_only && !isset( self::CATEGORIES[ $value ] ) ) ) { + $value = self::CATEGORY_DEFAULT; } - return $v; + return $value; } /** @@ -986,15 +1101,15 @@ public static function processParameterCategory( $v = null, $bits_pkts_only = fa * Note that this function just sets the default if the input is invalid. * If you want to force an exception in such cases, use setType() * - * @param string|null $v The user input value + * @param string|null $value The user input value * - * @return string The verified / sanitised / default value + * @return string|null The verified / sanitised / default value */ - public static function processParameterType( $v = null ): string + public static function processParameterType( string $value = null ): string|null { - if( !isset( self::TYPES[ $v ] ) ) { - $v = self::TYPE_DEFAULT; + if( !isset( self::TYPES[ $value ] ) ) { + $value = self::TYPE_DEFAULT; } - return $v; + return $value; } } \ No newline at end of file diff --git a/app/Services/Grapher/Graph/CoreBundle.php b/app/Services/Grapher/Graph/CoreBundle.php index c0c29fcf6..91d107d70 100644 --- a/app/Services/Grapher/Graph/CoreBundle.php +++ b/app/Services/Grapher/Graph/CoreBundle.php @@ -161,7 +161,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -174,7 +177,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.trunk' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.trunk' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.trunk' ) ) && $us->privs() >= config( 'grapher.access.trunk' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/Customer.php b/app/Services/Grapher/Graph/Customer.php index 892e6f281..a4d75b320 100644 --- a/app/Services/Grapher/Graph/Customer.php +++ b/app/Services/Grapher/Graph/Customer.php @@ -99,7 +99,7 @@ public function setCustomer( CustomerModel $c ): Customer */ public function name(): string { - return $this->customer()->name; + return $this->customer()->name ?: ''; } /** @@ -121,7 +121,10 @@ public function identifier(): string */ public static function authorisedForAllCustomers(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return true; } @@ -129,7 +132,7 @@ public static function authorisedForAllCustomers(): bool return true; } - return Auth::check() && is_numeric( config( 'grapher.access.customer' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.customer' ); + return Auth::check() && is_numeric( config( 'grapher.access.customer' ) ) && $us->privs() >= config( 'grapher.access.customer' ); } /** @@ -143,6 +146,9 @@ public static function authorisedForAllCustomers(): bool */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + // NB: see above authorisedForAllCustomers() if( is_numeric( config( 'grapher.access.customer' ) ) && config( 'grapher.access.customer' ) === User::AUTH_PUBLIC ) { return $this->allow(); @@ -153,29 +159,30 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->customer()->id ) { + if( $us->custid === $this->customer()->id ) { return $this->allow(); } if( config( 'grapher.access.customer' ) !== 'own_graphs_only' - && is_numeric( config( 'grapher.access.customer' ) ) - && Auth::getUser()->privs() >= config( 'grapher.access.customer' ) + && is_numeric( config( 'grapher.access.customer' ) ) + && $us->privs() >= config( 'grapher.access.customer' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [Customer]: user %d::%s tried to access a customer aggregate graph " - . "{$this->customer()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->customer()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); return false; } + /** * Generate a URL to get this graphs 'file' of a given type * @@ -215,9 +222,12 @@ public function getParamsAsArray(): array */ public static function processParameterCustomer( int $i ): CustomerModel { + /** @var User $us */ + $us = Auth::getUser(); + // if we're not an admin, default to the currently logged in customer - if( !$i && Auth::check() && !Auth::getUser()->isSuperUser() && !Auth::getUser()->customer->typeAssociate() ) { - return CustomerModel::find( Auth::getUser()->custid ); + if( !$i && Auth::check() && !$us->isSuperUser() && !$us->customer->typeAssociate() ) { + return CustomerModel::find( $us->custid ); } return CustomerModel::findOrFail( $i ); diff --git a/app/Services/Grapher/Graph/IXP.php b/app/Services/Grapher/Graph/IXP.php index 9d4eb0bd8..fe94101e2 100644 --- a/app/Services/Grapher/Graph/IXP.php +++ b/app/Services/Grapher/Graph/IXP.php @@ -49,9 +49,9 @@ class IXP extends Graph * * @param array $params * - * @return Grapher Fluid interface + * @return IXP Fluid interface */ - public function setParamsFromArray( array $params ): Graph + public function setParamsFromArray( array $params ): IXP { parent::setParamsFromArray( $params ); return $this; @@ -89,7 +89,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -102,7 +105,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.ixp' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.ixp' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.ixp' ) ) && $us->privs() >= config( 'grapher.access.ixp' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/Infrastructure.php b/app/Services/Grapher/Graph/Infrastructure.php index 26988eb2b..1676286ab 100644 --- a/app/Services/Grapher/Graph/Infrastructure.php +++ b/app/Services/Grapher/Graph/Infrastructure.php @@ -99,7 +99,7 @@ public function setInfrastructure( InfrastructureModel $infra ): Infrastructure */ public function name(): string { - return $this->infrastructure()->name; + return $this->infrastructure()->name ?: ''; } /** @@ -125,7 +125,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -138,7 +141,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.infrastructure' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.infrastructure' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.infrastructure' ) ) && $us->privs() >= config( 'grapher.access.infrastructure' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/Latency.php b/app/Services/Grapher/Graph/Latency.php index 41c0dfc7b..b65d37d81 100644 --- a/app/Services/Grapher/Graph/Latency.php +++ b/app/Services/Grapher/Graph/Latency.php @@ -25,6 +25,7 @@ use Auth, Log; +use Carbon\Carbon; use Illuminate\Auth\Access\AuthorizationException; use IXP\Exceptions\Services\Grapher\{ @@ -126,23 +127,27 @@ public function __construct( Grapher $grapher, VlanInterfaceModel $vli ) /** * Set the period we should use * - * @param string $v + * @param string $value * * @return Graph Fluid interface * * @throws ParameterException */ - public function setPeriod( string $v ): Graph + public function setPeriod( string $value, ?Carbon $start = null, ?Carbon $end = null ): Graph { - if( !isset( self::PERIODS[ $v ] ) ) { - throw new ParameterException('Invalid period ' . $v ); + if( !isset( self::PERIODS[ $value ] ) ) { + throw new ParameterException('Invalid period ' . $value ); } - if( $this->period() !== $v ) { + if( $value === self::PERIOD_CUSTOM ) { + throw new ParameterException('Invalid period ' . $value . ' for Graph/Latency graphs' ); + } + + if( $this->period() !== $value ) { $this->wipe(); } - $this->period = $v; + $this->period = $value; return $this; } @@ -158,6 +163,29 @@ public static function resolvePeriod( $period = null ): string return self::PERIODS[ $period ] ?? 'Unknown'; } + + /** + * Process user input for the parameter: period + * + * Note that this function just sets the default if the input is invalid. + * If you want to force an exception in such cases, use setPeriod() + * + * @param string|null $value The user input value + * @param string|null $default The preferred default value + * + * @return string|null The verified / sanitised / default value + */ + public static function processParameterPeriod( string $value = null, string $default = null, $withExtended = false ): string|null + { + if( $withExtended && !isset( self::PERIODS_EXTENDED[ $value ] ) ) { + $value = $default ?? self::PERIOD_DEFAULT; + } else if( !isset( self::PERIODS[ $value ] ) ) { + $value = $default ?? self::PERIOD_DEFAULT; + } + + return $value; + } + /** * Get the vlan interface we're meant to graph for latency * @@ -201,7 +229,10 @@ public function identifier(): string */ public static function authorisedForAllCustomers(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return true; } @@ -209,7 +240,7 @@ public static function authorisedForAllCustomers(): bool return true; } - return Auth::check() && is_numeric( config( 'grapher.access.latency' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.latency' ); + return Auth::check() && is_numeric( config( 'grapher.access.latency' ) ) && $us->privs() >= config( 'grapher.access.latency' ); } /** @@ -223,6 +254,9 @@ public static function authorisedForAllCustomers(): bool */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + // NB: see above authorisedForAllCustomers() if( is_numeric( config( 'grapher.access.latency' ) ) && config( 'grapher.access.latency' ) === User::AUTH_PUBLIC ) { return $this->allow(); @@ -233,23 +267,23 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->vli()->virtualInterface->customer->id ) { + if( $us->custid === $this->vli()->virtualInterface->customer->id ) { return $this->allow(); } if( config( 'grapher.access.latency' ) !== 'own_graphs_only' && is_numeric( config( 'grapher.access.latency' ) ) - && Auth::getUser()->privs >= config( 'grapher.access.latency' ) + && $us->privs >= config( 'grapher.access.latency' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [Latency]: user %d::%s tried to access a latency graph for vli " - . "{$this->vli()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->vli()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); diff --git a/app/Services/Grapher/Graph/Location.php b/app/Services/Grapher/Graph/Location.php index 821fd292b..acc3818cc 100644 --- a/app/Services/Grapher/Graph/Location.php +++ b/app/Services/Grapher/Graph/Location.php @@ -97,7 +97,7 @@ public function setLocation( LocationModel $location ): Location */ public function name(): string { - return $this->location()->name; + return $this->location()->name ?: ''; } /** @@ -123,7 +123,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -131,7 +134,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.location' ) ) && Auth::getUser()->privs() >= (int)config( 'grapher.access.location' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.location' ) ) && $us->privs() >= (int)config( 'grapher.access.location' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/P2p.php b/app/Services/Grapher/Graph/P2p.php index 95142b79e..c35f6cede 100644 --- a/app/Services/Grapher/Graph/P2p.php +++ b/app/Services/Grapher/Graph/P2p.php @@ -159,7 +159,10 @@ public function identifier(): string */ public static function authorisedForAllCustomers(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return true; } @@ -167,7 +170,7 @@ public static function authorisedForAllCustomers(): bool return true; } - return Auth::check() && is_numeric( config( 'grapher.access.p2p' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.p2p' ); + return Auth::check() && is_numeric( config( 'grapher.access.p2p' ) ) && $us->privs() >= config( 'grapher.access.p2p' ); } /** @@ -181,6 +184,9 @@ public static function authorisedForAllCustomers(): bool */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + // NB: see above authorisedForAllCustomers() if( is_numeric( config( 'grapher.access.p2p' ) ) && config( 'grapher.access.p2p' ) === User::AUTH_PUBLIC ) { return $this->allow(); @@ -191,23 +197,23 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->svli()->virtualInterface->customer->id ) { + if( $us->custid === $this->svli()->virtualInterface->customer->id ) { return $this->allow(); } if( config( 'grapher.access.p2p' ) !== 'own_graphs_only' && is_numeric( config( 'grapher.access.p2p' ) ) - && Auth::getUser()->privs() >= (int)config( 'grapher.access.p2p' ) + && $us->privs() >= (int)config( 'grapher.access.p2p' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [Customer]: user %d::%s tried to access a customer p2p vli graph " - . "{$this->svli()->id} with dvli {$this->dvli()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->svli()->id} with dvli {$this->dvli()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); diff --git a/app/Services/Grapher/Graph/PhysicalInterface.php b/app/Services/Grapher/Graph/PhysicalInterface.php index 0a81f2be2..65b3a5b14 100644 --- a/app/Services/Grapher/Graph/PhysicalInterface.php +++ b/app/Services/Grapher/Graph/PhysicalInterface.php @@ -135,6 +135,9 @@ public function identifier(): string */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + if( is_numeric( config( 'grapher.access.customer' ) ) && config( 'grapher.access.customer' ) === User::AUTH_PUBLIC ) { return $this->allow(); } @@ -144,23 +147,23 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->physicalInterface()->virtualInterface->customer->id ) { + if( $us->custid === $this->physicalInterface()->virtualInterface->customer->id ) { return $this->allow(); } if( config( 'grapher.access.customer' ) !== 'own_graphs_only' && is_numeric( config( 'grapher.access.customer' ) ) - && Auth::getUser()->privs >= config( 'grapher.access.customer' ) + && $us->privs >= config( 'grapher.access.customer' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [PhysicalInterface]: user %d::%s tried to access a physical interface graph " - . "{$this->physicalInterface()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->physicalInterface()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); diff --git a/app/Services/Grapher/Graph/Switcher.php b/app/Services/Grapher/Graph/Switcher.php index ec41d6d4c..b7b96174a 100644 --- a/app/Services/Grapher/Graph/Switcher.php +++ b/app/Services/Grapher/Graph/Switcher.php @@ -98,7 +98,7 @@ public function setSwitch( SwitcherModel $switch ): Switcher */ public function name(): string { - return $this->switch()->name; + return $this->switch()->name ?: ''; } /** @@ -124,7 +124,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -132,7 +135,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.switch' ) ) && Auth::getUser()->privs() >= (int)config( 'grapher.access.switch' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.switch' ) ) && $us->privs() >= (int)config( 'grapher.access.switch' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/Trunk.php b/app/Services/Grapher/Graph/Trunk.php index d6dab787d..a3af8d689 100644 --- a/app/Services/Grapher/Graph/Trunk.php +++ b/app/Services/Grapher/Graph/Trunk.php @@ -126,7 +126,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -134,7 +137,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.trunk' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.trunk' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.trunk' ) ) && $us->privs() >= config( 'grapher.access.trunk' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/VirtualInterface.php b/app/Services/Grapher/Graph/VirtualInterface.php index 8f06fcff9..479ce7f6b 100644 --- a/app/Services/Grapher/Graph/VirtualInterface.php +++ b/app/Services/Grapher/Graph/VirtualInterface.php @@ -135,6 +135,9 @@ public function identifier(): string */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + if( is_numeric( config( 'grapher.access.customer' ) ) && config( 'grapher.access.customer' ) === User::AUTH_PUBLIC ) { return $this->allow(); } @@ -144,23 +147,23 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->virtualInterface()->customer->id ) { + if( $us->custid === $this->virtualInterface()->customer->id ) { return $this->allow(); } if( config( 'grapher.access.customer' ) !== 'own_graphs_only' && is_numeric( config( 'grapher.access.customer' ) ) - && Auth::getUser()->privs() >= config( 'grapher.access.customer' ) + && $us->privs() >= config( 'grapher.access.customer' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [VirtualInterface]: user %d::%s tried to access a virtual interface graph " - . "{$this->virtualInterface()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->virtualInterface()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); diff --git a/app/Services/Grapher/Graph/Vlan.php b/app/Services/Grapher/Graph/Vlan.php index de1c6bf6d..a56a81253 100644 --- a/app/Services/Grapher/Graph/Vlan.php +++ b/app/Services/Grapher/Graph/Vlan.php @@ -99,7 +99,7 @@ public function setVlan( VlanModel $vlan ): Vlan */ public function name(): string { - return $this->vlan()->name; + return $this->vlan()->name ?: ''; } /** @@ -125,7 +125,10 @@ public function identifier(): string */ public function authorise(): bool { - if( Auth::check() && Auth::getUser()->isSuperUser() ) { + /** @var User $us */ + $us = Auth::getUser(); + + if( Auth::check() && $us->isSuperUser() ) { return $this->allow(); } @@ -139,7 +142,7 @@ public function authorise(): bool return $this->allow(); } - if( Auth::check() && is_numeric( config( 'grapher.access.vlan' ) ) && Auth::getUser()->privs() >= config( 'grapher.access.vlan' ) ) { + if( Auth::check() && is_numeric( config( 'grapher.access.vlan' ) ) && $us->privs() >= config( 'grapher.access.vlan' ) ) { return $this->allow(); } diff --git a/app/Services/Grapher/Graph/VlanInterface.php b/app/Services/Grapher/Graph/VlanInterface.php index a40ae3dd9..30fc993ec 100644 --- a/app/Services/Grapher/Graph/VlanInterface.php +++ b/app/Services/Grapher/Graph/VlanInterface.php @@ -145,6 +145,9 @@ public function identifier(): string */ public function authorise(): bool { + /** @var User $us */ + $us = Auth::getUser(); + if( is_numeric( config( 'grapher.access.customer' ) ) && (int)config( 'grapher.access.customer' ) === User::AUTH_PUBLIC ) { return $this->allow(); } @@ -154,23 +157,23 @@ public function authorise(): bool return false; } - if( Auth::getUser()->isSuperUser() ) { + if( $us->isSuperUser() ) { return $this->allow(); } - if( Auth::getUser()->custid === $this->vlanInterface()->virtualInterface->customer->id ) { + if( $us->custid === $this->vlanInterface()->virtualInterface->customer->id ) { return $this->allow(); } if( config( 'grapher.access.customer' ) !== 'own_graphs_only' && is_numeric( config( 'grapher.access.customer' ) ) - && Auth::getUser()->privs() >= config( 'grapher.access.customer' ) + && $us->privs() >= config( 'grapher.access.customer' ) ) { return $this->allow(); } Log::notice( sprintf( "[Grapher] [VlanInterface]: user %d::%s tried to access a vlan interface graph " - . "{$this->vlanInterface()->id} which is not theirs", Auth::id(), Auth::getUser()->username ) + . "{$this->vlanInterface()->id} which is not theirs", Auth::id(), $us->username ) ); $this->deny(); diff --git a/app/Services/Grapher/Renderer/Extensions/Grapher.php b/app/Services/Grapher/Renderer/Extensions/Grapher.php index 0064f4502..8dca281c8 100644 --- a/app/Services/Grapher/Renderer/Extensions/Grapher.php +++ b/app/Services/Grapher/Renderer/Extensions/Grapher.php @@ -101,14 +101,14 @@ public function escapeCommunityForMrtg( string $c ): string * 1 => scaled value without string. E.g. 12,354.235 * 2 => just the string. E.g. Tbits * - * @param float $v The value to scale + * @param float $value The value to scale * @param string $format The format to sue (as above: bytes / pkts / errs / etc ) - * @param int $decs Number of decimals after the decimal point. Defaults to 3. + * @param int $decimals Number of decimals after the decimal point. Defaults to 3. * @param int $returnType Type of string to return. Valid values are listed above. Defaults to 0. * * @return string Scaled / formatted number / type. */ - public function scale( float $v, string $format, int $decs = 3, int $returnType = 0 ): string + public function scale( float $value, string $format, int $decimals = 3, int $returnType = 0 ): string { if( $format === "bytes" ) { $formats = [ @@ -126,15 +126,16 @@ public function scale( float $v, string $format, int $decs = 3, int $returnType for( $i = 0; $i < sizeof( $formats ); $i++ ) { - if( ( $v / 1000.0 < 1.0 ) || ( sizeof( $formats ) === $i + 1 ) ) { + $format = $i>4 ? $formats[4] : $formats[$i]; + if( ( $value / 1000.0 < 1.0 ) || ( sizeof( $formats ) === $i + 1 ) ) { if( $returnType == 0 ) - return number_format( $v, $decs ) . " " . $formats[$i]; + return number_format( $value, $decimals ) . " " . $format; elseif( $returnType == 1 ) - return number_format( $v, $decs ); + return number_format( $value, $decimals ); else - return $formats[$i]; + return $format; } else { - $v /= 1000.0; + $value /= 1000.0; } } diff --git a/app/Services/Grapher/Statistics.php b/app/Services/Grapher/Statistics.php index 452be0acc..01fdaf51d 100644 --- a/app/Services/Grapher/Statistics.php +++ b/app/Services/Grapher/Statistics.php @@ -39,49 +39,49 @@ class Statistics /** * Total packets/bits in * - * @var int + * @var float */ private $totalIn; /** * Total packets/bits out * - * @var int + * @var float */ private $totalOut; /** * Current packets/bits in * - * @var int + * @var float */ private $curIn; /** * Current packets/bits out * - * @var int + * @var float */ private $curOut; /** * Average packets/bits in * - * @var int + * @var float */ private $averageIn; /** * Average packets/bits out * - * @var int + * @var float */ private $averageOut; /** * Max packets/bits in * - * @var int + * @var float */ private $maxIn; @@ -95,7 +95,7 @@ class Statistics /** * Max packets/bits out * - * @var int + * @var float */ private $maxOut; @@ -212,26 +212,26 @@ function process() /** * Set statistics value * - * @param float $v + * @param float $value * * @return Statistics (for fluid interface) */ - public function setTotalIn( float $v ): Statistics + public function setTotalIn( float $value ): Statistics { - $this->totalIn = $v; + $this->totalIn = $value; return $this; } /** * Set statistics value * - * @param float $v + * @param float $value * * @return Statistics (for fluid interface) */ - public function setTotalOut( float $v ): Statistics + public function setTotalOut( float $value ): Statistics { - $this->totalOut = $v; + $this->totalOut = $value; return $this; } diff --git a/app/Services/Helpdesk/Zendesk.php b/app/Services/Helpdesk/Zendesk.php index 4737cfd3d..67f49c99a 100644 --- a/app/Services/Helpdesk/Zendesk.php +++ b/app/Services/Helpdesk/Zendesk.php @@ -47,9 +47,9 @@ class Zendesk implements HelpdeskContract /** * The Zendesk Client * - * @var Zendesk\API\Client + * @var ZendeskAPI */ - private $client; + private ZendeskAPI $client; /** * Debug object @@ -93,7 +93,7 @@ protected function callApi( $fn ) $apie = new ApiException( "Zendesk API error - further details available from \$helpdeskInstance->getDebug() / \$this->getErrorDetails()" ); if( $e instanceof \Zendesk\API\Exceptions\ApiResponseException ) - $apie->setErrorDetails( json_decode( $e->getErrorDetails() ) ); + $apie->setErrorDetails( (object)$e->getErrorDetails() ); throw $apie; } @@ -132,11 +132,11 @@ public function ticketsFindAll() * Convert a IXP Customer entity into an associated array as rerquired by Zendesk's API * * @param Customer $cust The IXP Manager customer entity - * @param bool $id If updating, set to Zendesk organisation ID + * @param bool|int $id If updating, set to Zendesk organisation ID * * @return array Data in associate array format as required by Zendesk PHP API */ - private function customerEntityToZendeskObject( Customer $cust, $id = false ): array + private function customerEntityToZendeskObject( Customer $cust, bool|int $id = false ): array { $data = []; $data['external_id'] = $cust->id; @@ -287,7 +287,7 @@ public function organisationCreate( Customer $cust ) public function organisationUpdate( int $helpdeskId, Customer $cust ) { $response = $this->callApi( function() use ( $cust, $helpdeskId ) { - return $this->client->organizations()->update( $this->customerEntityToZendeskObject( $cust, $helpdeskId ) ); + return $this->client->organizations()->update( null, $this->customerEntityToZendeskObject( $cust, $helpdeskId ) ); }); if( isset( $response->organization ) ) @@ -457,7 +457,7 @@ public function userCreate( Contact $contact, $org_id ) * @param int $helpdeskId The ID of the helpdesk's user object * @param Contact $contact An IXP Manager contact as returned by `userFind()` * - * @return Contact Decoupled contact object with `helpdesk_id` + * @return Contact|bool Decoupled contact object with `helpdesk_id` * * @throws \IXP\Services\Helpdesk\ApiException */ @@ -471,7 +471,6 @@ public function userUpdate( int $helpdeskId, Contact $contact ): Contact return $this->zendeskObjectToContactEntity( $response->user ); } - return false; } diff --git a/app/Services/IXF.php b/app/Services/IXF.php index 44521b53d..5ff6ba1d1 100644 --- a/app/Services/IXF.php +++ b/app/Services/IXF.php @@ -24,6 +24,7 @@ */ use Exception; +use Throwable; use Illuminate\Http\Client\Response as HttpResponse; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; @@ -56,9 +57,9 @@ class IXF public int $status = 0; /** - * @var ?Exception If the api call threw an exception, it is caught and stored here. + * @var Exception If the api call threw an exception, it is caught and stored here. */ - public ?Exception $exception; + public ?Exception $exception = null; @@ -92,7 +93,11 @@ public function ixps( ?array $fields = null ): array $ixs = $this->execute( config( 'ixp_api.IXPDB.ixp_api' ) ); if( $ixs === null ) { - throw $this->exception; + if( $this->exception ) { + throw $this->exception; + } else { + throw new Exception( 'IXF ixps error' ); + } } foreach( $ixs->json() as $ix ) { diff --git a/app/Services/LookingGlass.php b/app/Services/LookingGlass.php index 0885b8120..93dadbce4 100644 --- a/app/Services/LookingGlass.php +++ b/app/Services/LookingGlass.php @@ -64,7 +64,7 @@ public function forRouter( Router $router ) return $be; break; default: - throw new ConfigurationException( 'Invalid, no or unimplemented looking glass backend requested: ' . $r->apiType() ); + throw new ConfigurationException( 'Invalid, no or unimplemented looking glass backend requested: ' . $router->apiType() ); } } } \ No newline at end of file diff --git a/app/Services/LookingGlass/BirdsEye.php b/app/Services/LookingGlass/BirdsEye.php index bd4f9c70c..ccdfa69b1 100644 --- a/app/Services/LookingGlass/BirdsEye.php +++ b/app/Services/LookingGlass/BirdsEye.php @@ -69,7 +69,7 @@ public function __construct( Router $r ) * * @return BirdsEye */ - public function setCacheEnabled( bool $b ): Birdseye + public function setCacheEnabled( bool $b ): BirdsEye { $this->cacheEnabled = $b; return $this; @@ -132,6 +132,17 @@ public function bgpSummary(): string return $this->apiCall( 'protocols/bgp' ); } + /** + * Get BGP neighbour information as JSON + * + * @param string $protocol Protocol name + * @return string + */ + public function bgpNeighbourSummary( string $protocol ): string + { + return $this->apiCall( 'protocol/' . urlencode( $protocol ) ); + } + /** * Get the router's status as JSON * diff --git a/app/Services/PeeringDb.php b/app/Services/PeeringDb.php index 76efb819e..2b1f6d29c 100644 --- a/app/Services/PeeringDb.php +++ b/app/Services/PeeringDb.php @@ -130,7 +130,11 @@ public function ixps( ?array $fields = null ): array ); if( $ixs === null ) { - throw $this->exception; + if( $this->exception ) { + throw $this->exception; + } else { + throw new Exception( 'Failed to retrieve peering db data' ); + } } foreach( $ixs->json()['data'] as $ix ) { @@ -182,7 +186,11 @@ public function facilities( ?array $fields = null ): array ); if( $facs === null ) { - throw $this->exception; + if( $this->exception ) { + throw $this->exception; + } else { + throw new Exception( 'Failed to retrieve peering db data' ); + } } foreach( $facs->json()['data'] as $fac ) { diff --git a/app/Services/Purifier.php b/app/Services/Purifier.php index 2843033c7..23e3286f7 100644 --- a/app/Services/Purifier.php +++ b/app/Services/Purifier.php @@ -22,6 +22,7 @@ use Exception; use HTMLPurifier; use HTMLPurifier_Config; +use HTMLPurifier_HTMLDefinition; use Illuminate\Contracts\Config\Repository; use Illuminate\Filesystem\Filesystem; @@ -109,9 +110,9 @@ private function setUp() * * @see http://htmlpurifier.org/docs/enduser-customize.html * @param array $definitionConfig - * @param HTML_Purifier_Config $configObject Defaults to using default config + * @param HTMLPurifier_Config $configObject Defaults to using default config * - * @return HTML_Purifier_Config $configObject + * @return HTMLPurifier_Config $configObject */ private function addCustomDefinition(array $definitionConfig, $configObject = null) { @@ -174,9 +175,9 @@ private function addCustomAttributes(array $attributes, $definition) * @param array $elements * @param HTMLPurifier_HTMLDefinition $definition * - * @return HTMLPurifier_HTMLDefinition $definition + * @return void $definition */ - private function addCustomElements(array $elements, $definition) + private function addCustomElements(array $elements, $definition): void { foreach ($elements as $element) { // Get configuration of element diff --git a/app/Services/RipeAtlas/Interpretor.php b/app/Services/RipeAtlas/Interpretor.php index 27951923f..0bdbd7c01 100644 --- a/app/Services/RipeAtlas/Interpretor.php +++ b/app/Services/RipeAtlas/Interpretor.php @@ -28,6 +28,7 @@ AtlasResult, Customer }; +use phpseclib3\Math\PrimeField\Integer; /** * RipeAtlas Interpretor @@ -142,9 +143,9 @@ private function parsePath( array $tracert ): array * @param array $path Path of IP addresses * @param array $addrs List of addresses to find in $path * - * @return bool + * @return integer */ - private function queryPassesThrough( array &$path, array $addrs ) + private function queryPassesThrough( array &$path, array $addrs ): integer { foreach( $path[ 'hops' ] as $ipset ) { diff --git a/app/Support/helpers.php b/app/Support/helpers.php index db7aae6d0..60c963aa6 100644 --- a/app/Support/helpers.php +++ b/app/Support/helpers.php @@ -81,7 +81,10 @@ function resolve_dns_aaaa( string $hostname ): ?string function ixp_min_auth( int $minAuth ): bool { if( Auth::check() ) { - return Auth::getUser()->privs() >= $minAuth; + /** @var IXP\Models\User $us */ + $us = Auth::getUser(); + + return $us->privs() >= $minAuth; } return $minAuth === 0; } @@ -94,14 +97,15 @@ function ixp_min_auth( int $minAuth ): bool * * Source: https://stackoverflow.com/questions/33268683/how-to-get-client-ip-address-in-laravel-5/41769505#41769505 * - * @return string + * @return string|null */ - function ixp_get_client_ip(): string + function ixp_get_client_ip(): null|string { // look for public: foreach( [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ] as $key ) { if( array_key_exists( $key, $_SERVER ) === true ) { - foreach( explode(',', $_SERVER[ $key ] ) as $ip ) { + $value = (string)$_SERVER[ $key ]; + foreach( explode(',', $value ) as $ip ) { $ip = trim( $ip ); if( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) { return $ip; @@ -113,7 +117,8 @@ function ixp_get_client_ip(): string // accept private: foreach( [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ] as $key ) { if( array_key_exists( $key, $_SERVER ) === true ) { - foreach( explode(',', $_SERVER[ $key ] ) as $ip ) { + $value = (string)$_SERVER[ $key ]; + foreach( explode(',', $value ) as $ip ) { $ip = trim( $ip ); if( filter_var( $ip, FILTER_VALIDATE_IP ) !== false ) { return $ip; diff --git a/app/Tasks/Irrdb/UpdateAsnDb.php b/app/Tasks/Irrdb/UpdateAsnDb.php index c0edce102..9f1ee1771 100644 --- a/app/Tasks/Irrdb/UpdateAsnDb.php +++ b/app/Tasks/Irrdb/UpdateAsnDb.php @@ -68,7 +68,7 @@ public function update(): array // Delete any pre-existing entries just in case this has changed recently: $this->startTimer(); - Cache::store('file')->forget( 'irrdb:asns:ipv' . $protocol . ':' . $this->customer()->asMacro( $protocol ) ); + Cache::store()->forget( 'irrdb:asns:ipv' . $protocol . ':' . $this->customer()->asMacro( $protocol ) ); IrrdbAsn::whereCustomerId( $this->customer()->id ) ->whereProtocol( $protocol )->delete(); @@ -87,19 +87,19 @@ public function update(): array * Validate a given array of CIDR formatted prefixes for the given protocol and * remove (and alert on) any elements failing validation. * - * @param array $asns ASNs from IRRDB + * @param array $entries ASNs from IRRDB * @param int $protocol Either 4/6 * * @return array Valid ASNs */ - protected function validate( array $asns, int $protocol ) : array + protected function validate( array $entries, int $protocol ) : array { - foreach( $asns as $i => $a ) { - if( !is_numeric( $a ) || $a <= 0 || $a > 4294967294 ) { - unset( $asns[ $i ] ); - Log::alert( 'IRRDB CLI action - removing invalid ASN ' . $a . ' from IRRDB result set!' ); + foreach( $entries as $key => $value ) { + if( !is_numeric( $value ) || $value <= 0 || $value > 4294967294 ) { + unset( $entries[ $key ] ); + Log::alert( 'IRRDB CLI action - removing invalid ASN ' . $value . ' from IRRDB result set!' ); } } - return $asns; + return $entries; } } diff --git a/app/Tasks/Irrdb/UpdateDb.php b/app/Tasks/Irrdb/UpdateDb.php index 006353f80..849818b71 100644 --- a/app/Tasks/Irrdb/UpdateDb.php +++ b/app/Tasks/Irrdb/UpdateDb.php @@ -30,12 +30,7 @@ GeneralException }; -use IXP\Models\{ - Aggregators\IrrdbAggregator, - Customer, - IrrdbAsn, - IrrdbPrefix -}; +use IXP\Models\{Aggregators\IrrdbAggregator, Customer, IrrdbAsn, IrrdbPrefix, IrrdbUpdateLog}; use Illuminate\Support\Facades\Cache; use IXP\Utils\Bgpq3; @@ -318,16 +313,32 @@ protected function updateDb( array $fromIrrdb, int $protocol, $type = 'prefix' ) throw $e; } + $this->logUpdate( $protocol, $type ); + return true; } + /** + * Update the database to record that a IRRDB update completed successfully. + * + * @param int $protocol The protocol to use (4 or 6) + * @param string $type + */ + protected function logUpdate( int $protocol, string $type ): void + { + IrrdbUpdateLog::updateOrCreate( + [ 'cust_id' => $this->customer()->id ], + [ "{$type}_v{$protocol}" => now() ] + ); + } + /** * Validate ASNs/prefixes. Implement in subclasses. * - * @param array $prefixes + * @param array $entries * @param int $protocol * * @return array */ - abstract protected function validate( array $prefixes, int $protocol ): array; + abstract protected function validate( array $entries, int $protocol ): array; } \ No newline at end of file diff --git a/app/Tasks/Irrdb/UpdatePrefixDb.php b/app/Tasks/Irrdb/UpdatePrefixDb.php index c18d8fc01..fb45abd9c 100644 --- a/app/Tasks/Irrdb/UpdatePrefixDb.php +++ b/app/Tasks/Irrdb/UpdatePrefixDb.php @@ -73,7 +73,7 @@ public function update(): array // Delete any pre-existing entries just in case this has changed recently: $this->startTimer(); - Cache::store('file')->forget( 'irrdb:prefix:ipv' . $protocol . ':' . $this->customer()->asMacro( $protocol ) ); + Cache::store()->forget( 'irrdb:prefix:ipv' . $protocol . ':' . $this->customer()->asMacro( $protocol ) ); IrrdbPrefix::whereCustomerId( $this->customer()->id ) ->whereProtocol( $protocol )->delete(); @@ -92,12 +92,12 @@ public function update(): array * Validate a given array of CIDR formatted prefixes for the given protocol and * remove (and alert on) any elements failing validation. * - * @param array $prefixes Prefixes in CIDR notation + * @param array $entries Prefixes in CIDR notation * @param int $protocol Either 4/6 * * @return array Valid prefixes */ - protected function validate( array $prefixes, int $protocol ): array + protected function validate( array $entries, int $protocol ): array { if( $protocol === 4 ) { $validator = new ValidateIPv4Cidr; @@ -105,13 +105,13 @@ protected function validate( array $prefixes, int $protocol ): array $validator = new ValidateIPv6Cidr; } - foreach( $prefixes as $i => $p ) { - if( !$validator->passes( [], $p ) ) { - unset( $prefixes[$i] ); - Log::alert( 'IRRDB CLI action - removing invalid prefix ' . $p . ' from IRRDB result set!' ); + foreach( $entries as $key => $prefix ) { + if( !$validator->passes( '', $prefix ) ) { + unset( $entries[$key] ); + Log::alert( 'IRRDB CLI action - removing invalid prefix ' . $prefix . ' from IRRDB result set!' ); } } - return $prefixes; + return $entries; } } diff --git a/app/Traits/Observable.php b/app/Traits/Observable.php index d67c0b354..11eb67df2 100644 --- a/app/Traits/Observable.php +++ b/app/Traits/Observable.php @@ -145,6 +145,7 @@ public static function logImplodeAssoc(array $attrs): string * @param User|null $user limit the log entries to the actions of this user * * @return Builder + * @psalm-suppress UndefinedThisPropertyFetch */ public function getLogEntries( ?User $user = null ): Builder { diff --git a/app/Utils/Bgpq3.php b/app/Utils/Bgpq3.php index eeb6a66b2..c969c0620 100644 --- a/app/Utils/Bgpq3.php +++ b/app/Utils/Bgpq3.php @@ -102,7 +102,8 @@ public function getPrefixList( string $asmacro, int $proto = 4 ): array */ public function getAsnList( string $asmacro, int $proto = 4 ): array { - $json = $this->execute( '-3j -l pl -f 999 ' . escapeshellarg( $asmacro ), false ); + // -6 makes no sense with as-path (-f/-G) generation + $json = $this->execute( '-3j -l pl -f 999 ' . escapeshellarg( $asmacro ) ); $array = json_decode( $json, true ); if( $array === null ){ diff --git a/app/Utils/Export/JsonSchema.php b/app/Utils/Export/JsonSchema.php index 5efcad272..4bdc7a807 100644 --- a/app/Utils/Export/JsonSchema.php +++ b/app/Utils/Export/JsonSchema.php @@ -89,6 +89,7 @@ public function get( string $version = null, $asArray = false, $detailed = true, $version = $this->sanitiseVersion( $version ); } + /** @psalm-suppress UndefinedConstant */ $output = [ 'version' => $version, 'generator' => 'IXP Manager v' . APPLICATION_VERSION, diff --git a/app/Utils/Foil/Extensions/IXP.php b/app/Utils/Foil/Extensions/IXP.php index 4e4284921..7c2657049 100644 --- a/app/Utils/Foil/Extensions/IXP.php +++ b/app/Utils/Foil/Extensions/IXP.php @@ -99,10 +99,10 @@ public function maxFileUploadSize(): string if( $unit ) { // Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by. - return round( $size * ( 1024 ** stripos( 'bkmgtpezy', $unit[0] ) ) ); + return (string)round( $size * ( 1024 ** stripos( 'bkmgtpezy', $unit[0] ) ) ); } - return round( $size ); + return (string)round( $size * 1 ); }; if( $max_size === null ) { @@ -165,16 +165,17 @@ private function scale( float $v, string $format, int $decs = 3, int $returnType $num_formats = count( $formats ); for( $i = 0; $i < $num_formats; $i++ ) { + $format = $i > 4 ? $formats[ 4 ] : $formats[ $i ]; if( ( $v / 1000.0 < 1.0 ) || ( $num_formats === $i + 1 ) ) { if( $returnType === 0 ) { - return number_format( $v, $decs ) . ' ' . $formats[ $i ]; + return number_format( $v, $decs ) . ' ' . $format; } if( $returnType === 1 ) { return number_format( $v, $decs ); } - return $formats[ $i ]; + return $format; } $v /= 1000.0; diff --git a/app/Utils/Former/Framework/TwitterBootstrap4.php b/app/Utils/Former/Framework/TwitterBootstrap4.php index 6298d674e..3c01c9b38 100644 --- a/app/Utils/Former/Framework/TwitterBootstrap4.php +++ b/app/Utils/Former/Framework/TwitterBootstrap4.php @@ -55,6 +55,7 @@ public function __construct( Application $app ) * @param $field * * @return Element A wrapped field + * @psalm-suppress UndefinedDocblockClass - Former Container type confusing psalm */ public function wrapField( $field ): Element { @@ -69,9 +70,9 @@ public function wrapField( $field ): Element /** * Add label classes * - * @return array An array of attributes with the label class + * @psalm-suppress UndefinedDocblockClass - Former Container type confusing psalm */ - public function getLabelClasses(): array + public function getLabelClasses() { $width = $this->app[ 'former.form' ]->getAttributes()[ 'custom-label-width-class' ] ?? $this->labelWidth; @@ -121,6 +122,7 @@ public function placeAround( $item ): Element * Add group classes * * @return string A list of group classes + * @psalm-suppress UndefinedDocblockClass - Former Container type confusing psalm */ public function getGroupClasses(): string { @@ -140,6 +142,7 @@ public function getGroupClasses(): string * Add actions block class * * @return string|null + * @psalm-suppress UndefinedDocblockClass - Former Container type confusing psalm */ public function getActionClasses(): ?string { @@ -166,6 +169,7 @@ public function getActionClasses(): ?string * @param $actions * * @return string A wrapped actions block + * @psalm-suppress UndefinedDocblockClass - Former Container type confusing psalm */ public function wrapActions( $actions ): string { @@ -176,7 +180,7 @@ public function wrapActions( $actions ): string if( $class === 'grey-box' ){ return Element::create('div', $actions )->addClass( "bg-light p-4 mt-4 shadow-sm text-center col-lg-12" ); } - return Element::create('div', $actions )->addClass( [ $this->fieldOffset, $this->fieldWidth , $class ]); + return Element::create('div', $actions )->addClass( $this->fieldOffset.' '.$this->fieldWidth.' '.$class ); } return $actions; diff --git a/app/Utils/Grapher/Mrtg.php b/app/Utils/Grapher/Mrtg.php index 9415bd470..aadb16bf8 100644 --- a/app/Utils/Grapher/Mrtg.php +++ b/app/Utils/Grapher/Mrtg.php @@ -66,10 +66,11 @@ class Mrtg * these values are taken from mrtg/src/rateup.c */ public const PERIOD_TIME = [ - Graph::PERIOD_DAY => 119988.0, // ( 33.33 * 3600 ), - Graph::PERIOD_WEEK => 719712.0, // ( 8.33 * 24 * 3600 ), - Graph::PERIOD_MONTH => 2879712.0, // ( 33.33 * 24 * 3600 ), - Graph::PERIOD_YEAR => 31622400.0 // ( 366 * 24 * 3600 ) + Graph::PERIOD_DAY => 119988.0, // ( 33.33 * 3600 ), + Graph::PERIOD_WEEK => 719712.0, // ( 8.33 * 24 * 3600 ), + Graph::PERIOD_MONTH => 2879712.0, // ( 33.33 * 24 * 3600 ), + Graph::PERIOD_YEAR => 31622400.0, // ( 366 * 24 * 3600 ) + Graph::PERIOD_CUSTOM => 86400.0, // ( placeholder - it will calculated by custom dates ) ]; /** @@ -203,8 +204,13 @@ public function data( Graph $graph ): array throw new GeneralException('Invalid period'); } - $starttime = time() - $periodsecs; - $endtime = time(); + if($graph->period() === Graph::PERIOD_CUSTOM) { + $starttime = $graph->periodStart()->timestamp; + $endtime = $graph->periodEnd()->timestamp; + } else { + $starttime = time() - $periodsecs; + $endtime = time(); + } // Run through the array and pull out the values we want for( $i = sizeof( $this->array )-1; $i >= 0; $i-- ) { diff --git a/app/Utils/Grapher/Rrd.php b/app/Utils/Grapher/Rrd.php index 77eeef938..83f247dac 100644 --- a/app/Utils/Grapher/Rrd.php +++ b/app/Utils/Grapher/Rrd.php @@ -23,6 +23,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html */ +use IXP\Exceptions\Services\Grapher\ParameterException; use IXP\Exceptions\Utils\Grapher\FileError as FileErrorException; use IXP\Services\Grapher\Graph; @@ -309,10 +310,37 @@ private function getIndexKeys(): array * @throws */ public function data(): array + { + if($this->graph()->period() === Graph::PERIOD_CUSTOM) { + + if( !$this->graph()->periodStart() || !$this->graph()->periodEnd() ) { + throw new ParameterException('Period Start and Period End must be set for custom period graphs'); + } + + return $this->dataWindow( + $this->graph()->periodStart()->timestamp, + $this->graph()->periodEnd()->timestamp + ); + + } else { + + return $this->dataWindow(time() - self::PERIOD_TIME[ $this->graph()->period() ], time()); + + } + } + + /** + * @param integer $start : timestamp + * @param integer $end : timestamp + * @return array + * @throws FileErrorException + */ + public function dataWindow( int $start, int $end): array { $rrd = rrd_fetch( $this->file, [ 'AVERAGE', - '--start', time() - self::PERIOD_TIME[ $this->graph()->period() ] + '--start', $start, + '--end', $end, ]); if( $rrd === false || !is_array( $rrd ) ) { @@ -323,7 +351,7 @@ public function data(): array $this->end = $rrd['end']; $this->step = $rrd['step']; - list( $indexIn, $indexOut ) = $this->getIndexKeys(); + [ $indexIn, $indexOut ] = $this->getIndexKeys(); // we want newest first, so iterate in reverse // but.... do, we? @@ -365,7 +393,7 @@ public function png(): string { $separated_maxima = self::PERIOD_TIME[ $this->graph()->period() ] > 60*60*24*2; - list( $indexIn, $indexOut ) = $this->getIndexKeys(); + [ $indexIn, $indexOut ] = $this->getIndexKeys(); $options = [ '--width=600', @@ -435,6 +463,7 @@ public function png(): string if( $png === false ) { throw new FileErrorException("Could not open/create RRD/PNG file"); } + return $this->getLocalFilename('png'); } diff --git a/app/Utils/IpAddress.php b/app/Utils/IpAddress.php index f096a75f8..bc0b96302 100644 --- a/app/Utils/IpAddress.php +++ b/app/Utils/IpAddress.php @@ -72,13 +72,14 @@ public static function toArpa( string $ip, int $protocol ): string * * Source: https://stackoverflow.com/questions/33268683/how-to-get-client-ip-address-in-laravel-5/41769505#41769505 * - * @return string + * @return string|null */ - public static function getIp(): string + public static function getIp(): string|null { foreach( [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ] as $key ) { if( array_key_exists( $key, $_SERVER ) === true ) { - foreach( explode(',', $_SERVER[ $key ] ) as $ip ) { + $value = (string)$_SERVER[ $key ]; + foreach( explode(',', $value ) as $ip ) { $ip = trim( $ip ); if( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) { return $ip; diff --git a/app/Utils/MailingList.php b/app/Utils/MailingList.php index 87088c760..c9a62eb6c 100644 --- a/app/Utils/MailingList.php +++ b/app/Utils/MailingList.php @@ -41,7 +41,7 @@ class MailingList { /** - * @var array Mailing list config key (from config/mailinglist.php) + * @var array-key Mailing list config key (from config/mailinglist.php) */ private $key = null; @@ -86,10 +86,11 @@ public function getSubscriberEmails( bool $subscribed = true ): array return $query->whereJsonContains( 'prefs->mailinglist', [ $this->key => "0" ] ); })->orderBy( 'email' )->get(); - foreach( $users as $u ) { - $e = strtolower( $u->email ); - if( !$filtered_users->contains( $e ) && filter_var( $e, FILTER_VALIDATE_EMAIL ) !== false ) { - $filtered_users->add( $e ); + foreach( $users as $user ) { + $email = strtolower( $user->email ); + if( !$filtered_users->contains( $email ) && filter_var( $email, FILTER_VALIDATE_EMAIL ) !== false ) { + /** @psalm-suppress InvalidArgument - it is not invalid */ + $filtered_users->add( $email ); } } diff --git a/app/Utils/View/Alert/Container.php b/app/Utils/View/Alert/Container.php index 8d68300a2..cca0272d7 100644 --- a/app/Utils/View/Alert/Container.php +++ b/app/Utils/View/Alert/Container.php @@ -56,7 +56,7 @@ public static function push( string $message, string $class = Alert::INFO, $clea * * FIXME: when PHP 7.1 is a req, fix the return type * - * @return Alert null for none ( === null) + * @return Alert|null for none ( === null) */ public static function pop() { diff --git a/bootstrap.sh b/bootstrap.sh deleted file mode 100644 index 3d6cc6d3a..000000000 --- a/bootstrap.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (C) 2009 - 2019 Internet Neutral Exchange Association Company Limited By Guarantee. -# All Rights Reserved. -# -# This file is part of IXP Manager. -# -# IXP Manager is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the Free -# Software Foundation, version v2.0 of the License. -# -# IXP Manager is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GpNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License v2.0 -# along with IXP Manager. If not, see: -# -# http://www.gnu.org/licenses/gpl-2.0.html - -## VAGRANT provisioning script - IXP Manager v5 / 18.04 LTS / php7.3 -## -## Barry O'Donovan 2015-2021 - -apt update - -# Defaults for MySQL and phpMyAdmin: -debconf-set-selections <<< 'mysql-server mysql-server/root_password password password' -debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password password' -echo 'phpmyadmin phpmyadmin/dbconfig-install boolean true' | debconf-set-selections -echo 'phpmyadmin phpmyadmin/app-password-confirm password password' | debconf-set-selections -echo 'phpmyadmin phpmyadmin/mysql/admin-pass password password' | debconf-set-selections -echo 'phpmyadmin phpmyadmin/mysql/app-pass password password' | debconf-set-selections -echo 'phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2' | debconf-set-selections -echo 'mrtg mrtg/conf_mods boolean true' | debconf-set-selections - -apt-get install -y software-properties-common -add-apt-repository -y ppa:ondrej/php -apt-get update - -apt full-upgrade -y -apt autoremove -y - -apt-get install -y apache2 php8.0 php8.0-intl php8.0-mysql php-rrd php8.0-cgi php8.0-cli \ - php8.0-snmp php8.0-curl php8.0-memcached libapache2-mod-php8.0 mysql-server mysql-client \ - php8.0-mysql memcached snmp php8.0-mbstring php8.0-xml php8.0-gd bgpq3 php8.0-memcache \ - unzip php8.0-zip git php8.0-yaml php8.0-ds php8.0-bcmath libconfig-general-perl joe \ - libnetaddr-ip-perl mrtg libconfig-general-perl libnetaddr-ip-perl rrdtool librrds-perl \ - phpmyadmin - -if ! [ -L /var/www ]; then - rm -rf /var/www - ln -fs /vagrant/public /var/www -fi - -curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -export MYSQL_PWD=password - -mysql -u root < /vagrant/.env -php /vagrant/artisan key:generate --force - - -cd /vagrant -su - vagrant -c "cd /vagrant && composer install" - -cat >/etc/apache2/sites-available/000-default.conf < - DocumentRoot /vagrant/public - - - Options FollowSymLinks - AllowOverride None - Require all granted - - RewriteEngine On - RewriteCond %{REQUEST_FILENAME} -s [OR] - RewriteCond %{REQUEST_FILENAME} -l [OR] - RewriteCond %{REQUEST_FILENAME} -d - RewriteRule ^.*$ - [NC,L] - RewriteRule ^.*$ /index.php [NC,L] - - - ErrorLog \${APACHE_LOG_DIR}/error.log - CustomLog \${APACHE_LOG_DIR}/access.log combined - -END_APACHE - -a2enmod rewrite -chmod -R a+rwX /vagrant/storage /vagrant/bootstrap/cache -service apache2 restart - -# Useful screen settings for barryo: -cat >/home/vagrant/.screenrc < %n%f* %t%{= kG}%+Lw%<' -screen -t bash 0 -altscreen on -END_SCREEN - - -# enable scheduler -#echo -e "\n\n# IXP Manager cron jobs:\n* * * * * www-data /usr/bin/php /vagrant/artisan schedule:run\n\n" >>/etc/crontab - -cd /vagrant diff --git a/composer.json b/composer.json index 196b8305f..c8d26c79d 100644 --- a/composer.json +++ b/composer.json @@ -26,12 +26,6 @@ "require": { "php": "^8.3", "ext-json": "*", - - "laravel/framework": "^11.0", - "laravel/horizon": "^5.7", - "laravel/telescope": "^5.0", - "laravel/tinker": "^2.7", - "laravel/ui": "^4.0", "anahkiasen/former": "^4.6", "bacon/bacon-qr-code": "^2.0.3", "barryvdh/laravel-dompdf": "^2.0.0", @@ -39,14 +33,19 @@ "erusev/parsedown": "^1.7", "foil/foil": "^0.6.7", "guzzlehttp/guzzle": "^7.8", - "spatie/laravel-ignition": "^2.7", "intervention/image": "^2.7", + "laravel/framework": "^11.0", + "laravel/horizon": "^5.7", + "laravel/telescope": "^5.0", + "laravel/tinker": "^2.7", + "laravel/ui": "^4.0", "mews/purifier": "^3.4", "opensolutions/oss-snmp": "^1.0", "php-ds/php-ds": "^1.5", "pragmarx/google2fa-laravel": "^1.4.1", "s1lentium/iptools": "^1.2", "socialiteproviders/manager": "^4.6", + "spatie/laravel-ignition": "^2.7", "webpatser/laravel-countries": "^1.5.4", "wolfcast/browser-detection": "^2.9.5", "zendesk/zendesk_api_client_php": "^2.2.10" @@ -60,10 +59,11 @@ "laravel/sail": "^1.29", "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.1", - "sebastian/diff": "^5.0", "phpunit/phpunit": "^10.5.1", - "vimeo/psalm": "^5.0", - "staudenmeir/dusk-updater": "^1.5" + "psalm/plugin-laravel": "^2.11", + "sebastian/diff": "^5.0", + "staudenmeir/dusk-updater": "^1.5", + "vimeo/psalm": "^5.0" }, "support": { "issues": "https://www.ixpmanager.org/support.php", @@ -75,8 +75,7 @@ "psr-4": { "IXP\\": "app/", "Database\\Seeders\\": "database/seeders/", - "Database\\": "database", - "SocialiteProviders\\PeeringDB\\": "data/SocialiteProviders/PeeringDB/" + "SocialiteProviders\\PeeringDB\\": "data/SocialiteProviders/PeeringDB/" }, "files": [ "app/Support/helpers.php" diff --git a/composer.lock b/composer.lock index 287ef6f4f..2555bbec6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6eb37f5db48824ff389fd64b6b66a04d", + "content-hash": "12c84751eb9a9ace513c94150947e01c", "packages": [ { "name": "anahkiasen/former", @@ -410,23 +410,23 @@ }, { "name": "dasprid/enum", - "version": "1.0.5", + "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/DASPRiD/Enum.git", - "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" + "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", - "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90", + "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90", "shasum": "" }, "require": { "php": ">=7.1 <9.0" }, "require-dev": { - "phpunit/phpunit": "^7 | ^8 | ^9", + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", "squizlabs/php_codesniffer": "*" }, "type": "library", @@ -454,22 +454,22 @@ ], "support": { "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" + "source": "https://github.com/DASPRiD/Enum/tree/1.0.6" }, - "time": "2023-08-25T16:18:39+00:00" + "time": "2024-08-09T14:30:48+00:00" }, { "name": "dflydev/dot-access-data", - "version": "v3.0.2", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -529,9 +529,9 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2022-10-27T11:44:00+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "doctrine/cache", @@ -628,16 +628,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.4", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd" + "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b05e48a745f722801f55408d0dbd8003b403dbbd", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", + "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", "shasum": "" }, "require": { @@ -653,12 +653,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.58", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.16", + "phpstan/phpstan": "1.12.0", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "9.6.20", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.9.0", + "squizlabs/php_codesniffer": "3.10.2", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -721,7 +721,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.4" + "source": "https://github.com/doctrine/dbal/tree/3.9.1" }, "funding": [ { @@ -737,7 +737,7 @@ "type": "tidelift" } ], - "time": "2024-04-25T07:04:44+00:00" + "time": "2024-09-01T13:49:23+00:00" }, { "name": "doctrine/deprecations", @@ -788,16 +788,16 @@ }, { "name": "doctrine/event-manager", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", "shasum": "" }, "require": { @@ -807,10 +807,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^12", "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "type": "library", "autoload": { @@ -859,7 +859,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.0" + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" }, "funding": [ { @@ -875,7 +875,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:59:15+00:00" + "time": "2024-05-22T20:47:39+00:00" }, { "name": "doctrine/inflector", @@ -1598,24 +1598,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.1.2", + "version": "v1.1.3", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2" + "phpoption/phpoption": "^1.9.3" }, "require-dev": { - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" }, "type": "library", "autoload": { @@ -1644,7 +1644,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" }, "funding": [ { @@ -1656,26 +1656,26 @@ "type": "tidelift" } ], - "time": "2023-11-12T22:16:48+00:00" + "time": "2024-07-20T21:45:45+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1686,9 +1686,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1766,7 +1766,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -1782,20 +1782,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", "shasum": "" }, "require": { @@ -1803,7 +1803,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { @@ -1849,7 +1849,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.0.3" }, "funding": [ { @@ -1865,20 +1865,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2024-07-18T10:29:17+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -1893,8 +1893,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1965,7 +1965,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -1981,7 +1981,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "guzzlehttp/uri-template", @@ -2270,16 +2270,16 @@ }, { "name": "laravel/framework", - "version": "v11.7.0", + "version": "v11.25.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93" + "reference": "b487a9089c0b1c71ac63bb6bc44fb4b00dc6da2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/e5ac72f513f635f208024aa76b8a04efc1b47f93", - "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93", + "url": "https://api.github.com/repos/laravel/framework/zipball/b487a9089c0b1c71ac63bb6bc44fb4b00dc6da2e", + "reference": "b487a9089c0b1c71ac63bb6bc44fb4b00dc6da2e", "shasum": "" }, "require": { @@ -2298,7 +2298,7 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.18", + "laravel/prompts": "^0.1.18|^0.2.0", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -2332,6 +2332,7 @@ }, "provide": { "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", "psr/simple-cache-implementation": "1.0|2.0|3.0" }, "replace": { @@ -2340,6 +2341,7 @@ "illuminate/bus": "self.version", "illuminate/cache": "self.version", "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", @@ -2382,9 +2384,9 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^9.0.15", + "orchestra/testbench-core": "^9.5", "pda/pheanstalk": "^5.0", - "phpstan/phpstan": "^1.4.7", + "phpstan/phpstan": "^1.11.5", "phpunit/phpunit": "^10.5|^11.0", "predis/predis": "^2.0.2", "resend/resend-php": "^0.10.0", @@ -2404,7 +2406,7 @@ "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", "ext-pdo": "Required to use all database features.", "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", "laravel/tinker": "Required to use the tinker console command (^2.0).", @@ -2440,6 +2442,8 @@ "src/Illuminate/Events/functions.php", "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { @@ -2471,20 +2475,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-05-07T13:41:51+00:00" + "time": "2024-09-26T11:21:58+00:00" }, { "name": "laravel/horizon", - "version": "v5.24.4", + "version": "v5.29.0", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "8d31ff178bf5493efc2b2629c10612054f31f584" + "reference": "1d97f94412e89ff48683acd58d4a702d6bee7b88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/8d31ff178bf5493efc2b2629c10612054f31f584", - "reference": "8d31ff178bf5493efc2b2629c10612054f31f584", + "url": "https://api.github.com/repos/laravel/horizon/zipball/1d97f94412e89ff48683acd58d4a702d6bee7b88", + "reference": "1d97f94412e89ff48683acd58d4a702d6bee7b88", "shasum": "" }, "require": { @@ -2548,22 +2552,22 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.24.4" + "source": "https://github.com/laravel/horizon/tree/v5.29.0" }, - "time": "2024-05-03T13:34:14+00:00" + "time": "2024-09-24T13:38:25+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.21", + "version": "v0.2.1", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920" + "reference": "a132ccf64d46da183b7cf3729df260e836cc7e15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920", - "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920", + "url": "https://api.github.com/repos/laravel/prompts/zipball/a132ccf64d46da183b7cf3729df260e836cc7e15", + "reference": "a132ccf64d46da183b7cf3729df260e836cc7e15", "shasum": "" }, "require": { @@ -2588,7 +2592,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.1.x-dev" + "dev-main": "0.2.x-dev" } }, "autoload": { @@ -2606,32 +2610,33 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.21" + "source": "https://github.com/laravel/prompts/tree/v0.2.1" }, - "time": "2024-04-30T12:46:16+00:00" + "time": "2024-09-19T10:28:37+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.3", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "nesbot/carbon": "^2.61", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", "pestphp/pest": "^1.21.3", "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" }, "type": "library", "extra": { @@ -2668,20 +2673,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-11-08T14:08:06+00:00" + "time": "2024-09-23T13:33:08+00:00" }, { "name": "laravel/socialite", - "version": "v5.14.0", + "version": "v5.16.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "c7b0193a3753a29aff8ce80aa2f511917e6ed68a" + "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/c7b0193a3753a29aff8ce80aa2f511917e6ed68a", - "reference": "c7b0193a3753a29aff8ce80aa2f511917e6ed68a", + "url": "https://api.github.com/repos/laravel/socialite/zipball/40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf", + "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf", "shasum": "" }, "require": { @@ -2740,20 +2745,20 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2024-05-03T20:31:38+00:00" + "time": "2024-09-03T09:46:57+00:00" }, { "name": "laravel/telescope", - "version": "v5.0.4", + "version": "v5.2.2", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "b5f9783c8e1ec3ec387b289d3ca8a8f85e76b4fb" + "reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/b5f9783c8e1ec3ec387b289d3ca8a8f85e76b4fb", - "reference": "b5f9783c8e1ec3ec387b289d3ca8a8f85e76b4fb", + "url": "https://api.github.com/repos/laravel/telescope/zipball/daaf95dee9fab2dd80f59b5f6611c6c0eff44878", + "reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878", "shasum": "" }, "require": { @@ -2807,22 +2812,22 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v5.0.4" + "source": "https://github.com/laravel/telescope/tree/v5.2.2" }, - "time": "2024-04-22T09:19:03+00:00" + "time": "2024-08-26T12:40:52+00:00" }, { "name": "laravel/tinker", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", - "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", "shasum": "" }, "require": { @@ -2873,22 +2878,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.9.0" + "source": "https://github.com/laravel/tinker/tree/v2.10.0" }, - "time": "2024-01-04T16:10:04+00:00" + "time": "2024-09-23T13:32:56+00:00" }, { "name": "laravel/ui", - "version": "v4.5.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "a3562953123946996a503159199d6742d5534e61" + "reference": "c75396f63268c95b053c8e4814eb70e0875e9628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/a3562953123946996a503159199d6742d5534e61", - "reference": "a3562953123946996a503159199d6742d5534e61", + "url": "https://api.github.com/repos/laravel/ui/zipball/c75396f63268c95b053c8e4814eb70e0875e9628", + "reference": "c75396f63268c95b053c8e4814eb70e0875e9628", "shasum": "" }, "require": { @@ -2936,22 +2941,22 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.5.1" + "source": "https://github.com/laravel/ui/tree/v4.5.2" }, - "time": "2024-03-21T18:12:29+00:00" + "time": "2024-05-08T18:07:10+00:00" }, { "name": "league/commonmark", - "version": "2.4.2", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" + "reference": "b650144166dfa7703e62a22e493b853b58d874b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", - "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0", "shasum": "" }, "require": { @@ -2964,8 +2969,8 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.3", - "commonmark/commonmark.js": "0.30.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", "erusev/parsedown": "^1.0", @@ -2987,7 +2992,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "2.6-dev" } }, "autoload": { @@ -3044,7 +3049,7 @@ "type": "tidelift" } ], - "time": "2024-02-02T11:59:32+00:00" + "time": "2024-08-16T11:46:16+00:00" }, { "name": "league/config", @@ -3130,16 +3135,16 @@ }, { "name": "league/flysystem", - "version": "3.27.0", + "version": "3.28.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", - "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", "shasum": "" }, "require": { @@ -3163,10 +3168,13 @@ "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", + "ext-mongodb": "^1.3", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2", "phpseclib/phpseclib": "^3.0.36", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", @@ -3204,32 +3212,22 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.28.0" }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "time": "2024-04-07T19:17:50+00:00" + "time": "2024-05-22T10:09:12+00:00" }, { "name": "league/flysystem-local", - "version": "3.25.1", + "version": "3.28.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92" + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92", - "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40", + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40", "shasum": "" }, "require": { @@ -3263,32 +3261,22 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.28.0" }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "time": "2024-03-15T19:58:44+00:00" + "time": "2024-05-06T20:05:52+00:00" }, { "name": "league/mime-type-detection", - "version": "1.15.0", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", - "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", "shasum": "" }, "require": { @@ -3319,7 +3307,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" }, "funding": [ { @@ -3331,7 +3319,7 @@ "type": "tidelift" } ], - "time": "2024-01-28T23:22:08+00:00" + "time": "2024-09-21T08:32:55+00:00" }, { "name": "league/oauth1-client", @@ -3610,16 +3598,16 @@ }, { "name": "monolog/monolog", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", "shasum": "" }, "require": { @@ -3695,7 +3683,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + "source": "https://github.com/Seldaek/monolog/tree/3.7.0" }, "funding": [ { @@ -3707,20 +3695,20 @@ "type": "tidelift" } ], - "time": "2024-04-12T21:02:21+00:00" + "time": "2024-06-28T09:40:51+00:00" }, { "name": "nesbot/carbon", - "version": "3.3.1", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a" + "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", - "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbd3eef89af8ba66a3aa7952b5439168fbcc529f", + "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f", "shasum": "" }, "require": { @@ -3738,13 +3726,13 @@ "require-dev": { "doctrine/dbal": "^3.6.3 || ^4.0", "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.52.1", + "friendsofphp/php-cs-fixer": "^3.57.2", "kylekatarnls/multi-tester": "^2.5.3", "ondrejmirtes/better-reflection": "^6.25.0.4", "phpmd/phpmd": "^2.15.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.65", - "phpunit/phpunit": "^10.5.15", + "phpstan/phpstan": "^1.11.2", + "phpunit/phpunit": "^10.5.20", "squizlabs/php_codesniffer": "^3.9.0" }, "bin": [ @@ -3813,7 +3801,7 @@ "type": "tidelift" } ], - "time": "2024-05-01T06:54:22+00:00" + "time": "2024-08-19T06:22:39+00:00" }, { "name": "nette/schema", @@ -3879,20 +3867,20 @@ }, { "name": "nette/utils", - "version": "v4.0.4", + "version": "v4.0.5", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", "shasum": "" }, "require": { - "php": ">=8.0 <8.4" + "php": "8.0 - 8.4" }, "conflict": { "nette/finder": "<3", @@ -3959,22 +3947,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.4" + "source": "https://github.com/nette/utils/tree/v4.0.5" }, - "time": "2024-01-17T16:50:36+00:00" + "time": "2024-08-07T15:39:19+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v4.19.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "0ed4c8949a32986043e977dbe14776c14d644c45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ed4c8949a32986043e977dbe14776c14d644c45", + "reference": "0ed4c8949a32986043e977dbe14776c14d644c45", "shasum": "" }, "require": { @@ -4015,22 +4003,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.2" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-17T19:36:00+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.0.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" + "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", - "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/e5f21eade88689536c0cdad4c3cd75f3ed26e01a", + "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a", "shasum": "" }, "require": { @@ -4040,11 +4028,11 @@ }, "require-dev": { "ergebnis/phpstan-rules": "^2.2.0", - "illuminate/console": "^11.0.0", - "laravel/pint": "^1.14.0", - "mockery/mockery": "^1.6.7", - "pestphp/pest": "^2.34.1", - "phpstan/phpstan": "^1.10.59", + "illuminate/console": "^11.1.1", + "laravel/pint": "^1.15.0", + "mockery/mockery": "^1.6.11", + "pestphp/pest": "^2.34.6", + "phpstan/phpstan": "^1.10.66", "phpstan/phpstan-strict-rules": "^1.5.2", "symfony/var-dumper": "^7.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" @@ -4089,7 +4077,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.1.0" }, "funding": [ { @@ -4105,20 +4093,20 @@ "type": "github" } ], - "time": "2024-03-06T16:17:14+00:00" + "time": "2024-09-05T15:25:50+00:00" }, { "name": "opensolutions/oss-snmp", - "version": "v1.0.3", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/opensolutions/OSS_SNMP.git", - "reference": "1445daf3b3a99c71246afa97c8e5e96d1f8586bc" + "reference": "2ca10d2fc14b35e3c1297741a51e2b23b02b8b53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opensolutions/OSS_SNMP/zipball/1445daf3b3a99c71246afa97c8e5e96d1f8586bc", - "reference": "1445daf3b3a99c71246afa97c8e5e96d1f8586bc", + "url": "https://api.github.com/repos/opensolutions/OSS_SNMP/zipball/2ca10d2fc14b35e3c1297741a51e2b23b02b8b53", + "reference": "2ca10d2fc14b35e3c1297741a51e2b23b02b8b53", "shasum": "" }, "require": { @@ -4148,30 +4136,30 @@ ], "support": { "issues": "https://github.com/opensolutions/OSS_SNMP/issues", - "source": "https://github.com/opensolutions/OSS_SNMP/tree/v1.0.3" + "source": "https://github.com/opensolutions/OSS_SNMP/tree/v1.0.4" }, - "time": "2023-02-22T20:58:07+00:00" + "time": "2024-09-23T19:29:34+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.7.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", - "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", "shasum": "" }, "require": { - "php": "^7|^8" + "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" + "phpunit/phpunit": "^9", + "vimeo/psalm": "^4|^5" }, "type": "library", "autoload": { @@ -4217,7 +4205,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:18:48+00:00" + "time": "2024-05-08T12:36:18+00:00" }, { "name": "paragonie/random_compat", @@ -4416,16 +4404,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.2", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", "shasum": "" }, "require": { @@ -4433,13 +4421,13 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" }, "type": "library", "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { "dev-master": "1.9-dev" @@ -4475,7 +4463,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" }, "funding": [ { @@ -4487,24 +4475,24 @@ "type": "tidelift" } ], - "time": "2023-11-12T21:59:55+00:00" + "time": "2024-07-20T21:41:07+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.37", + "version": "3.0.42", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8" + "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/cfa2013d0f68c062055180dd4328cc8b9d1f30b8", - "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db92f1b1987b12b13f248fe76c3a52cadb67bb98", + "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^1|^2", + "paragonie/constant_time_encoding": "^1|^2|^3", "paragonie/random_compat": "^1.4|^2.0|^9.99.99", "php": ">=5.6.1" }, @@ -4581,7 +4569,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.37" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.42" }, "funding": [ { @@ -4597,7 +4585,7 @@ "type": "tidelift" } ], - "time": "2024-03-03T02:14:58+00:00" + "time": "2024-09-16T03:06:04+00:00" }, { "name": "pimple/pimple", @@ -4654,24 +4642,24 @@ }, { "name": "pragmarx/google2fa", - "version": "v8.0.1", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3" + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/80c3d801b31fe165f8fe99ea085e0a37834e1be3", - "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^1.0|^2.0", + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", "php": "^7.1|^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.18", + "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^7.5.15|^8.5|^9.0" }, "type": "library", @@ -4700,9 +4688,9 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.1" + "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" }, - "time": "2022-06-13T21:57:56+00:00" + "time": "2024-09-05T11:56:40+00:00" }, { "name": "pragmarx/google2fa-laravel", @@ -5203,16 +5191,16 @@ }, { "name": "psr/log", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -5247,9 +5235,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "psr/simple-cache", @@ -5304,16 +5292,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.3", + "version": "v0.12.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", - "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", "shasum": "" }, "require": { @@ -5377,9 +5365,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.3" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" }, - "time": "2024-04-02T15:57:53+00:00" + "time": "2024-06-10T01:18:23+00:00" }, { "name": "ralouphie/getallheaders", @@ -5663,16 +5651,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "v8.5.1", + "version": "v8.6.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152" + "reference": "d2fb94a9641be84d79c7548c6d39bbebba6e9a70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152", - "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d2fb94a9641be84d79c7548c6d39bbebba6e9a70", + "reference": "d2fb94a9641be84d79c7548c6d39bbebba6e9a70", "shasum": "" }, "require": { @@ -5722,9 +5710,9 @@ ], "support": { "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1" + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.6.0" }, - "time": "2024-02-15T16:41:13+00:00" + "time": "2024-07-01T07:33:21+00:00" }, { "name": "socialiteproviders/manager", @@ -5802,16 +5790,16 @@ }, { "name": "spatie/backtrace", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23" + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23", - "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9", "shasum": "" }, "require": { @@ -5849,7 +5837,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.6.1" + "source": "https://github.com/spatie/backtrace/tree/1.6.2" }, "funding": [ { @@ -5861,26 +5849,100 @@ "type": "other" } ], - "time": "2024-04-24T13:22:11+00:00" + "time": "2024-07-22T08:21:24+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0", + "illuminate/cache": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "livewire/livewire": "^2.11|^3.3.5", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "^7.0|8.22.3|^9.0", + "pestphp/pest": "^2.20", + "phpstan/phpstan": "^1.11", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.1" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2024-07-25T11:06:04+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.5.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "e27977d534eefe04c154c6fd8460217024054c05" + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/e27977d534eefe04c154c6fd8460217024054c05", - "reference": "e27977d534eefe04c154c6fd8460217024054c05", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", "shasum": "" }, "require": { "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", "php": "^8.0", - "spatie/backtrace": "^1.5.2", + "spatie/backtrace": "^1.6.1", "symfony/http-foundation": "^5.2|^6.0|^7.0", "symfony/mime": "^5.2|^6.0|^7.0", "symfony/process": "^5.2|^6.0|^7.0", @@ -5892,7 +5954,7 @@ "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + "spatie/pest-plugin-snapshots": "^1.0|^2.0" }, "type": "library", "extra": { @@ -5922,7 +5984,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.5.1" + "source": "https://github.com/spatie/flare-client-php/tree/1.8.0" }, "funding": [ { @@ -5930,28 +5992,28 @@ "type": "github" } ], - "time": "2024-05-03T15:43:14+00:00" + "time": "2024-08-01T08:27:26+00:00" }, { "name": "spatie/ignition", - "version": "1.14.1", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "c23cc018c5f423d2f413b99f84655fceb6549811" + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/c23cc018c5f423d2f413b99f84655fceb6549811", - "reference": "c23cc018c5f423d2f413b99f84655fceb6549811", + "url": "https://api.github.com/repos/spatie/ignition/zipball/e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/backtrace": "^1.5.3", - "spatie/flare-client-php": "^1.4.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", "symfony/console": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, @@ -6013,20 +6075,20 @@ "type": "github" } ], - "time": "2024-05-03T15:56:16+00:00" + "time": "2024-06-12T14:55:22+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57" + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/f52124d50122611e8a40f628cef5c19ff6cc5b57", - "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3c067b75bfb50574db8f7e2c3978c65eed71126c", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c", "shasum": "" }, "require": { @@ -6035,8 +6097,7 @@ "ext-mbstring": "*", "illuminate/support": "^10.0|^11.0", "php": "^8.1", - "spatie/flare-client-php": "^1.5", - "spatie/ignition": "^1.14", + "spatie/ignition": "^1.15", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" }, @@ -6105,20 +6166,20 @@ "type": "github" } ], - "time": "2024-05-02T13:42:49+00:00" + "time": "2024-06-12T15:01:18+00:00" }, { "name": "symfony/clock", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", + "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7", + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7", "shasum": "" }, "require": { @@ -6163,7 +6224,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.7" + "source": "https://github.com/symfony/clock/tree/v7.1.1" }, "funding": [ { @@ -6179,20 +6240,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/console", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" + "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", + "url": "https://api.github.com/repos/symfony/console/zipball/0fa539d12b3ccf068a722bbbffa07ca7079af9ee", + "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee", "shasum": "" }, "require": { @@ -6256,7 +6317,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.7" + "source": "https://github.com/symfony/console/tree/v7.1.5" }, "funding": [ { @@ -6272,20 +6333,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc" + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", - "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", "shasum": "" }, "require": { @@ -6321,7 +6382,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.7" + "source": "https://github.com/symfony/css-selector/tree/v7.1.1" }, "funding": [ { @@ -6337,7 +6398,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6408,16 +6469,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab" + "reference": "432bb369952795c61ca1def65e078c4a80dad13c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf97429887e40480c847bfeb6c3991e1e2c086ab", - "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/432bb369952795c61ca1def65e078c4a80dad13c", + "reference": "432bb369952795c61ca1def65e078c4a80dad13c", "shasum": "" }, "require": { @@ -6463,7 +6524,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.7" + "source": "https://github.com/symfony/error-handler/tree/v7.1.3" }, "funding": [ { @@ -6479,20 +6540,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-26T13:02:51+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", "shasum": "" }, "require": { @@ -6543,7 +6604,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" }, "funding": [ { @@ -6559,7 +6620,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -6639,16 +6700,16 @@ }, { "name": "symfony/finder", - "version": "v7.0.7", + "version": "v7.1.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", + "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", "shasum": "" }, "require": { @@ -6683,7 +6744,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.7" + "source": "https://github.com/symfony/finder/tree/v7.1.4" }, "funding": [ { @@ -6699,20 +6760,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-08-13T14:28:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" + "reference": "e30ef73b1e44eea7eb37ba69600a354e553f694b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e30ef73b1e44eea7eb37ba69600a354e553f694b", + "reference": "e30ef73b1e44eea7eb37ba69600a354e553f694b", "shasum": "" }, "require": { @@ -6760,7 +6821,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.5" }, "funding": [ { @@ -6776,25 +6837,26 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25" + "reference": "44204d96150a9df1fc57601ec933d23fefc2d65b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", - "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/44204d96150a9df1fc57601ec933d23fefc2d65b", + "reference": "44204d96150a9df1fc57601ec933d23fefc2d65b", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", @@ -6835,9 +6897,9 @@ "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^7.1", "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/serializer": "^7.1", "symfony/stopwatch": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", @@ -6873,7 +6935,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.0.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.5" }, "funding": [ { @@ -6889,20 +6951,20 @@ "type": "tidelift" } ], - "time": "2024-04-29T12:20:25+00:00" + "time": "2024-09-21T06:09:21+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" + "reference": "bbf21460c56f29810da3df3e206e38dfbb01e80b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "url": "https://api.github.com/repos/symfony/mailer/zipball/bbf21460c56f29810da3df3e206e38dfbb01e80b", + "reference": "bbf21460c56f29810da3df3e206e38dfbb01e80b", "shasum": "" }, "require": { @@ -6953,7 +7015,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.7" + "source": "https://github.com/symfony/mailer/tree/v7.1.5" }, "funding": [ { @@ -6969,20 +7031,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-08T12:32:26+00:00" }, { "name": "symfony/mime", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" + "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", + "url": "https://api.github.com/repos/symfony/mime/zipball/711d2e167e8ce65b05aea6b258c449671cdd38ff", + "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff", "shasum": "" }, "require": { @@ -6995,7 +7057,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4" + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -7005,7 +7067,7 @@ "symfony/process": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", "autoload": { @@ -7037,7 +7099,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.7" + "source": "https://github.com/symfony/mime/tree/v7.1.5" }, "funding": [ { @@ -7053,24 +7115,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -7116,7 +7178,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -7132,24 +7194,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -7194,7 +7256,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -7210,26 +7272,25 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" @@ -7278,7 +7339,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -7294,24 +7355,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -7359,7 +7420,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -7375,24 +7436,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -7439,80 +7500,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -7528,24 +7516,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -7592,7 +7580,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -7608,25 +7596,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.2" }, "type": "library", "extra": { @@ -7669,7 +7656,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" }, "funding": [ { @@ -7685,24 +7672,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-uuid": "*" @@ -7748,7 +7735,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -7764,20 +7751,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" + "reference": "5c03ee6369281177f07f7c68252a280beccba847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", + "url": "https://api.github.com/repos/symfony/process/zipball/5c03ee6369281177f07f7c68252a280beccba847", + "reference": "5c03ee6369281177f07f7c68252a280beccba847", "shasum": "" }, "require": { @@ -7809,7 +7796,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.7" + "source": "https://github.com/symfony/process/tree/v7.1.5" }, "funding": [ { @@ -7825,20 +7812,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-19T21:48:23+00:00" }, { "name": "symfony/routing", - "version": "v7.0.7", + "version": "v7.1.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" + "reference": "1500aee0094a3ce1c92626ed8cf3c2037e86f5a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "url": "https://api.github.com/repos/symfony/routing/zipball/1500aee0094a3ce1c92626ed8cf3c2037e86f5a7", + "reference": "1500aee0094a3ce1c92626ed8cf3c2037e86f5a7", "shasum": "" }, "require": { @@ -7890,7 +7877,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.7" + "source": "https://github.com/symfony/routing/tree/v7.1.4" }, "funding": [ { @@ -7906,7 +7893,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-08-29T08:16:25+00:00" }, { "name": "symfony/service-contracts", @@ -7993,16 +7980,16 @@ }, { "name": "symfony/string", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", "shasum": "" }, "require": { @@ -8016,6 +8003,7 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { + "symfony/emoji": "^7.1", "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", @@ -8059,7 +8047,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.1.5" }, "funding": [ { @@ -8075,20 +8063,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/translation", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "1515e03afaa93e6419aba5d5c9d209159317100b" + "reference": "235535e3f84f3dfbdbde0208ede6ca75c3a489ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b", - "reference": "1515e03afaa93e6419aba5d5c9d209159317100b", + "url": "https://api.github.com/repos/symfony/translation/zipball/235535e3f84f3dfbdbde0208ede6ca75c3a489ea", + "reference": "235535e3f84f3dfbdbde0208ede6ca75c3a489ea", "shasum": "" }, "require": { @@ -8153,7 +8141,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.0.7" + "source": "https://github.com/symfony/translation/tree/v7.1.5" }, "funding": [ { @@ -8169,7 +8157,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-16T06:30:38+00:00" }, { "name": "symfony/translation-contracts", @@ -8251,16 +8239,16 @@ }, { "name": "symfony/uid", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" + "reference": "8c7bb8acb933964055215d89f9a9871df0239317" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", + "url": "https://api.github.com/repos/symfony/uid/zipball/8c7bb8acb933964055215d89f9a9871df0239317", + "reference": "8c7bb8acb933964055215d89f9a9871df0239317", "shasum": "" }, "require": { @@ -8305,7 +8293,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.0.7" + "source": "https://github.com/symfony/uid/tree/v7.1.5" }, "funding": [ { @@ -8321,20 +8309,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-17T09:16:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924" + "reference": "e20e03889539fd4e4211e14d2179226c513c010d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d1627b66fd87c8b4d90cabe5671c29d575690924", - "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e20e03889539fd4e4211e14d2179226c513c010d", + "reference": "e20e03889539fd4e4211e14d2179226c513c010d", "shasum": "" }, "require": { @@ -8388,7 +8376,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.7" + "source": "https://github.com/symfony/var-dumper/tree/v7.1.5" }, "funding": [ { @@ -8404,7 +8392,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-16T10:07:02+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -8461,23 +8449,23 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.0", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", + "graham-campbell/result-type": "^1.1.3", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2", + "phpoption/phpoption": "^1.9.3", "symfony/polyfill-ctype": "^1.24", "symfony/polyfill-mbstring": "^1.24", "symfony/polyfill-php80": "^1.24" @@ -8494,7 +8482,7 @@ "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { "dev-master": "5.6-dev" @@ -8529,7 +8517,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" }, "funding": [ { @@ -8541,7 +8529,7 @@ "type": "tidelift" } ], - "time": "2023-11-12T22:43:29+00:00" + "time": "2024-07-20T21:52:34+00:00" }, { "name": "voku/portable-ascii", @@ -8991,16 +8979,16 @@ }, { "name": "barryvdh/laravel-ide-helper", - "version": "v3.0.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622" + "reference": "591e7d665fbab8a3b682e451641706341573eb80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", - "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/591e7d665fbab8a3b682e451641706341573eb80", + "reference": "591e7d665fbab8a3b682e451641706341573eb80", "shasum": "" }, "require": { @@ -9032,7 +9020,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" }, "laravel": { "providers": [ @@ -9069,7 +9057,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.0.0" + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.1.0" }, "funding": [ { @@ -9081,7 +9069,7 @@ "type": "github" } ], - "time": "2024-03-01T12:53:18+00:00" + "time": "2024-07-12T14:20:51+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -9205,16 +9193,16 @@ }, { "name": "composer/class-map-generator", - "version": "1.1.1", + "version": "1.3.4", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311" + "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8286a62d243312ed99b3eee20d5005c961adb311", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", + "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", "shasum": "" }, "require": { @@ -9258,7 +9246,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.1" + "source": "https://github.com/composer/class-map-generator/tree/1.3.4" }, "funding": [ { @@ -9274,34 +9262,42 @@ "type": "tidelift" } ], - "time": "2024-03-15T12:53:41+00:00" + "time": "2024-06-12T14:13:04+00:00" }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.11.10", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -9329,7 +9325,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.3.1" }, "funding": [ { @@ -9345,28 +9341,28 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-08-27T18:44:43+00:00" }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -9410,7 +9406,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -9426,7 +9422,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/xdebug-handler", @@ -9641,16 +9637,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { @@ -9691,22 +9687,22 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" }, - "time": "2022-03-02T22:36:06+00:00" + "time": "2024-04-30T00:40:11+00:00" }, { "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { @@ -9746,7 +9742,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { @@ -9754,30 +9750,30 @@ "type": "github" } ], - "time": "2024-02-07T09:43:46+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -9817,7 +9813,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.16.0" }, "funding": [ { @@ -9825,7 +9821,7 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2024-09-25T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9880,16 +9876,16 @@ }, { "name": "laravel/dusk", - "version": "v8.2.0", + "version": "v8.2.6", "source": { "type": "git", "url": "https://github.com/laravel/dusk.git", - "reference": "773a12dfbd3f84174b0f26fbc2807a414a379a66" + "reference": "f0bf5fcf12bb8d88382513a4673c53123a2322f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/dusk/zipball/773a12dfbd3f84174b0f26fbc2807a414a379a66", - "reference": "773a12dfbd3f84174b0f26fbc2807a414a379a66", + "url": "https://api.github.com/repos/laravel/dusk/zipball/f0bf5fcf12bb8d88382513a4673c53123a2322f4", + "reference": "f0bf5fcf12bb8d88382513a4673c53123a2322f4", "shasum": "" }, "require": { @@ -9946,22 +9942,22 @@ ], "support": { "issues": "https://github.com/laravel/dusk/issues", - "source": "https://github.com/laravel/dusk/tree/v8.2.0" + "source": "https://github.com/laravel/dusk/tree/v8.2.6" }, - "time": "2024-04-16T15:51:19+00:00" + "time": "2024-09-24T13:39:00+00:00" }, { "name": "laravel/pint", - "version": "v1.15.3", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656" + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/3600b5d17aff52f6100ea4921849deacbbeb8656", - "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656", + "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", "shasum": "" }, "require": { @@ -9972,13 +9968,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.54.0", - "illuminate/view": "^10.48.8", - "larastan/larastan": "^2.9.5", - "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.11", + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", + "larastan/larastan": "^2.9.8", + "laravel-zero/framework": "^10.4.0", + "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.34.7" + "pestphp/pest": "^2.35.1" }, "bin": [ "builds/pint" @@ -10014,20 +10010,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-04-30T15:02:26+00:00" + "time": "2024-09-24T17:22:50+00:00" }, { "name": "laravel/sail", - "version": "v1.29.1", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" + "reference": "d54af9d5745e3680d8a6463ffd9f314aa53eb2d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", - "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "url": "https://api.github.com/repos/laravel/sail/zipball/d54af9d5745e3680d8a6463ffd9f314aa53eb2d1", + "reference": "d54af9d5745e3680d8a6463ffd9f314aa53eb2d1", "shasum": "" }, "require": { @@ -10077,7 +10073,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-03-20T20:09:31+00:00" + "time": "2024-09-22T19:04:21+00:00" }, { "name": "mockery/mockery", @@ -10164,16 +10160,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -10181,11 +10177,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -10211,7 +10208,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -10219,20 +10216,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.4.1", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5", + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5", "shasum": "" }, "require": { @@ -10268,44 +10265,44 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0" }, - "time": "2024-01-31T06:18:54+00:00" + "time": "2024-09-08T10:13:13+00:00" }, { "name": "nunomaduro/collision", - "version": "v8.1.1", + "version": "v8.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" + "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", - "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/e7d1aa8ed753f63fa816932bbc89678238843b4a", + "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a", "shasum": "" }, "require": { "filp/whoops": "^2.15.4", "nunomaduro/termwind": "^2.0.1", "php": "^8.2.0", - "symfony/console": "^7.0.4" + "symfony/console": "^7.1.3" }, "conflict": { "laravel/framework": "<11.0.0 || >=12.0.0", "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "larastan/larastan": "^2.9.2", - "laravel/framework": "^11.0.0", - "laravel/pint": "^1.14.0", - "laravel/sail": "^1.28.2", - "laravel/sanctum": "^4.0.0", + "larastan/larastan": "^2.9.8", + "laravel/framework": "^11.19.0", + "laravel/pint": "^1.17.1", + "laravel/sail": "^1.31.0", + "laravel/sanctum": "^4.0.2", "laravel/tinker": "^2.9.0", - "orchestra/testbench-core": "^9.0.0", - "pestphp/pest": "^2.34.1 || ^3.0.0", - "sebastian/environment": "^6.0.1 || ^7.0.0" + "orchestra/testbench-core": "^9.2.3", + "pestphp/pest": "^2.35.0 || ^3.0.0", + "sebastian/environment": "^6.1.0 || ^7.0.0" }, "type": "library", "extra": { @@ -10367,7 +10364,97 @@ "type": "patreon" } ], - "time": "2024-03-06T16:20:09+00:00" + "time": "2024-08-03T15:32:23+00:00" + }, + { + "name": "orchestra/testbench-core", + "version": "v9.5.1", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "a083229e30daf7c9d6e323f19df0049a590fe51b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/a083229e30daf7c9d6e323f19df0049a590fe51b", + "reference": "a083229e30daf7c9d6e323f19df0049a590fe51b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "php": "^8.2", + "symfony/polyfill-php83": "^1.28" + }, + "conflict": { + "brianium/paratest": "<7.3.0 || >=8.0.0", + "laravel/framework": "<11.11.0 || >=12.0.0", + "laravel/serializable-closure": "<1.3.0 || >=2.0.0", + "nunomaduro/collision": "<8.0.0 || >=9.0.0", + "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.5.0" + }, + "require-dev": { + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.11", + "laravel/pint": "^1.17", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^10.5 || ^11.0.1", + "spatie/laravel-ray": "^1.35", + "symfony/process": "^7.0", + "symfony/yaml": "^7.0", + "vlucas/phpdotenv": "^5.4.1" + }, + "suggest": { + "brianium/paratest": "Allow using parallel tresting (^7.3).", + "ext-pcntl": "Required to use all features of the console signal trapping.", + "fakerphp/faker": "Allow using Faker for testing (^1.23).", + "laravel/framework": "Required for testing (^11.11).", + "mockery/mockery": "Allow using Mockery for testing (^1.6).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^8.0).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^9.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^10.5 || ^11.0).", + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^7.0).", + "symfony/yaml": "Required for Testbench CLI (^7.0).", + "vlucas/phpdotenv": "Required for Testbench CLI (^5.4.1)." + }, + "bin": [ + "testbench" + ], + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", + "keywords": [ + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" + }, + "time": "2024-09-25T10:02:32+00:00" }, { "name": "phar-io/manifest", @@ -10730,16 +10817,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.32.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4", "shasum": "" }, "require": { @@ -10771,38 +10858,38 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-09-26T07:23:32+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.14", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { "phpunit/phpunit": "^10.1" @@ -10814,7 +10901,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -10843,7 +10930,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -10851,7 +10938,7 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -11098,16 +11185,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.20", + "version": "10.5.35", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" + "reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7ac8b4e63f456046dcb4c9787da9382831a1874b", + "reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b", "shasum": "" }, "require": { @@ -11117,26 +11204,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.2", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -11179,7 +11266,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.35" }, "funding": [ { @@ -11195,7 +11282,79 @@ "type": "tidelift" } ], - "time": "2024-04-24T06:32:35+00:00" + "time": "2024-09-19T10:52:21+00:00" + }, + { + "name": "psalm/plugin-laravel", + "version": "v2.11.0", + "source": { + "type": "git", + "url": "https://github.com/psalm/psalm-plugin-laravel.git", + "reference": "ffd51399b672959331ed3ef4eaae13984474e2f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/psalm-plugin-laravel/zipball/ffd51399b672959331ed3ef4eaae13984474e2f0", + "reference": "ffd51399b672959331ed3ef4eaae13984474e2f0", + "shasum": "" + }, + "require": { + "barryvdh/laravel-ide-helper": "^2.13 || ^3.0", + "ext-simplexml": "*", + "illuminate/config": "^10.48 || ^11.0", + "illuminate/container": "^10.48 || ^11.0", + "illuminate/contracts": "^10.48 || ^11.0", + "illuminate/database": "^10.48 || ^11.0", + "illuminate/events": "^10.48 || ^11.0", + "illuminate/http": "^10.48 || ^11.0", + "illuminate/routing": "^10.48 || ^11.0", + "illuminate/support": "^10.48 || ^11.0", + "illuminate/view": "^10.48 || ^11.0", + "nikic/php-parser": "^4.18 || ^5.0", + "orchestra/testbench-core": "^8.22 || ^9.0", + "php": "^8.1", + "symfony/console": "^6.0 || ^7.0", + "symfony/finder": "^6.0 || ^7.0", + "vimeo/psalm": "^5.20" + }, + "require-dev": { + "laravel/framework": "^10.48 || ^11.0", + "phpunit/phpunit": "^10.5 || ^11.0", + "phpyh/psalm-tester": "^0.1.0", + "ramsey/collection": "^1.3", + "rector/rector": "^1.0", + "slevomat/coding-standard": "^8.8", + "squizlabs/php_codesniffer": "*", + "symfony/http-foundation": "^6.0 || ^7.0" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Psalm\\LaravelPlugin\\Plugin" + } + }, + "autoload": { + "psr-4": { + "Psalm\\LaravelPlugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown", + "email": "github@muglug.com" + } + ], + "description": "Psalm plugin for Laravel", + "homepage": "https://github.com/psalm/psalm-plugin-laravel", + "support": { + "issues": "https://github.com/psalm/psalm-plugin-laravel/issues", + "source": "https://github.com/psalm/psalm-plugin-laravel/tree/v2.11.0" + }, + "time": "2024-03-19T21:40:03+00:00" }, { "name": "sebastian/cli-parser", @@ -11367,16 +11526,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", "shasum": "" }, "require": { @@ -11387,7 +11546,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.4" }, "type": "library", "extra": { @@ -11432,7 +11591,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.2" }, "funding": [ { @@ -11440,7 +11599,7 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-08-12T06:03:08+00:00" }, { "name": "sebastian/complexity", @@ -12183,16 +12342,16 @@ }, { "name": "staudenmeir/dusk-updater", - "version": "v1.5", + "version": "v1.5.1", "source": { "type": "git", "url": "https://github.com/staudenmeir/dusk-updater.git", - "reference": "7841972db3997ee20bd48d8acf9d308c82585bb5" + "reference": "34a5e26ccaf729033c6511f8ebf9e7e1f127fc84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/dusk-updater/zipball/7841972db3997ee20bd48d8acf9d308c82585bb5", - "reference": "7841972db3997ee20bd48d8acf9d308c82585bb5", + "url": "https://api.github.com/repos/staudenmeir/dusk-updater/zipball/34a5e26ccaf729033c6511f8ebf9e7e1f127fc84", + "reference": "34a5e26ccaf729033c6511f8ebf9e7e1f127fc84", "shasum": "" }, "require": { @@ -12200,7 +12359,7 @@ "symfony/process": "^4.2|^5.0|^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^6.22" + "orchestra/testbench": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { @@ -12228,28 +12387,30 @@ "description": "Updater for Laravel Dusk ChromeDriver binaries", "support": { "issues": "https://github.com/staudenmeir/dusk-updater/issues", - "source": "https://github.com/staudenmeir/dusk-updater/tree/v1.5" + "source": "https://github.com/staudenmeir/dusk-updater/tree/v1.5.1" }, - "time": "2024-03-12T15:37:01+00:00" + "time": "2024-08-19T20:14:33+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5" + "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/cc168be6fbdcdf3401f50ae863ee3818ed4338f5", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a", + "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a", "shasum": "" }, "require": { "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { "symfony/process": "^6.4|^7.0" }, "type": "library", @@ -12278,7 +12439,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.7" + "source": "https://github.com/symfony/filesystem/tree/v7.1.5" }, "funding": [ { @@ -12294,20 +12455,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-17T09:16:35+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4e561c316e135e053bd758bf3b3eb291d9919de4", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4", "shasum": "" }, "require": { @@ -12349,7 +12510,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.7" + "source": "https://github.com/symfony/yaml/tree/v7.1.5" }, "funding": [ { @@ -12365,7 +12526,7 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-09-17T12:49:58+00:00" }, { "name": "theseer/tokenizer", @@ -12419,16 +12580,16 @@ }, { "name": "vimeo/psalm", - "version": "5.24.0", + "version": "5.26.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "462c80e31c34e58cc4f750c656be3927e80e550e" + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/462c80e31c34e58cc4f750c656be3927e80e550e", - "reference": "462c80e31c34e58cc4f750c656be3927e80e550e", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", "shasum": "" }, "require": { @@ -12449,7 +12610,7 @@ "felixfbecker/language-server-protocol": "^1.5.2", "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.16", + "nikic/php-parser": "^4.17", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", @@ -12525,7 +12686,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-05-01T19:32:08+00:00" + "time": "2024-09-08T18:53:08+00:00" } ], "aliases": [], diff --git a/config/app.php b/config/app.php index 6d111a0a5..925c4c956 100644 --- a/config/app.php +++ b/config/app.php @@ -220,6 +220,8 @@ IXP\Providers\IxpServiceProvider::class, IXP\Providers\RipeAtlasProvider::class, + IXP\Providers\DiagnosticsServiceProvider::class, + /* * Third party providers */ diff --git a/config/grapher.php b/config/grapher.php index 104fc3a1e..0537285b5 100644 --- a/config/grapher.php +++ b/config/grapher.php @@ -164,7 +164,7 @@ // The follows DO NOT DEFAULT TO PUBLIC but rather customer's are only allowed access // their own graphs by default. // - // See: https://docs.ixpmanager.org/grapher/api/#access-to-member-graphs + // See: https://docs.ixpmanager.org/latest/grapher/api/#access-to-member-graphs 'customer' => env( 'GRAPHER_ACCESS_CUSTOMER', 'own_graphs_only' ), 'p2p' => env( 'GRAPHER_ACCESS_P2P', 'own_graphs_only' ), 'latency' => env( 'GRAPHER_ACCESS_LATENCY', 'own_graphs_only' ), diff --git a/config/ixp.php b/config/ixp.php index c2887c1e1..6db3743bf 100644 --- a/config/ixp.php +++ b/config/ixp.php @@ -79,7 +79,7 @@ 'peering-matrix' => [ // Minimum user auth level for the peering matrix - // See https://docs.ixpmanager.org/usage/users/#types-of-users + // See https://docs.ixpmanager.org/latest/usage/users/#types-of-users 'min-auth' => env( 'PEERING_MATRIX_MIN_AUTH', \IXP\Models\User::AUTH_PUBLIC ), // the number of days back we look is not a perfect science. generally, the bigger the interface / more @@ -116,6 +116,31 @@ ], + + 'exec' => [ + + // printf style string: + 'ping4' => env( 'IXP_EXEC_PING4', "ping -4 -i 0.01 -w 2 -c 5 %s" ), + 'ping6' => env( 'IXP_EXEC_PING6', "ping -6 -i 0.01 -w 2 -c 5 %s" ), + + // arping is indexed on vlan.id so interfaces can be set appropriately + // prepopulating some entries for ease but will need to find an alternate way + // to handle this + 'arping' => [ + 1 => env( 'IXP_EXEC_ARPING_1', false ), + 2 => env( 'IXP_EXEC_ARPING_2', false ), + 3 => env( 'IXP_EXEC_ARPING_3', false ), + 4 => env( 'IXP_EXEC_ARPING_4', false ), + 5 => env( 'IXP_EXEC_ARPING_5', false ), + 6 => env( 'IXP_EXEC_ARPING_6', false ), + 7 => env( 'IXP_EXEC_ARPING_7', false ), + 8 => env( 'IXP_EXEC_ARPING_8', false ), + 9 => env( 'IXP_EXEC_ARPING_9', false ), + 10 => env( 'IXP_EXEC_ARPING_10', false ), + ], + ], + + 'rpki' => [ 'rtr1' => [ 'host' => env( 'IXP_RPKI_RTR1_HOST', false ), @@ -153,7 +178,7 @@ // 'snmp' => [ - // See https://docs.ixpmanager.org/usage/switches/#snmp-and-port-types-iftype + // See https://docs.ixpmanager.org/latest/usage/switches/#snmp-and-port-types-iftype // Do not edit this file - set a .env variable of types to override the default. // The default is equivalent to: // IXP_SNMP_ALLOWED_INTERFACE_TYPES="6,135,136" diff --git a/config/ixp_fe.php b/config/ixp_fe.php index 23b5a4c8a..377540063 100644 --- a/config/ixp_fe.php +++ b/config/ixp_fe.php @@ -89,7 +89,6 @@ 'logs' => env( 'IXP_FE_FRONTEND_DISABLED_LOGS', false ), 'logo' => env( 'IXP_FE_FRONTEND_DISABLED_LOGO', true ), 'lg' => env( 'IXP_FE_FRONTEND_DISABLED_LOOKING_GLASS', true ), - 'net-info' => env( 'IXP_FE_FRONTEND_DISABLED_NETINFO', true ), 'peering-manager' => env( 'IXP_FE_FRONTEND_DISABLED_PEERING_MANAGER', false ), 'peering-matrix' => env( 'IXP_FE_FRONTEND_DISABLED_PEERING_MATRIX', false ), 'phpinfo' => env( 'IXP_FE_FRONTEND_DISABLED_PHPINFO', true ), @@ -156,7 +155,7 @@ // 'billing_updates_notify' => env( 'IXP_FE_CUSTOMER_BILLING_UPDATES_NOTIFY', false ), - // customer notes - see: https://docs.ixpmanager.org/usage/notes/ + // customer notes - see: https://docs.ixpmanager.org/latest/usage/notes/ // // Admin users can opt to get notified when a customer note is added / edited / deleted. // For testing and demonstration purposes, this can be disabled and all updates diff --git a/config/ixp_fe_settings.php b/config/ixp_fe_settings.php new file mode 100644 index 000000000..9a45dc1d8 --- /dev/null +++ b/config/ixp_fe_settings.php @@ -0,0 +1,797 @@ + [ + + + /* + */ + 'frontend_controllers' => [ + 'title' => 'Features', + 'description' => "These are features or modules that can be enabled or disabled. Some are + disabled by default as they may require extra configuration settings. + Disabling a module will remove frontend elements such as menus and links also.", + + 'fields' => [ + + 'as112' => [ + 'config_key' => 'ixp.as112.ui_active', + 'dotenv_key' => 'IXP_AS112_UI_ACTIVE', + 'type' => 'radio', + 'invert' => false, + 'name' => 'AS112 functionality', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/as112/', + 'help' => 'AS112 is a service which provides anycast reverse DNS lookup for several prefixes, + particularly rfc1918 space. If you are providing an AS112 service to your members, + this feature enables UI elements for that.', + ], + + 'console-server-connection' => [ + 'config_key' => 'ixp_fe.frontend.disabled.console-server-connection', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_CONSOLE', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Console Server Connections', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/console-servers/', // can be null + 'help' => 'An IXP would typically have out of band access (for emergencies, firmware upgrades, + etc) to critical infrastructure devices by means of a console server. This + module allows you to record what equipment console server ports connect to. + For larger exchanges, a modern DCIM system such as + NetBox + is recrommended.', + ], + + 'cust-kit' => [ + 'config_key' => 'ixp_fe.frontend.disabled.cust-kit', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_CUSTKIT', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Colocated Equipment', + 'docs_url' => null, + 'help' => 'If you provide equipment colocation services for members, the module will allow you to + maintain an inventory of this. For larger exchanges, a modern DCIM system such as + NetBox is recrommended.', + ], + + 'logs' => [ + 'config_key' => 'ixp_fe.frontend.disabled.logs', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_LOGS', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Database Change Logging', + 'docs_url' => 'https://docs.ixpmanager.org/latest/usage/dblogs/', + 'help' => 'Database change logging for changes made via the UI.', + ], + + 'docstore_customer' => [ + 'config_key' => 'ixp_fe.frontend.disabled.docstore_customer', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_DOCSTORE_CUSTOMER', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Customer Document Store', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/docstore/', + 'help' => 'A per-member document store which allows administrators to upload documents on a + per-member basis. These can be made visible to administrators only or also to + users assigned to that specific member. Example use cases for this are member + application forms / contracts, completed / signed port upgrade forms, etc.', + ], + + 'docstore' => [ + 'config_key' => 'ixp_fe.frontend.disabled.docstore', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_DOCSTORE', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Document Store', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/docstore/', + 'help' => 'A general document store which allows administrators to make documents generally available + for specific user classes (public, customer user, customer admin, superadmin). Example + use cases for this are member upgrade forms, distribution of board or management minutes, etc.', + ], + + 'filtered-prefixes' => [ + 'config_key' => 'ixp_fe.frontend.disabled.filtered-prefixes', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_FILTERED_PREFIXES', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Filtered Prefixes', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/route-servers/#displaying-filtered-prefixes', + 'help' => 'This feature provides member\'s a live view of member prefixes filtered on the IXP\'s route servers. + It requires that you are using IXP Manager\'s Bird v2 route server configuration and + have enabled the looking glass.' + ], + + 'lg' => [ + 'config_key' => 'ixp_fe.frontend.disabled.lg', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_LOOKING_GLASS', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Looking Glass', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/looking-glass/', + 'help' => 'IXP Manager supports full looking glass features when using the Bird BGP daemon and + Bird\'s Eye (a simple secure micro service for querying Bird). This feature is an + required element of some other features such as the filtered prefixes.', + ], + + 'login_history' => [ + 'config_key' => 'ixp_fe.login_history.enabled', + 'dotenv_key' => 'IXP_FE_LOGIN_HISTORY_ENABLED', + 'type' => 'radio', + 'invert' => true, + 'name' => "Login History", + 'help' => 'Record user logins and view it in the UI. Expunged after six months by default.', + ], + + + 'logo' => [ + 'config_key' => 'ixp_fe.frontend.disabled.logo', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_LOGO', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Member Logos', + 'docs_url' => 'https://docs.ixpmanager.org/latest/usage/customers/#customer-logos', + 'help' => 'Allows customer users and administrators to upload and manage their organisation\'s logo.', + ], + + 'peering-manager' => [ + 'config_key' => 'ixp_fe.frontend.disabled.peering-manager', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_PEERING_MANAGER', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Peering Manager', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peering-manager/', + 'help' => 'The Peering Manager is a fantastic tool that allows your members to view, compose, + request and track their peering requests with other IXP members.', + ], + + 'peering-matrix' => [ + 'config_key' => 'ixp_fe.frontend.disabled.peering-matrix', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_PEERING_MATRIX', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Peering Matrix', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peering-matrix/', + 'help' => 'The peering matrix system builds up a list of who is peering with whom over your IXP. You + will need sflow running with a + BGP detector running.', + ], + + 'phpinfo' => [ + 'config_key' => 'ixp_fe.frontend.disabled.phpinfo', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_PHPINFO', + 'type' => 'radio', + 'invert' => true, + 'name' => 'PHP Info', + 'docs_url' => null, + 'help' => 'The PHP Info option under IXP Utilities on the left hand menu. This is available to + administrators only and shows the output of phpinfo().', + ], + + 'rs-prefixes' => [ + 'config_key' => 'ixp_fe.frontend.disabled.rs-prefixes', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_RS_PREFIXES', + 'type' => 'radio', + 'invert' => true, + 'name' => 'RS Prefixes', + 'docs_url' => null, + 'help' => '[DEPRECATED] Filtered Prefixes above should be used instead of this.', + ], + + 'rs-filters' => [ + 'config_key' => 'ixp_fe.frontend.disabled.rs-filters', + 'dotenv_key' => 'IXP_FE_FRONTEND_DISABLED_RS_FILTERS', + 'type' => 'radio', + 'invert' => true, + 'name' => 'Route Server Filtering UI', + 'docs_url' => 'https://github.com/inex/IXP-Manager/releases/tag/v6.4.0', + 'help' => 'Community-based filtering is the standard way to allow route server participants at an IXP + to control their routing policy. This feature allows IXP members to configure route server filtering in a web-based UI.', + ], + + ], + ], + + + 'identity' => [ + + 'title' => 'IXP Identity', + 'description' => 'IXP Identity Information.', + + 'fields' => [ + 'orgname' => [ + 'config_key' => 'identity.orgname', + 'dotenv_key' => 'IDENTITY_ORGNAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Organisation Name', + 'docs_url' => null, + 'help' => 'What your IXP is generally known as. E.g. INEX, LONAP, etc.', + ], + 'name' => [ + 'config_key' => 'identity.name', + 'dotenv_key' => 'IDENTITY_NAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Name', + 'docs_url' => null, + 'help' => 'What your IXP is generally known as. E.g. INEX, LONAP, etc.', + ], + 'sitename' => [ + 'config_key' => 'identity.sitename', + 'dotenv_key' => 'IDENTITY_SITENAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Site Name', + 'docs_url' => null, + 'help' => 'The name of this website. E.g. INEX IXP Manager', + ], + 'titlename' => [ + 'config_key' => 'identity.titlename', + 'dotenv_key' => 'IDENTITY_TITLENAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Site Title', + 'docs_url' => null, + 'help' => 'Your site/IXP name in the top left menu of IXP Manager.', + ], + 'legalname' => [ + 'config_key' => 'identity.legalname', + 'dotenv_key' => 'IDENTITY_LEGALNAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Legal Name', + 'docs_url' => null, + 'help' => 'The full legal name of the IXP.', + ], + 'location_city' => [ + 'config_key' => 'identity.location.city', + 'dotenv_key' => 'IDENTITY_CITY', + 'type' => 'text', + 'rules' => '', + 'name' => 'City', + 'docs_url' => null, + 'help' => '', + ], + 'location_country' => [ + 'config_key' => 'identity.location.country', + 'dotenv_key' => 'IDENTITY_COUNTRY', + 'type' => 'select', + 'options' => [ 'type' => 'countries' ], // special option list for countries + 'rules' => '', + 'name' => 'Country', + 'docs_url' => null, + 'help' => '', + ], + 'email' => [ + 'config_key' => 'identity.email', + 'dotenv_key' => 'IDENTITY_EMAIL', + 'type' => 'text', + 'rules' => 'nullable|max:255|email', + 'name' => 'Email Address', + 'docs_url' => null, + 'help' => 'Typically your support or other generic contact email address.', + ], + + + 'corporate_url' => [ + 'config_key' => 'identity.corporate_url', + 'dotenv_key' => 'IDENTITY_CORPORATE_URL', + 'type' => 'text', + 'rules' => '', + 'name' => 'Corporate URL', + 'docs_url' => null, + 'help' => 'E.g. https://www.example.com/', + ], + 'url' => [ + 'config_key' => 'identity.url', + 'dotenv_key' => 'APP_URL', + 'type' => 'text', + 'rules' => '', + 'name' => 'IXP Manager URL', + 'docs_url' => null, + 'help' => 'E.g. https://www.example.com/portal/', + ], + + + 'alerts_recipient_name' => [ + 'config_key' => 'mail.alerts_recipient.name', + 'dotenv_key' => 'IDENTITY_ALERTS_NAME', + 'type' => 'text', + 'rules' => '', + 'name' => 'Alert Recipient Name', + 'docs_url' => null, + 'help' => 'IXP Manager will need to send alert emails. This is the recipient name for these alerts. + E.g. MyIXP Ops Team', + ], + + 'alerts_recipient_address' => [ + 'config_key' => 'mail.alerts_recipient.address', + 'dotenv_key' => 'IDENTITY_ALERTS_EMAIL', + 'type' => 'text', + 'rules' => 'nullable|max:255|email', + 'name' => 'Alert Recipient Email Address', + 'docs_url' => null, + 'help' => 'IXP Manager will need to send alert emails. This is the recipient email for these alerts. + E.g. ops@example.com', + ], + +// 'testemail' => [ +// 'config_key' => 'identity.testemail', +// 'dotenv_key' => 'IDENTITY_TESTEMAIL', +// 'type' => 'text', +// 'rules' => 'nullable|max:255|email', +// 'name' => 'Test Email Address', +// 'docs_url' => null, +// 'help' => 'Used by the peering manager for testing when `ixp.peering_manager.testemail` is set to true.', +// ], + 'watermark' => [ + 'config_key' => 'identity.watermark', + 'dotenv_key' => 'IDENTITY_WATERMARK', + 'type' => 'text', + 'rules' => '', + 'name' => 'Watermark', + 'docs_url' => null, + 'help' => 'Printed on some graphes, etc. E.g., "INEX, Ireland"', + ], + 'support_email' => [ + 'config_key' => 'identity.support_email', + 'dotenv_key' => 'IDENTITY_SUPPORT_EMAIL', + 'type' => 'text', + 'rules' => 'nullable|max:255|email', + 'name' => 'Support Email Address', + 'docs_url' => null, + 'help' => 'Your support/operations email address.', + ], + 'support_phone' => [ + 'config_key' => 'identity.support_phone', + 'dotenv_key' => 'IDENTITY_SUPPORT_PHONE', + 'type' => 'text', + 'rules' => '', + 'name' => 'Support Phone Number', + 'docs_url' => null, + 'help' => 'Your support/operations phone number.', + ], + 'support_hours' => [ + 'config_key' => 'identity.support_hours', + 'dotenv_key' => 'IDENTITY_SUPPORT_HOURS', + 'type' => 'text', + 'rules' => '', + 'name' => 'Support Hours', + 'docs_url' => null, + 'help' => 'Hours that support is normally available. Standard industry nomenclature includes: 24/7, 8x5, 8x7, 12x5, 12x7', + ], + 'billing_email' => [ + 'config_key' => 'identity.billing_email', + 'dotenv_key' => 'IDENTITY_BILLING_EMAIL', + 'type' => 'text', + 'rules' => 'nullable|max:255|email', + 'name' => 'Billing Email Address', + 'docs_url' => null, + 'help' => 'Your billing/accounting contact email address.', + ], + 'billing_phone' => [ + 'config_key' => 'identity.billing_phone', + 'dotenv_key' => 'IDENTITY_BILLING_PHONE', + 'type' => 'text', + 'rules' => '', + 'name' => 'Billing Phone Number', + 'docs_url' => null, + 'help' => 'Your billing/accounting contact phone number.', + ], + 'billing_hours' => [ + 'config_key' => 'identity.billing_hours', + 'dotenv_key' => 'IDENTITY_BILLING_HOURS', + 'type' => 'text', + 'rules' => '', + 'name' => 'Billing Hours', + 'docs_url' => null, + 'help' => 'Hours that billing support is normally available. Standard industry nomenclature includes: 24/7, 8x5, 8x7, 12x5, 12x7', + ], + + 'biglogo' => [ + 'config_key' => 'identity.biglogo', + 'dotenv_key' => 'IDENTITY_BIGLOGO', + 'type' => 'text', + 'rules' => '', + 'name' => 'Big Logo', + 'docs_url' => null, + 'help' => 'URL of the logo to use on the login page. Can be https://... or file:///home/...', + ], + 'vlans_default' => [ + 'config_key' => 'identity.vlans.default', + 'dotenv_key' => 'IDENTITY_DEFAULT_VLAN', + 'type' => 'select', + 'options' => [ 'type' => 'collection', 'list' => [ 'model' => 'Vlan', 'keys' => 'id', 'values' => 'name' ] ], + 'name' => 'Default Vlans', + 'docs_url' => null, + 'help' => '', + ], + ], + + ], + + 'auth' => [ + + 'title' => 'Authentication', + 'description' => "Authentication related options.", + + 'fields' => [ + + 'peeringdb_oauth_enabled' => [ + 'config_key' => 'auth.peeringdb_oauth_enabled', + 'dotenv_key' => 'AUTH_PEERINGDB_ENABLED', + 'type' => 'radio', + 'name' => 'PeeringDB OAuth Enabled', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peeringdb-oauth/', + 'help' => 'Enable OAuth with PeeringDB. Note a number of additional settings below are required.', + ], + + 'peeringdb_oauth_client_id' => [ + 'config_key' => 'services.peeringdb_oauth_client_id', + 'dotenv_key' => 'PEERINGDB_OAUTH_CLIENT_ID', + 'type' => 'text', + 'rules' => 'nullable|max:255', + 'name' => 'PeeringDB OAuth Client ID', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peeringdb-oauth/', + 'help' => 'PeeringDB OAuth client ID - you will receive this from PeeringDB', + ], + + 'peeringdb_oauth_client_secret' => [ + 'config_key' => 'services.peeringdb_oauth_client_secret', + 'dotenv_key' => 'PEERINGDB_OAUTH_CLIENT_SECRET', + 'type' => 'text', + 'rules' => 'nullable|max:255', + 'name' => 'PeeringDB OAuth Client Secret', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peeringdb-oauth/', + 'help' => 'PeeringDB OAuth client secret - you will receive this from PeeringDB', + ], + + 'peeringdb_oauth_redirect' => [ + 'config_key' => 'services.peeringdb_oauth_redirect', + 'dotenv_key' => 'PEERINGDB_OAUTH_REDIRECT', + 'type' => 'text', + 'rules' => 'nullable|max:255', + 'name' => 'PeeringDB OAuth Redirect', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/peeringdb-oauth/', + 'help' => 'PeeringDB OAuth - post authentication redirect target on IXP Manager. Assuming your ' + . 'APP_URL is correct, then: ' . config('app.url') . '/auth/login/peeringdb/callback' + ], + + ], + + ], + + 'third_party' => [ + + 'title' => '3rd Parties', + 'description' => "Configuration options for third party services.", + + 'fields' => [ + + 'peeringdb_api_key' => [ + + 'config_key' => 'ixp_api.peeringdb.api_key', + 'dotenv_key' => 'IXP_API_PEERING_DB_API_KEY', + 'type' => 'text', + 'name' => "PeeringDB API Key", + 'docs_url' => 'https://docs.peeringdb.com/howto/api_keys/', + 'help' => "IXP Manager uses information from PeeringDB in a number of places. Setting an API + key is highly recommended so additional information can be accessed and so that + rate limited can be avoided.", + ], + + ], + ], + + 'ixf_export' => [ + + 'title' => 'IX-F Export', + 'description' => "Configuration options for the IX-F export.", + + 'fields' => [ + + 'public' => [ + 'config_key' => 'ixp_api.json_export_schema.public', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_PUBLIC', + 'type' => 'radio', + 'rules' => '', + 'name' => 'IX-F Export is Public', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/ixf-export/', + 'help' => 'We strongly advise you not to disable public access if you are a standard IXP. Remember, the ' + . 'public version is essentially the same list as you would provide on your standard website\'s list of members. ' + . 'If you disable this then only logged in users can access the IX-F export.', + ], + + 'access_key' => [ + 'config_key' => 'ixp_api.json_export_schema.access_key', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_ACCESS_KEY', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export Access Key', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#configuration-options', + 'help' => 'If you disable public access, then you can set an access key (password) here to allow remote non-logged in access.', + ], + + 'excludes_rfc5398' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.rfc5398', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_RFC5398', + 'type' => 'radio', + 'rules' => '', + 'name' => 'IX-F Export - Exclude rfc5398 ASNs', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-members', + 'help' => 'Excludes members with documentation ASNs (64496 - 64511, 65536 - 65551)', + ], + + 'excludes_rfc6996' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.rfc6996', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_RFC6996', + 'type' => 'radio', + 'rules' => '', + 'name' => 'IX-F Export - Exclude rfc6996 ASNs', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-members', + 'help' => 'Excludes members with private ASNs (64512 - 65534, 4200000000 - 4294967294)', + ], + + 'excludes_tags' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.tags', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_TAGS', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Excludes Tags', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-members', + 'help' => 'You can exclude members by tag by setting this option. E.g. tag1|tag2', + ], + + 'excludes_asnum' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.asnum', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_ASNUM', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Excludes ASNs', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-members', + 'help' => 'You can exclude members by ASN by setting this option. E.g. 64496|64497|...', + ], + + 'excludes_switch' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.switch', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_SWITCH', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Exclude Switch Info', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-some-data', + 'help' => 'If you need, e.g., to exclude the model and software version from switch information, you can set the following: model|software', + ], + + 'excludes_ixp' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.ixp', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_IXP', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Exclude IXP Info', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-some-data', + 'help' => 'If you need, e.g., to exclude some of your IXP information, you can set the following: name|url', + ], + + 'excludes_member' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.member', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_MEMBER', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Exclude Member Info', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-some-data', + 'help' => 'If you need, e.g., to exclude some member information, you can set the following: peering_policy|member_type', + ], + + 'excludes_intinfo' => [ + 'config_key' => 'ixp_api.json_export_schema.excludes.intinfo', + 'dotenv_key' => 'IXP_API_JSONEXPORTSCHEMA_EXCLUDE_INTINFO', + 'type' => 'text', + 'rules' => '', + 'name' => 'IX-F Export - Exclude Interface Info', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/ixf-export/#excluding-some-data', + 'help' => 'If you need, e.g., to exclude some of your members\' interface information, you can set the following: mac_addresses|routeserver', + ], + + ], + + ], + + 'admin_options' => [ + + 'title' => 'Admin', + 'description' => "Various administrator related options.", + + 'fields' => [ + + 'default_graph_period' => [ + + 'config_key' => 'ixp_fe.admin.default_graph_period', + 'dotenv_key' => 'IXP_FE_ADMIN_DASHBOARD_DEFAULT_GRAPH_PERIOD', + 'type' => 'select', + 'options' => [ 'type' => 'array', 'list' => array_filter( IXP\Services\Grapher\Graph::PERIODS, function( $k ) { + return $k !== IXP\Services\Grapher\Graph::PERIOD_CUSTOM; + }, ARRAY_FILTER_USE_KEY ) ], + 'name' => "Default Graph Period", + 'help' => 'Default graph period on the admin dashboard.', + ], + + + 'billing-updates-notification' => [ + + 'config_key' => 'ixp_fe.frontend.billing-updates.notification', + 'dotenv_key' => 'IXP_FE_BILLING_UPDATES', + 'type' => 'text', + 'rules' => 'nullable|max:255|email', + 'name' => 'Billing Updates Notification', + 'docs_url' => 'https://docs.ixpmanager.org/latest/usage/customers/#notification-of-billing-details-changed', + 'help' => "If a member edits their billing details in their portal, the changes can be emailed to + this address. If left blank, then no emails will be sent.", + ], + + // do we need more Grapher attributes here? + ], + ], + + 'route_servers' => [ + + 'title' => 'Route Servers', + 'description' => "Options for route servers. Changing any of these will affect production route servers! Proceed with caution. ", + + 'fields' => [ + + 'min_v4_subnet_size' => [ + 'config_key' => 'ixp.irrdb.min_v4_subnet_size', + 'dotenv_key' => 'IXP_IRRDB_MIN_V4_SUBNET_SIZE', + 'type' => 'text', + 'rules' => 'between:1,32', + 'name' => 'Minimum IPv4 Subnet Size', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/route-servers/', + 'help' => 'Minimum ipv4 subnet size accepted by route servers. Should be no more specific than a /24.', + ], + + 'min_v6_subnet_size' => [ + 'config_key' => 'ixp.irrdb.min_v6_subnet_size', + 'dotenv_key' => 'IXP_IRRDB_MIN_V6_SUBNET_SIZE', + 'type' => 'text', + 'rules' => 'between:1,128', + 'name' => 'Minimum IPv6 Subnet Size', + 'docs_url' => 'https://docs.ixpmanager.org/7.0/features/route-servers/', + 'help' => 'Minimum ipv6 subnet size accepted by route servers. Should be no more specific than a /48.', + ], + + + 'rs-filters-ttl' => [ + // this via config() will give default value + 'config_key' => 'ixp_fe.frontend.rs-filters.ttl', + 'dotenv_key' => 'IXP_FE_RS_FILTERS_TIME_TO_LIVE', + 'type' => 'textarea', + 'rules' => 'nullable|max:1024', + 'name' => 'Route Server Update Period', + //'docs_url' => '', + 'help' => "If you have enabled the route server community filtering via UI option, then your members will + need to know how often you update their configurations. The text you enter here will be + displayed on the route server filters page.", + ], + + 'rpki_rtr1_host' => [ + 'config_key' => 'ixp.rpki.rtr1.host', + 'dotenv_key' => 'IXP_RPKI_RTR1_HOST', + 'type' => 'text', + 'rules' => '', + 'name' => 'RPKI Validator #1 Host', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/rpki/', + 'help' => 'IP address of the first RPKI local cache / validator. This will be inserted into the generated route server configuration if RPKI is enabled.', + ], + + 'rpki_rtr1_port' => [ + 'config_key' => 'ixp.rpki.rtr1.port', + 'dotenv_key' => 'IXP_RPKI_RTR1_PORT', + 'type' => 'text', + 'rules' => 'between:1,65535', + 'name' => 'RPKI Validator #1 Port', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/rpki/', + 'help' => 'Port to connect to on the first RPKI local cache / validator. This will be inserted into the generated route server configuration if RPKI is enabled.', + ], + + 'rpki_rtr2_host' => [ + 'config_key' => 'ixp.rpki.rtr2.host', + 'dotenv_key' => 'IXP_RPKI_RTR2_HOST', + 'type' => 'text', + 'rules' => '', + 'name' => 'RPKI Validator #2 Host', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/rpki/', + 'help' => 'IP address of the second RPKI local cache / validator. This will be inserted into the generated route server configuration if RPKI is enabled.', + ], + + 'rpki_rtr2_port' => [ + 'config_key' => 'ixp.rpki.rtr2.port', + 'dotenv_key' => 'IXP_RPKI_RTR2_PORT', + 'type' => 'text', + 'rules' => 'between:1,65535', + 'name' => 'RPKI Validator #2 Port', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/rpki/', + 'help' => 'Port to connect to on the second RPKI local cache / validator. This will be inserted into the generated route server configuration if RPKI is enabled.', + ], + + ], + ], + + + 'utilities' => [ + + 'title' => 'System Utilities', + 'description' => "Paths and options for system utilities.", + + 'fields' => [ + + 'bgpq3' => [ + 'config_key' => 'ixp.irrdb.bgpq3.path', + 'dotenv_key' => 'IXP_IRRDB_BGPQ3_PATH', + 'type' => 'text', + 'rules' => '', + 'name' => 'Path to bgpq3 utility', + 'docs_url' => 'https://docs.ixpmanager.org/latest/features/irrdb/', + 'help' => 'Full path to the bgpq3 utility.', + ], + + 'ping4' => [ + 'config_key' => 'ixp.exec.ping4', + 'dotenv_key' => 'IXP_EXEC_PING4', + 'type' => 'text', + 'rules' => '', + 'name' => 'Diagnostics - ipv4 ping', + 'docs_url' => null, + 'help' => 'ping command for ipv4 diagnostics. %s is the placeholder for the target IP.', + ], + + 'ping6' => [ + 'config_key' => 'ixp.exec.ping6', + 'dotenv_key' => 'IXP_EXEC_PING6', + 'type' => 'text', + 'rules' => '', + 'name' => 'Diagnostics - ipv6 ping', + 'docs_url' => null, + 'help' => 'ping command for ipv6 diagnostics. %s is the placeholder for the target IP.', + ], + + + ], + + ], + + ], + + +]; + diff --git a/config/logging.php b/config/logging.php index cc59cb364..b23fe5a6f 100644 --- a/config/logging.php +++ b/config/logging.php @@ -22,9 +22,11 @@ * */ + use Monolog\Handler\NullHandler; use Monolog\Handler\StreamHandler; use Monolog\Handler\SyslogUdpHandler; +use Monolog\Processor\PsrLogMessageProcessor; return [ @@ -41,6 +43,22 @@ 'default' => env( 'LOG_CHANNEL', env( 'APP_LOG', 'single' ) ), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + /* |-------------------------------------------------------------------------- | Log Channels @@ -59,69 +77,79 @@ 'channels' => [ 'stack' => [ 'driver' => 'stack', - 'channels' => ['daily'], + 'channels' => explode(',', env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'debug' ) ), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'debug' ) ), - 'days' => 14, - ], - - 'deprecations' => [ - 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - 'trace' => false, + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'critical' ) ), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, ], 'papertrail' => [ 'driver' => 'monolog', - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'debug' ) ), + 'level' => env('LOG_LEVEL', 'debug'), 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], + 'processors' => [PsrLogMessageProcessor::class], ], 'stderr' => [ 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), 'handler' => StreamHandler::class, 'formatter' => env('LOG_STDERR_FORMATTER'), 'with' => [ 'stream' => 'php://stderr', ], + 'processors' => [PsrLogMessageProcessor::class], ], 'syslog' => [ 'driver' => 'syslog', - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'debug' ) ), + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, ], 'errorlog' => [ 'driver' => 'errorlog', - 'level' => env( 'LOG_LEVEL', env( 'APP_LOG_LEVEL', 'info' ) ), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'null' => [ 'driver' => 'monolog', 'handler' => NullHandler::class, ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], ]; diff --git a/config/mail.php b/config/mail.php index 47a1920be..2a2a54022 100644 --- a/config/mail.php +++ b/config/mail.php @@ -117,6 +117,11 @@ 'name' => env('IDENTITY_NAME', 'Newly Installed IXP Manager'), ], + 'alerts_recipient' => [ + 'address' => env('IDENTITY_ALERTS_EMAIL','ixp-alerts@example.com'), + 'name' => env('IDENTITY_ALERTS_NAME','IXP Ops Alerts'), + ], + /* |-------------------------------------------------------------------------- | Markdown Mail Settings diff --git a/data/ci/ci_test_db.sql b/data/ci/ci_test_db.sql index 0a0005f6d..ab8d25569 100644 --- a/data/ci/ci_test_db.sql +++ b/data/ci/ci_test_db.sql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 8.3.0, for macos14.2 (arm64) +-- MySQL dump 10.13 Distrib 8.0.36, for macos14 (arm64) -- --- Host: localhost Database: myapp_test +-- Host: 127.0.0.1 Database: ixp_ci -- ------------------------------------------------------ --- Server version 8.3.0 +-- Server version 8.0.36 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -305,11 +305,11 @@ CREATE TABLE `company_billing_detail` ( `vatNumber` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `vatRate` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `purchaseOrderRequired` tinyint(1) NOT NULL DEFAULT '0', - `purchaseOrderNumber` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `purchaseOrderNumber` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `invoiceMethod` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `invoiceEmail` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `billingFrequency` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8mb3_unicode_ci, + `notes` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) @@ -344,7 +344,7 @@ CREATE TABLE `company_registration_detail` ( `townCity` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `postcode` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `country` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8mb3_unicode_ci, + `notes` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) @@ -1211,6 +1211,37 @@ INSERT INTO `irrdb_prefix` VALUES (1,4,'192.175.48.0/24',4,'2014-01-06 14:42:30' /*!40000 ALTER TABLE `irrdb_prefix` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `irrdb_update_logs` +-- + +DROP TABLE IF EXISTS `irrdb_update_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `irrdb_update_logs` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `cust_id` int NOT NULL, + `prefix_v4` datetime DEFAULT NULL, + `prefix_v6` datetime DEFAULT NULL, + `asn_v4` datetime DEFAULT NULL, + `asn_v6` datetime DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `irrdb_update_logs_cust_id_unique` (`cust_id`), + CONSTRAINT `irrdb_update_logs_cust_id_foreign` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `irrdb_update_logs` +-- + +LOCK TABLES `irrdb_update_logs` WRITE; +/*!40000 ALTER TABLE `irrdb_update_logs` DISABLE KEYS */; +/*!40000 ALTER TABLE `irrdb_update_logs` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `irrdbconfig` -- @@ -1419,7 +1450,7 @@ CREATE TABLE `migrations` ( `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `batch` int NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1428,7 +1459,7 @@ CREATE TABLE `migrations` ( LOCK TABLES `migrations` WRITE; /*!40000 ALTER TABLE `migrations` DISABLE KEYS */; -INSERT INTO `migrations` VALUES (1,'2014_10_12_100000_create_password_resets_table',1),(2,'2018_08_08_100000_create_telescope_entries_table',1),(3,'2019_03_25_211956_create_failed_jobs_table',1),(4,'2020_02_06_204556_create_docstore_directories',2),(5,'2020_02_06_204608_create_docstore_files',2),(6,'2020_02_06_204911_create_docstore_logs',2),(7,'2020_03_09_110945_create_docstore_customer_directories',3),(8,'2020_03_09_111505_create_docstore_customer_files',3),(9,'2020_07_21_094354_create_route_server_filters',4),(12,'2020_09_03_153723_add_timestamps',5),(13,'2020_09_18_095136_delete_ixp_table',6),(14,'2020_11_16_102415_database_fixes',7),(15,'2021_03_12_150418_create_log_table',8),(16,'2021_04_14_125742_user_pref',9),(17,'2021_04_14_101948_update_timestamps',10),(18,'2021_05_18_085721_add_note_infrastructure',11),(19,'2021_05_18_114206_update_pp_prefix_size',12),(20,'2020_06_01_143931_database_schema_at_end_v5',13),(21,'2021_03_30_124916_create_atlas_probes',13),(22,'2021_03_30_125238_create_atlas_runs',13),(23,'2021_03_30_125422_create_atlas_measurements',13),(24,'2021_03_30_125723_create_atlas_results',13),(25,'2021_06_11_141137_update_db_doctrine2eloquent',13),(26,'2021_07_20_134716_fix_last_updated_and_timestamps',13),(27,'2021_09_16_195333_add_rate_limit_col_to_physint',13),(28,'2021_09_17_144421_modernise_irrdb_conf_table',13),(29,'2021_09_21_100354_create_route_server_filters_prod',14),(30,'2021_09_21_162700_rs_pairing',15),(31,'2022_02_12_183121_add_colo_pp_type_patch_panel',15),(32,'2023_09_26_191150_add_registration_details',15),(33,'2024_03_18_191322_add_export_to_ixf_vlan',15); +INSERT INTO `migrations` VALUES (1,'2014_10_12_100000_create_password_resets_table',1),(2,'2018_08_08_100000_create_telescope_entries_table',1),(3,'2019_03_25_211956_create_failed_jobs_table',1),(4,'2020_02_06_204556_create_docstore_directories',2),(5,'2020_02_06_204608_create_docstore_files',2),(6,'2020_02_06_204911_create_docstore_logs',2),(7,'2020_03_09_110945_create_docstore_customer_directories',3),(8,'2020_03_09_111505_create_docstore_customer_files',3),(9,'2020_07_21_094354_create_route_server_filters',4),(12,'2020_09_03_153723_add_timestamps',5),(13,'2020_09_18_095136_delete_ixp_table',6),(14,'2020_11_16_102415_database_fixes',7),(15,'2021_03_12_150418_create_log_table',8),(16,'2021_04_14_125742_user_pref',9),(17,'2021_04_14_101948_update_timestamps',10),(18,'2021_05_18_085721_add_note_infrastructure',11),(19,'2021_05_18_114206_update_pp_prefix_size',12),(20,'2020_06_01_143931_database_schema_at_end_v5',13),(21,'2021_03_30_124916_create_atlas_probes',13),(22,'2021_03_30_125238_create_atlas_runs',13),(23,'2021_03_30_125422_create_atlas_measurements',13),(24,'2021_03_30_125723_create_atlas_results',13),(25,'2021_06_11_141137_update_db_doctrine2eloquent',13),(26,'2021_07_20_134716_fix_last_updated_and_timestamps',13),(27,'2021_09_16_195333_add_rate_limit_col_to_physint',13),(28,'2021_09_17_144421_modernise_irrdb_conf_table',13),(29,'2021_09_21_100354_create_route_server_filters_prod',14),(30,'2021_09_21_162700_rs_pairing',15),(31,'2022_02_12_183121_add_colo_pp_type_patch_panel',15),(32,'2023_09_26_191150_add_registration_details',15),(33,'2024_03_18_191322_add_export_to_ixf_vlan',15),(34,'2024_08_10_125003_create_irrdb_update_logs',16),(35,'2024_09_05_111855_create_p2p_daily_stats_table',17); /*!40000 ALTER TABLE `migrations` ENABLE KEYS */; UNLOCK TABLES; @@ -1523,6 +1554,44 @@ LOCK TABLES `oui` WRITE; /*!40000 ALTER TABLE `oui` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `p2p_daily_stats` +-- + +DROP TABLE IF EXISTS `p2p_daily_stats`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `p2p_daily_stats` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `day` date NOT NULL, + `cust_id` int NOT NULL, + `peer_id` int NOT NULL, + `ipv4_total_in` double DEFAULT NULL, + `ipv4_total_out` double DEFAULT NULL, + `ipv6_total_in` double DEFAULT NULL, + `ipv6_total_out` double DEFAULT NULL, + `ipv4_max_in` double DEFAULT NULL, + `ipv4_max_out` double DEFAULT NULL, + `ipv6_max_in` double DEFAULT NULL, + `ipv6_max_out` double DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `p2p_daily_stats_day_cust_id_peer_id_unique` (`day`,`cust_id`,`peer_id`), + KEY `p2p_daily_stats_cust_id_foreign` (`cust_id`), + CONSTRAINT `p2p_daily_stats_cust_id_foreign` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `p2p_daily_stats` +-- + +LOCK TABLES `p2p_daily_stats` WRITE; +/*!40000 ALTER TABLE `p2p_daily_stats` DISABLE KEYS */; +/*!40000 ALTER TABLE `p2p_daily_stats` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `password_resets` -- @@ -2955,4 +3024,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2024-04-23 9:46:51 +-- Dump completed on 2024-09-22 14:43:01 diff --git a/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv4.conf b/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv4.conf index 1961ad89c..ca57238e2 100644 --- a/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv4.conf +++ b/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv4.conf @@ -30,7 +30,7 @@ protocol device { } # This function excludes weird networks # rfc1918, class D, class E, too long and too short prefixes -function avoid_martians() +function avoid_martians() -> bool prefix set martians; { @@ -177,7 +177,7 @@ protocol rpki rpki2 { define TRANSIT_ASNS = [ 174, 701, 1299, 2914, 3257, 3320, 3356, 3491, 4134, 5511, 6453, 6461, 6762, 6830, 7018 ]; -function filter_has_transit_path() +function filter_has_transit_path() -> bool int set transit_asns; { transit_asns = TRANSIT_ASNS; @@ -207,7 +207,7 @@ int set transit_asns; -function f_import_as42() +function f_import_as42() -> bool prefix set allnet; ip set allips; @@ -455,7 +455,7 @@ protocol bgp pb_as42_vli3_ipv4 { -function f_import_as112() +function f_import_as112() -> bool prefix set allnet; ip set allips; @@ -595,7 +595,7 @@ protocol bgp pb_as112_vli4_ipv4 { -function f_import_as1213() +function f_import_as1213() -> bool prefix set allnet; ip set allips; diff --git a/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv6.conf b/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv6.conf index 5f1b083e7..963f89a9d 100644 --- a/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv6.conf +++ b/data/ci/known-good/ci-apiv4-b2-rc1-lan1-ipv6.conf @@ -30,7 +30,7 @@ protocol device { } # This function excludes weird networks # rfc1918, class D, class E, too long and too short prefixes -function avoid_martians() +function avoid_martians() -> bool prefix set martians; { @@ -186,7 +186,7 @@ protocol rpki rpki2 { define TRANSIT_ASNS = [ 174, 701, 1299, 2914, 3257, 3320, 3356, 3491, 4134, 5511, 6453, 6461, 6762, 6830, 7018 ]; -function filter_has_transit_path() +function filter_has_transit_path() -> bool int set transit_asns; { transit_asns = TRANSIT_ASNS; @@ -217,7 +217,7 @@ int set transit_asns; -function f_import_as1213() +function f_import_as1213() -> bool prefix set allnet; ip set allips; @@ -359,7 +359,7 @@ protocol bgp pb_as1213_vli1_ipv6 { -function f_import_as25441() +function f_import_as25441() -> bool prefix set allnet; ip set allips; diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php index d879fe340..75f0458f3 100644 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -24,6 +24,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; + class CreatePasswordResetsTable extends Migration { /** diff --git a/database/migrations/2020_06_01_143931_database_schema_at_end_v5.php b/database/migrations/2020_06_01_143931_database_schema_at_end_v5.php index 4849e0738..2bb7ab83e 100644 --- a/database/migrations/2020_06_01_143931_database_schema_at_end_v5.php +++ b/database/migrations/2020_06_01_143931_database_schema_at_end_v5.php @@ -21,6 +21,7 @@ public function up() echo "*** Importing base IXP Manager schema...\n"; DB::connection()->getPdo()->exec( file_get_contents( database_path('schema/2021-as-at-end-v5.sql') ) ); + } /** diff --git a/database/migrations/2020_09_03_153723_add_timestamps.php b/database/migrations/2020_09_03_153723_add_timestamps.php index 683fc2a12..16ea3b5a6 100644 --- a/database/migrations/2020_09_03_153723_add_timestamps.php +++ b/database/migrations/2020_09_03_153723_add_timestamps.php @@ -95,8 +95,8 @@ public function up() }); Schema::table('cust', function (Blueprint $table) { - $table->dateTime( 'created_at' )->change(); - $table->dateTime( 'updated_at' )->change(); + $table->dateTime( 'created_at' )->nullable()->change(); + $table->dateTime( 'updated_at' )->nullable()->change(); }); Schema::table('cust_notes', function (Blueprint $table) { @@ -173,7 +173,7 @@ public function up() Schema::table('patch_panel', function (Blueprint $table) { $table->timestamps(); - $table->date( 'installation_date' )->change(); + $table->date( 'installation_date' )->nullable()->change(); }); Schema::table('patch_panel_port', function (Blueprint $table) { @@ -326,8 +326,8 @@ public function down() }); Schema::table('cust', function (Blueprint $table) { - $table->date( 'created' )->change(); - $table->date( 'lastupdated' )->change(); + $table->date( 'created' )->nullable()->change(); + $table->date( 'lastupdated' )->nullable()->change(); }); Schema::table('cust_notes', function (Blueprint $table) { diff --git a/database/migrations/2020_09_18_095136_delete_ixp_table.php b/database/migrations/2020_09_18_095136_delete_ixp_table.php index d0096861c..0cd982742 100644 --- a/database/migrations/2020_09_18_095136_delete_ixp_table.php +++ b/database/migrations/2020_09_18_095136_delete_ixp_table.php @@ -38,24 +38,32 @@ public function up() $table->drop(); }); - $sm = Schema::getConnection()->getDoctrineSchemaManager(); + $infrastructure_fks = array_column( + Schema::getConnection()->select('SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE ' + . 'WHERE TABLE_SCHEMA = "ixp" AND TABLE_NAME = "infrastructure" AND ' + . 'REFERENCED_TABLE_SCHEMA = "ixp" AND REFERENCED_TABLE_NAME = "ixp"' + ), 'CONSTRAINT_NAME' + ); - foreach( $sm->listTableForeignKeys('infrastructure') as $fk ) { - if( $fk->getForeignTableName() === 'ixp' ) { - Schema::table( 'infrastructure', function( Blueprint $table ) use ( $fk ) { - $table->dropForeign( $fk->getName() ); - $table->dropColumn( 'ixp_id' ); - } ); - } + foreach( $infrastructure_fks as $fk ) { + Schema::table( 'infrastructure', function( Blueprint $table ) use ( $fk ) { + $table->dropForeign( $fk ); + $table->dropColumn( 'ixp_id' ); + } ); } - foreach( $sm->listTableForeignKeys('traffic_daily') as $fk ) { - if( $fk->getForeignTableName() === 'ixp' ) { - Schema::table( 'traffic_daily', function( Blueprint $table ) use ( $fk ) { - $table->dropForeign( $fk->getName() ); - $table->dropColumn( 'ixp_id' ); - } ); - } + $traffic_daily_fks = array_column( + Schema::getConnection()->select('SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE ' + . 'WHERE TABLE_SCHEMA = "ixp" AND TABLE_NAME = "traffic_daily" AND ' + . 'REFERENCED_TABLE_SCHEMA = "ixp" AND REFERENCED_TABLE_NAME = "ixp"' + ), 'CONSTRAINT_NAME' + ); + + foreach( $traffic_daily_fks as $fk ) { + Schema::table( 'traffic_daily', function( Blueprint $table ) use ( $fk ) { + $table->dropForeign( $fk ); + $table->dropColumn( 'ixp_id' ); + } ); } Schema::table('ixp', function (Blueprint $table) { diff --git a/database/migrations/2020_11_16_102415_database_fixes.php b/database/migrations/2020_11_16_102415_database_fixes.php index 43dc6944a..c8d8c48f4 100644 --- a/database/migrations/2020_11_16_102415_database_fixes.php +++ b/database/migrations/2020_11_16_102415_database_fixes.php @@ -37,8 +37,9 @@ public function up(): void { // Change the default value of the chargeable field to CHARGEABLE_NO Schema::table('patch_panel_port',function ( $table ) { - $table->integer( 'chargeable' )->default( PatchPanelPort::CHARGEABLE_NO )->change(); + $table->integer( 'chargeable' )->nullable(false)->default( PatchPanelPort::CHARGEABLE_NO )->change(); }); + // Update Patch panel ports that have chargeable set to 0 to 2 (CHARGEABLE_NO) DB::table('patch_panel_port')->where('chargeable' , 0 ) ->update( [ 'chargeable' => PatchPanelPort::CHARGEABLE_NO ] ); diff --git a/database/migrations/2021_03_30_124916_create_atlas_probes.php b/database/migrations/2021_03_30_124916_create_atlas_probes.php index 701dece29..33a6813c0 100644 --- a/database/migrations/2021_03_30_124916_create_atlas_probes.php +++ b/database/migrations/2021_03_30_124916_create_atlas_probes.php @@ -25,7 +25,7 @@ public function up(): void $table->tinyInteger('is_anchor' ); $table->tinyInteger('is_public' ); $table->dateTime('last_connected' )->nullable(); - $table->string('status', '255' )->nullable(); + $table->string('status', 255 )->nullable(); $table->json('api_data' )->nullable(); $table->timestamps(); $table->foreign('cust_id')->references('id')->on('cust'); diff --git a/database/migrations/2021_04_14_101948_update_timestamps.php b/database/migrations/2021_04_14_101948_update_timestamps.php index 7223106a2..ef61e4c5f 100644 --- a/database/migrations/2021_04_14_101948_update_timestamps.php +++ b/database/migrations/2021_04_14_101948_update_timestamps.php @@ -47,7 +47,7 @@ public function up() DB::statement("ALTER TABLE cust MODIFY COLUMN created_at DATETIME AFTER peeringdb_oauth"); DB::statement("ALTER TABLE cust MODIFY COLUMN updated_at DATETIME AFTER created_at"); $table->timestamp( 'created_at' )->change(); - $table->timestamp( 'updated_at' )->change(); + $table->timestamp( 'updated_at' )->nullable()->change(); }); Schema::table('cust_notes', function (Blueprint $table) { @@ -76,24 +76,24 @@ public function up() Schema::table('peering_manager', function (Blueprint $table) { $table->timestamp( 'created_at' )->change(); - $table->timestamp( 'updated_at' )->change(); + $table->timestamp( 'updated_at' )->nullable()->change(); }); Schema::table('routers', function (Blueprint $table) { DB::statement("ALTER TABLE routers MODIFY COLUMN updated_at DATETIME AFTER created_at"); - $table->timestamp( 'updated_at' )->change(); + $table->timestamp( 'updated_at' )->nullable()->change(); }); Schema::table('user', function (Blueprint $table) { DB::statement("ALTER TABLE user MODIFY COLUMN created_at DATETIME AFTER extra_attributes"); DB::statement("ALTER TABLE user MODIFY COLUMN updated_at DATETIME AFTER created_at"); $table->timestamp( 'created_at' )->change(); - $table->timestamp( 'updated_at' )->change(); + $table->timestamp( 'updated_at' )->nullable()->change(); }); Schema::table('user_2fa', function (Blueprint $table) { $table->timestamp( 'created_at' )->change(); - $table->timestamp( 'updated_at' )->change(); + $table->timestamp( 'updated_at' )->nullable()->change(); }); Schema::table('user_remember_tokens', function (Blueprint $table) { diff --git a/database/migrations/2021_07_20_134716_fix_last_updated_and_timestamps.php b/database/migrations/2021_07_20_134716_fix_last_updated_and_timestamps.php index 52a3ce857..2d128f43b 100644 --- a/database/migrations/2021_07_20_134716_fix_last_updated_and_timestamps.php +++ b/database/migrations/2021_07_20_134716_fix_last_updated_and_timestamps.php @@ -17,7 +17,6 @@ public function up() if( !Schema::hasColumn( 'routers', 'last_updated' ) ) { $table->dateTime( 'last_updated' )->nullable(); } else { - $table->dateTime( 'last_updated' )->change(); $table->dateTime( 'last_updated' )->nullable()->change(); } diff --git a/database/migrations/2021_09_17_144421_modernise_irrdb_conf_table.php b/database/migrations/2021_09_17_144421_modernise_irrdb_conf_table.php index 42f2ad830..4e660d4ee 100644 --- a/database/migrations/2021_09_17_144421_modernise_irrdb_conf_table.php +++ b/database/migrations/2021_09_17_144421_modernise_irrdb_conf_table.php @@ -27,7 +27,7 @@ public function up() public function down() { Schema::table('irrdbconfig', function (Blueprint $table) { - $table->string(255)->nullable()->after('host'); + $table->string('protocol')->nullable()->after('host'); }); } } diff --git a/database/migrations/2024_08_10_125003_create_irrdb_update_logs.php b/database/migrations/2024_08_10_125003_create_irrdb_update_logs.php new file mode 100644 index 000000000..7af27b05d --- /dev/null +++ b/database/migrations/2024_08_10_125003_create_irrdb_update_logs.php @@ -0,0 +1,37 @@ +id(); + + $table->integer('cust_id')->unique(true); + + $table->dateTime( 'prefix_v4' )->nullable()->default(null); + $table->dateTime( 'prefix_v6' )->nullable()->default(null); + $table->dateTime( 'asn_v4' )->nullable()->default(null); + $table->dateTime( 'asn_v6' )->nullable()->default(null); + + $table->foreign('cust_id')->references('id')->on('cust'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('irrdb_update_logs'); + } +}; diff --git a/database/migrations/2024_09_05_111855_create_p2p_daily_stats_table.php b/database/migrations/2024_09_05_111855_create_p2p_daily_stats_table.php new file mode 100644 index 000000000..558dc66a1 --- /dev/null +++ b/database/migrations/2024_09_05_111855_create_p2p_daily_stats_table.php @@ -0,0 +1,42 @@ +id(); + $table->date('day'); + $table->integer('cust_id'); + $table->foreign('cust_id')->references('id')->on('cust')->onDelete('cascade'); + $table->integer('peer_id'); + $table->bigInteger('ipv4_total_in')->nullable()->unsigned(); + $table->bigInteger('ipv4_total_out')->nullable()->unsigned(); + $table->bigInteger('ipv6_total_in')->nullable()->unsigned(); + $table->bigInteger('ipv6_total_out')->nullable()->unsigned(); + $table->bigInteger('ipv4_max_in')->nullable()->unsigned(); + $table->bigInteger('ipv4_max_out')->nullable()->unsigned(); + $table->bigInteger('ipv6_max_in')->nullable()->unsigned(); + $table->bigInteger('ipv6_max_out')->nullable()->unsigned(); + + $table->unique(['day', 'cust_id', 'peer_id']); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('p2p_daily_stats'); + } +}; diff --git a/database/vagrant-base.sql b/database/vagrant-base.sql deleted file mode 100644 index fb15ec0c1..000000000 --- a/database/vagrant-base.sql +++ /dev/null @@ -1,2168 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.25, for osx10.14 (x86_64) --- --- Host: localhost Database: ixp --- ------------------------------------------------------ --- Server version 5.7.25 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `api_keys` --- - -DROP TABLE IF EXISTS `api_keys`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `api_keys` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` int(11) NOT NULL, - `apiKey` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `expires` datetime DEFAULT NULL, - `allowedIPs` mediumtext COLLATE utf8_unicode_ci, - `created` datetime NOT NULL, - `lastseenAt` datetime DEFAULT NULL, - `lastseenFrom` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_9579321F800A1141` (`apiKey`), - KEY `IDX_9579321FA76ED395` (`user_id`), - CONSTRAINT `FK_9579321FA76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `api_keys` --- - -LOCK TABLES `api_keys` WRITE; -/*!40000 ALTER TABLE `api_keys` DISABLE KEYS */; -INSERT INTO `api_keys` VALUES (1,1,'Syy4R8uXTquJNkSav4mmbk5eZWOgoc6FKUJPqOoGHhBjhsC9',NULL,'','2014-01-06 14:43:19','2014-12-08 21:02:12','127.0.0.1'); -/*!40000 ALTER TABLE `api_keys` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `bgp_sessions` --- - -DROP TABLE IF EXISTS `bgp_sessions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `bgp_sessions` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `srcipaddressid` int(11) NOT NULL, - `protocol` int(11) NOT NULL, - `dstipaddressid` int(11) NOT NULL, - `packetcount` int(11) NOT NULL DEFAULT '0', - `last_seen` datetime NOT NULL, - `source` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `src_protocol_dst` (`srcipaddressid`,`protocol`,`dstipaddressid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `bgp_sessions` --- - -LOCK TABLES `bgp_sessions` WRITE; -/*!40000 ALTER TABLE `bgp_sessions` DISABLE KEYS */; -/*!40000 ALTER TABLE `bgp_sessions` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `bgpsessiondata` --- - -DROP TABLE IF EXISTS `bgpsessiondata`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `bgpsessiondata` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `srcipaddressid` int(11) DEFAULT NULL, - `dstipaddressid` int(11) DEFAULT NULL, - `protocol` int(11) DEFAULT NULL, - `vlan` int(11) DEFAULT NULL, - `packetcount` int(11) DEFAULT '0', - `timestamp` datetime DEFAULT NULL, - `source` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `idx_timestamp` (`timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `bgpsessiondata` --- - -LOCK TABLES `bgpsessiondata` WRITE; -/*!40000 ALTER TABLE `bgpsessiondata` DISABLE KEYS */; -/*!40000 ALTER TABLE `bgpsessiondata` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cabinet` --- - -DROP TABLE IF EXISTS `cabinet`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cabinet` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `locationid` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cololocation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `height` int(11) DEFAULT NULL, - `type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `u_counts_from` smallint(6) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_4CED05B05E237E06` (`name`), - KEY `IDX_4CED05B03530CCF` (`locationid`), - CONSTRAINT `FK_4CED05B03530CCF` FOREIGN KEY (`locationid`) REFERENCES `location` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cabinet` --- - -LOCK TABLES `cabinet` WRITE; -/*!40000 ALTER TABLE `cabinet` DISABLE KEYS */; -INSERT INTO `cabinet` VALUES (1,1,'Cabinet 1','c1',0,'','',NULL); -/*!40000 ALTER TABLE `cabinet` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `company_billing_detail` --- - -DROP TABLE IF EXISTS `company_billing_detail`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `company_billing_detail` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `billingContactName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingAddress1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingAddress2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingAddress3` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingTownCity` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingPostcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingCountry` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingEmail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingTelephone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `vatNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `vatRate` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `purchaseOrderRequired` tinyint(1) NOT NULL DEFAULT '0', - `invoiceMethod` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `invoiceEmail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `billingFrequency` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `company_billing_detail` --- - -LOCK TABLES `company_billing_detail` WRITE; -/*!40000 ALTER TABLE `company_billing_detail` DISABLE KEYS */; -INSERT INTO `company_billing_detail` VALUES (1,NULL,'c/o The Bill Payers','Money House, Moneybags Street',NULL,'Dublin','D4','IE',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL),(2,'','','','','','','','','','','',0,'','',''),(3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL),(4,'','','','','','','','','','','',0,'','',''),(5,'','','','','','','','','','','',0,'','',''); -/*!40000 ALTER TABLE `company_billing_detail` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `company_registration_detail` --- - -DROP TABLE IF EXISTS `company_registration_detail`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `company_registration_detail` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `registeredName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `companyNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `jurisdiction` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address3` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `townCity` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `postcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `country` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `company_registration_detail` --- - -LOCK TABLES `company_registration_detail` WRITE; -/*!40000 ALTER TABLE `company_registration_detail` DISABLE KEYS */; -INSERT INTO `company_registration_detail` VALUES (1,'INEX','123456','Ireland','5 Somewhere',NULL,NULL,'Dublin','D4','IE'),(2,'','','','','','','','',''),(3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,'','','','','','','','',''),(5,'','','','','','','','',''); -/*!40000 ALTER TABLE `company_registration_detail` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `console_server` --- - -DROP TABLE IF EXISTS `console_server`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `console_server` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vendor_id` int(11) DEFAULT NULL, - `cabinet_id` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `hostname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `model` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `serialNumber` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `active` tinyint(1) DEFAULT '1', - `notes` longtext COLLATE utf8mb4_unicode_ci, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_92A539235E237E06` (`name`), - KEY `IDX_92A53923F603EE73` (`vendor_id`), - KEY `IDX_92A53923D351EC` (`cabinet_id`), - CONSTRAINT `FK_92A53923D351EC` FOREIGN KEY (`cabinet_id`) REFERENCES `cabinet` (`id`), - CONSTRAINT `FK_92A53923F603EE73` FOREIGN KEY (`vendor_id`) REFERENCES `vendor` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `console_server` --- - -LOCK TABLES `console_server` WRITE; -/*!40000 ALTER TABLE `console_server` DISABLE KEYS */; -/*!40000 ALTER TABLE `console_server` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `consoleserverconnection` --- - -DROP TABLE IF EXISTS `consoleserverconnection`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `consoleserverconnection` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `switchid` int(11) DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `port` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `speed` int(11) DEFAULT NULL, - `parity` int(11) DEFAULT NULL, - `stopbits` int(11) DEFAULT NULL, - `flowcontrol` int(11) DEFAULT NULL, - `autobaud` tinyint(1) DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `console_server_id` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `console_server_port_uniq` (`console_server_id`,`port`), - KEY `IDX_530316DCDA0209B9` (`custid`), - KEY `IDX_530316DCF472E7C6` (`console_server_id`), - CONSTRAINT `FK_530316DCDA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_530316DCF472E7C6` FOREIGN KEY (`console_server_id`) REFERENCES `console_server` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `consoleserverconnection` --- - -LOCK TABLES `consoleserverconnection` WRITE; -/*!40000 ALTER TABLE `consoleserverconnection` DISABLE KEYS */; -/*!40000 ALTER TABLE `consoleserverconnection` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `contact` --- - -DROP TABLE IF EXISTS `contact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `contact` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `user_id` int(11) DEFAULT NULL, - `custid` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `position` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `mobile` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `facilityaccess` tinyint(1) NOT NULL DEFAULT '0', - `mayauthorize` tinyint(1) NOT NULL DEFAULT '0', - `notes` longtext COLLATE utf8_unicode_ci, - `lastupdated` datetime DEFAULT NULL, - `lastupdatedby` int(11) DEFAULT NULL, - `creator` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_4C62E638A76ED395` (`user_id`), - KEY `IDX_4C62E638DA0209B9` (`custid`), - CONSTRAINT `FK_4C62E638A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL, - CONSTRAINT `FK_4C62E638DA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `contact` --- - -LOCK TABLES `contact` WRITE; -/*!40000 ALTER TABLE `contact` DISABLE KEYS */; -INSERT INTO `contact` VALUES (1,NULL,1,'Vagrant','Master of the Universe','joe@example.com','+353 86 123 4567','+353 1 123 4567',0,0,'','2015-08-20 15:19:12',1,'1','2014-01-06 13:54:22'),(2,NULL,4,'Customer AS112','','none@example.com','','',0,0,'','2015-08-20 15:24:41',1,'vagrant','2015-08-20 15:24:41'),(3,NULL,4,'AS112 User','','none@example.com','','',0,0,'','2015-08-20 15:25:30',1,'vagrant','2015-08-20 15:25:20'); -/*!40000 ALTER TABLE `contact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `contact_group` --- - -DROP TABLE IF EXISTS `contact_group`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `contact_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `active` tinyint(1) NOT NULL DEFAULT '1', - `limited_to` int(11) NOT NULL DEFAULT '0', - `created` datetime NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_40EA54CA5E237E06` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `contact_group` --- - -LOCK TABLES `contact_group` WRITE; -/*!40000 ALTER TABLE `contact_group` DISABLE KEYS */; -INSERT INTO `contact_group` VALUES (1,'Billing','Contact role for billing matters','ROLE',1,0,'2014-01-06 13:54:22'),(2,'Technical','Contact role for technical matters','ROLE',1,0,'2014-01-06 13:54:22'),(3,'Admin','Contact role for admin matters','ROLE',1,0,'2014-01-06 13:54:22'),(4,'Marketing','Contact role for marketing matters','ROLE',1,0,'2014-01-06 13:54:22'); -/*!40000 ALTER TABLE `contact_group` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `contact_to_group` --- - -DROP TABLE IF EXISTS `contact_to_group`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `contact_to_group` ( - `contact_id` int(11) NOT NULL, - `contact_group_id` bigint(20) NOT NULL, - PRIMARY KEY (`contact_id`,`contact_group_id`), - KEY `IDX_FCD9E962E7A1254A` (`contact_id`), - KEY `IDX_FCD9E962647145D0` (`contact_group_id`), - CONSTRAINT `FK_FCD9E962647145D0` FOREIGN KEY (`contact_group_id`) REFERENCES `contact_group` (`id`), - CONSTRAINT `FK_FCD9E962E7A1254A` FOREIGN KEY (`contact_id`) REFERENCES `contact` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `contact_to_group` --- - -LOCK TABLES `contact_to_group` WRITE; -/*!40000 ALTER TABLE `contact_to_group` DISABLE KEYS */; -/*!40000 ALTER TABLE `contact_to_group` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `corebundles` --- - -DROP TABLE IF EXISTS `corebundles`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `corebundles` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `type` int(11) NOT NULL, - `graph_title` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `bfd` tinyint(1) NOT NULL DEFAULT '0', - `ipv4_subnet` varchar(18) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv6_subnet` varchar(43) COLLATE utf8_unicode_ci DEFAULT NULL, - `stp` tinyint(1) NOT NULL DEFAULT '0', - `cost` int(10) unsigned DEFAULT NULL, - `preference` int(10) unsigned DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `corebundles` --- - -LOCK TABLES `corebundles` WRITE; -/*!40000 ALTER TABLE `corebundles` DISABLE KEYS */; -/*!40000 ALTER TABLE `corebundles` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `coreinterfaces` --- - -DROP TABLE IF EXISTS `coreinterfaces`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `coreinterfaces` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `physical_interface_id` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_E1A404B7FF664B20` (`physical_interface_id`), - CONSTRAINT `FK_E1A404B7FF664B20` FOREIGN KEY (`physical_interface_id`) REFERENCES `physicalinterface` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `coreinterfaces` --- - -LOCK TABLES `coreinterfaces` WRITE; -/*!40000 ALTER TABLE `coreinterfaces` DISABLE KEYS */; -/*!40000 ALTER TABLE `coreinterfaces` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `corelinks` --- - -DROP TABLE IF EXISTS `corelinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `corelinks` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `core_interface_sidea_id` int(11) NOT NULL, - `core_interface_sideb_id` int(11) NOT NULL, - `core_bundle_id` int(11) NOT NULL, - `bfd` tinyint(1) NOT NULL DEFAULT '0', - `ipv4_subnet` varchar(18) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv6_subnet` varchar(43) COLLATE utf8_unicode_ci DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_BE421236BEBB85C6` (`core_interface_sidea_id`), - UNIQUE KEY `UNIQ_BE421236AC0E2A28` (`core_interface_sideb_id`), - KEY `IDX_BE421236BE9AE9F7` (`core_bundle_id`), - CONSTRAINT `FK_BE421236AC0E2A28` FOREIGN KEY (`core_interface_sideb_id`) REFERENCES `coreinterfaces` (`id`), - CONSTRAINT `FK_BE421236BE9AE9F7` FOREIGN KEY (`core_bundle_id`) REFERENCES `corebundles` (`id`), - CONSTRAINT `FK_BE421236BEBB85C6` FOREIGN KEY (`core_interface_sidea_id`) REFERENCES `coreinterfaces` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `corelinks` --- - -LOCK TABLES `corelinks` WRITE; -/*!40000 ALTER TABLE `corelinks` DISABLE KEYS */; -/*!40000 ALTER TABLE `corelinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cust` --- - -DROP TABLE IF EXISTS `cust`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cust` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `irrdb` int(11) DEFAULT NULL, - `company_registered_detail_id` int(11) DEFAULT NULL, - `company_billing_details_id` int(11) DEFAULT NULL, - `reseller` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` int(11) DEFAULT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `abbreviatedName` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `autsys` int(11) DEFAULT NULL, - `maxprefixes` int(11) DEFAULT NULL, - `peeringemail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocphone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `noc24hphone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocfax` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocemail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nochours` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocwww` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `peeringmacro` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `peeringmacrov6` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `peeringpolicy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `corpwww` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `datejoin` date DEFAULT NULL, - `dateleave` date DEFAULT NULL, - `status` smallint(6) DEFAULT NULL, - `activepeeringmatrix` tinyint(1) DEFAULT NULL, - `lastupdated` date DEFAULT NULL, - `lastupdatedby` int(11) DEFAULT NULL, - `creator` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` date DEFAULT NULL, - `MD5Support` varchar(255) COLLATE utf8_unicode_ci DEFAULT 'UNKNOWN', - `isReseller` tinyint(1) NOT NULL DEFAULT '0', - `in_manrs` tinyint(1) NOT NULL DEFAULT '0', - `in_peeringdb` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_997B25A64082763` (`shortname`), - UNIQUE KEY `UNIQ_997B25A98386213` (`company_registered_detail_id`), - UNIQUE KEY `UNIQ_997B25A84478F0C` (`company_billing_details_id`), - KEY `IDX_997B25A666E98DF` (`irrdb`), - KEY `IDX_997B25A18015899` (`reseller`), - CONSTRAINT `FK_997B25A18015899` FOREIGN KEY (`reseller`) REFERENCES `cust` (`id`), - CONSTRAINT `FK_997B25A666E98DF` FOREIGN KEY (`irrdb`) REFERENCES `irrdbconfig` (`id`), - CONSTRAINT `FK_997B25A84478F0C` FOREIGN KEY (`company_billing_details_id`) REFERENCES `company_billing_detail` (`id`), - CONSTRAINT `FK_997B25A98386213` FOREIGN KEY (`company_registered_detail_id`) REFERENCES `company_registration_detail` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cust` --- - -LOCK TABLES `cust` WRITE; -/*!40000 ALTER TABLE `cust` DISABLE KEYS */; -INSERT INTO `cust` VALUES (1,NULL,1,1,NULL,'VAGRANT IXP',3,'vagrant','VAGRANT IXP',2128,1000,'peering@example.com','+353 1 123 4567','+353 1 123 4567','+353 1 123 4568','noc@siep.com','24x7','http://www.example.com/noc/','AS-INEX','AS-INEX','mandatory','http://www.example.com/','2014-01-06',NULL,1,1,'2015-08-20',1,'travis','2014-01-06','YES',0,0,0),(2,1,2,2,NULL,'HEAnet',1,'heanet','HEAnet',1213,1000,'peering@example.com','','','','','0','','AS-HEANET',NULL,'open','http://www.example.com/','2014-01-06',NULL,1,1,NULL,NULL,'travis','2014-01-06','UNKNOWN',0,0,0),(3,13,3,3,NULL,'PCH DNS',1,'pchdns','PCH DNS',42,2000,'peering@example.com','','','','','0','','AS-PCH',NULL,'open','http://www.example.com/','2014-01-06',NULL,1,1,'2014-01-06',1,'travis','2014-01-06','YES',0,0,0),(4,2,4,4,NULL,'AS112',4,'as112','AS112',112,20,'peering@example.com','','','','','0','','',NULL,'open','http://www.example.com/','2014-01-06',NULL,1,1,NULL,NULL,'travis','2014-01-06','NO',0,0,0),(5,1,5,5,NULL,'Imagine',1,'imagine','Imagine',25441,1000,'peering@example.com','','','','','0','','AS-IBIS',NULL,'open','http://www.example.com/','2014-01-06',NULL,1,1,NULL,NULL,'travis','2014-01-06','YES',0,0,0); -/*!40000 ALTER TABLE `cust` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cust_notes` --- - -DROP TABLE IF EXISTS `cust_notes`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cust_notes` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `private` tinyint(1) NOT NULL DEFAULT '1', - `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `note` longtext COLLATE utf8_unicode_ci NOT NULL, - `created` datetime NOT NULL, - `updated` datetime NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_6377D8679395C3F3` (`customer_id`), - CONSTRAINT `FK_6377D8679395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cust_notes` --- - -LOCK TABLES `cust_notes` WRITE; -/*!40000 ALTER TABLE `cust_notes` DISABLE KEYS */; -/*!40000 ALTER TABLE `cust_notes` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cust_tag` --- - -DROP TABLE IF EXISTS `cust_tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cust_tag` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `tag` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `display_as` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `description` longtext COLLATE utf8mb4_unicode_ci, - `internal_only` tinyint(1) NOT NULL DEFAULT '0', - `created` datetime NOT NULL, - `updated` datetime NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_6B54CFB8389B783` (`tag`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cust_tag` --- - -LOCK TABLES `cust_tag` WRITE; -/*!40000 ALTER TABLE `cust_tag` DISABLE KEYS */; -/*!40000 ALTER TABLE `cust_tag` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cust_to_cust_tag` --- - -DROP TABLE IF EXISTS `cust_to_cust_tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cust_to_cust_tag` ( - `customer_tag_id` int(11) NOT NULL, - `customer_id` int(11) NOT NULL, - PRIMARY KEY (`customer_tag_id`,`customer_id`), - KEY `IDX_A6CFB30CB17BF40` (`customer_tag_id`), - KEY `IDX_A6CFB30C9395C3F3` (`customer_id`), - CONSTRAINT `FK_A6CFB30C9395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`), - CONSTRAINT `FK_A6CFB30CB17BF40` FOREIGN KEY (`customer_tag_id`) REFERENCES `cust_tag` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cust_to_cust_tag` --- - -LOCK TABLES `cust_to_cust_tag` WRITE; -/*!40000 ALTER TABLE `cust_to_cust_tag` DISABLE KEYS */; -/*!40000 ALTER TABLE `cust_to_cust_tag` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `custkit` --- - -DROP TABLE IF EXISTS `custkit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `custkit` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `cabinetid` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `descr` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_8127F9AADA0209B9` (`custid`), - KEY `IDX_8127F9AA2B96718A` (`cabinetid`), - CONSTRAINT `FK_8127F9AA2B96718A` FOREIGN KEY (`cabinetid`) REFERENCES `cabinet` (`id`), - CONSTRAINT `FK_8127F9AADA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `custkit` --- - -LOCK TABLES `custkit` WRITE; -/*!40000 ALTER TABLE `custkit` DISABLE KEYS */; -/*!40000 ALTER TABLE `custkit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer_to_ixp` --- - -DROP TABLE IF EXISTS `customer_to_ixp`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer_to_ixp` ( - `customer_id` int(11) NOT NULL, - `ixp_id` int(11) NOT NULL, - PRIMARY KEY (`customer_id`,`ixp_id`), - KEY `IDX_E85DBF209395C3F3` (`customer_id`), - KEY `IDX_E85DBF20A5A4E881` (`ixp_id`), - CONSTRAINT `FK_E85DBF209395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`), - CONSTRAINT `FK_E85DBF20A5A4E881` FOREIGN KEY (`ixp_id`) REFERENCES `ixp` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer_to_ixp` --- - -LOCK TABLES `customer_to_ixp` WRITE; -/*!40000 ALTER TABLE `customer_to_ixp` DISABLE KEYS */; -INSERT INTO `customer_to_ixp` VALUES (1,1),(2,1),(3,1),(4,1),(5,1); -/*!40000 ALTER TABLE `customer_to_ixp` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer_to_users` --- - -DROP TABLE IF EXISTS `customer_to_users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer_to_users` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `user_id` int(11) NOT NULL, - `privs` int(11) NOT NULL, - `last_login_date` datetime DEFAULT NULL, - `last_login_from` tinytext COLLATE utf8mb4_unicode_ci, - `created_at` datetime NOT NULL, - `extra_attributes` json DEFAULT NULL COMMENT '(DC2Type:json)', - PRIMARY KEY (`id`), - UNIQUE KEY `customer_user` (`customer_id`,`user_id`), - KEY `IDX_337AD7F69395C3F3` (`customer_id`), - KEY `IDX_337AD7F6A76ED395` (`user_id`), - CONSTRAINT `FK_337AD7F69395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`), - CONSTRAINT `FK_337AD7F6A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer_to_users` --- - -LOCK TABLES `customer_to_users` WRITE; -/*!40000 ALTER TABLE `customer_to_users` DISABLE KEYS */; -INSERT INTO `customer_to_users` VALUES (1,1,1,3,'2019-05-11 14:37:47','127.0.0.1','2019-05-11 14:37:17','{\"created_by\": {\"type\": \"migration-script\"}}'),(2,4,2,2,'1970-01-01 00:00:00','','2019-05-11 14:37:17','{\"created_by\": {\"type\": \"migration-script\"}}'),(3,4,3,1,'1970-01-01 00:00:00','','2019-05-11 14:37:17','{\"created_by\": {\"type\": \"migration-script\"}}'); -/*!40000 ALTER TABLE `customer_to_users` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `failed_jobs` --- - -DROP TABLE IF EXISTS `failed_jobs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `failed_jobs` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, - `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, - `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, - `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, - `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `failed_jobs` --- - -LOCK TABLES `failed_jobs` WRITE; -/*!40000 ALTER TABLE `failed_jobs` DISABLE KEYS */; -/*!40000 ALTER TABLE `failed_jobs` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `infrastructure` --- - -DROP TABLE IF EXISTS `infrastructure`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `infrastructure` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `ixp_id` int(11) NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `isPrimary` tinyint(1) NOT NULL DEFAULT '0', - `peeringdb_ix_id` bigint(20) DEFAULT NULL, - `ixf_ix_id` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `IXPSN` (`shortname`,`ixp_id`), - KEY `IDX_D129B190A5A4E881` (`ixp_id`), - CONSTRAINT `FK_D129B190A5A4E881` FOREIGN KEY (`ixp_id`) REFERENCES `ixp` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `infrastructure` --- - -LOCK TABLES `infrastructure` WRITE; -/*!40000 ALTER TABLE `infrastructure` DISABLE KEYS */; -INSERT INTO `infrastructure` VALUES (1,1,'Infrastructure #1','#1',1,NULL,NULL),(2,1,'Infrastructure #2','#2',0,NULL,NULL); -/*!40000 ALTER TABLE `infrastructure` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `ipv4address` --- - -DROP TABLE IF EXISTS `ipv4address`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `ipv4address` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlanid` int(11) DEFAULT NULL, - `address` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `vlan_address` (`vlanid`,`address`), - KEY `IDX_A44BCBEEF48D6D0` (`vlanid`), - CONSTRAINT `FK_A44BCBEEF48D6D0` FOREIGN KEY (`vlanid`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=253 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `ipv4address` --- - -LOCK TABLES `ipv4address` WRITE; -/*!40000 ALTER TABLE `ipv4address` DISABLE KEYS */; -INSERT INTO `ipv4address` VALUES (1,1,'10.1.0.1'),(10,1,'10.1.0.10'),(100,1,'10.1.0.100'),(101,1,'10.1.0.101'),(102,1,'10.1.0.102'),(103,1,'10.1.0.103'),(104,1,'10.1.0.104'),(105,1,'10.1.0.105'),(106,1,'10.1.0.106'),(107,1,'10.1.0.107'),(108,1,'10.1.0.108'),(109,1,'10.1.0.109'),(11,1,'10.1.0.11'),(110,1,'10.1.0.110'),(111,1,'10.1.0.111'),(112,1,'10.1.0.112'),(113,1,'10.1.0.113'),(114,1,'10.1.0.114'),(115,1,'10.1.0.115'),(116,1,'10.1.0.116'),(117,1,'10.1.0.117'),(118,1,'10.1.0.118'),(119,1,'10.1.0.119'),(12,1,'10.1.0.12'),(120,1,'10.1.0.120'),(121,1,'10.1.0.121'),(122,1,'10.1.0.122'),(123,1,'10.1.0.123'),(124,1,'10.1.0.124'),(125,1,'10.1.0.125'),(126,1,'10.1.0.126'),(13,1,'10.1.0.13'),(14,1,'10.1.0.14'),(15,1,'10.1.0.15'),(16,1,'10.1.0.16'),(17,1,'10.1.0.17'),(18,1,'10.1.0.18'),(19,1,'10.1.0.19'),(2,1,'10.1.0.2'),(20,1,'10.1.0.20'),(21,1,'10.1.0.21'),(22,1,'10.1.0.22'),(23,1,'10.1.0.23'),(24,1,'10.1.0.24'),(25,1,'10.1.0.25'),(26,1,'10.1.0.26'),(27,1,'10.1.0.27'),(28,1,'10.1.0.28'),(29,1,'10.1.0.29'),(3,1,'10.1.0.3'),(30,1,'10.1.0.30'),(31,1,'10.1.0.31'),(32,1,'10.1.0.32'),(33,1,'10.1.0.33'),(34,1,'10.1.0.34'),(35,1,'10.1.0.35'),(36,1,'10.1.0.36'),(37,1,'10.1.0.37'),(38,1,'10.1.0.38'),(39,1,'10.1.0.39'),(4,1,'10.1.0.4'),(40,1,'10.1.0.40'),(41,1,'10.1.0.41'),(42,1,'10.1.0.42'),(43,1,'10.1.0.43'),(44,1,'10.1.0.44'),(45,1,'10.1.0.45'),(46,1,'10.1.0.46'),(47,1,'10.1.0.47'),(48,1,'10.1.0.48'),(49,1,'10.1.0.49'),(5,1,'10.1.0.5'),(50,1,'10.1.0.50'),(51,1,'10.1.0.51'),(52,1,'10.1.0.52'),(53,1,'10.1.0.53'),(54,1,'10.1.0.54'),(55,1,'10.1.0.55'),(56,1,'10.1.0.56'),(57,1,'10.1.0.57'),(58,1,'10.1.0.58'),(59,1,'10.1.0.59'),(6,1,'10.1.0.6'),(60,1,'10.1.0.60'),(61,1,'10.1.0.61'),(62,1,'10.1.0.62'),(63,1,'10.1.0.63'),(64,1,'10.1.0.64'),(65,1,'10.1.0.65'),(66,1,'10.1.0.66'),(67,1,'10.1.0.67'),(68,1,'10.1.0.68'),(69,1,'10.1.0.69'),(7,1,'10.1.0.7'),(70,1,'10.1.0.70'),(71,1,'10.1.0.71'),(72,1,'10.1.0.72'),(73,1,'10.1.0.73'),(74,1,'10.1.0.74'),(75,1,'10.1.0.75'),(76,1,'10.1.0.76'),(77,1,'10.1.0.77'),(78,1,'10.1.0.78'),(79,1,'10.1.0.79'),(8,1,'10.1.0.8'),(80,1,'10.1.0.80'),(81,1,'10.1.0.81'),(82,1,'10.1.0.82'),(83,1,'10.1.0.83'),(84,1,'10.1.0.84'),(85,1,'10.1.0.85'),(86,1,'10.1.0.86'),(87,1,'10.1.0.87'),(88,1,'10.1.0.88'),(89,1,'10.1.0.89'),(9,1,'10.1.0.9'),(90,1,'10.1.0.90'),(91,1,'10.1.0.91'),(92,1,'10.1.0.92'),(93,1,'10.1.0.93'),(94,1,'10.1.0.94'),(95,1,'10.1.0.95'),(96,1,'10.1.0.96'),(97,1,'10.1.0.97'),(98,1,'10.1.0.98'),(99,1,'10.1.0.99'),(127,2,'10.2.0.1'),(136,2,'10.2.0.10'),(226,2,'10.2.0.100'),(227,2,'10.2.0.101'),(228,2,'10.2.0.102'),(229,2,'10.2.0.103'),(230,2,'10.2.0.104'),(231,2,'10.2.0.105'),(232,2,'10.2.0.106'),(233,2,'10.2.0.107'),(234,2,'10.2.0.108'),(235,2,'10.2.0.109'),(137,2,'10.2.0.11'),(236,2,'10.2.0.110'),(237,2,'10.2.0.111'),(238,2,'10.2.0.112'),(239,2,'10.2.0.113'),(240,2,'10.2.0.114'),(241,2,'10.2.0.115'),(242,2,'10.2.0.116'),(243,2,'10.2.0.117'),(244,2,'10.2.0.118'),(245,2,'10.2.0.119'),(138,2,'10.2.0.12'),(246,2,'10.2.0.120'),(247,2,'10.2.0.121'),(248,2,'10.2.0.122'),(249,2,'10.2.0.123'),(250,2,'10.2.0.124'),(251,2,'10.2.0.125'),(252,2,'10.2.0.126'),(139,2,'10.2.0.13'),(140,2,'10.2.0.14'),(141,2,'10.2.0.15'),(142,2,'10.2.0.16'),(143,2,'10.2.0.17'),(144,2,'10.2.0.18'),(145,2,'10.2.0.19'),(128,2,'10.2.0.2'),(146,2,'10.2.0.20'),(147,2,'10.2.0.21'),(148,2,'10.2.0.22'),(149,2,'10.2.0.23'),(150,2,'10.2.0.24'),(151,2,'10.2.0.25'),(152,2,'10.2.0.26'),(153,2,'10.2.0.27'),(154,2,'10.2.0.28'),(155,2,'10.2.0.29'),(129,2,'10.2.0.3'),(156,2,'10.2.0.30'),(157,2,'10.2.0.31'),(158,2,'10.2.0.32'),(159,2,'10.2.0.33'),(160,2,'10.2.0.34'),(161,2,'10.2.0.35'),(162,2,'10.2.0.36'),(163,2,'10.2.0.37'),(164,2,'10.2.0.38'),(165,2,'10.2.0.39'),(130,2,'10.2.0.4'),(166,2,'10.2.0.40'),(167,2,'10.2.0.41'),(168,2,'10.2.0.42'),(169,2,'10.2.0.43'),(170,2,'10.2.0.44'),(171,2,'10.2.0.45'),(172,2,'10.2.0.46'),(173,2,'10.2.0.47'),(174,2,'10.2.0.48'),(175,2,'10.2.0.49'),(131,2,'10.2.0.5'),(176,2,'10.2.0.50'),(177,2,'10.2.0.51'),(178,2,'10.2.0.52'),(179,2,'10.2.0.53'),(180,2,'10.2.0.54'),(181,2,'10.2.0.55'),(182,2,'10.2.0.56'),(183,2,'10.2.0.57'),(184,2,'10.2.0.58'),(185,2,'10.2.0.59'),(132,2,'10.2.0.6'),(186,2,'10.2.0.60'),(187,2,'10.2.0.61'),(188,2,'10.2.0.62'),(189,2,'10.2.0.63'),(190,2,'10.2.0.64'),(191,2,'10.2.0.65'),(192,2,'10.2.0.66'),(193,2,'10.2.0.67'),(194,2,'10.2.0.68'),(195,2,'10.2.0.69'),(133,2,'10.2.0.7'),(196,2,'10.2.0.70'),(197,2,'10.2.0.71'),(198,2,'10.2.0.72'),(199,2,'10.2.0.73'),(200,2,'10.2.0.74'),(201,2,'10.2.0.75'),(202,2,'10.2.0.76'),(203,2,'10.2.0.77'),(204,2,'10.2.0.78'),(205,2,'10.2.0.79'),(134,2,'10.2.0.8'),(206,2,'10.2.0.80'),(207,2,'10.2.0.81'),(208,2,'10.2.0.82'),(209,2,'10.2.0.83'),(210,2,'10.2.0.84'),(211,2,'10.2.0.85'),(212,2,'10.2.0.86'),(213,2,'10.2.0.87'),(214,2,'10.2.0.88'),(215,2,'10.2.0.89'),(135,2,'10.2.0.9'),(216,2,'10.2.0.90'),(217,2,'10.2.0.91'),(218,2,'10.2.0.92'),(219,2,'10.2.0.93'),(220,2,'10.2.0.94'),(221,2,'10.2.0.95'),(222,2,'10.2.0.96'),(223,2,'10.2.0.97'),(224,2,'10.2.0.98'),(225,2,'10.2.0.99'); -/*!40000 ALTER TABLE `ipv4address` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `ipv6address` --- - -DROP TABLE IF EXISTS `ipv6address`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `ipv6address` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlanid` int(11) DEFAULT NULL, - `address` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `vlan_address` (`vlanid`,`address`), - KEY `IDX_E66ECC93F48D6D0` (`vlanid`), - CONSTRAINT `FK_E66ECC93F48D6D0` FOREIGN KEY (`vlanid`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=801 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `ipv6address` --- - -LOCK TABLES `ipv6address` WRITE; -/*!40000 ALTER TABLE `ipv6address` DISABLE KEYS */; -INSERT INTO `ipv6address` VALUES (1,1,'2001:db8:1::1'),(16,1,'2001:db8:1::10'),(256,1,'2001:db8:1::100'),(257,1,'2001:db8:1::101'),(258,1,'2001:db8:1::102'),(259,1,'2001:db8:1::103'),(260,1,'2001:db8:1::104'),(261,1,'2001:db8:1::105'),(262,1,'2001:db8:1::106'),(263,1,'2001:db8:1::107'),(264,1,'2001:db8:1::108'),(265,1,'2001:db8:1::109'),(266,1,'2001:db8:1::10a'),(267,1,'2001:db8:1::10b'),(268,1,'2001:db8:1::10c'),(269,1,'2001:db8:1::10d'),(270,1,'2001:db8:1::10e'),(271,1,'2001:db8:1::10f'),(17,1,'2001:db8:1::11'),(272,1,'2001:db8:1::110'),(273,1,'2001:db8:1::111'),(274,1,'2001:db8:1::112'),(275,1,'2001:db8:1::113'),(276,1,'2001:db8:1::114'),(277,1,'2001:db8:1::115'),(278,1,'2001:db8:1::116'),(279,1,'2001:db8:1::117'),(280,1,'2001:db8:1::118'),(281,1,'2001:db8:1::119'),(282,1,'2001:db8:1::11a'),(283,1,'2001:db8:1::11b'),(284,1,'2001:db8:1::11c'),(285,1,'2001:db8:1::11d'),(286,1,'2001:db8:1::11e'),(287,1,'2001:db8:1::11f'),(18,1,'2001:db8:1::12'),(288,1,'2001:db8:1::120'),(289,1,'2001:db8:1::121'),(290,1,'2001:db8:1::122'),(291,1,'2001:db8:1::123'),(292,1,'2001:db8:1::124'),(293,1,'2001:db8:1::125'),(294,1,'2001:db8:1::126'),(295,1,'2001:db8:1::127'),(296,1,'2001:db8:1::128'),(297,1,'2001:db8:1::129'),(298,1,'2001:db8:1::12a'),(299,1,'2001:db8:1::12b'),(300,1,'2001:db8:1::12c'),(301,1,'2001:db8:1::12d'),(302,1,'2001:db8:1::12e'),(303,1,'2001:db8:1::12f'),(19,1,'2001:db8:1::13'),(304,1,'2001:db8:1::130'),(305,1,'2001:db8:1::131'),(306,1,'2001:db8:1::132'),(307,1,'2001:db8:1::133'),(308,1,'2001:db8:1::134'),(309,1,'2001:db8:1::135'),(310,1,'2001:db8:1::136'),(311,1,'2001:db8:1::137'),(312,1,'2001:db8:1::138'),(313,1,'2001:db8:1::139'),(314,1,'2001:db8:1::13a'),(315,1,'2001:db8:1::13b'),(316,1,'2001:db8:1::13c'),(317,1,'2001:db8:1::13d'),(318,1,'2001:db8:1::13e'),(319,1,'2001:db8:1::13f'),(20,1,'2001:db8:1::14'),(320,1,'2001:db8:1::140'),(321,1,'2001:db8:1::141'),(322,1,'2001:db8:1::142'),(323,1,'2001:db8:1::143'),(324,1,'2001:db8:1::144'),(325,1,'2001:db8:1::145'),(326,1,'2001:db8:1::146'),(327,1,'2001:db8:1::147'),(328,1,'2001:db8:1::148'),(329,1,'2001:db8:1::149'),(330,1,'2001:db8:1::14a'),(331,1,'2001:db8:1::14b'),(332,1,'2001:db8:1::14c'),(333,1,'2001:db8:1::14d'),(334,1,'2001:db8:1::14e'),(335,1,'2001:db8:1::14f'),(21,1,'2001:db8:1::15'),(336,1,'2001:db8:1::150'),(337,1,'2001:db8:1::151'),(338,1,'2001:db8:1::152'),(339,1,'2001:db8:1::153'),(340,1,'2001:db8:1::154'),(341,1,'2001:db8:1::155'),(342,1,'2001:db8:1::156'),(343,1,'2001:db8:1::157'),(344,1,'2001:db8:1::158'),(345,1,'2001:db8:1::159'),(346,1,'2001:db8:1::15a'),(347,1,'2001:db8:1::15b'),(348,1,'2001:db8:1::15c'),(349,1,'2001:db8:1::15d'),(350,1,'2001:db8:1::15e'),(351,1,'2001:db8:1::15f'),(22,1,'2001:db8:1::16'),(352,1,'2001:db8:1::160'),(353,1,'2001:db8:1::161'),(354,1,'2001:db8:1::162'),(355,1,'2001:db8:1::163'),(356,1,'2001:db8:1::164'),(357,1,'2001:db8:1::165'),(358,1,'2001:db8:1::166'),(359,1,'2001:db8:1::167'),(360,1,'2001:db8:1::168'),(361,1,'2001:db8:1::169'),(362,1,'2001:db8:1::16a'),(363,1,'2001:db8:1::16b'),(364,1,'2001:db8:1::16c'),(365,1,'2001:db8:1::16d'),(366,1,'2001:db8:1::16e'),(367,1,'2001:db8:1::16f'),(23,1,'2001:db8:1::17'),(368,1,'2001:db8:1::170'),(369,1,'2001:db8:1::171'),(370,1,'2001:db8:1::172'),(371,1,'2001:db8:1::173'),(372,1,'2001:db8:1::174'),(373,1,'2001:db8:1::175'),(374,1,'2001:db8:1::176'),(375,1,'2001:db8:1::177'),(376,1,'2001:db8:1::178'),(377,1,'2001:db8:1::179'),(378,1,'2001:db8:1::17a'),(379,1,'2001:db8:1::17b'),(380,1,'2001:db8:1::17c'),(381,1,'2001:db8:1::17d'),(382,1,'2001:db8:1::17e'),(383,1,'2001:db8:1::17f'),(24,1,'2001:db8:1::18'),(384,1,'2001:db8:1::180'),(385,1,'2001:db8:1::181'),(386,1,'2001:db8:1::182'),(387,1,'2001:db8:1::183'),(388,1,'2001:db8:1::184'),(389,1,'2001:db8:1::185'),(390,1,'2001:db8:1::186'),(391,1,'2001:db8:1::187'),(392,1,'2001:db8:1::188'),(393,1,'2001:db8:1::189'),(394,1,'2001:db8:1::18a'),(395,1,'2001:db8:1::18b'),(396,1,'2001:db8:1::18c'),(397,1,'2001:db8:1::18d'),(398,1,'2001:db8:1::18e'),(399,1,'2001:db8:1::18f'),(25,1,'2001:db8:1::19'),(400,1,'2001:db8:1::190'),(26,1,'2001:db8:1::1a'),(27,1,'2001:db8:1::1b'),(28,1,'2001:db8:1::1c'),(29,1,'2001:db8:1::1d'),(30,1,'2001:db8:1::1e'),(31,1,'2001:db8:1::1f'),(2,1,'2001:db8:1::2'),(32,1,'2001:db8:1::20'),(33,1,'2001:db8:1::21'),(34,1,'2001:db8:1::22'),(35,1,'2001:db8:1::23'),(36,1,'2001:db8:1::24'),(37,1,'2001:db8:1::25'),(38,1,'2001:db8:1::26'),(39,1,'2001:db8:1::27'),(40,1,'2001:db8:1::28'),(41,1,'2001:db8:1::29'),(42,1,'2001:db8:1::2a'),(43,1,'2001:db8:1::2b'),(44,1,'2001:db8:1::2c'),(45,1,'2001:db8:1::2d'),(46,1,'2001:db8:1::2e'),(47,1,'2001:db8:1::2f'),(3,1,'2001:db8:1::3'),(48,1,'2001:db8:1::30'),(49,1,'2001:db8:1::31'),(50,1,'2001:db8:1::32'),(51,1,'2001:db8:1::33'),(52,1,'2001:db8:1::34'),(53,1,'2001:db8:1::35'),(54,1,'2001:db8:1::36'),(55,1,'2001:db8:1::37'),(56,1,'2001:db8:1::38'),(57,1,'2001:db8:1::39'),(58,1,'2001:db8:1::3a'),(59,1,'2001:db8:1::3b'),(60,1,'2001:db8:1::3c'),(61,1,'2001:db8:1::3d'),(62,1,'2001:db8:1::3e'),(63,1,'2001:db8:1::3f'),(4,1,'2001:db8:1::4'),(64,1,'2001:db8:1::40'),(65,1,'2001:db8:1::41'),(66,1,'2001:db8:1::42'),(67,1,'2001:db8:1::43'),(68,1,'2001:db8:1::44'),(69,1,'2001:db8:1::45'),(70,1,'2001:db8:1::46'),(71,1,'2001:db8:1::47'),(72,1,'2001:db8:1::48'),(73,1,'2001:db8:1::49'),(74,1,'2001:db8:1::4a'),(75,1,'2001:db8:1::4b'),(76,1,'2001:db8:1::4c'),(77,1,'2001:db8:1::4d'),(78,1,'2001:db8:1::4e'),(79,1,'2001:db8:1::4f'),(5,1,'2001:db8:1::5'),(80,1,'2001:db8:1::50'),(81,1,'2001:db8:1::51'),(82,1,'2001:db8:1::52'),(83,1,'2001:db8:1::53'),(84,1,'2001:db8:1::54'),(85,1,'2001:db8:1::55'),(86,1,'2001:db8:1::56'),(87,1,'2001:db8:1::57'),(88,1,'2001:db8:1::58'),(89,1,'2001:db8:1::59'),(90,1,'2001:db8:1::5a'),(91,1,'2001:db8:1::5b'),(92,1,'2001:db8:1::5c'),(93,1,'2001:db8:1::5d'),(94,1,'2001:db8:1::5e'),(95,1,'2001:db8:1::5f'),(6,1,'2001:db8:1::6'),(96,1,'2001:db8:1::60'),(97,1,'2001:db8:1::61'),(98,1,'2001:db8:1::62'),(99,1,'2001:db8:1::63'),(100,1,'2001:db8:1::64'),(101,1,'2001:db8:1::65'),(102,1,'2001:db8:1::66'),(103,1,'2001:db8:1::67'),(104,1,'2001:db8:1::68'),(105,1,'2001:db8:1::69'),(106,1,'2001:db8:1::6a'),(107,1,'2001:db8:1::6b'),(108,1,'2001:db8:1::6c'),(109,1,'2001:db8:1::6d'),(110,1,'2001:db8:1::6e'),(111,1,'2001:db8:1::6f'),(7,1,'2001:db8:1::7'),(112,1,'2001:db8:1::70'),(113,1,'2001:db8:1::71'),(114,1,'2001:db8:1::72'),(115,1,'2001:db8:1::73'),(116,1,'2001:db8:1::74'),(117,1,'2001:db8:1::75'),(118,1,'2001:db8:1::76'),(119,1,'2001:db8:1::77'),(120,1,'2001:db8:1::78'),(121,1,'2001:db8:1::79'),(122,1,'2001:db8:1::7a'),(123,1,'2001:db8:1::7b'),(124,1,'2001:db8:1::7c'),(125,1,'2001:db8:1::7d'),(126,1,'2001:db8:1::7e'),(127,1,'2001:db8:1::7f'),(8,1,'2001:db8:1::8'),(128,1,'2001:db8:1::80'),(129,1,'2001:db8:1::81'),(130,1,'2001:db8:1::82'),(131,1,'2001:db8:1::83'),(132,1,'2001:db8:1::84'),(133,1,'2001:db8:1::85'),(134,1,'2001:db8:1::86'),(135,1,'2001:db8:1::87'),(136,1,'2001:db8:1::88'),(137,1,'2001:db8:1::89'),(138,1,'2001:db8:1::8a'),(139,1,'2001:db8:1::8b'),(140,1,'2001:db8:1::8c'),(141,1,'2001:db8:1::8d'),(142,1,'2001:db8:1::8e'),(143,1,'2001:db8:1::8f'),(9,1,'2001:db8:1::9'),(144,1,'2001:db8:1::90'),(145,1,'2001:db8:1::91'),(146,1,'2001:db8:1::92'),(147,1,'2001:db8:1::93'),(148,1,'2001:db8:1::94'),(149,1,'2001:db8:1::95'),(150,1,'2001:db8:1::96'),(151,1,'2001:db8:1::97'),(152,1,'2001:db8:1::98'),(153,1,'2001:db8:1::99'),(154,1,'2001:db8:1::9a'),(155,1,'2001:db8:1::9b'),(156,1,'2001:db8:1::9c'),(157,1,'2001:db8:1::9d'),(158,1,'2001:db8:1::9e'),(159,1,'2001:db8:1::9f'),(10,1,'2001:db8:1::a'),(160,1,'2001:db8:1::a0'),(161,1,'2001:db8:1::a1'),(162,1,'2001:db8:1::a2'),(163,1,'2001:db8:1::a3'),(164,1,'2001:db8:1::a4'),(165,1,'2001:db8:1::a5'),(166,1,'2001:db8:1::a6'),(167,1,'2001:db8:1::a7'),(168,1,'2001:db8:1::a8'),(169,1,'2001:db8:1::a9'),(170,1,'2001:db8:1::aa'),(171,1,'2001:db8:1::ab'),(172,1,'2001:db8:1::ac'),(173,1,'2001:db8:1::ad'),(174,1,'2001:db8:1::ae'),(175,1,'2001:db8:1::af'),(11,1,'2001:db8:1::b'),(176,1,'2001:db8:1::b0'),(177,1,'2001:db8:1::b1'),(178,1,'2001:db8:1::b2'),(179,1,'2001:db8:1::b3'),(180,1,'2001:db8:1::b4'),(181,1,'2001:db8:1::b5'),(182,1,'2001:db8:1::b6'),(183,1,'2001:db8:1::b7'),(184,1,'2001:db8:1::b8'),(185,1,'2001:db8:1::b9'),(186,1,'2001:db8:1::ba'),(187,1,'2001:db8:1::bb'),(188,1,'2001:db8:1::bc'),(189,1,'2001:db8:1::bd'),(190,1,'2001:db8:1::be'),(191,1,'2001:db8:1::bf'),(12,1,'2001:db8:1::c'),(192,1,'2001:db8:1::c0'),(193,1,'2001:db8:1::c1'),(194,1,'2001:db8:1::c2'),(195,1,'2001:db8:1::c3'),(196,1,'2001:db8:1::c4'),(197,1,'2001:db8:1::c5'),(198,1,'2001:db8:1::c6'),(199,1,'2001:db8:1::c7'),(200,1,'2001:db8:1::c8'),(201,1,'2001:db8:1::c9'),(202,1,'2001:db8:1::ca'),(203,1,'2001:db8:1::cb'),(204,1,'2001:db8:1::cc'),(205,1,'2001:db8:1::cd'),(206,1,'2001:db8:1::ce'),(207,1,'2001:db8:1::cf'),(13,1,'2001:db8:1::d'),(208,1,'2001:db8:1::d0'),(209,1,'2001:db8:1::d1'),(210,1,'2001:db8:1::d2'),(211,1,'2001:db8:1::d3'),(212,1,'2001:db8:1::d4'),(213,1,'2001:db8:1::d5'),(214,1,'2001:db8:1::d6'),(215,1,'2001:db8:1::d7'),(216,1,'2001:db8:1::d8'),(217,1,'2001:db8:1::d9'),(218,1,'2001:db8:1::da'),(219,1,'2001:db8:1::db'),(220,1,'2001:db8:1::dc'),(221,1,'2001:db8:1::dd'),(222,1,'2001:db8:1::de'),(223,1,'2001:db8:1::df'),(14,1,'2001:db8:1::e'),(224,1,'2001:db8:1::e0'),(225,1,'2001:db8:1::e1'),(226,1,'2001:db8:1::e2'),(227,1,'2001:db8:1::e3'),(228,1,'2001:db8:1::e4'),(229,1,'2001:db8:1::e5'),(230,1,'2001:db8:1::e6'),(231,1,'2001:db8:1::e7'),(232,1,'2001:db8:1::e8'),(233,1,'2001:db8:1::e9'),(234,1,'2001:db8:1::ea'),(235,1,'2001:db8:1::eb'),(236,1,'2001:db8:1::ec'),(237,1,'2001:db8:1::ed'),(238,1,'2001:db8:1::ee'),(239,1,'2001:db8:1::ef'),(15,1,'2001:db8:1::f'),(240,1,'2001:db8:1::f0'),(241,1,'2001:db8:1::f1'),(242,1,'2001:db8:1::f2'),(243,1,'2001:db8:1::f3'),(244,1,'2001:db8:1::f4'),(245,1,'2001:db8:1::f5'),(246,1,'2001:db8:1::f6'),(247,1,'2001:db8:1::f7'),(248,1,'2001:db8:1::f8'),(249,1,'2001:db8:1::f9'),(250,1,'2001:db8:1::fa'),(251,1,'2001:db8:1::fb'),(252,1,'2001:db8:1::fc'),(253,1,'2001:db8:1::fd'),(254,1,'2001:db8:1::fe'),(255,1,'2001:db8:1::ff'),(401,2,'2001:db8:2::1'),(416,2,'2001:db8:2::10'),(656,2,'2001:db8:2::100'),(657,2,'2001:db8:2::101'),(658,2,'2001:db8:2::102'),(659,2,'2001:db8:2::103'),(660,2,'2001:db8:2::104'),(661,2,'2001:db8:2::105'),(662,2,'2001:db8:2::106'),(663,2,'2001:db8:2::107'),(664,2,'2001:db8:2::108'),(665,2,'2001:db8:2::109'),(666,2,'2001:db8:2::10a'),(667,2,'2001:db8:2::10b'),(668,2,'2001:db8:2::10c'),(669,2,'2001:db8:2::10d'),(670,2,'2001:db8:2::10e'),(671,2,'2001:db8:2::10f'),(417,2,'2001:db8:2::11'),(672,2,'2001:db8:2::110'),(673,2,'2001:db8:2::111'),(674,2,'2001:db8:2::112'),(675,2,'2001:db8:2::113'),(676,2,'2001:db8:2::114'),(677,2,'2001:db8:2::115'),(678,2,'2001:db8:2::116'),(679,2,'2001:db8:2::117'),(680,2,'2001:db8:2::118'),(681,2,'2001:db8:2::119'),(682,2,'2001:db8:2::11a'),(683,2,'2001:db8:2::11b'),(684,2,'2001:db8:2::11c'),(685,2,'2001:db8:2::11d'),(686,2,'2001:db8:2::11e'),(687,2,'2001:db8:2::11f'),(418,2,'2001:db8:2::12'),(688,2,'2001:db8:2::120'),(689,2,'2001:db8:2::121'),(690,2,'2001:db8:2::122'),(691,2,'2001:db8:2::123'),(692,2,'2001:db8:2::124'),(693,2,'2001:db8:2::125'),(694,2,'2001:db8:2::126'),(695,2,'2001:db8:2::127'),(696,2,'2001:db8:2::128'),(697,2,'2001:db8:2::129'),(698,2,'2001:db8:2::12a'),(699,2,'2001:db8:2::12b'),(700,2,'2001:db8:2::12c'),(701,2,'2001:db8:2::12d'),(702,2,'2001:db8:2::12e'),(703,2,'2001:db8:2::12f'),(419,2,'2001:db8:2::13'),(704,2,'2001:db8:2::130'),(705,2,'2001:db8:2::131'),(706,2,'2001:db8:2::132'),(707,2,'2001:db8:2::133'),(708,2,'2001:db8:2::134'),(709,2,'2001:db8:2::135'),(710,2,'2001:db8:2::136'),(711,2,'2001:db8:2::137'),(712,2,'2001:db8:2::138'),(713,2,'2001:db8:2::139'),(714,2,'2001:db8:2::13a'),(715,2,'2001:db8:2::13b'),(716,2,'2001:db8:2::13c'),(717,2,'2001:db8:2::13d'),(718,2,'2001:db8:2::13e'),(719,2,'2001:db8:2::13f'),(420,2,'2001:db8:2::14'),(720,2,'2001:db8:2::140'),(721,2,'2001:db8:2::141'),(722,2,'2001:db8:2::142'),(723,2,'2001:db8:2::143'),(724,2,'2001:db8:2::144'),(725,2,'2001:db8:2::145'),(726,2,'2001:db8:2::146'),(727,2,'2001:db8:2::147'),(728,2,'2001:db8:2::148'),(729,2,'2001:db8:2::149'),(730,2,'2001:db8:2::14a'),(731,2,'2001:db8:2::14b'),(732,2,'2001:db8:2::14c'),(733,2,'2001:db8:2::14d'),(734,2,'2001:db8:2::14e'),(735,2,'2001:db8:2::14f'),(421,2,'2001:db8:2::15'),(736,2,'2001:db8:2::150'),(737,2,'2001:db8:2::151'),(738,2,'2001:db8:2::152'),(739,2,'2001:db8:2::153'),(740,2,'2001:db8:2::154'),(741,2,'2001:db8:2::155'),(742,2,'2001:db8:2::156'),(743,2,'2001:db8:2::157'),(744,2,'2001:db8:2::158'),(745,2,'2001:db8:2::159'),(746,2,'2001:db8:2::15a'),(747,2,'2001:db8:2::15b'),(748,2,'2001:db8:2::15c'),(749,2,'2001:db8:2::15d'),(750,2,'2001:db8:2::15e'),(751,2,'2001:db8:2::15f'),(422,2,'2001:db8:2::16'),(752,2,'2001:db8:2::160'),(753,2,'2001:db8:2::161'),(754,2,'2001:db8:2::162'),(755,2,'2001:db8:2::163'),(756,2,'2001:db8:2::164'),(757,2,'2001:db8:2::165'),(758,2,'2001:db8:2::166'),(759,2,'2001:db8:2::167'),(760,2,'2001:db8:2::168'),(761,2,'2001:db8:2::169'),(762,2,'2001:db8:2::16a'),(763,2,'2001:db8:2::16b'),(764,2,'2001:db8:2::16c'),(765,2,'2001:db8:2::16d'),(766,2,'2001:db8:2::16e'),(767,2,'2001:db8:2::16f'),(423,2,'2001:db8:2::17'),(768,2,'2001:db8:2::170'),(769,2,'2001:db8:2::171'),(770,2,'2001:db8:2::172'),(771,2,'2001:db8:2::173'),(772,2,'2001:db8:2::174'),(773,2,'2001:db8:2::175'),(774,2,'2001:db8:2::176'),(775,2,'2001:db8:2::177'),(776,2,'2001:db8:2::178'),(777,2,'2001:db8:2::179'),(778,2,'2001:db8:2::17a'),(779,2,'2001:db8:2::17b'),(780,2,'2001:db8:2::17c'),(781,2,'2001:db8:2::17d'),(782,2,'2001:db8:2::17e'),(783,2,'2001:db8:2::17f'),(424,2,'2001:db8:2::18'),(784,2,'2001:db8:2::180'),(785,2,'2001:db8:2::181'),(786,2,'2001:db8:2::182'),(787,2,'2001:db8:2::183'),(788,2,'2001:db8:2::184'),(789,2,'2001:db8:2::185'),(790,2,'2001:db8:2::186'),(791,2,'2001:db8:2::187'),(792,2,'2001:db8:2::188'),(793,2,'2001:db8:2::189'),(794,2,'2001:db8:2::18a'),(795,2,'2001:db8:2::18b'),(796,2,'2001:db8:2::18c'),(797,2,'2001:db8:2::18d'),(798,2,'2001:db8:2::18e'),(799,2,'2001:db8:2::18f'),(425,2,'2001:db8:2::19'),(800,2,'2001:db8:2::190'),(426,2,'2001:db8:2::1a'),(427,2,'2001:db8:2::1b'),(428,2,'2001:db8:2::1c'),(429,2,'2001:db8:2::1d'),(430,2,'2001:db8:2::1e'),(431,2,'2001:db8:2::1f'),(402,2,'2001:db8:2::2'),(432,2,'2001:db8:2::20'),(433,2,'2001:db8:2::21'),(434,2,'2001:db8:2::22'),(435,2,'2001:db8:2::23'),(436,2,'2001:db8:2::24'),(437,2,'2001:db8:2::25'),(438,2,'2001:db8:2::26'),(439,2,'2001:db8:2::27'),(440,2,'2001:db8:2::28'),(441,2,'2001:db8:2::29'),(442,2,'2001:db8:2::2a'),(443,2,'2001:db8:2::2b'),(444,2,'2001:db8:2::2c'),(445,2,'2001:db8:2::2d'),(446,2,'2001:db8:2::2e'),(447,2,'2001:db8:2::2f'),(403,2,'2001:db8:2::3'),(448,2,'2001:db8:2::30'),(449,2,'2001:db8:2::31'),(450,2,'2001:db8:2::32'),(451,2,'2001:db8:2::33'),(452,2,'2001:db8:2::34'),(453,2,'2001:db8:2::35'),(454,2,'2001:db8:2::36'),(455,2,'2001:db8:2::37'),(456,2,'2001:db8:2::38'),(457,2,'2001:db8:2::39'),(458,2,'2001:db8:2::3a'),(459,2,'2001:db8:2::3b'),(460,2,'2001:db8:2::3c'),(461,2,'2001:db8:2::3d'),(462,2,'2001:db8:2::3e'),(463,2,'2001:db8:2::3f'),(404,2,'2001:db8:2::4'),(464,2,'2001:db8:2::40'),(465,2,'2001:db8:2::41'),(466,2,'2001:db8:2::42'),(467,2,'2001:db8:2::43'),(468,2,'2001:db8:2::44'),(469,2,'2001:db8:2::45'),(470,2,'2001:db8:2::46'),(471,2,'2001:db8:2::47'),(472,2,'2001:db8:2::48'),(473,2,'2001:db8:2::49'),(474,2,'2001:db8:2::4a'),(475,2,'2001:db8:2::4b'),(476,2,'2001:db8:2::4c'),(477,2,'2001:db8:2::4d'),(478,2,'2001:db8:2::4e'),(479,2,'2001:db8:2::4f'),(405,2,'2001:db8:2::5'),(480,2,'2001:db8:2::50'),(481,2,'2001:db8:2::51'),(482,2,'2001:db8:2::52'),(483,2,'2001:db8:2::53'),(484,2,'2001:db8:2::54'),(485,2,'2001:db8:2::55'),(486,2,'2001:db8:2::56'),(487,2,'2001:db8:2::57'),(488,2,'2001:db8:2::58'),(489,2,'2001:db8:2::59'),(490,2,'2001:db8:2::5a'),(491,2,'2001:db8:2::5b'),(492,2,'2001:db8:2::5c'),(493,2,'2001:db8:2::5d'),(494,2,'2001:db8:2::5e'),(495,2,'2001:db8:2::5f'),(406,2,'2001:db8:2::6'),(496,2,'2001:db8:2::60'),(497,2,'2001:db8:2::61'),(498,2,'2001:db8:2::62'),(499,2,'2001:db8:2::63'),(500,2,'2001:db8:2::64'),(501,2,'2001:db8:2::65'),(502,2,'2001:db8:2::66'),(503,2,'2001:db8:2::67'),(504,2,'2001:db8:2::68'),(505,2,'2001:db8:2::69'),(506,2,'2001:db8:2::6a'),(507,2,'2001:db8:2::6b'),(508,2,'2001:db8:2::6c'),(509,2,'2001:db8:2::6d'),(510,2,'2001:db8:2::6e'),(511,2,'2001:db8:2::6f'),(407,2,'2001:db8:2::7'),(512,2,'2001:db8:2::70'),(513,2,'2001:db8:2::71'),(514,2,'2001:db8:2::72'),(515,2,'2001:db8:2::73'),(516,2,'2001:db8:2::74'),(517,2,'2001:db8:2::75'),(518,2,'2001:db8:2::76'),(519,2,'2001:db8:2::77'),(520,2,'2001:db8:2::78'),(521,2,'2001:db8:2::79'),(522,2,'2001:db8:2::7a'),(523,2,'2001:db8:2::7b'),(524,2,'2001:db8:2::7c'),(525,2,'2001:db8:2::7d'),(526,2,'2001:db8:2::7e'),(527,2,'2001:db8:2::7f'),(408,2,'2001:db8:2::8'),(528,2,'2001:db8:2::80'),(529,2,'2001:db8:2::81'),(530,2,'2001:db8:2::82'),(531,2,'2001:db8:2::83'),(532,2,'2001:db8:2::84'),(533,2,'2001:db8:2::85'),(534,2,'2001:db8:2::86'),(535,2,'2001:db8:2::87'),(536,2,'2001:db8:2::88'),(537,2,'2001:db8:2::89'),(538,2,'2001:db8:2::8a'),(539,2,'2001:db8:2::8b'),(540,2,'2001:db8:2::8c'),(541,2,'2001:db8:2::8d'),(542,2,'2001:db8:2::8e'),(543,2,'2001:db8:2::8f'),(409,2,'2001:db8:2::9'),(544,2,'2001:db8:2::90'),(545,2,'2001:db8:2::91'),(546,2,'2001:db8:2::92'),(547,2,'2001:db8:2::93'),(548,2,'2001:db8:2::94'),(549,2,'2001:db8:2::95'),(550,2,'2001:db8:2::96'),(551,2,'2001:db8:2::97'),(552,2,'2001:db8:2::98'),(553,2,'2001:db8:2::99'),(554,2,'2001:db8:2::9a'),(555,2,'2001:db8:2::9b'),(556,2,'2001:db8:2::9c'),(557,2,'2001:db8:2::9d'),(558,2,'2001:db8:2::9e'),(559,2,'2001:db8:2::9f'),(410,2,'2001:db8:2::a'),(560,2,'2001:db8:2::a0'),(561,2,'2001:db8:2::a1'),(562,2,'2001:db8:2::a2'),(563,2,'2001:db8:2::a3'),(564,2,'2001:db8:2::a4'),(565,2,'2001:db8:2::a5'),(566,2,'2001:db8:2::a6'),(567,2,'2001:db8:2::a7'),(568,2,'2001:db8:2::a8'),(569,2,'2001:db8:2::a9'),(570,2,'2001:db8:2::aa'),(571,2,'2001:db8:2::ab'),(572,2,'2001:db8:2::ac'),(573,2,'2001:db8:2::ad'),(574,2,'2001:db8:2::ae'),(575,2,'2001:db8:2::af'),(411,2,'2001:db8:2::b'),(576,2,'2001:db8:2::b0'),(577,2,'2001:db8:2::b1'),(578,2,'2001:db8:2::b2'),(579,2,'2001:db8:2::b3'),(580,2,'2001:db8:2::b4'),(581,2,'2001:db8:2::b5'),(582,2,'2001:db8:2::b6'),(583,2,'2001:db8:2::b7'),(584,2,'2001:db8:2::b8'),(585,2,'2001:db8:2::b9'),(586,2,'2001:db8:2::ba'),(587,2,'2001:db8:2::bb'),(588,2,'2001:db8:2::bc'),(589,2,'2001:db8:2::bd'),(590,2,'2001:db8:2::be'),(591,2,'2001:db8:2::bf'),(412,2,'2001:db8:2::c'),(592,2,'2001:db8:2::c0'),(593,2,'2001:db8:2::c1'),(594,2,'2001:db8:2::c2'),(595,2,'2001:db8:2::c3'),(596,2,'2001:db8:2::c4'),(597,2,'2001:db8:2::c5'),(598,2,'2001:db8:2::c6'),(599,2,'2001:db8:2::c7'),(600,2,'2001:db8:2::c8'),(601,2,'2001:db8:2::c9'),(602,2,'2001:db8:2::ca'),(603,2,'2001:db8:2::cb'),(604,2,'2001:db8:2::cc'),(605,2,'2001:db8:2::cd'),(606,2,'2001:db8:2::ce'),(607,2,'2001:db8:2::cf'),(413,2,'2001:db8:2::d'),(608,2,'2001:db8:2::d0'),(609,2,'2001:db8:2::d1'),(610,2,'2001:db8:2::d2'),(611,2,'2001:db8:2::d3'),(612,2,'2001:db8:2::d4'),(613,2,'2001:db8:2::d5'),(614,2,'2001:db8:2::d6'),(615,2,'2001:db8:2::d7'),(616,2,'2001:db8:2::d8'),(617,2,'2001:db8:2::d9'),(618,2,'2001:db8:2::da'),(619,2,'2001:db8:2::db'),(620,2,'2001:db8:2::dc'),(621,2,'2001:db8:2::dd'),(622,2,'2001:db8:2::de'),(623,2,'2001:db8:2::df'),(414,2,'2001:db8:2::e'),(624,2,'2001:db8:2::e0'),(625,2,'2001:db8:2::e1'),(626,2,'2001:db8:2::e2'),(627,2,'2001:db8:2::e3'),(628,2,'2001:db8:2::e4'),(629,2,'2001:db8:2::e5'),(630,2,'2001:db8:2::e6'),(631,2,'2001:db8:2::e7'),(632,2,'2001:db8:2::e8'),(633,2,'2001:db8:2::e9'),(634,2,'2001:db8:2::ea'),(635,2,'2001:db8:2::eb'),(636,2,'2001:db8:2::ec'),(637,2,'2001:db8:2::ed'),(638,2,'2001:db8:2::ee'),(639,2,'2001:db8:2::ef'),(415,2,'2001:db8:2::f'),(640,2,'2001:db8:2::f0'),(641,2,'2001:db8:2::f1'),(642,2,'2001:db8:2::f2'),(643,2,'2001:db8:2::f3'),(644,2,'2001:db8:2::f4'),(645,2,'2001:db8:2::f5'),(646,2,'2001:db8:2::f6'),(647,2,'2001:db8:2::f7'),(648,2,'2001:db8:2::f8'),(649,2,'2001:db8:2::f9'),(650,2,'2001:db8:2::fa'),(651,2,'2001:db8:2::fb'),(652,2,'2001:db8:2::fc'),(653,2,'2001:db8:2::fd'),(654,2,'2001:db8:2::fe'),(655,2,'2001:db8:2::ff'); -/*!40000 ALTER TABLE `ipv6address` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `irrdb_asn` --- - -DROP TABLE IF EXISTS `irrdb_asn`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `irrdb_asn` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `asn` int(11) NOT NULL, - `protocol` int(11) NOT NULL, - `first_seen` datetime DEFAULT NULL, - `last_seen` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `custasn` (`asn`,`protocol`,`customer_id`), - KEY `IDX_87BFC5569395C3F3` (`customer_id`), - CONSTRAINT `FK_87BFC5569395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `irrdb_asn` --- - -LOCK TABLES `irrdb_asn` WRITE; -/*!40000 ALTER TABLE `irrdb_asn` DISABLE KEYS */; -INSERT INTO `irrdb_asn` VALUES (1,4,112,4,'2014-01-06 14:42:49',NULL),(2,4,112,6,'2014-01-06 14:42:50',NULL),(3,2,112,4,'2014-01-06 14:42:50',NULL),(4,2,1213,4,'2014-01-06 14:42:50',NULL),(5,2,1921,4,'2014-01-06 14:42:50',NULL),(6,2,2128,4,'2014-01-06 14:42:50',NULL),(7,2,2850,4,'2014-01-06 14:42:50',NULL),(8,2,42310,4,'2014-01-06 14:42:50',NULL),(9,2,112,6,'2014-01-06 14:42:51',NULL),(10,2,1213,6,'2014-01-06 14:42:51',NULL),(11,2,1921,6,'2014-01-06 14:42:51',NULL),(12,2,2128,6,'2014-01-06 14:42:51',NULL),(13,2,2850,6,'2014-01-06 14:42:51',NULL),(14,2,42310,6,'2014-01-06 14:42:51',NULL),(15,5,11521,4,'2014-01-06 14:42:51',NULL),(16,5,25441,4,'2014-01-06 14:42:51',NULL),(17,5,34317,4,'2014-01-06 14:42:51',NULL),(18,5,35272,4,'2014-01-06 14:42:51',NULL),(19,5,39064,4,'2014-01-06 14:42:51',NULL),(20,5,43178,4,'2014-01-06 14:42:51',NULL),(21,5,43610,4,'2014-01-06 14:42:51',NULL),(22,5,47615,4,'2014-01-06 14:42:51',NULL),(23,5,48342,4,'2014-01-06 14:42:51',NULL),(24,5,49573,4,'2014-01-06 14:42:51',NULL),(25,5,197853,4,'2014-01-06 14:42:51',NULL),(26,5,197904,4,'2014-01-06 14:42:51',NULL),(27,5,11521,6,'2014-01-06 14:42:52',NULL),(28,5,25441,6,'2014-01-06 14:42:52',NULL),(29,5,34317,6,'2014-01-06 14:42:52',NULL),(30,5,35272,6,'2014-01-06 14:42:52',NULL),(31,5,39064,6,'2014-01-06 14:42:52',NULL),(32,5,43178,6,'2014-01-06 14:42:52',NULL),(33,5,43610,6,'2014-01-06 14:42:52',NULL),(34,5,47615,6,'2014-01-06 14:42:52',NULL),(35,5,48342,6,'2014-01-06 14:42:52',NULL),(36,5,49573,6,'2014-01-06 14:42:52',NULL),(37,5,197853,6,'2014-01-06 14:42:52',NULL),(38,5,197904,6,'2014-01-06 14:42:52',NULL),(39,3,27,4,'2014-01-06 14:42:52',NULL),(40,3,42,4,'2014-01-06 14:42:52',NULL),(41,3,187,4,'2014-01-06 14:42:52',NULL),(42,3,297,4,'2014-01-06 14:42:52',NULL),(43,3,715,4,'2014-01-06 14:42:52',NULL),(44,3,3856,4,'2014-01-06 14:42:52',NULL),(45,3,7251,4,'2014-01-06 14:42:52',NULL),(46,3,13202,4,'2014-01-06 14:42:52',NULL),(47,3,16327,4,'2014-01-06 14:42:52',NULL),(48,3,16668,4,'2014-01-06 14:42:52',NULL),(49,3,16686,4,'2014-01-06 14:42:52',NULL),(50,3,20144,4,'2014-01-06 14:42:52',NULL),(51,3,20539,4,'2014-01-06 14:42:52',NULL),(52,3,21312,4,'2014-01-06 14:42:52',NULL),(53,3,24999,4,'2014-01-06 14:42:52',NULL),(54,3,27678,4,'2014-01-06 14:42:52',NULL),(55,3,32978,4,'2014-01-06 14:42:52',NULL),(56,3,32979,4,'2014-01-06 14:42:52',NULL),(57,3,35160,4,'2014-01-06 14:42:52',NULL),(58,3,38052,4,'2014-01-06 14:42:52',NULL),(59,3,44876,4,'2014-01-06 14:42:52',NULL),(60,3,45170,4,'2014-01-06 14:42:52',NULL),(61,3,45494,4,'2014-01-06 14:42:52',NULL),(62,3,48582,4,'2014-01-06 14:42:52',NULL),(63,3,48892,4,'2014-01-06 14:42:52',NULL),(64,3,50843,4,'2014-01-06 14:42:52',NULL),(65,3,51874,4,'2014-01-06 14:42:52',NULL),(66,3,52234,4,'2014-01-06 14:42:52',NULL),(67,3,52306,4,'2014-01-06 14:42:52',NULL),(68,3,54145,4,'2014-01-06 14:42:52',NULL),(69,3,59464,4,'2014-01-06 14:42:52',NULL),(70,3,60313,4,'2014-01-06 14:42:52',NULL),(71,3,197058,4,'2014-01-06 14:42:52',NULL),(72,3,27,6,'2014-01-06 14:42:52',NULL),(73,3,42,6,'2014-01-06 14:42:52',NULL),(74,3,187,6,'2014-01-06 14:42:52',NULL),(75,3,297,6,'2014-01-06 14:42:52',NULL),(76,3,715,6,'2014-01-06 14:42:52',NULL),(77,3,3856,6,'2014-01-06 14:42:52',NULL),(78,3,7251,6,'2014-01-06 14:42:52',NULL),(79,3,13202,6,'2014-01-06 14:42:52',NULL),(80,3,16327,6,'2014-01-06 14:42:52',NULL),(81,3,16668,6,'2014-01-06 14:42:52',NULL),(82,3,16686,6,'2014-01-06 14:42:52',NULL),(83,3,20144,6,'2014-01-06 14:42:52',NULL),(84,3,20539,6,'2014-01-06 14:42:52',NULL),(85,3,21312,6,'2014-01-06 14:42:52',NULL),(86,3,24999,6,'2014-01-06 14:42:52',NULL),(87,3,27678,6,'2014-01-06 14:42:52',NULL),(88,3,32978,6,'2014-01-06 14:42:52',NULL),(89,3,32979,6,'2014-01-06 14:42:52',NULL),(90,3,35160,6,'2014-01-06 14:42:52',NULL),(91,3,38052,6,'2014-01-06 14:42:52',NULL),(92,3,44876,6,'2014-01-06 14:42:52',NULL),(93,3,45170,6,'2014-01-06 14:42:52',NULL),(94,3,45494,6,'2014-01-06 14:42:52',NULL),(95,3,48582,6,'2014-01-06 14:42:52',NULL),(96,3,48892,6,'2014-01-06 14:42:52',NULL),(97,3,50843,6,'2014-01-06 14:42:52',NULL),(98,3,51874,6,'2014-01-06 14:42:52',NULL),(99,3,52234,6,'2014-01-06 14:42:52',NULL),(100,3,52306,6,'2014-01-06 14:42:52',NULL),(101,3,54145,6,'2014-01-06 14:42:52',NULL),(102,3,59464,6,'2014-01-06 14:42:52',NULL),(103,3,60313,6,'2014-01-06 14:42:52',NULL),(104,3,197058,6,'2014-01-06 14:42:52',NULL); -/*!40000 ALTER TABLE `irrdb_asn` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `irrdb_prefix` --- - -DROP TABLE IF EXISTS `irrdb_prefix`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `irrdb_prefix` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `prefix` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `protocol` int(11) NOT NULL, - `first_seen` datetime DEFAULT NULL, - `last_seen` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `custprefix` (`prefix`,`protocol`,`customer_id`), - KEY `IDX_FE73E77C9395C3F3` (`customer_id`), - CONSTRAINT `FK_FE73E77C9395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=649 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `irrdb_prefix` --- - -LOCK TABLES `irrdb_prefix` WRITE; -/*!40000 ALTER TABLE `irrdb_prefix` DISABLE KEYS */; -INSERT INTO `irrdb_prefix` VALUES (1,4,'192.175.48.0/24',4,'2014-01-06 14:42:30','2014-01-06 14:42:30'),(2,2,'4.53.84.128/26',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(3,2,'4.53.146.192/26',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(4,2,'77.72.72.0/21',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(5,2,'87.32.0.0/12',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(6,2,'91.123.224.0/20',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(7,2,'134.226.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(8,2,'136.201.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(9,2,'136.206.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(10,2,'137.43.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(11,2,'140.203.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(12,2,'143.239.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(13,2,'147.252.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(14,2,'149.153.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(15,2,'149.157.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(16,2,'157.190.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(17,2,'160.6.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(18,2,'176.97.158.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(19,2,'192.174.68.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(20,2,'192.175.48.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(21,2,'193.1.0.0/16',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(22,2,'193.242.111.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(23,2,'194.0.24.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(24,2,'194.0.25.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(25,2,'194.0.26.0/24',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(26,2,'194.88.240.0/23',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(27,2,'212.3.242.128/26',4,'2014-01-06 14:42:31','2014-01-06 14:42:31'),(28,2,'2001:678:20::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(29,2,'2001:678:24::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(30,2,'2001:67c:1bc::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(31,2,'2001:67c:10b8::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(32,2,'2001:67c:10e0::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(33,2,'2001:770::/32',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(34,2,'2001:7f8:18::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(35,2,'2001:1900:2205::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(36,2,'2001:1900:2206::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(37,2,'2620:4f:8000::/48',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(38,2,'2a01:4b0::/32',6,'2014-01-06 14:42:32','2014-01-06 14:42:32'),(39,5,'31.169.96.0/21',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(40,5,'62.231.32.0/19',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(41,5,'78.135.128.0/17',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(42,5,'83.141.64.0/18',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(43,5,'85.134.128.0/17',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(44,5,'87.192.0.0/16',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(45,5,'87.232.0.0/16',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(46,5,'89.28.176.0/21',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(47,5,'89.124.0.0/14',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(48,5,'89.124.0.0/15',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(49,5,'89.125.0.0/16',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(50,5,'89.126.0.0/16',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(51,5,'89.126.0.0/19',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(52,5,'89.126.0.0/20',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(53,5,'89.126.32.0/19',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(54,5,'89.126.64.0/19',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(55,5,'89.126.96.0/19',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(56,5,'91.194.126.0/23',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(57,5,'91.194.126.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(58,5,'91.194.127.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(59,5,'91.209.106.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(60,5,'91.209.106.0/25',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(61,5,'91.209.106.128/25',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(62,5,'91.213.49.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(63,5,'91.220.224.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(64,5,'141.105.112.0/21',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(65,5,'176.52.216.0/21',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(66,5,'195.5.172.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(67,5,'195.60.166.0/23',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(68,5,'216.245.44.0/24',4,'2014-01-06 14:42:33','2014-01-06 14:42:33'),(69,5,'2001:67c:20::/48',6,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(70,5,'2001:67c:338::/48',6,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(71,5,'2001:4d68::/32',6,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(72,5,'2a01:268::/32',6,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(73,5,'2a01:8f80::/32',6,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(74,3,'31.135.128.0/19',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(75,3,'31.135.128.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(76,3,'31.135.136.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(77,3,'31.135.144.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(78,3,'31.135.148.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(79,3,'31.135.152.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(80,3,'31.135.152.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(81,3,'31.135.154.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(82,3,'36.0.4.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(83,3,'63.246.32.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(84,3,'64.68.192.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(85,3,'64.68.192.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(86,3,'64.68.193.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(87,3,'64.68.194.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(88,3,'64.68.195.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(89,3,'64.68.196.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(90,3,'64.78.200.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(91,3,'64.185.240.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(92,3,'65.22.4.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(93,3,'65.22.5.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(94,3,'65.22.19.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(95,3,'65.22.23.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(96,3,'65.22.27.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(97,3,'65.22.31.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(98,3,'65.22.35.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(99,3,'65.22.39.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(100,3,'65.22.47.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(101,3,'65.22.51.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(102,3,'65.22.55.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(103,3,'65.22.59.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(104,3,'65.22.63.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(105,3,'65.22.67.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(106,3,'65.22.71.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(107,3,'65.22.79.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(108,3,'65.22.83.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(109,3,'65.22.87.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(110,3,'65.22.91.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(111,3,'65.22.95.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(112,3,'65.22.99.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(113,3,'65.22.103.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(114,3,'65.22.107.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(115,3,'65.22.111.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(116,3,'65.22.115.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(117,3,'65.22.119.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(118,3,'65.22.123.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(119,3,'65.22.127.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(120,3,'65.22.131.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(121,3,'65.22.135.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(122,3,'65.22.139.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(123,3,'65.22.143.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(124,3,'65.22.147.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(125,3,'65.22.151.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(126,3,'65.22.155.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(127,3,'65.22.159.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(128,3,'65.22.163.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(129,3,'65.22.171.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(130,3,'65.22.175.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(131,3,'65.22.179.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(132,3,'65.22.183.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(133,3,'65.22.187.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(134,3,'65.22.191.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(135,3,'65.22.195.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(136,3,'65.22.199.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(137,3,'65.22.203.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(138,3,'65.22.207.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(139,3,'65.22.211.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(140,3,'65.22.215.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(141,3,'65.22.219.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(142,3,'65.22.223.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(143,3,'65.22.227.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(144,3,'65.22.231.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(145,3,'65.22.235.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(146,3,'65.22.239.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(147,3,'65.22.243.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(148,3,'65.22.247.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(149,3,'66.96.112.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(150,3,'66.102.32.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(151,3,'66.175.104.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(152,3,'66.185.112.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(153,3,'66.225.199.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(154,3,'66.225.200.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(155,3,'66.225.201.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(156,3,'67.21.37.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(157,3,'67.22.112.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(158,3,'67.158.48.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(159,3,'68.65.112.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(160,3,'68.65.126.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(161,3,'68.65.126.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(162,3,'68.65.127.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(163,3,'69.166.10.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(164,3,'69.166.12.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(165,3,'70.40.0.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(166,3,'70.40.8.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(167,3,'72.0.48.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(168,3,'72.0.48.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(169,3,'72.0.49.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(170,3,'72.0.50.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(171,3,'72.0.51.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(172,3,'72.0.52.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(173,3,'72.0.53.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(174,3,'72.0.54.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(175,3,'72.0.55.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(176,3,'72.0.56.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(177,3,'72.0.57.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(178,3,'72.0.58.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(179,3,'72.0.59.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(180,3,'72.0.60.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(181,3,'72.0.61.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(182,3,'72.0.62.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(183,3,'72.0.63.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(184,3,'72.42.112.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(185,3,'72.42.112.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(186,3,'72.42.113.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(187,3,'72.42.114.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(188,3,'72.42.115.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(189,3,'72.42.116.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(190,3,'72.42.117.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(191,3,'72.42.118.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(192,3,'72.42.119.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(193,3,'72.42.120.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(194,3,'72.42.121.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(195,3,'72.42.122.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(196,3,'72.42.123.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(197,3,'72.42.124.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(198,3,'72.42.125.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(199,3,'72.42.126.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(200,3,'72.42.127.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(201,3,'74.63.16.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(202,3,'74.63.16.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(203,3,'74.63.17.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(204,3,'74.63.18.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(205,3,'74.63.19.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(206,3,'74.63.20.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(207,3,'74.63.21.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(208,3,'74.63.22.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(209,3,'74.63.23.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(210,3,'74.63.24.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(211,3,'74.63.25.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(212,3,'74.63.26.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(213,3,'74.63.27.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(214,3,'74.80.64.0/18',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(215,3,'74.80.64.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(216,3,'74.80.65.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(217,3,'74.80.66.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(218,3,'74.80.67.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(219,3,'74.80.68.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(220,3,'74.80.69.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(221,3,'74.80.70.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(222,3,'74.80.71.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(223,3,'74.80.72.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(224,3,'74.80.73.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(225,3,'74.80.74.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(226,3,'74.80.75.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(227,3,'74.80.76.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(228,3,'74.80.77.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(229,3,'74.80.78.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(230,3,'74.80.79.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(231,3,'74.80.80.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(232,3,'74.80.81.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(233,3,'74.80.82.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(234,3,'74.80.83.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(235,3,'74.80.84.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(236,3,'74.80.85.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(237,3,'74.80.86.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(238,3,'74.80.87.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(239,3,'74.80.88.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(240,3,'74.80.89.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(241,3,'74.80.90.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(242,3,'74.80.91.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(243,3,'74.80.92.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(244,3,'74.80.93.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(245,3,'74.80.94.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(246,3,'74.80.95.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(247,3,'74.80.96.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(248,3,'74.80.97.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(249,3,'74.80.98.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(250,3,'74.80.99.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(251,3,'74.80.100.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(252,3,'74.80.101.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(253,3,'74.80.102.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(254,3,'74.80.103.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(255,3,'74.80.104.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(256,3,'74.80.105.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(257,3,'74.80.106.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(258,3,'74.80.107.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(259,3,'74.80.108.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(260,3,'74.80.109.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(261,3,'74.80.110.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(262,3,'74.80.111.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(263,3,'74.80.112.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(264,3,'74.80.113.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(265,3,'74.80.114.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(266,3,'74.80.115.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(267,3,'74.80.116.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(268,3,'74.80.117.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(269,3,'74.80.118.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(270,3,'74.80.119.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(271,3,'74.80.120.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(272,3,'74.80.121.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(273,3,'74.80.122.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(274,3,'74.80.123.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(275,3,'74.80.124.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(276,3,'74.80.125.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(277,3,'74.80.126.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(278,3,'74.80.126.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(279,3,'74.80.127.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(280,3,'74.118.212.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(281,3,'74.118.213.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(282,3,'74.118.214.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(283,3,'75.127.16.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(284,3,'76.191.16.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(285,3,'89.19.120.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(286,3,'89.19.120.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(287,3,'89.19.124.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(288,3,'89.19.126.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(289,3,'91.201.224.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(290,3,'91.201.224.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(291,3,'91.201.224.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(292,3,'91.201.225.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(293,3,'91.201.226.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(294,3,'91.201.226.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(295,3,'91.201.227.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(296,3,'91.209.1.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(297,3,'91.209.193.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(298,3,'91.222.16.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(299,3,'91.222.40.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(300,3,'91.222.41.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(301,3,'91.222.42.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(302,3,'91.222.43.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(303,3,'91.241.93.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(304,3,'93.95.24.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(305,3,'93.95.24.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(306,3,'93.95.25.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(307,3,'93.95.26.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(308,3,'93.171.128.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(309,3,'95.47.163.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(310,3,'101.251.4.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(311,3,'114.69.222.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(312,3,'128.8.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(313,3,'128.161.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(314,3,'129.2.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(315,3,'130.135.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(316,3,'130.167.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(317,3,'131.161.128.0/18',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(318,3,'131.182.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(319,3,'139.229.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(320,3,'140.169.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(321,3,'146.5.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(322,3,'146.58.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(323,3,'150.144.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(324,3,'156.154.43.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(325,3,'156.154.50.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(326,3,'156.154.59.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(327,3,'156.154.96.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(328,3,'156.154.99.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(329,3,'158.154.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(330,3,'169.222.0.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(331,3,'183.91.132.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(332,3,'192.5.41.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(333,3,'192.12.123.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(334,3,'192.42.70.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(335,3,'192.58.36.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(336,3,'192.67.83.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(337,3,'192.67.107.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(338,3,'192.67.108.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(339,3,'192.68.52.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(340,3,'192.68.148.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(341,3,'192.68.162.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(342,3,'192.70.244.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(343,3,'192.70.249.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(344,3,'192.77.80.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(345,3,'192.84.8.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(346,3,'192.88.124.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(347,3,'192.92.65.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(348,3,'192.92.90.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(349,3,'192.100.9.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(350,3,'192.100.10.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(351,3,'192.100.15.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(352,3,'192.101.148.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(353,3,'192.102.15.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(354,3,'192.102.219.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(355,3,'192.102.233.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(356,3,'192.102.234.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(357,3,'192.112.18.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(358,3,'192.112.223.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(359,3,'192.112.224.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(360,3,'192.124.20.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(361,3,'192.138.101.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(362,3,'192.138.172.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(363,3,'192.149.89.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(364,3,'192.149.104.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(365,3,'192.149.107.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(366,3,'192.149.133.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(367,3,'192.150.32.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(368,3,'192.153.157.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(369,3,'192.188.4.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(370,3,'192.203.230.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(371,3,'192.225.64.0/19',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(372,3,'192.243.0.0/20',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(373,3,'192.243.16.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(374,3,'193.29.206.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(375,3,'193.110.16.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(376,3,'193.110.16.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(377,3,'193.110.18.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(378,3,'193.111.240.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(379,3,'193.178.228.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(380,3,'193.178.228.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(381,3,'193.178.229.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(382,3,'194.0.12.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(383,3,'194.0.13.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(384,3,'194.0.14.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(385,3,'194.0.17.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(386,3,'194.0.27.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(387,3,'194.0.36.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(388,3,'194.0.42.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(389,3,'194.0.47.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(390,3,'194.28.144.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(391,3,'194.117.58.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(392,3,'194.117.60.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(393,3,'194.117.61.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(394,3,'194.117.62.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(395,3,'194.117.63.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(396,3,'194.146.180.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(397,3,'194.146.180.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(398,3,'194.146.180.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(399,3,'194.146.181.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(400,3,'194.146.182.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(401,3,'194.146.182.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(402,3,'194.146.183.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(403,3,'194.146.228.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(404,3,'194.146.228.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(405,3,'194.146.228.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(406,3,'194.146.229.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(407,3,'194.146.230.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(408,3,'194.146.230.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(409,3,'194.146.231.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(410,3,'194.153.148.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(411,3,'195.64.162.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(412,3,'195.64.162.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(413,3,'195.64.163.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(414,3,'195.82.138.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(415,3,'198.9.0.0/16',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(416,3,'198.49.1.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(417,3,'198.116.0.0/14',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(418,3,'198.120.0.0/14',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(419,3,'198.182.28.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(420,3,'198.182.31.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(421,3,'198.182.167.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(422,3,'199.4.137.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(423,3,'199.7.64.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(424,3,'199.7.77.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(425,3,'199.7.83.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(426,3,'199.7.86.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(427,3,'199.7.91.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(428,3,'199.7.94.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(429,3,'199.7.95.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(430,3,'199.43.132.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(431,3,'199.115.156.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(432,3,'199.115.157.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(433,3,'199.120.141.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(434,3,'199.120.142.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(435,3,'199.120.144.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(436,3,'199.182.32.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(437,3,'199.182.40.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(438,3,'199.184.181.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(439,3,'199.184.182.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(440,3,'199.184.184.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(441,3,'199.249.112.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(442,3,'199.249.113.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(443,3,'199.249.114.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(444,3,'199.249.115.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(445,3,'199.249.116.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(446,3,'199.249.117.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(447,3,'199.249.118.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(448,3,'199.249.119.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(449,3,'199.249.120.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(450,3,'199.249.121.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(451,3,'199.249.122.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(452,3,'199.249.123.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(453,3,'199.249.124.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(454,3,'199.249.125.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(455,3,'199.249.126.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(456,3,'199.249.127.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(457,3,'199.254.171.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(458,3,'200.1.121.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(459,3,'200.1.131.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(460,3,'200.7.4.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(461,3,'200.16.98.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(462,3,'202.6.102.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(463,3,'202.7.4.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(464,3,'202.52.0.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(465,3,'202.53.186.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(466,3,'202.53.191.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(467,3,'203.119.88.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(468,3,'204.14.112.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(469,3,'204.19.119.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(470,3,'204.26.57.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(471,3,'204.61.208.0/21',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(472,3,'204.61.208.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(473,3,'204.61.208.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(474,3,'204.61.210.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(475,3,'204.61.210.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(476,3,'204.61.212.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(477,3,'204.61.216.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(478,3,'204.194.22.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(479,3,'204.194.22.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(480,3,'204.194.23.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(481,3,'205.132.46.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(482,3,'205.207.155.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(483,3,'206.51.254.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(484,3,'206.108.113.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(485,3,'206.196.160.0/19',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(486,3,'206.220.228.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(487,3,'206.220.228.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(488,3,'206.220.230.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(489,3,'206.223.122.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(490,3,'207.34.5.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(491,3,'207.34.6.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(492,3,'208.15.19.0/24',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(493,3,'208.49.115.64/27',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(494,3,'208.67.88.0/22',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(495,3,'216.21.2.0/23',4,'2014-01-06 14:42:34','2014-01-06 14:42:34'),(496,3,'2001:500:3::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(497,3,'2001:500:14::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(498,3,'2001:500:15::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(499,3,'2001:500:40::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(500,3,'2001:500:41::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(501,3,'2001:500:42::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(502,3,'2001:500:43::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(503,3,'2001:500:44::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(504,3,'2001:500:45::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(505,3,'2001:500:46::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(506,3,'2001:500:47::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(507,3,'2001:500:48::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(508,3,'2001:500:49::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(509,3,'2001:500:4a::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(510,3,'2001:500:4b::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(511,3,'2001:500:4c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(512,3,'2001:500:4d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(513,3,'2001:500:4e::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(514,3,'2001:500:4f::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(515,3,'2001:500:50::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(516,3,'2001:500:51::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(517,3,'2001:500:52::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(518,3,'2001:500:53::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(519,3,'2001:500:54::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(520,3,'2001:500:55::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(521,3,'2001:500:56::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(522,3,'2001:500:7d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(523,3,'2001:500:83::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(524,3,'2001:500:8c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(525,3,'2001:500:9c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(526,3,'2001:500:9d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(527,3,'2001:500:a4::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(528,3,'2001:500:a5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(529,3,'2001:500:e0::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(530,3,'2001:500:e1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(531,3,'2001:678:3::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(532,3,'2001:678:28::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(533,3,'2001:678:4c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(534,3,'2001:678:60::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(535,3,'2001:678:78::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(536,3,'2001:678:94::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(537,3,'2001:dd8:7::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(538,3,'2001:1398:121::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(539,3,'2404:2c00::/32',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(540,3,'2620:0:870::/45',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(541,3,'2620:0:876::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(542,3,'2620:49::/44',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(543,3,'2620:49::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(544,3,'2620:49:a::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(545,3,'2620:49:b::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(546,3,'2620:95:8000::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(547,3,'2620:171::/40',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(548,3,'2620:171:f0::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(549,3,'2620:171:f1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(550,3,'2620:171:f2::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(551,3,'2620:171:f3::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(552,3,'2620:171:f4::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(553,3,'2620:171:f5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(554,3,'2620:171:f6::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(555,3,'2620:171:f7::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(556,3,'2620:171:f8::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(557,3,'2620:171:f9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(558,3,'2620:171:a00::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(559,3,'2620:171:a01::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(560,3,'2620:171:a02::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(561,3,'2620:171:a03::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(562,3,'2620:171:a04::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(563,3,'2620:171:a05::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(564,3,'2620:171:a06::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(565,3,'2620:171:a07::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(566,3,'2620:171:a08::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(567,3,'2620:171:a09::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(568,3,'2620:171:a0a::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(569,3,'2620:171:a0b::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(570,3,'2620:171:a0c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(571,3,'2620:171:a0d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(572,3,'2620:171:a0e::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(573,3,'2620:171:a0f::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(574,3,'2620:171:ad0::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(575,3,'2620:171:d00::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(576,3,'2620:171:d01::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(577,3,'2620:171:d02::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(578,3,'2620:171:d03::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(579,3,'2620:171:d04::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(580,3,'2620:171:d05::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(581,3,'2620:171:d06::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(582,3,'2620:171:d07::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(583,3,'2620:171:d08::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(584,3,'2620:171:d09::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(585,3,'2620:171:d0a::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(586,3,'2620:171:d0b::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(587,3,'2620:171:d0c::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(588,3,'2620:171:d0d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(589,3,'2620:171:d0e::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(590,3,'2620:171:d0f::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(591,3,'2620:171:dd0::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(592,3,'2a01:8840:4::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(593,3,'2a01:8840:5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(594,3,'2a01:8840:15::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(595,3,'2a01:8840:19::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(596,3,'2a01:8840:1d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(597,3,'2a01:8840:21::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(598,3,'2a01:8840:25::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(599,3,'2a01:8840:29::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(600,3,'2a01:8840:2d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(601,3,'2a01:8840:31::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(602,3,'2a01:8840:35::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(603,3,'2a01:8840:39::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(604,3,'2a01:8840:3d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(605,3,'2a01:8840:41::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(606,3,'2a01:8840:45::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(607,3,'2a01:8840:4d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(608,3,'2a01:8840:51::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(609,3,'2a01:8840:55::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(610,3,'2a01:8840:59::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(611,3,'2a01:8840:5d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(612,3,'2a01:8840:61::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(613,3,'2a01:8840:65::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(614,3,'2a01:8840:69::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(615,3,'2a01:8840:6d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(616,3,'2a01:8840:71::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(617,3,'2a01:8840:75::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(618,3,'2a01:8840:79::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(619,3,'2a01:8840:7d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(620,3,'2a01:8840:81::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(621,3,'2a01:8840:85::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(622,3,'2a01:8840:89::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(623,3,'2a01:8840:8d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(624,3,'2a01:8840:91::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(625,3,'2a01:8840:95::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(626,3,'2a01:8840:99::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(627,3,'2a01:8840:9d::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(628,3,'2a01:8840:a1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(629,3,'2a01:8840:a5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(630,3,'2a01:8840:a9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(631,3,'2a01:8840:ad::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(632,3,'2a01:8840:b1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(633,3,'2a01:8840:b5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(634,3,'2a01:8840:b9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(635,3,'2a01:8840:bd::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(636,3,'2a01:8840:c1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(637,3,'2a01:8840:c5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(638,3,'2a01:8840:c9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(639,3,'2a01:8840:cd::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(640,3,'2a01:8840:d1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(641,3,'2a01:8840:d5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(642,3,'2a01:8840:d9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(643,3,'2a01:8840:dd::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(644,3,'2a01:8840:e1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(645,3,'2a01:8840:e5::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(646,3,'2a01:8840:e9::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(647,3,'2a01:8840:ed::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'),(648,3,'2a01:8840:f1::/48',6,'2014-01-06 14:42:36','2014-01-06 14:42:36'); -/*!40000 ALTER TABLE `irrdb_prefix` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `irrdbconfig` --- - -DROP TABLE IF EXISTS `irrdbconfig`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `irrdbconfig` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `host` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `protocol` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `source` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `irrdbconfig` --- - -LOCK TABLES `irrdbconfig` WRITE; -/*!40000 ALTER TABLE `irrdbconfig` DISABLE KEYS */; -INSERT INTO `irrdbconfig` VALUES (1,'whois.ripe.net','ripe','RIPE','RIPE Query from RIPE Database'),(2,'whois.radb.net','irrd','RADB','RADB Query from RADB Database'),(3,'whois.lacnic.net','ripe','LACNIC','LACNIC Query from LACNIC Database'),(4,'whois.afrinic.net','ripe','AFRINIC','AFRINIC Query from AFRINIC Database'),(5,'whois.apnic.net','ripe','APNIC','APNIC Query from APNIC Database'),(6,'rr.level3.net','ripe','LEVEL3','Level3 Query from Level3 Database'),(7,'whois.radb.net','irrd','ARIN','ARIN Query from RADB Database'),(8,'whois.radb.net','irrd','RADB,ARIN','RADB+ARIN Query from RADB Database'),(9,'whois.radb.net','irrd','ALTDB','ALTDB Query from RADB Database'),(10,'whois.radb.net','irrd','RADB,RIPE','RADB+RIPE Query from RADB Database'),(11,'whois.radb.net','irrd','RADB,APNIC,ARIN','RADB+APNIC+ARIN Query from RADB Database'),(12,'whois.radb.net','irrd','RIPE,ARIN','RIPE+ARIN Query from RADB Database'),(13,'whois.radb.net','irrd','RADB,RIPE,APNIC,ARIN',''); -/*!40000 ALTER TABLE `irrdbconfig` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `ixp` --- - -DROP TABLE IF EXISTS `ixp`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `ixp` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address3` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address4` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `country` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_FA4AB7F64082763` (`shortname`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `ixp` --- - -LOCK TABLES `ixp` WRITE; -/*!40000 ALTER TABLE `ixp` DISABLE KEYS */; -INSERT INTO `ixp` VALUES (1,'VAGRANT IXP','vagrant','5 Somewhere','Somebourogh','Dublin','D4','IE'); -/*!40000 ALTER TABLE `ixp` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `l2address` --- - -DROP TABLE IF EXISTS `l2address`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `l2address` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlan_interface_id` int(11) NOT NULL, - `mac` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - `firstseen` datetime DEFAULT NULL, - `lastseen` datetime DEFAULT NULL, - `created` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `mac_vlanint` (`mac`,`vlan_interface_id`), - KEY `IDX_B9482E1D6AB5F82` (`vlan_interface_id`), - CONSTRAINT `FK_B9482E1D6AB5F82` FOREIGN KEY (`vlan_interface_id`) REFERENCES `vlaninterface` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `l2address` --- - -LOCK TABLES `l2address` WRITE; -/*!40000 ALTER TABLE `l2address` DISABLE KEYS */; -/*!40000 ALTER TABLE `l2address` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `location` --- - -DROP TABLE IF EXISTS `location`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `location` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocphone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocfax` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nocemail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `officephone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `officefax` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `officeemail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `pdb_facility_id` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_5E9E89CB64082763` (`shortname`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `location` --- - -LOCK TABLES `location` WRITE; -/*!40000 ALTER TABLE `location` DISABLE KEYS */; -INSERT INTO `location` VALUES (1,'Location 1','l1',NULL,'','','','','','','','',NULL); -/*!40000 ALTER TABLE `location` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `logos` --- - -DROP TABLE IF EXISTS `logos`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `logos` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) DEFAULT NULL, - `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `original_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `stored_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `uploaded_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `uploaded_at` datetime NOT NULL, - `width` int(11) NOT NULL, - `height` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_9F54004F9395C3F3` (`customer_id`), - CONSTRAINT `FK_9F54004F9395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `logos` --- - -LOCK TABLES `logos` WRITE; -/*!40000 ALTER TABLE `logos` DISABLE KEYS */; -/*!40000 ALTER TABLE `logos` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `macaddress` --- - -DROP TABLE IF EXISTS `macaddress`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `macaddress` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `virtualinterfaceid` int(11) DEFAULT NULL, - `firstseen` datetime DEFAULT NULL, - `lastseen` datetime DEFAULT NULL, - `mac` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_42CD65F6BFDF15D5` (`virtualinterfaceid`), - CONSTRAINT `FK_42CD65F6BFDF15D5` FOREIGN KEY (`virtualinterfaceid`) REFERENCES `virtualinterface` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `macaddress` --- - -LOCK TABLES `macaddress` WRITE; -/*!40000 ALTER TABLE `macaddress` DISABLE KEYS */; -/*!40000 ALTER TABLE `macaddress` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `migrations` --- - -DROP TABLE IF EXISTS `migrations`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `migrations` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `batch` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `migrations` --- - -LOCK TABLES `migrations` WRITE; -/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; -INSERT INTO `migrations` VALUES (1,'2014_10_12_100000_create_password_resets_table',1),(2,'2018_08_08_100000_create_telescope_entries_table',1),(3,'2019_03_25_211956_create_failed_jobs_table',1); -/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `netinfo` --- - -DROP TABLE IF EXISTS `netinfo`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `netinfo` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlan_id` int(11) NOT NULL, - `protocol` int(11) NOT NULL, - `property` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `ix` int(11) NOT NULL DEFAULT '0', - `value` longtext COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_F843DE6B8B4937A1` (`vlan_id`), - KEY `VlanProtoProp` (`protocol`,`property`,`vlan_id`), - CONSTRAINT `FK_F843DE6B8B4937A1` FOREIGN KEY (`vlan_id`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `netinfo` --- - -LOCK TABLES `netinfo` WRITE; -/*!40000 ALTER TABLE `netinfo` DISABLE KEYS */; -/*!40000 ALTER TABLE `netinfo` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `networkinfo` --- - -DROP TABLE IF EXISTS `networkinfo`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `networkinfo` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlanid` int(11) DEFAULT NULL, - `protocol` int(11) DEFAULT NULL, - `network` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `masklen` int(11) DEFAULT NULL, - `rs1address` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `rs2address` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `dnsfile` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_6A0AF167F48D6D0` (`vlanid`), - CONSTRAINT `FK_6A0AF167F48D6D0` FOREIGN KEY (`vlanid`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `networkinfo` --- - -LOCK TABLES `networkinfo` WRITE; -/*!40000 ALTER TABLE `networkinfo` DISABLE KEYS */; -/*!40000 ALTER TABLE `networkinfo` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `oui` --- - -DROP TABLE IF EXISTS `oui`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `oui` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `oui` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `organisation` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_DAEC0140DAEC0140` (`oui`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `oui` --- - -LOCK TABLES `oui` WRITE; -/*!40000 ALTER TABLE `oui` DISABLE KEYS */; -/*!40000 ALTER TABLE `oui` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `password_resets` --- - -DROP TABLE IF EXISTS `password_resets`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `password_resets` ( - `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - KEY `password_resets_email_index` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `password_resets` --- - -LOCK TABLES `password_resets` WRITE; -/*!40000 ALTER TABLE `password_resets` DISABLE KEYS */; -/*!40000 ALTER TABLE `password_resets` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `patch_panel` --- - -DROP TABLE IF EXISTS `patch_panel`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `patch_panel` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `cabinet_id` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `colo_reference` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `cable_type` int(11) NOT NULL, - `connector_type` int(11) NOT NULL, - `installation_date` datetime DEFAULT NULL, - `port_prefix` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `chargeable` int(11) NOT NULL DEFAULT '0', - `location_notes` longtext COLLATE utf8_unicode_ci NOT NULL, - `active` tinyint(1) NOT NULL DEFAULT '1', - `u_position` int(11) DEFAULT NULL, - `mounted_at` smallint(6) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_79A52562D351EC` (`cabinet_id`), - CONSTRAINT `FK_79A52562D351EC` FOREIGN KEY (`cabinet_id`) REFERENCES `cabinet` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `patch_panel` --- - -LOCK TABLES `patch_panel` WRITE; -/*!40000 ALTER TABLE `patch_panel` DISABLE KEYS */; -/*!40000 ALTER TABLE `patch_panel` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `patch_panel_port` --- - -DROP TABLE IF EXISTS `patch_panel_port`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `patch_panel_port` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `switch_port_id` int(11) DEFAULT NULL, - `patch_panel_id` int(11) DEFAULT NULL, - `customer_id` int(11) DEFAULT NULL, - `duplex_master_id` int(11) DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` smallint(6) NOT NULL, - `state` int(11) NOT NULL, - `colo_circuit_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `ticket_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `private_notes` longtext COLLATE utf8_unicode_ci, - `assigned_at` date DEFAULT NULL, - `connected_at` date DEFAULT NULL, - `cease_requested_at` date DEFAULT NULL, - `ceased_at` date DEFAULT NULL, - `last_state_change` date DEFAULT NULL, - `internal_use` tinyint(1) NOT NULL DEFAULT '0', - `chargeable` int(11) NOT NULL DEFAULT '0', - `owned_by` int(11) NOT NULL DEFAULT '0', - `loa_code` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `colo_billing_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_4BE40BC2C1DA6A2A` (`switch_port_id`), - KEY `IDX_4BE40BC2635D5D87` (`patch_panel_id`), - KEY `IDX_4BE40BC29395C3F3` (`customer_id`), - KEY `IDX_4BE40BC23838446` (`duplex_master_id`), - CONSTRAINT `FK_4BE40BC23838446` FOREIGN KEY (`duplex_master_id`) REFERENCES `patch_panel_port` (`id`), - CONSTRAINT `FK_4BE40BC2635D5D87` FOREIGN KEY (`patch_panel_id`) REFERENCES `patch_panel` (`id`), - CONSTRAINT `FK_4BE40BC29395C3F3` FOREIGN KEY (`customer_id`) REFERENCES `cust` (`id`), - CONSTRAINT `FK_4BE40BC2C1DA6A2A` FOREIGN KEY (`switch_port_id`) REFERENCES `switchport` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `patch_panel_port` --- - -LOCK TABLES `patch_panel_port` WRITE; -/*!40000 ALTER TABLE `patch_panel_port` DISABLE KEYS */; -/*!40000 ALTER TABLE `patch_panel_port` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `patch_panel_port_file` --- - -DROP TABLE IF EXISTS `patch_panel_port_file`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `patch_panel_port_file` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `patch_panel_port_id` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `uploaded_at` datetime NOT NULL, - `uploaded_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `size` int(11) NOT NULL, - `is_private` tinyint(1) NOT NULL DEFAULT '0', - `storage_location` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_28089403B0F978FF` (`patch_panel_port_id`), - CONSTRAINT `FK_28089403B0F978FF` FOREIGN KEY (`patch_panel_port_id`) REFERENCES `patch_panel_port` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `patch_panel_port_file` --- - -LOCK TABLES `patch_panel_port_file` WRITE; -/*!40000 ALTER TABLE `patch_panel_port_file` DISABLE KEYS */; -/*!40000 ALTER TABLE `patch_panel_port_file` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `patch_panel_port_history` --- - -DROP TABLE IF EXISTS `patch_panel_port_history`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `patch_panel_port_history` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `patch_panel_port_id` int(11) DEFAULT NULL, - `duplex_master_id` int(11) DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` smallint(6) NOT NULL, - `state` int(11) NOT NULL, - `colo_circuit_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `ticket_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `private_notes` longtext COLLATE utf8_unicode_ci, - `assigned_at` date DEFAULT NULL, - `connected_at` date DEFAULT NULL, - `cease_requested_at` date DEFAULT NULL, - `ceased_at` date DEFAULT NULL, - `internal_use` tinyint(1) NOT NULL DEFAULT '0', - `chargeable` int(11) NOT NULL DEFAULT '0', - `owned_by` int(11) NOT NULL DEFAULT '0', - `customer` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `switchport` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `colo_billing_ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_CB80B54AB0F978FF` (`patch_panel_port_id`), - KEY `IDX_CB80B54A3838446` (`duplex_master_id`), - CONSTRAINT `FK_CB80B54A3838446` FOREIGN KEY (`duplex_master_id`) REFERENCES `patch_panel_port_history` (`id`), - CONSTRAINT `FK_CB80B54AB0F978FF` FOREIGN KEY (`patch_panel_port_id`) REFERENCES `patch_panel_port` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `patch_panel_port_history` --- - -LOCK TABLES `patch_panel_port_history` WRITE; -/*!40000 ALTER TABLE `patch_panel_port_history` DISABLE KEYS */; -/*!40000 ALTER TABLE `patch_panel_port_history` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `patch_panel_port_history_file` --- - -DROP TABLE IF EXISTS `patch_panel_port_history_file`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `patch_panel_port_history_file` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `patch_panel_port_history_id` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `uploaded_at` datetime NOT NULL, - `uploaded_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `size` int(11) NOT NULL, - `is_private` tinyint(1) NOT NULL DEFAULT '0', - `storage_location` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_206EAD4E6F461430` (`patch_panel_port_history_id`), - CONSTRAINT `FK_206EAD4E6F461430` FOREIGN KEY (`patch_panel_port_history_id`) REFERENCES `patch_panel_port_history` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `patch_panel_port_history_file` --- - -LOCK TABLES `patch_panel_port_history_file` WRITE; -/*!40000 ALTER TABLE `patch_panel_port_history_file` DISABLE KEYS */; -/*!40000 ALTER TABLE `patch_panel_port_history_file` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `peering_manager` --- - -DROP TABLE IF EXISTS `peering_manager`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `peering_manager` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `peerid` int(11) DEFAULT NULL, - `email_last_sent` datetime DEFAULT NULL, - `emails_sent` int(11) DEFAULT NULL, - `peered` tinyint(1) DEFAULT NULL, - `rejected` tinyint(1) DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `created` datetime DEFAULT NULL, - `updated` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_35A72597DA0209B9` (`custid`), - KEY `IDX_35A725974E5F9AFF` (`peerid`), - CONSTRAINT `FK_35A725974E5F9AFF` FOREIGN KEY (`peerid`) REFERENCES `cust` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_35A72597DA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `peering_manager` --- - -LOCK TABLES `peering_manager` WRITE; -/*!40000 ALTER TABLE `peering_manager` DISABLE KEYS */; -/*!40000 ALTER TABLE `peering_manager` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `peering_matrix` --- - -DROP TABLE IF EXISTS `peering_matrix`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `peering_matrix` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `x_custid` int(11) DEFAULT NULL, - `y_custid` int(11) DEFAULT NULL, - `vlan` int(11) DEFAULT NULL, - `x_as` int(11) DEFAULT NULL, - `y_as` int(11) DEFAULT NULL, - `peering_status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `updated` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_C1A6F6F9A4CA6408` (`x_custid`), - KEY `IDX_C1A6F6F968606496` (`y_custid`), - CONSTRAINT `FK_C1A6F6F968606496` FOREIGN KEY (`y_custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_C1A6F6F9A4CA6408` FOREIGN KEY (`x_custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `peering_matrix` --- - -LOCK TABLES `peering_matrix` WRITE; -/*!40000 ALTER TABLE `peering_matrix` DISABLE KEYS */; -/*!40000 ALTER TABLE `peering_matrix` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `physicalinterface` --- - -DROP TABLE IF EXISTS `physicalinterface`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `physicalinterface` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `switchportid` int(11) DEFAULT NULL, - `fanout_physical_interface_id` int(11) DEFAULT NULL, - `virtualinterfaceid` int(11) DEFAULT NULL, - `status` int(11) DEFAULT NULL, - `speed` int(11) DEFAULT NULL, - `duplex` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `autoneg` tinyint(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_5FFF4D60E5F6FACB` (`switchportid`), - UNIQUE KEY `UNIQ_5FFF4D602E68AB8C` (`fanout_physical_interface_id`), - KEY `IDX_5FFF4D60BFDF15D5` (`virtualinterfaceid`), - CONSTRAINT `FK_5FFF4D602E68AB8C` FOREIGN KEY (`fanout_physical_interface_id`) REFERENCES `physicalinterface` (`id`), - CONSTRAINT `FK_5FFF4D60BFDF15D5` FOREIGN KEY (`virtualinterfaceid`) REFERENCES `virtualinterface` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_5FFF4D60E5F6FACB` FOREIGN KEY (`switchportid`) REFERENCES `switchport` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `physicalinterface` --- - -LOCK TABLES `physicalinterface` WRITE; -/*!40000 ALTER TABLE `physicalinterface` DISABLE KEYS */; -INSERT INTO `physicalinterface` VALUES (1,3,NULL,1,1,1000,'full','',1),(2,4,NULL,1,1,1000,'full','',1),(3,25,NULL,2,1,1000,'full',NULL,1),(4,8,NULL,3,1,100,'full',NULL,1),(5,6,NULL,4,1,10,'full',NULL,1),(6,30,NULL,5,1,10,'full',NULL,1),(7,9,NULL,6,1,1000,'full',NULL,1),(8,32,NULL,7,1,10000,'full',NULL,1); -/*!40000 ALTER TABLE `physicalinterface` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `routers` --- - -DROP TABLE IF EXISTS `routers`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `routers` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `vlan_id` int(11) NOT NULL, - `handle` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `protocol` smallint(5) unsigned NOT NULL, - `type` smallint(5) unsigned NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `router_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `peering_ip` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `asn` int(10) unsigned NOT NULL, - `software` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `mgmt_host` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `api` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `api_type` smallint(5) unsigned NOT NULL, - `lg_access` smallint(5) unsigned DEFAULT NULL, - `quarantine` tinyint(1) NOT NULL, - `bgp_lc` tinyint(1) NOT NULL, - `template` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `skip_md5` tinyint(1) NOT NULL, - `last_updated` datetime DEFAULT NULL, - `rpki` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_504FC9BE918020D9` (`handle`), - KEY `IDX_504FC9BE8B4937A1` (`vlan_id`), - CONSTRAINT `FK_504FC9BE8B4937A1` FOREIGN KEY (`vlan_id`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `routers` --- - -LOCK TABLES `routers` WRITE; -/*!40000 ALTER TABLE `routers` DISABLE KEYS */; -/*!40000 ALTER TABLE `routers` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `rs_prefixes` --- - -DROP TABLE IF EXISTS `rs_prefixes`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `rs_prefixes` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `timestamp` datetime DEFAULT NULL, - `prefix` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `protocol` int(11) DEFAULT NULL, - `irrdb` int(11) DEFAULT NULL, - `rs_origin` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_29FA9871DA0209B9` (`custid`), - CONSTRAINT `FK_29FA9871DA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `rs_prefixes` --- - -LOCK TABLES `rs_prefixes` WRITE; -/*!40000 ALTER TABLE `rs_prefixes` DISABLE KEYS */; -/*!40000 ALTER TABLE `rs_prefixes` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `sflow_receiver` --- - -DROP TABLE IF EXISTS `sflow_receiver`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `sflow_receiver` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `virtual_interface_id` int(11) DEFAULT NULL, - `dst_ip` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `dst_port` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `IDX_E633EA142C0D6F5F` (`virtual_interface_id`), - CONSTRAINT `FK_E633EA142C0D6F5F` FOREIGN KEY (`virtual_interface_id`) REFERENCES `virtualinterface` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `sflow_receiver` --- - -LOCK TABLES `sflow_receiver` WRITE; -/*!40000 ALTER TABLE `sflow_receiver` DISABLE KEYS */; -/*!40000 ALTER TABLE `sflow_receiver` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `switch` --- - -DROP TABLE IF EXISTS `switch`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `switch` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `infrastructure` int(11) DEFAULT NULL, - `cabinetid` int(11) DEFAULT NULL, - `vendorid` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `hostname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv4addr` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv6addr` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `snmppasswd` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `model` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `active` tinyint(1) DEFAULT '1', - `os` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `osDate` datetime DEFAULT NULL, - `osVersion` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastPolled` datetime DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `serialNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mauSupported` tinyint(1) DEFAULT NULL, - `asn` int(10) unsigned DEFAULT NULL, - `loopback_ip` varchar(39) COLLATE utf8_unicode_ci DEFAULT NULL, - `loopback_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mgmt_mac_address` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_6FE94B185E237E06` (`name`), - UNIQUE KEY `UNIQ_6FE94B1850C101F8` (`loopback_ip`), - KEY `IDX_6FE94B18D129B190` (`infrastructure`), - KEY `IDX_6FE94B182B96718A` (`cabinetid`), - KEY `IDX_6FE94B18420FB55F` (`vendorid`), - CONSTRAINT `FK_6FE94B182B96718A` FOREIGN KEY (`cabinetid`) REFERENCES `cabinet` (`id`), - CONSTRAINT `FK_6FE94B18420FB55F` FOREIGN KEY (`vendorid`) REFERENCES `vendor` (`id`), - CONSTRAINT `FK_6FE94B18D129B190` FOREIGN KEY (`infrastructure`) REFERENCES `infrastructure` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `switch` --- - -LOCK TABLES `switch` WRITE; -/*!40000 ALTER TABLE `switch` DISABLE KEYS */; -INSERT INTO `switch` VALUES (1,1,1,12,'Switch 1','s1','10.0.0.1','','public','FESX624',1,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL),(2,2,1,12,'Switch 2','s2','10.0.0.2','','public','FESX624',1,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL); -/*!40000 ALTER TABLE `switch` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `switchport` --- - -DROP TABLE IF EXISTS `switchport`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `switchport` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `switchid` int(11) DEFAULT NULL, - `type` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `active` tinyint(1) NOT NULL DEFAULT '1', - `ifIndex` int(11) DEFAULT NULL, - `ifName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ifAlias` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ifHighSpeed` int(11) DEFAULT NULL, - `ifMtu` int(11) DEFAULT NULL, - `ifPhysAddress` varchar(17) COLLATE utf8_unicode_ci DEFAULT NULL, - `ifAdminStatus` int(11) DEFAULT NULL, - `ifOperStatus` int(11) DEFAULT NULL, - `ifLastChange` int(11) DEFAULT NULL, - `lastSnmpPoll` datetime DEFAULT NULL, - `lagIfIndex` int(11) DEFAULT NULL, - `mauType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mauState` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mauAvailability` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mauJacktype` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mauAutoNegSupported` tinyint(1) DEFAULT NULL, - `mauAutoNegAdminState` tinyint(1) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_F84274F1DC2C08F8` (`switchid`), - CONSTRAINT `FK_F84274F1DC2C08F8` FOREIGN KEY (`switchid`) REFERENCES `switch` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `switchport` --- - -LOCK TABLES `switchport` WRITE; -/*!40000 ALTER TABLE `switchport` DISABLE KEYS */; -INSERT INTO `switchport` VALUES (1,1,1,'GigabitEthernet1',1,1,'GigabitEthernet1','GigabitEthernet1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,1,1,'GigabitEthernet2',1,2,'GigabitEthernet2','GigabitEthernet2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,1,1,'GigabitEthernet3',1,3,'GigabitEthernet3','GigabitEthernet3',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,1,1,'GigabitEthernet4',1,4,'GigabitEthernet4','GigabitEthernet4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,1,1,'GigabitEthernet5',1,5,'GigabitEthernet5','GigabitEthernet5',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,1,1,'GigabitEthernet6',1,6,'GigabitEthernet6','GigabitEthernet6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(7,1,1,'GigabitEthernet7',1,7,'GigabitEthernet7','GigabitEthernet7',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(8,1,1,'GigabitEthernet8',1,8,'GigabitEthernet8','GigabitEthernet8',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(9,1,1,'GigabitEthernet9',1,9,'GigabitEthernet9','GigabitEthernet9',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(10,1,1,'GigabitEthernet10',1,10,'GigabitEthernet10','GigabitEthernet10',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(11,1,1,'GigabitEthernet11',1,11,'GigabitEthernet11','GigabitEthernet11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,1,1,'GigabitEthernet12',1,12,'GigabitEthernet12','GigabitEthernet12',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,1,1,'GigabitEthernet13',1,13,'GigabitEthernet13','GigabitEthernet13',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,1,1,'GigabitEthernet14',1,14,'GigabitEthernet14','GigabitEthernet14',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(15,1,1,'GigabitEthernet15',1,15,'GigabitEthernet15','GigabitEthernet15',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,1,1,'GigabitEthernet16',1,16,'GigabitEthernet16','GigabitEthernet16',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,1,1,'GigabitEthernet17',1,17,'GigabitEthernet17','GigabitEthernet17',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,1,1,'GigabitEthernet18',1,18,'GigabitEthernet18','GigabitEthernet18',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,1,1,'GigabitEthernet19',1,19,'GigabitEthernet19','GigabitEthernet19',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(20,1,1,'GigabitEthernet20',1,20,'GigabitEthernet20','GigabitEthernet20',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(21,1,1,'GigabitEthernet21',1,21,'GigabitEthernet21','GigabitEthernet21',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(22,1,1,'GigabitEthernet22',1,22,'GigabitEthernet22','GigabitEthernet22',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(23,1,1,'GigabitEthernet23',1,23,'GigabitEthernet23','GigabitEthernet23',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(24,1,1,'GigabitEthernet24',1,24,'GigabitEthernet24','GigabitEthernet24',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(25,2,1,'GigabitEthernet1',1,25,'GigabitEthernet1','GigabitEthernet1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(26,2,1,'GigabitEthernet2',1,26,'GigabitEthernet2','GigabitEthernet2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(27,2,1,'GigabitEthernet3',1,27,'GigabitEthernet3','GigabitEthernet3',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(28,2,1,'GigabitEthernet4',1,28,'GigabitEthernet4','GigabitEthernet4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(29,2,1,'GigabitEthernet5',1,29,'GigabitEthernet5','GigabitEthernet5',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(30,2,1,'GigabitEthernet6',1,30,'GigabitEthernet6','GigabitEthernet6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(31,2,1,'GigabitEthernet7',1,31,'GigabitEthernet7','GigabitEthernet7',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(32,2,1,'GigabitEthernet8',1,32,'GigabitEthernet8','GigabitEthernet8',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(33,2,1,'GigabitEthernet9',1,33,'GigabitEthernet9','GigabitEthernet9',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(34,2,1,'GigabitEthernet10',1,34,'GigabitEthernet10','GigabitEthernet10',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(35,2,1,'GigabitEthernet11',1,35,'GigabitEthernet11','GigabitEthernet11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(36,2,1,'GigabitEthernet12',1,36,'GigabitEthernet12','GigabitEthernet12',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(37,2,1,'GigabitEthernet13',1,37,'GigabitEthernet13','GigabitEthernet13',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(38,2,1,'GigabitEthernet14',1,38,'GigabitEthernet14','GigabitEthernet14',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(39,2,1,'GigabitEthernet15',1,39,'GigabitEthernet15','GigabitEthernet15',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(40,2,1,'GigabitEthernet16',1,40,'GigabitEthernet16','GigabitEthernet16',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(41,2,1,'GigabitEthernet17',1,41,'GigabitEthernet17','GigabitEthernet17',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(42,2,1,'GigabitEthernet18',1,42,'GigabitEthernet18','GigabitEthernet18',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(43,2,1,'GigabitEthernet19',1,43,'GigabitEthernet19','GigabitEthernet19',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(44,2,1,'GigabitEthernet20',1,44,'GigabitEthernet20','GigabitEthernet20',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(45,2,1,'GigabitEthernet21',1,45,'GigabitEthernet21','GigabitEthernet21',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(46,2,1,'GigabitEthernet22',1,46,'GigabitEthernet22','GigabitEthernet22',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(47,2,1,'GigabitEthernet23',1,47,'GigabitEthernet23','GigabitEthernet23',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(48,2,1,'GigabitEthernet24',1,48,'GigabitEthernet24','GigabitEthernet24',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -/*!40000 ALTER TABLE `switchport` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `telescope_entries` --- - -DROP TABLE IF EXISTS `telescope_entries`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `telescope_entries` ( - `sequence` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `uuid` char(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `batch_id` char(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `family_hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `should_display_on_index` tinyint(1) NOT NULL DEFAULT '1', - `type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - `content` longtext COLLATE utf8mb4_unicode_ci NOT NULL, - `created_at` datetime DEFAULT NULL, - PRIMARY KEY (`sequence`), - UNIQUE KEY `telescope_entries_uuid_unique` (`uuid`), - KEY `telescope_entries_batch_id_index` (`batch_id`), - KEY `telescope_entries_type_should_display_on_index_index` (`type`,`should_display_on_index`), - KEY `telescope_entries_family_hash_index` (`family_hash`) -) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `telescope_entries` --- - -LOCK TABLES `telescope_entries` WRITE; -/*!40000 ALTER TABLE `telescope_entries` DISABLE KEYS */; -INSERT INTO `telescope_entries` VALUES (1,'8da95c94-85e6-40d2-95e2-b2d12a7637c3','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[\"ixp\",\"migrations\"],\"sql\":\"select * from information_schema.tables where table_schema = ? and table_name = ?\",\"time\":\"2.38\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(2,'8da95c94-9a7a-4338-800d-48214ec105d1','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"17.53\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(3,'8da95c94-9ba8-4e78-896d-002ac01f7f6c','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"select `migration` from `migrations` order by `batch` asc, `migration` asc\",\"time\":\"0.74\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(4,'8da95c94-9d6b-48e5-abb7-2981d857f30d','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"select max(`batch`) as aggregate from `migrations`\",\"time\":\"0.56\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(5,'8da95c94-a37b-455b-a47f-c15517b065d0','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `password_resets` (`email` varchar(255) not null, `token` varchar(255) not null, `created_at` timestamp null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"12.33\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/database\\/migrations\\/2014_10_12_100000_create_password_resets_table.php\",\"line\":40,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(6,'8da95c94-a8a9-4b07-a1a6-d75c2144d2b1','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `password_resets` add index `password_resets_email_index`(`email`)\",\"time\":\"12.14\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/database\\/migrations\\/2014_10_12_100000_create_password_resets_table.php\",\"line\":40,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(7,'8da95c94-a972-46d1-8e7e-a497b7779152','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[\"2014_10_12_100000_create_password_resets_table\",1],\"sql\":\"insert into `migrations` (`migration`, `batch`) values (?, ?)\",\"time\":\"0.58\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(8,'8da95c94-af51-4a1b-9600-00517b316bf8','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `telescope_entries` (`sequence` bigint unsigned not null auto_increment primary key, `uuid` char(36) not null, `batch_id` char(36) not null, `family_hash` varchar(255) null, `should_display_on_index` tinyint(1) not null default \'1\', `type` varchar(20) not null, `content` longtext not null, `created_at` datetime null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"11.06\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(9,'8da95c94-b815-44a3-8482-1e69661555ec','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries` add unique `telescope_entries_uuid_unique`(`uuid`)\",\"time\":\"21.25\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(10,'8da95c94-c20c-4086-b4e6-d313279c0c4b','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries` add index `telescope_entries_batch_id_index`(`batch_id`)\",\"time\":\"24.40\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(11,'8da95c94-c6e5-46e7-a1af-1bf933ea50c4','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries` add index `telescope_entries_type_should_display_on_index_index`(`type`, `should_display_on_index`)\",\"time\":\"11.14\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(12,'8da95c94-cc4f-4259-9af3-6cc6b4784723','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries` add index `telescope_entries_family_hash_index`(`family_hash`)\",\"time\":\"12.57\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(13,'8da95c94-d4af-4cf8-b596-c19296c1f3fc','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `telescope_entries_tags` (`entry_uuid` char(36) not null, `tag` varchar(255) not null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"18.83\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(14,'8da95c94-d980-4011-8695-f628a9c98fbf','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries_tags` add index `telescope_entries_tags_entry_uuid_tag_index`(`entry_uuid`, `tag`)\",\"time\":\"11.20\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(15,'8da95c94-de02-4d1c-8dea-29c53ebdb526','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries_tags` add index `telescope_entries_tags_tag_index`(`tag`)\",\"time\":\"10.38\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(16,'8da95c94-e52d-4853-b938-63d237ba3551','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"alter table `telescope_entries_tags` add constraint `telescope_entries_tags_entry_uuid_foreign` foreign key (`entry_uuid`) references `telescope_entries` (`uuid`) on delete cascade\",\"time\":\"17.24\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(17,'8da95c94-e9da-4281-a400-52a53df36cb4','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `telescope_monitoring` (`tag` varchar(255) not null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"10.50\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(18,'8da95c94-ea8f-4f69-9f61-bb752895e2f6','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[\"2018_08_08_100000_create_telescope_entries_table\",1],\"sql\":\"insert into `migrations` (`migration`, `batch`) values (?, ?)\",\"time\":\"0.55\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(19,'8da95c94-efac-481f-9579-19fe72388a50','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"create table `failed_jobs` (`id` bigint unsigned not null auto_increment primary key, `connection` text not null, `queue` text not null, `payload` longtext not null, `exception` longtext not null, `failed_at` timestamp default CURRENT_TIMESTAMP not null) default character set utf8mb4 collate \'utf8mb4_unicode_ci\'\",\"time\":\"10.67\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/database\\/migrations\\/2019_03_25_211956_create_failed_jobs_table.php\",\"line\":23,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(20,'8da95c94-f05a-4ec9-9b74-37b97fc80ec3','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[\"2019_03_25_211956_create_failed_jobs_table\",1],\"sql\":\"insert into `migrations` (`migration`, `batch`) values (?, ?)\",\"time\":\"0.55\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/artisan\",\"line\":37,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(21,'8da95c94-f0c6-4ad5-a016-723a20882c90','8da95c94-f112-426f-9707-56c5859260d0',NULL,1,'command','{\"command\":\"migrate\",\"exit_code\":0,\"arguments\":{\"command\":\"migrate\"},\"options\":{\"database\":null,\"force\":false,\"path\":null,\"realpath\":false,\"pretend\":false,\"seed\":false,\"step\":false,\"help\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":false,\"no-ansi\":false,\"no-interaction\":false,\"env\":null},\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:02'),(22,'8da95c9c-6567-4f6e-abe5-d7bc3a1bf65e','8da95c9c-6f55-4bf6-a430-aa4bf8e82dec',NULL,1,'command','{\"command\":\"list\",\"exit_code\":0,\"arguments\":{\"command\":\"list\",\"namespace\":null},\"options\":{\"raw\":false,\"format\":\"txt\",\"help\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":false,\"no-ansi\":false,\"no-interaction\":false,\"env\":null},\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:07'),(23,'8da95cab-8fd2-44d2-b53b-cf778555f5b6','8da95cab-c4d7-4ee6-bfad-0aef24f90e13',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"delete from `customer_to_users`\",\"time\":\"6.50\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/app\\/Console\\/Commands\\/Upgrade\\/Customer2Users.php\",\"line\":87,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:17'),(24,'8da95cab-c06c-4157-9837-9306a89d4ffe','8da95cab-c4d7-4ee6-bfad-0aef24f90e13',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[1,1],\"sql\":\"update `user_logins` set `customer_to_user_id` = ? where `user_id` = ?\",\"time\":\"0.76\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/app\\/Console\\/Commands\\/Upgrade\\/Customer2Users.php\",\"line\":114,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:17'),(25,'8da95cab-c245-4a95-b997-af0077fed669','8da95cab-c4d7-4ee6-bfad-0aef24f90e13',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[2,2],\"sql\":\"update `user_logins` set `customer_to_user_id` = ? where `user_id` = ?\",\"time\":\"0.29\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/app\\/Console\\/Commands\\/Upgrade\\/Customer2Users.php\",\"line\":114,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:17'),(26,'8da95cab-c430-45bc-b1e2-85088f948c40','8da95cab-c4d7-4ee6-bfad-0aef24f90e13',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[3,3],\"sql\":\"update `user_logins` set `customer_to_user_id` = ? where `user_id` = ?\",\"time\":\"0.26\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/app\\/Console\\/Commands\\/Upgrade\\/Customer2Users.php\",\"line\":114,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:17'),(27,'8da95cab-c4a3-4d59-a708-7e367c24c07f','8da95cab-c4d7-4ee6-bfad-0aef24f90e13',NULL,1,'command','{\"command\":\"update:customer2users\",\"exit_code\":0,\"arguments\":{\"command\":\"update:customer2users\"},\"options\":{\"help\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":false,\"no-ansi\":false,\"no-interaction\":false,\"env\":null},\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:17'),(28,'8da95ccb-f01e-49fe-942e-bdf31b61c5de','8da95ccb-f13f-4788-9f98-7110591c52d9',NULL,1,'request','{\"uri\":\"\\/\",\"method\":\"GET\",\"controller_action\":\"Closure\",\"middleware\":[\"web\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"_token\":\"FT7s9S0hPibpHMiCebIC9W261NvsXxKEBnGWYUcx\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\"},\"_flash\":{\"old\":[],\"new\":[]}},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\\/login\",\"duration\":254,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:38'),(29,'8da95ccc-49b0-4828-bfe3-1f6aad405b18','8da95ccc-4c15-47c1-86f3-ad44c098268d',NULL,1,'request','{\"uri\":\"\\/login\",\"method\":\"GET\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\Auth\\\\LoginController@showLoginForm\",\"middleware\":[\"web\",\"guest\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6IlErXC9SaXVqZXhubFwvWjVraGp2NmJTUT09IiwidmFsdWUiOiI5K0pqV2EzVzVZbUg2dWZHK2hnemxXN0hlOWNxNVwvd3dWTldmYitDXC9QSzhQR2Y0WWtDYlJPWjN2YUo2bVBtNzUiLCJtYWMiOiIzMjIwOWRjMjZiODE4MTVlNzJhYTY3NjU2MzQ4ZGI2MGUwNjk4MGU1NTViZDQ4NGE4MTk4Mzk5MjVkNTNlNTVlIn0%3D; IXP_Manager=eyJpdiI6InROeFBCRDZoa2JkWGl3MG9XSjlsSXc9PSIsInZhbHVlIjoiNFIyWEhsWmtoSitFU3FPNXAzaE83SEo0czA4NGhycnJvbU1sY1FvNHo3YWpHdDNQR0x5Rjd5U1pvVnFUTXJTNiIsIm1hYyI6ImRiNjFiMTc3NDlmZjk4NmE0MzJlZTdlOGY1ODVmOTEwYjE1MDc5ZGY3NzhiMzFlNjZkMmE0YjVjZDA2YjgxMWIifQ%3D%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"_token\":\"FT7s9S0hPibpHMiCebIC9W261NvsXxKEBnGWYUcx\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\\/login\"},\"_flash\":{\"old\":[],\"new\":[]},\"url\":{\"intended\":\"http:\\/\\/ixp-ibn.ldev\\/login\"}},\"response_status\":200,\"response\":{\"view\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/resources\\/views\\/auth\\/login.foil.php\",\"data\":[]},\"duration\":179,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:38'),(30,'8da95cda-1832-4535-b4fe-a2df241f2f6d','8da95cda-4b45-4e96-bb41-14253ff97d19',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"vagrant|127.0.0.1\",\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:47'),(31,'8da95cda-4a7d-4c5e-8062-e8e8f6ef2fc6','8da95cda-4b45-4e96-bb41-14253ff97d19',NULL,1,'request','{\"uri\":\"\\/login\",\"method\":\"POST\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\Auth\\\\LoginController@login\",\"middleware\":[\"web\",\"guest\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6IlhhWWlhd2N0b2pSSmM4Q1BFa2F6dlE9PSIsInZhbHVlIjoiTkRINldoaGNqXC95TCthZHdBa1VzVVwvWDRZMDFYaFlCeVUzSWJYVExRNm5PWk0ydGlNb3RvemVcL3hwYyt1V1FkNiIsIm1hYyI6IjQxNWVlMzhkODllYTU2YzFhZDQwY2I5YTdiZDEzNzc5ZWZlZWY1NjAzM2JhMWFhYTI1YWI2ODhmNTMxNzljNTMifQ%3D%3D; IXP_Manager=eyJpdiI6Im9rbVp3T1ZsZERcL0MrV3F1N0U5NHFBPT0iLCJ2YWx1ZSI6IjlQbnltaE9sVlk2MEFLOVkyU3FQZFwvYktqdXZGQVBWZDI2dnpWV2RseGE0eFVxeU8rdnY2RXVhV0VZcFBYUWl1IiwibWFjIjoiMThlOGU2OTFiZjA0ZjU4ZGU5MTg2NjUyNjg0YzJmYWI2ZTdmZGY5YjZjMTRlMjY1MzFlMjBjNGFlNmQ4NWM5NSJ9\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"content-length\":\"82\",\"content-type\":\"application\\/x-www-form-urlencoded\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/login\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\"},\"payload\":{\"username\":\"vagrant\",\"password\":\"********\",\"_token\":\"FT7s9S0hPibpHMiCebIC9W261NvsXxKEBnGWYUcx\"},\"session\":{\"_token\":\"DKeD4q0Ssmn2xBbh6e7kEq9wzMUPAECXT2sp8KoJ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\\/login\"},\"_flash\":{\"old\":[],\"new\":[]},\"url\":[],\"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d\":1},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\\/login\",\"duration\":321,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:47'),(32,'8da95cda-9a9e-4e33-ac8c-93293a1408d1','8da95cda-9bb6-4ab8-bb02-6e9aad6f2983',NULL,1,'request','{\"uri\":\"\\/login\",\"method\":\"GET\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\Auth\\\\LoginController@showLoginForm\",\"middleware\":[\"web\",\"guest\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6Iklobm5tMVRXUGhXQnlKXC9zUXJQQWtRPT0iLCJ2YWx1ZSI6IkpaY091ZG5RajBsTmdENUJ6NTBOWWg3SGtmaTNEaU93UWVFOU1HWjBmdHpPUEZMUGFlNHd0ak9PRG5yUGMyS2ciLCJtYWMiOiJhNzRmNjgxMDVlYzM0MWUzNDc2MzJmOTJiMWM3NjI1YWExNWYzNDdjOGNmODEzMTI1NTcxOTlhMjgyMzRiNWJlIn0%3D; IXP_Manager=eyJpdiI6IlpQSnFyMFFmSlhxMGxQdWVoSldHVlE9PSIsInZhbHVlIjoib3lBVk1nK2RBTTB5RWd2empYNXMwenhySDFmUlR5ZGgwTFZkbXFEQk90MmFwdmpuQ3V1ZEdvMWwwZ2d6eXdZdCIsIm1hYyI6ImJiODJjNjc2NThjOTg2OGE0MzA0MTEzYjI2Y2U4NzA3MGJmYmIyMjg2N2ExYTY4MWExNTYzZmY0NGQ0YzJlNDEifQ%3D%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/login\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"_token\":\"DKeD4q0Ssmn2xBbh6e7kEq9wzMUPAECXT2sp8KoJ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\\/login\"},\"_flash\":{\"old\":[],\"new\":[]},\"url\":[],\"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d\":1},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\",\"duration\":153,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(33,'8da95cda-eb0a-4e26-a3ae-f0e9faed8ea0','8da95cda-ebe7-4d01-afa2-3b58be3710c3',NULL,1,'request','{\"uri\":\"\\/\",\"method\":\"GET\",\"controller_action\":\"Closure\",\"middleware\":[\"web\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6InBOUjB6RXdoNXdkQlwvSVVBMWxQaUhnPT0iLCJ2YWx1ZSI6Im9qNnlOdjhlblJpamMxRXNPSTNcL1hrem9xSDEzQkp3M0kzcGVNSXJ4bksxd0hUWmNmYmhKZDh6QVQyYThKeHdkIiwibWFjIjoiZDEwMmFkODBmNzc1NDU3ZTRhN2Q5MzQ2OWZmNjhlYzNhOTU3N2E5NjU4MDc2NTk1OWExYTUwMTgxNWJlMWQyZCJ9; IXP_Manager=eyJpdiI6ImorNnhpS2lmZzZaQm8yaVpuamdmK1E9PSIsInZhbHVlIjoiczFJeWlESTdNNW4xUHJnTm1Gd3IzNjhMeEdhcEd5WHBXd1wvV2NGU0hvU1ZpVTFZRFZHZHk3cmdKTUNVcFcyWXUiLCJtYWMiOiIyMTk5ZmE2MWI2NzNiNWQyZjVlYTZjNDI5MjdlYWUwY2NmNGI0YzJiMzQ0OTdmNTkyNjQ4YmNhMjllNzFjMTJlIn0%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/login\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"_token\":\"DKeD4q0Ssmn2xBbh6e7kEq9wzMUPAECXT2sp8KoJ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\"},\"_flash\":{\"old\":[],\"new\":[]},\"url\":[],\"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d\":1},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\\/admin\",\"duration\":158,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(34,'8da95cdb-324e-4d33-8829-71e48083ee84','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"admin_ctypes\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(35,'8da95cdb-3f68-4114-aa58-5fdccf8e544c','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"SELECT v.name AS vlanname, COUNT(vli.id) AS overall_count, SUM(vli.rsclient = 1) AS rsclient_count\\n FROM `vlaninterface` AS vli\\n LEFT JOIN virtualinterface AS vi ON vli.virtualinterfaceid = vi.id\\n LEFT JOIN cust AS c ON vi.custid = c.id\\n LEFT JOIN vlan AS v ON vli.vlanid = v.id\\n WHERE v.`private` = 0 AND c.type IN (1,4)\\n GROUP BY vlanname\",\"time\":\"0.96\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/database\\/Repositories\\/VlanInterface.php\",\"line\":752,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(36,'8da95cdb-3ff4-4678-b1fc-56c67c36dcea','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'query','{\"connection\":\"mysql\",\"bindings\":[],\"sql\":\"SELECT v.name AS vlanname, COUNT(vli.id) AS overall_count, SUM(vli.ipv6enabled = 1) AS ipv6_count\\n FROM `vlaninterface` AS vli\\n LEFT JOIN virtualinterface AS vi ON vli.virtualinterfaceid = vi.id\\n LEFT JOIN cust AS c ON vi.custid = c.id\\n LEFT JOIN vlan AS v ON vli.vlanid = v.id\\n WHERE v.`private` = 0 AND c.type IN (1,4)\\n GROUP BY vlanname\",\"time\":\"0.57\",\"slow\":false,\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/database\\/Repositories\\/VlanInterface.php\",\"line\":779,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(37,'8da95cdb-406b-4616-8d2f-6829ebf8347f','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"admin_ctypes\",\"value\":{\"types\":{\"1\":\"3\",\"3\":\"1\",\"4\":\"1\"},\"speeds\":{\"10\":2,\"100\":1,\"1000\":4,\"10000\":1},\"custsByLocation\":{\"Location 1\":8},\"byLocation\":{\"Location 1\":{\"1000\":4,\"100\":1,\"10\":2,\"10000\":1}},\"byLan\":{\"Infrastructure #1\":{\"1000\":3,\"100\":1,\"10\":1},\"Infrastructure #2\":{\"1000\":1,\"10\":1,\"10000\":1}},\"byIxp\":{\"VAGRANT IXP\":{\"1000\":1,\"100\":1,\"10\":1,\"10000\":1}},\"rsUsage\":[{\"vlanname\":\"Peering LAN 1\",\"overall_count\":4,\"rsclient_count\":\"4\"},{\"vlanname\":\"Peering LAN 2\",\"overall_count\":3,\"rsclient_count\":\"3\"}],\"ipv6Usage\":[{\"vlanname\":\"Peering LAN 1\",\"overall_count\":4,\"ipv6_count\":\"2\"},{\"vlanname\":\"Peering LAN 2\",\"overall_count\":3,\"ipv6_count\":\"2\"}],\"cached_at\":\"2019-05-11T14:37:48.621150Z\"},\"expiration\":300,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(38,'8da95cdb-412f-433a-9660-7912dace02c4','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"admin_stats_week\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(39,'8da95cdb-5461-4dfa-85d2-12c698a2b6de','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"admin_stats_week\",\"value\":{\"ixp\":{},\"1\":{},\"2\":{}},\"expiration\":300,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(40,'8da95cdb-55db-4f8d-8e59-5aba480ec518','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"admin_home_customers\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(41,'8da95cdb-5764-4b10-80df-c87b152f8919','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"admin_home_customers\",\"value\":{\"4\":\"AS112\",\"2\":\"HEAnet\",\"5\":\"Imagine\",\"3\":\"PCH DNS\",\"1\":\"VAGRANT IXP\"},\"expiration\":3600,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(42,'8da95cdb-5a60-4e71-bf02-109c50c0397c','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"hit\",\"key\":\"admin_home_customers\",\"value\":{\"4\":\"AS112\",\"2\":\"HEAnet\",\"5\":\"Imagine\",\"3\":\"PCH DNS\",\"1\":\"VAGRANT IXP\"},\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(43,'8da95cdb-5b5b-4a7c-9781-5619c9e9d1dc','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::ixp001-protoall-bits-week-png.png\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(44,'8da95cdb-5cb6-45ad-a7aa-0d7ef2c8cb3f','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','0','2019-05-11 14:37:48'),(45,'8da95cdb-5e34-4529-8aee-e560c34a77a4','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::ixp001-protoall-bits-week-png.data\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(46,'8da95cdb-6460-4ee4-9f20-81005e52b3d3','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"grapher::ixp001-protoall-bits-week-png.data\",\"value\":[[1454455800,81294362816,81285576440,88069944432,88106694760],[1454457600,70861891680,70879651504,80870320288,80939228632],[1454459400,61820900952,61836187968,66968352168,67014678488],[1454461200,53303777096,53305052864,62845305440,62931096184],[1454463000,46965082136,46977456320,49870513416,49862850104],[1454464800,40384565960,40392848672,45678738008,45636379632],[1454466600,38216781752,38224697040,40799594304,40807874304],[1454468400,35944029240,35956335128,39960841976,39987092904],[1454470200,32967694816,32978399560,35519703248,35509715920],[1454472000,30070160152,30082385616,33153776584,33172195320],[1454473800,24414319016,24419567880,26577381368,26585448936],[1454475600,23904858944,23912816624,28590035120,28612257208],[1454477400,30063386920,30074640448,31599770560,31591656360],[1454479200,27785035432,27794444608,32122766120,32086708720],[1454481000,29279816552,29284912832,30922314872,30918322360],[1454482800,30666057464,30679904160,35515780640,35503495920],[1454484600,37357081544,37371358112,41662438288,41650997536],[1454486400,43327042600,43340908536,45779987440,45788160344],[1454488200,50489368880,50505400192,54572934248,54572019256],[1454490000,57200462984,57214479368,61853898576,61778503184],[1454491800,63373343256,63393476680,68516850000,68544855408],[1454493600,69064495536,69074671520,74284354992,74181294872],[1454495400,70013051296,70043538464,73622118040,73634910728],[1454497200,73012892712,73015317200,78255883456,78166086880],[1454499000,73352036232,73383848632,76636250720,76666954016],[1454500800,75620013040,75637879848,80283491816,80223183568],[1454502600,76228595344,76243703864,81054704368,81053125928],[1454504400,75999819824,76021488840,87437191816,87489136552],[1454506200,78292126288,78308144544,83569412240,83555038472],[1454508000,78085704544,78111659880,83185345296,83187726680],[1454509800,78345803896,78368818680,81801939440,81804611224],[1454511600,78013894008,78033177688,85710113408,85601906328],[1454513400,79577108928,79609217552,83162806944,83214050000],[1454515200,81293692760,81305309584,88821967104,88636556016],[1454517000,84816123360,84846219120,88918795392,88935110568],[1454518800,87081432392,87091507432,94021487096,93905920584],[1454520600,85651853808,85688961648,90248297272,90225347048],[1454522400,83505885640,83518601184,90176417144,89989158328],[1454524200,83793986488,83805506328,86665926344,86676329168],[1454526000,85511366136,85497869576,96762520456,96761447928],[1454527800,88476854712,88476454824,92160504896,92161351168],[1454529600,90648352872,90620921072,97641977904,97464214088],[1454531400,94026246008,93904977944,102154981240,102208628152],[1454533200,94198091872,94169919552,105749290568,105506634816],[1454535000,97110596728,97097309832,101634669488,101587174880],[1454536800,95556494568,95519992032,106372441136,106175058520],[1454538600,91696338768,91653353688,97470650608,97394349312],[1454540400,86827737208,86786107000,97104688184,96882082448],[1454542200,79701142008,79671642200,86761395400,86724876184],[1454544000,70123725592,70109586560,79172492272,79062640088],[1454545800,60995768104,61013157120,65948718584,65968776328],[1454547600,51537418600,51541293520,60431968360,60464608536],[1454549400,46418530088,46429869168,49621685936,49624261992],[1454551200,40376559632,40385829512,46871778392,46816799256],[1454553000,36917014256,36924532872,40277913368,40279221896],[1454554800,35410467488,35421283280,38138767224,38152503432],[1454556600,33269377160,33277090248,36432315808,36427636560],[1454558400,30547892968,30557396104,34193108352,34194383304],[1454560200,31117152736,31126264400,33853356856,33868214264],[1454562000,27903115128,27911278000,30223005072,30198625336],[1454563800,29934257672,29944865160,31506004712,31492730776],[1454565600,29441624672,29452300504,31908599968,31920348632],[1454567400,30348890248,30362244816,31980203864,32017690152],[1454569200,32179799496,32194323696,38244244752,38223516480],[1454571000,39366868856,39381515616,44505251488,44497151872],[1454572800,45996071472,46009294272,50062178904,50060593008],[1454574600,54807359568,54826227872,58070999064,58095039016],[1454576400,58276891720,58291351432,62305218472,62272611040],[1454578200,65252116728,65276435440,68656748056,68691325488],[1454580000,70086442808,70100528008,75931323424,75882340384],[1454581800,71930873456,71954324240,76252227928,76232277096],[1454583600,73408477528,73422544360,80465551304,80381818024],[1454585400,73455023456,73476718576,76442831336,76449727248],[1454587200,73239310816,73256046544,78661128224,78660634608],[1454589000,74237058536,74259646000,77340780208,77300023376],[1454590800,74964145272,74979110536,82920864392,82946083856],[1454592600,76809569096,76824240448,80064745264,80073796136],[1454594400,78100494176,78123839856,84511234640,84459278928],[1454596200,80466829544,80497494000,85060051544,85097480376],[1454598000,79293975272,79302495264,86915567736,86794316736],[1454599800,80392108824,80429461136,84012543440,83991247112],[1454601600,81984696224,82000466944,90237052568,90099949968],[1454603400,83126675616,83167204552,87233539496,87259043504],[1454605200,86443378304,86456597808,93991535760,93760894992],[1454607000,84513029168,84541310664,87859023048,87861768752],[1454608800,82589188984,82590017384,89199089152,88960602080],[1454610600,81692031704,81710528048,87764791192,87737411496],[1454612400,81436198776,81425187960,90264573040,90276420992],[1454614200,84071655264,84065463216,88066380704,88019011000],[1454616000,86614534032,86575647704,92804890792,92501827776],[1454617800,89907786856,89891653920,94556947296,94526956864],[1454619600,90940322576,90902602992,97276698920,97074876920],[1454621400,91819805536,91790983824,96481755968,96440473776],[1454623200,92839727080,92804172520,100117498896,99991715848],[1454625000,92579642360,92534196984,97562440600,97511791880],[1454626800,87659012520,87616060016,96628441184,96517502616],[1454628600,80090564440,80075514848,86851725672,86812310264],[1454630400,71545922224,71554291416,80467583936,80437053704],[1454632200,62981815624,62994380352,68179041600,68182648104],[1454634000,53779200528,53789997832,60927596696,60876776144],[1454635800,47277584224,47286596712,50927426888,50909429640],[1454637600,41026057808,41039247616,46214662192,46217699320],[1454639400,39383384936,39393919384,41802158416,41810225840],[1454641200,38794575608,38806824920,42883686072,42879516648],[1454643000,35771532760,35782286024,39361694576,39420423120],[1454644800,32261048376,32276826344,34701189880,34725474368],[1454646600,29589233832,29600958336,31761446336,31781482656],[1454648400,29002513576,29014087848,32288004048,32278281648],[1454650200,29895545880,29909371168,31954177568,31968767016],[1454652000,27768558936,27777968400,29728539720,29759542872],[1454653800,29464792272,29472097472,31411361648,31421028200],[1454655600,30423344512,30440973616,35401609136,35419534864],[1454657400,36985723216,36999985512,41006096752,41038368760],[1454659200,44306848280,44322889208,48474948920,48501553440],[1454661000,52106017048,52127083488,56038247120,56071574888],[1454662800,58431305184,58442361528,63086069168,63100869216],[1454664600,65132835200,65154774240,70261450840,70274799136],[1454666400,69027263272,69045404928,73692640008,73615980072],[1454668200,74354528840,74374535976,78701134464,78744029528],[1454670000,74035681200,74059215200,80040231704,80019278488],[1454671800,76155425048,76172657296,79529553000,79586814032],[1454673600,77201223000,77208283480,84144927920,84061288616],[1454675400,76618118088,76645229032,80326782152,80357024160],[1454677200,79549706568,79571666872,89202983328,89164870240],[1454679000,77138576104,77160551048,81251421304,81218265112],[1454680800,77066053152,77082186408,84314591488,84319207408],[1454682600,78949139680,78976938696,83071722112,83113883416],[1454684400,79057866040,79081264416,86101271528,85996828208],[1454686200,79144830352,79178862640,84364029176,84368287792],[1454688000,83198448968,83213494168,90495799128,90247050520],[1454689800,84953897344,84987291232,88368824480,88403817168],[1454691600,85091261696,85110719544,92081300744,91926442608],[1454693400,83391813912,83418296216,86807594640,86801574296],[1454695200,81663347184,81682287888,88283661112,88179522120],[1454697000,81375857456,81407486760,84702708408,84711773792],[1454698800,81688933936,81707529960,88450534256,88293906176],[1454700600,82318779800,82342788136,85426675872,85443623304],[1454702400,84787308568,84809255376,91408951816,91308697504],[1454704200,88754271928,88768685400,92482828864,92560383840],[1454706000,90803521808,90832576440,97675678448,97722071904],[1454707800,91612321776,91643840680,95574520072,95619477240],[1454709600,89608557896,89611301280,96616261504,96506777952],[1454711400,89500657448,89537073720,93721649416,93832095160],[1454713200,86665768776,86681079080,95677260024,95611031704],[1454715000,81781610280,81795772496,87560692520,87544151232],[1454716800,76014803152,76035591240,84960518456,85013712240],[1454718600,70021784376,70030907080,75041417936,75036067680],[1454720400,61331252176,61346404144,69398993992,69565920552],[1454722200,53780100328,53796932144,57557002832,57597809896],[1454724000,46353875272,46365433512,51565310088,51524669976],[1454725800,41243110496,41253014344,43854038928,43880993672],[1454727600,36769041240,36781714640,41075537720,41118023992],[1454729400,33497848976,33508769408,36320000176,36326492688],[1454731200,31045760368,31055440832,34052138040,34054560520],[1454733000,29848131368,29861875104,31416929104,31444169152],[1454734800,27358375856,27369089312,29617380512,29618447760],[1454736600,29378137528,29388613800,31919808512,31939410176],[1454738400,27611983816,27622568328,33403838184,33425163720],[1454740200,27089762760,27099282832,28703305824,28713841776],[1454742000,28737630024,28751976696,32431573736,32458045776],[1454743800,30756620824,30770650680,33567867896,33595693952],[1454745600,35672584032,35679646240,39091242744,39096327632],[1454747400,43631690192,43655557736,47215009296,47232414912],[1454749200,50212727384,50220092648,53546642672,53565627840],[1454751000,56257103664,56281898760,59389403912,59409253128],[1454752800,60004430168,60017699272,63455192864,63471363856],[1454754600,62144861376,62168576608,64350585784,64353294504],[1454756400,63882762576,63894235760,68615160216,68473431120],[1454758200,65726957088,65751822008,68794827056,68795088240],[1454760000,67498977400,67514699648,72489149360,72382598112],[1454761800,69373478600,69398247056,72178800752,72203651264],[1454763600,68556996040,68574036776,77100602488,77117762960],[1454765400,68938490880,68965160696,72240949736,72275569424],[1454767200,70057915504,70074033808,75362620256,75252930240],[1454769000,71577845848,71599414120,74736074312,74750242520],[1454770800,73959031800,73972174216,79940258664,79881389584],[1454772600,77195529776,77223553840,80466923752,80459406832],[1454774400,78513721400,78528805352,84462663952,84454338640],[1454776200,78969925656,79007048192,82615809008,82613047968],[1454778000,78719323720,78736046632,84185175488,84099313736],[1454779800,80959915944,80984503856,84152050328,84139376864],[1454781600,81118758912,81139350208,88388113096,88325246408],[1454783400,82487747352,82507356800,86789030376,86799310160],[1454785200,81723737320,81751659136,88420317368,88423779616],[1454787000,81514561576,81556262880,84660799584,84715692344],[1454788800,82846652816,82862919008,89335489944,89178351248],[1454790600,84816813464,84848066832,89194987320,89200051072],[1454792400,85311473904,85321879280,92615473608,92494265448],[1454794200,87908701736,87941461984,92803561328,92879680872],[1454796000,88546960872,88564808736,96976257264,96808990608],[1454797800,86625768440,86649160472,92563798240,92602694544],[1454799600,83144457928,83161564240,92505249520,92422916056],[1454801400,77998634264,78026186888,82895489248,82973338632],[1454803200,72780651152,72784481088,80267213200,80111372928],[1454805000,68267004384,68287852368,73934205232,73996117104],[1454806800,60477147464,60481616192,67816176208,67737847912],[1454808600,54907568168,54926146008,61041737280,61115098312],[1454810400,47030399904,47031295600,53222990008,53229097016],[1454812200,44998669392,45016382048,47951635440,48021841232],[1454814000,40884028328,40896067808,44915492496,44950109872],[1454815800,35649389592,35661029072,40349572016,40388050600],[1454817600,32954768824,32967110376,37344349656,37381316752],[1454819400,30661975616,30672840912,33084184992,33114596904],[1454821200,28931749064,28940710024,31144626528,31169671712],[1454823000,29538408176,29550405688,32015687992,32025484304],[1454824800,27059677136,27065867048,30969181024,30971519128],[1454826600,27703711848,27718478784,29947035176,29982042216],[1454828400,28359654344,28371151528,33329150880,33348586192],[1454830200,28960660032,28975635304,30932819896,30923375600],[1454832000,31942829064,31950467664,35128894512,35143944800],[1454833800,40435342240,40458916200,46566526872,46602123648],[1454835600,47722869232,47736410976,51900868192,51949814040],[1454837400,55738901680,55760465424,60708801920,60730316856],[1454839200,61086942328,61096311736,65518079544,65369489728],[1454841000,62854760040,62876951528,67179225960,67188450584],[1454842800,65180849360,65190971552,69487103248,69495334440],[1454844600,68553563664,68580929128,71955718784,72003619200],[1454846400,70157175488,70166860976,75890306800,75721886168],[1454848200,68443916048,68461305728,72001921280,72062211600],[1454850000,69710763688,69725118880,75714028376,75615794392],[1454851800,71449959712,71476562496,75005339288,75011123528],[1454853600,72142666040,72157543400,78179738488,78095240208],[1454855400,73705399160,73727919000,77932969768,77956928000],[1454857200,76342537920,76351363864,81806770088,81712828104],[1454859000,81822434792,81830423496,86922176896,86935487032],[1454860800,83265260200,83294779912,90762971896,90889921160],[1454862600,86888626304,86897184032,91536147744,91555520368],[1454864400,86125819144,86166091184,95301490704,95464561840],[1454866200,81847453152,81879707776,85640523488,85704200272],[1454868000,82974618880,82997094144,91062651744,90990369592],[1454869800,83241200320,83269713016,86637064912,86668095288],[1454871600,85909254528,85921878056,98680720360,98691446280],[1454873400,88315410392,88344324992,92066529048,92111042544],[1454875200,89900599928,89915385160,98334423920,98177988568],[1454877000,90367178048,90388415552,94892186864,94925800224],[1454878800,90345120128,90338759160,99092140584,98857492400],[1454880600,93315708416,93335305136,97619499600,97647244152],[1454882400,93470750928,93451614312,103445624824,103253903136],[1454884200,91365124328,91353232704,96256066760,96269899144],[1454886000,84740946320,84727951480,94223274368,94089304408],[1454887800,77301934320,77305954168,83973991760,83957138472],[1454889600,67836065952,67843247336,76283912256,76279249720],[1454891400,60934372800,60948731792,66883576352,66917665880],[1454893200,50892264016,50898265872,59038233416,59064762560],[1454895000,45922650856,45937474288,49353227456,49364606376],[1454896800,38668500408,38675954576,43880770640,43842198568],[1454898600,36530061880,36535207000,39964861504,39955435128],[1454900400,32756280120,32773812648,37160851880,37251710728],[1454902200,31586843792,31601126800,33820380192,33846207712],[1454904000,30634813184,30646727960,32867181960,32849335512],[1454905800,30817581032,30831990736,33498671352,33509499248],[1454907600,28508081712,28519002072,31850589200,31899893384],[1454909400,28514713576,28526004896,30218647944,30208335400],[1454911200,27370284368,27377324168,30896659152,30919054968],[1454913000,26343020464,26353420256,27614120144,27632757200],[1454914800,28320753128,28330517200,32463105424,32485427296],[1454916600,36234435696,36250292520,41030791240,41052216360],[1454918400,43479495656,43494124368,47772260344,47782113784],[1454920200,52311196464,52336421944,56167824344,56210392200],[1454922000,58119150632,58124864776,62430923456,62387087576],[1454923800,66945033720,66969680008,71456705080,71495807984],[1454925600,72319675408,72334758816,78233082616,78207399488],[1454927400,74350189800,74384333984,77351525072,77402259248],[1454929200,75018344400,75026661704,80539634832,80449555392],[1454931000,76143645984,76170238048,80474782448,80425504456],[1454932800,77568531568,77584673824,83851924176,83762926232],[1454934600,78703458696,78723356896,82353935056,82345517744],[1454936400,80538368480,80558048424,87906104496,87855474432],[1454938200,79329207168,79353015192,84701163736,84686792720],[1454940000,78059302936,78075453048,84953279704,84842232016],[1454941800,79648084088,79678243608,83154753848,83192930704],[1454943600,79861005040,79879672944,87632547432,87518351384],[1454945400,80216070024,80245069336,83536516120,83516951152],[1454947200,81035854216,81051648528,89207838304,89036841512],[1454949000,83888855984,83930306664,88203533032,88244742448],[1454950800,86290247128,85940388464,95481893728,92886730448],[1454952600,84341445440,84368681480,87781001968,87784991792],[1454954400,82526607968,82537352144,91065452488,90880267512],[1454956200,83205070744,83223681720,86916244952,86911430432],[1454958000,85974861696,85955119024,94870145824,94884743488],[1454959800,87590515256,87580183840,91873256184,91847332312],[1454961600,90259693744,90226306368,97502486504,97286684704],[1454963400,92742870824,92719081048,97924667472,97894228304],[1454965200,93098099000,93061335312,101107937352,100965391688],[1454967000,95236527320,95191469936,99685203416,99595539920],[1454968800,95407964936,95359657200,103500551976,103368779344],[1454970600,93488040720,93432792688,97732670264,97671919936],[1454972400,87095861600,87063618224,97213971000,97203384152],[1454974200,73853506040,73873037816,80612326656,80619506224],[1454976000,63716405648,63721648896,72607502488,72412285632],[1454977800,55054658984,55067690976,60311020072,60322670728],[1454979600,48498144600,48501415480,56643262584,56658586056],[1454981400,44272526792,44284996752,47014808008,47033847048],[1454983200,38750026464,38763359064,44346460304,44351784144],[1454985000,34199270672,34212675024,37762416896,37789498768],[1454986800,32231608760,32244283600,35247101672,35284426032],[1454988600,31305485912,31317945960,33665030320,33646376688],[1454990400,29637662360,29653914640,33404294208,33487706688],[1454992200,27895272080,27902689280,29698939560,29707282832],[1454994000,26896945440,26911209528,30098653608,30184091408],[1454994300,26997528560,27016147096,29243767472,29273266224],[1454994600,28555356880,28572670008,29243767472,29273266224],[1454994900,27632946808,27626263200,29281823888,29283592392],[1454995200,28731024264,28736591960,29281823888,29283592392],[1454995500,28239276896,28264665096,30242587176,30297833464],[1454995800,29533703312,29563942856,30242587176,30297833464],[1454996100,28845010360,28834004648,32149475432,32193755264],[1454996400,30900827840,30941132192,32149475432,32193755264],[1454996700,28546890864,28571254344,29422495944,29427928056],[1454997000,28831344952,28837382528,29422495944,29427928056],[1454997300,27780462168,27792883232,28399202632,28424414000],[1454997600,27875247016,27897542896,28399202632,28424414000],[1454997900,27125257656,27139617184,28120455504,28130514152],[1454998200,27559443008,27567579760,28120455504,28130514152],[1454998500,26993432256,26999999304,28678699064,28692005056],[1454998800,27947540904,27963277816,28678699064,28692005056],[1454999100,27381309880,27404034840,29982390400,30009595776],[1454999400,29305953504,29324062248,29982390400,30009595776],[1454999700,28561779064,28565849416,31098570112,31122463784],[1455000000,29725569936,29737944008,31098570112,31122463784],[1455000300,28398652928,28396237848,36961402232,37011148112],[1455000600,34289813784,34327101120,36961402232,37011148112],[1455000900,29176750640,29182875872,30881229456,30876170320],[1455001200,30625323256,30632641824,30881229456,30876170320],[1455001500,31077556528,31099358712,33703653712,33693491072],[1455001800,33127250424,33129963312,33703653712,33693491072],[1455002100,33256848936,33278918304,36908125928,36907790360],[1455002400,36710826736,36717719952,36908125928,36907790360],[1455002700,37089449752,37102290152,39245528432,39232063640],[1455003000,38450960760,38460627608,39245528432,39232063640],[1455003300,38228692536,38274212720,43842677688,43835296864],[1455003600,42834358024,42835448160,43842677688,43835296864],[1455003900,41548202080,41564877552,43874263672,43883895480],[1455004200,43079733976,43094350272,43874263672,43883895480],[1455004500,42230153856,42251023712,44747117736,44754653136],[1455004800,44701558904,44713942656,44747117736,44754653136],[1455005100,45672205592,45700062048,48526541432,48566391112],[1455005400,47718891360,47749777232,48526541432,48566391112],[1455005700,47123721624,47142526784,50174802048,50212914120],[1455006000,49678311112,49707115736,50174802048,50212914120],[1455006300,49624524048,49632136032,52373118320,52379485736],[1455006600,51113208984,51152829800,52373118320,52379485736],[1455006900,50206778984,50270220832,56759019024,56649152680],[1455007200,54998899416,54923776480,56759019024,56649152680],[1455007500,52410440416,52421813464,55470254240,55510774624],[1455007800,54903742760,54937434824,55470254240,55510774624],[1455008100,55151866848,55170196080,58933399960,58950114240],[1455008400,58432274040,58443166808,58933399960,58950114240],[1455008700,59654960648,59654018912,65678837720,65679798584],[1455009000,64955535872,64957204376,65678837720,65679798584],[1455009300,64503760904,64525826616,67370427576,67440163656],[1455009600,65973905624,66028283096,67370427576,67440163656],[1455009900,64637866160,64653405624,68880974400,68882106936],[1455010200,66932647592,66939890728,68880974400,68882106936],[1455010500,64672315208,64696440552,71937087448,71973833704],[1455010800,69721421584,69757115608,71937087448,71973833704],[1455011100,66038508624,66054881008,69249529656,69222240296],[1455011400,67849782152,67849005720,69249529656,69222240296],[1455011700,66222551440,66265585960,70049701960,70053646392],[1455012000,69242723760,69258310048,70049701960,70053646392],[1455012300,68932630536,68957902528,72691549048,72675776704],[1455012600,71182860808,71184290240,72691549048,72675776704],[1455012900,69068109560,69115498784,72318656504,72386103784],[1455013200,70374610608,70416969352,72318656504,72386103784],[1455013500,67595984768,67600373168,71712579944,71764481352],[1455013800,69746853992,69805480536,71712579944,71764481352],[1455014100,67785133832,67831034600,77050264040,76989853144],[1455014400,74095400816,74063279696,77050264040,76989853144],[1455014700,69105139064,69138139416,72728835216,72772489840],[1455015000,70908607104,70940345456,72728835216,72772489840],[1455015300,68213344392,68222541808,71818885632,71838670352],[1455015600,70676665504,70692772656,71818885632,71838670352],[1455015900,69905450360,69915335024,74802386552,74817927352],[1455016200,73441907160,73460362144,74802386552,74817927352],[1455016500,71484836072,71513912792,74332375240,74372445864],[1455016800,73075314264,73108008144,74332375240,74372445864],[1455017100,71589785384,71604165560,75196148816,75206179992],[1455017400,72904394000,72944930688,75196148816,75206179992],[1455017700,70228145520,70293697896,80365006672,80254065720],[1455018000,77526182768,77461481752,80365006672,80254065720],[1455018300,73187682328,73223005104,77783809336,77819756640],[1455018600,75942398672,75977052760,77783809336,77819756640],[1455018900,73412768448,73444890664,77187889088,77220687800],[1455019200,75721614248,75741161040,77187889088,77220687800],[1455019500,74435880264,74434527648,79346702040,79365472488],[1455019800,78171472200,78201439088,79346702040,79365472488],[1455020100,76821345608,76865794920,80130484664,80147642440],[1455020400,77874256264,77899380648,80130484664,80147642440],[1455020700,74501618800,74529626776,78813618648,78802805768],[1455021000,75950236496,75968816048,78813618648,78802805768],[1455021300,72414236768,72463991800,82769117576,82692514960],[1455021600,78001062704,77966150128,82769117576,82692514960],[1455021900,71146516504,71200188488,90311723920,90337707184],[1455022200,85057768560,85068444408,90311723920,90337707184],[1455022500,75520180104,75528993584,80305264600,80396943128],[1455022800,78231837360,78301885704,80305264600,80396943128],[1455023100,75113336952,75135626304,79091962720,79115277288],[1455023400,77093653296,77110413104,79091962720,79115277288],[1455023700,74308783296,74326282264,78729876472,78788127552],[1455024000,76709864016,76754922440,78729876472,78788127552],[1455024300,73956795784,73977676520,78590860400,78625529936],[1455024600,75868316320,75913141000,78590860400,78625529936],[1455024900,72697970752,72734189296,83882294008,83795068496],[1455025200,80927458312,80873705480,83882294008,83795068496],[1455025500,75688031048,75721058776,78974151696,79042871720],[1455025800,77546967600,77594913040,78974151696,79042871720],[1455026100,75590605648,75593481704,79103746016,79113650320],[1455026400,77427030504,77441388264,79103746016,79113650320],[1455026700,75349445784,75375200184,79747886808,79777586824],[1455027000,78378562768,78412239040,79747886808,79777586824],[1455027300,77086570592,77134779552,81882227280,81945172232],[1455027600,79981209312,80028380584,81882227280,81945172232],[1455027900,76986501440,76992791272,80451228080,80443642392],[1455028200,77950953096,77971532360,80451228080,80443642392],[1455028500,74881495088,74943282960,84798178136,84773715272],[1455028800,81627885152,81614522824,84798178136,84773715272],[1455029100,76319217272,76326214024,80325849480,80323448008],[1455029400,78452546352,78468950568,80325849480,80323448008],[1455029700,75747611416,75800724744,79408869240,79450208744],[1455030000,78061584744,78086828200,79408869240,79450208744],[1455030300,76551873808,76558786248,80502420152,80555772656],[1455030600,78976651984,79024117856,80502420152,80555772656],[1455030900,77205500816,77239874992,81383849728,81418251656],[1455031200,79134726360,79157940232,81383849728,81418251656],[1455031500,75944794416,75976223992,80519253120,80639668144],[1455031800,78039367064,78155024224,80519253120,80639668144],[1455032100,75048053736,75108285088,87094254400,86956265664],[1455032400,83612504280,83505420952,87094254400,86956265664],[1455032700,77611007488,77605728992,82337636080,82421621344],[1455033000,80424282240,80480684312,82337636080,82421621344],[1455033300,77834526680,77841962456,82271623568,82312101120],[1455033600,80380078016,80413621624,82271623568,82312101120],[1455033900,77725726312,77741505808,82038367296,82048597424],[1455034200,80579684480,80592640384,82038367296,82048597424],[1455034500,78941799968,78963732584,83354989504,83384403496],[1455034800,81659112920,81690068544,83354989504,83384403496],[1455035100,79614978816,79654002384,84061012728,84112503400],[1455035400,81319109240,81422628544,84061012728,84112503400],[1455035700,78132175536,78269462024,90043346272,89845526432],[1455036000,86860219952,86731025488,90043346272,89845526432],[1455036300,81881949680,81893353976,87192422240,87177791384],[1455036600,85202551352,85216681392,87192422240,87177791384],[1455036900,82300036032,82351064120,86358430712,86337364272],[1455037200,84734183696,84728167448,86358430712,86337364272],[1455037500,82530119184,82557994200,86567521000,86595024088],[1455037800,84405025136,84425585512,86567521000,86595024088],[1455038100,81281008192,81289297240,85697560280,85714168048],[1455038400,83701465648,83717783432,85697560280,85714168048],[1455038700,80898070096,80907738008,84765412624,84759589920],[1455039000,82350802760,82411275120,84765412624,84759589920],[1455039300,79177439264,79292610784,87776229768,87533323152],[1455039600,84438792200,84274906568,87776229768,87533323152],[1455039900,78549724672,78553172544,81925422608,81920679312],[1455040200,79949766496,79932208328,81925422608,81920679312],[1455040500,77267822144,77239250936,81905981952,81924753616],[1455040800,80224017288,80228703432,81905981952,81924753616],[1455041100,78482163384,78467573848,83715978272,83732960848],[1455041400,82047186680,82049504712,83715978272,83732960848],[1455041700,80258438480,80240253000,85292992400,85306538432],[1455042000,83413810296,83418343696,85292992400,85306538432],[1455042300,81428595544,81409632992,87294325824,87265064904],[1455042600,84542686976,84556110696,87294325824,87265064904],[1455042900,81260824200,81302015424,92631835024,92404065344],[1455043200,88579304048,88415578104,92631835024,92404065344],[1455043500,82300169080,82273109584,90980048672,90934361200],[1455043800,88223074736,88169093824,90980048672,90934361200],[1455044100,83648466568,83607357136,87484584416,87524644624],[1455044400,85515004648,85535962184,87484584416,87524644624],[1455044700,82887883952,82867679384,87480918088,87464260680],[1455045000,85389782872,85367840408,87480918088,87464260680],[1455045300,82695215336,82659009032,87819277400,87776534136],[1455045600,85799276880,85750662064,87819277400,87776534136],[1455045900,82956304232,82915274168,87351284008,87365162536],[1455046200,85339618168,85366708448,87351284008,87365162536],[1455046500,83677873288,83685005160,95223350016,95031168120],[1455046800,92075294768,91930208000,95223350016,95031168120],[1455047100,86459459104,86414906136,90157818536,90101858144],[1455047400,88625247912,88569182448,90157818536,90101858144],[1455047700,86873025712,86817662784,91426354688,91373491024],[1455048000,90540015112,90493074088,91426354688,91373491024],[1455048300,90511439544,90483851776,95758874616,95746321784],[1455048600,94183383680,94156801912,95758874616,95746321784],[1455048900,92446469312,92387272872,97533544232,97473281496],[1455049200,95441351840,95396379664,97533544232,97473281496],[1455049500,92452981056,92416703416,97242940184,97135505064],[1455049800,94629575704,94602596768,97242940184,97135505064],[1455050100,91431778584,91512032936,103031991896,102790254984],[1455050400,99203271872,99028649952,103031991896,102790254984],[1455050700,92828672840,92791878568,98537589544,98470069704],[1455051000,96364872712,96310789304,98537589544,98470069704],[1455051300,93138510808,93098594384,97417917872,97336156336],[1455051600,95829803544,95766382712,97417917872,97336156336],[1455051900,94672032352,94632776088,101139582280,101054329696],[1455052200,99189459104,99114044000,101139582280,101054329696],[1455052500,96208952040,96153068368,100006583968,99943496128],[1455052800,97300332784,97231034448,100006583968,99943496128],[1455053100,93268881848,93204377016,98565059976,98550048768],[1455053400,95434123176,95429843680,98565059976,98550048768],[1455053700,91390611952,91364997136,102852221704,102649425488],[1455054000,99090777472,98946787968,102852221704,102649425488],[1455054300,92918739992,92884130368,99118705984,99021422888],[1455054600,97517969592,97415310280,99118705984,99021422888],[1455054900,95169439536,95097934760,98397964584,98441098416],[1455055200,96166075432,96178905312,98397964584,98441098416],[1455055500,93086773744,93009284448,98024050744,97886772896],[1455055800,96083081008,95993608880,98024050744,97886772896],[1455056100,93717384928,93704018128,99185850912,99086027360],[1455056400,96827253120,96743157488,99185850912,99086027360],[1455056700,92825047272,92769778664,96953317024,96876401888],[1455057000,94029893568,93975406752,96953317024,96876401888],[1455057300,89703711904,89660065080,99281828936,99078903440],[1455057600,95350204928,95194407384,99281828936,99078903440],[1455057900,87845615464,87797144928,91215632384,91173729952],[1455058200,88773297944,88719101224,91215632384,91173729952],[1455058500,84557073768,84483290360,87746554312,87693106256],[1455058800,85838841760,85783272552,87746554312,87693106256],[1455059100,83060305312,83009165848,86962139632,86935328496],[1455059400,84661293280,84627166768,86962139632,86935328496],[1455059700,81060978744,81002702368,85037370688,84958525720],[1455060000,82597658992,82530203064,85037370688,84958525720],[1455060300,78267503432,78237497456,80924960344,80927611536],[1455060600,78077890864,78067570208,80924960344,80927611536],[1455060900,73798424544,73745453232,81538766648,81433964448],[1455061200,78183656544,78101321192,81538766648,81433964448],[1455061500,71305012504,71265692824,73216050512,73155698864],[1455061800,71453325936,71394328576,73216050512,73155698864],[1455062100,68033672472,67989155808,69940441440,69927056720],[1455062400,68980620904,68947727984,69940441440,69927056720],[1455062700,67390119592,67350429608,69306464512,69377142240],[1455063000,66891074680,66935143792,69306464512,69377142240],[1455063300,61831356248,61820699872,63443232768,63453169424],[1455063600,61856827176,61870061576,63443232768,63453169424],[1455063900,58624875704,58649997128,60333124656,60369663856],[1455064200,58015989928,58043615896,60333124656,60369663856],[1455064500,53880685040,53886141944,59094139848,59095613336],[1455064800,55281784232,55282544824,59094139848,59095613336],[1455065100,48905361704,48912135752,58300635888,58341265472],[1455065400,54657716608,54690801176,58300635888,58341265472],[1455065700,47611427064,47620508784,49777461232,49766015064],[1455066000,49110558680,49083554248,49777461232,49766015064],[1455066300,48339673152,48318968808,50298733184,50388292440],[1455066600,48843940512,48908541744,50298733184,50388292440],[1455066900,46415288440,46426136792,48496692320,48512166296],[1455067200,46649537744,46669275808,48496692320,48512166296],[1455067500,42836521544,42862085072,43818396840,43833645560],[1455067800,42291356536,42298133288,43818396840,43833645560],[1455068100,39642080320,39645777408,43066089832,43138314456],[1455068400,41292661360,41348172256,43066089832,43138314456],[1455068700,37498099336,37515383728,39029098088,39053916952],[1455069000,37872115464,37894065344,39029098088,39053916952],[1455069300,35222042232,35232543256,35612543264,35610130736],[1455069600,34857925880,34847281576,35612543264,35610130736],[1455069900,33739848936,33726763856,35649503672,35685016640],[1455070200,34812435920,34836475512,35649503672,35685016640],[1455070500,33059329448,33069502600,33888125064,33938088152],[1455070800,33187793592,33231962088,33888125064,33938088152],[1455071100,31832850232,31853085776,32613801024,32604908632],[1455071400,31820316752,31810533432,32613801024,32604908632],[1455071700,30723298960,30719529208,33850150424,33877704112],[1455072000,33174779680,33185087744,33850150424,33877704112],[1455072300,31531621488,31528068592,31694711904,31667226344],[1455072600,30360366464,30402474472,31105228480,31164246528],[1455072900,29135284200,29142180560,30266916720,30280157928],[1455073200,29959632928,29969604096,30266916720,30280157928],[1455073500,30202861200,30209903288,32667809816,32686414944],[1455073800,31675619296,31684634024,32667809816,32686414944],[1455074100,29861355920,29859811264,30909246488,30936379464],[1455074400,30530590168,30547225032,30909246488,30936379464],[1455074700,30262904480,30262266528,31853782264,31870615792],[1455075000,30998244400,31005229984,31853782264,31870615792],[1455075300,29780734808,29781267256,32204869784,32261188592],[1455075600,31143441160,31195027896,32204869784,32261188592],[1455075900,29227019528,29256414024,30204904168,30202975040],[1455076200,29106788920,29108831400,30204904168,30202975040],[1455076500,27010476912,27021255944,27919994488,27930502960],[1455076800,27484464720,27483379464,27919994488,27930502960],[1455077100,27310705960,27300962936,29347327424,29381078784],[1455077400,28404316784,28425114304,29347327424,29381078784],[1455077700,26690527424,26693030432,27714515408,27745034728],[1455078000,27379646480,27409549784,27714515408,27745034728],[1455078300,27081276576,27100498304,28249896144,28244776056],[1455078600,27562810480,27559919728,28249896144,28244776056],[1455078900,26656852024,26667098296,29001877616,29042877368],[1455079200,27707917464,27734171648,29001877616,29042877368],[1455079500,25213273872,25217971728,25991300440,26022830616],[1455079800,26063091912,26085549352,26222885848,26225149144],[1455080100,26575177672,26583716520,27481070960,27505746936],[1455080400,26766586712,26788543192,27481070960,27505746936],[1455080700,25833749192,25855062360,27461327448,27496311456],[1455081000,26896122592,26919900776,27461327448,27496311456],[1455081300,26449499192,26453044760,28404808280,28418340944],[1455081600,27562206984,27568212592,28404808280,28418340944],[1455081900,26322588768,26323718200,27786173880,27816053704],[1455082200,27033630392,27050041224,27786173880,27816053704],[1455082500,26042264704,26042598536,28284920504,28331301488],[1455082800,27031148888,27068048728,28284920504,28331301488],[1455083100,24828721936,24844807432,26101218952,26116406448],[1455083400,25643173128,25655252912,26101218952,26116406448],[1455083700,25721702136,25726966312,28420441992,28425429248],[1455084000,28293065784,28291453696,28420441992,28425429248],[1455084300,28548749072,28544571136,29890722760,29916075312],[1455084600,29075301648,29100240576,29890722760,29916075312],[1455084900,28185745496,28209928464,30386426720,30410955240],[1455085200,29499436408,29514404064,30386426720,30410955240],[1455085500,28262904512,28261060688,30081670584,30090475232],[1455085800,28891631816,28905143696,30081670584,30090475232],[1455086100,27328712744,27351533392,31033848248,31053098328],[1455086400,29801009768,29819850344,31033848248,31053098328],[1455086700,28117716472,28133353168,31101656656,31110207288],[1455087000,30440405280,30450270392,31101656656,31110207288],[1455087300,30081772128,30090568560,32944246336,32942771344],[1455087600,33846614104,33845827704,35855110128,35855856392],[1455087900,36641122752,36652470344,38730766072,38770297688],[1455088200,37739576224,37775933000,38730766072,38770297688],[1455088500,36572185248,36593896536,39426283744,39428142144],[1455088800,38691676672,38696633152,39426283744,39428142144],[1455089100,37712378992,37729327128,39594295368,39624207272],[1455089400,39153293072,39182580808,39594295368,39624207272],[1455089700,39721246664,39744386888,45668084568,45673491200],[1455090000,44121416896,44130374520,45668084568,45673491200],[1455090300,42004268904,42017729576,45142435232,45147771176],[1455090600,45036310216,45042742352,45142435232,45147771176],[1455090900,46138112432,46157964864,49695276832,49744320968],[1455091200,48704861744,48745032208,49695276832,49744320968],[1455091500,48320473128,48345623600,53159232144,53196960384],[1455091800,52710264952,52726269864,53159232144,53196960384],[1455092100,53150962544,53146168648,56979286240,57047743280],[1455092400,55731221072,55772544928,56979286240,57047743280],[1455092700,54426649488,54429985104,58166762000,58226240064],[1455093000,56983345856,57038807040,58166762000,58226240064],[1455093300,56367565200,56399948976,63664404272,63645678720],[1455093600,62334278008,62315130936,63664404272,63645678720],[1455093900,60675006752,60676125264,63789009880,63844578816],[1455094200,62792702408,62834612000,63789009880,63844578816],[1455094500,62634565840,62636187904,67929524440,67904078400],[1455094800,67390912600,67391237312,67929524440,67904078400],[1455095100,67616795608,67674495400,71280383688,71338120488],[1455095400,69667481984,69711188312,71280383688,71338120488],[1455095700,68152401296,68169141144,73577208688,73605093008],[1455096000,73637539000,73646417440,73771822616,73738397632],[1455096300,76144234568,76141724952,82346805584,82425122912],[1455096600,78755313152,78859023456,82346805584,82425122912],[1455096900,72377971344,72495890392,78583726208,78539225160],[1455097200,76220505064,76206568656,78583726208,78539225160],[1455097500,72892382512,72929459568,77651714752,77647729648],[1455097800,75920424816,75925632312,77651714752,77647729648],[1455098100,73166972576,73177371168,76043043696,76013519864],[1455098400,74727278608,74735070696,76043043696,76013519864],[1455098700,74679439840,74725785480,82093117824,82026456424],[1455099000,79377992504,79358617984,82093117824,82026456424],[1455099300,75278515280,75356620704,80446354720,80503799336],[1455099600,78189871888,78231038880,80446354720,80503799336],[1455099900,75053022576,75057491952,80066078072,80069306472],[1455100200,78330502504,78319023624,80066078072,80069306472],[1455100500,76431231008,76411266624,83969626808,84042751400],[1455100800,80860915456,80920334192,83969626808,84042751400],[1455101100,75600768920,75638655720,79728309992,79788805752],[1455101400,77875616696,77926698776,79728309992,79788805752],[1455101700,74667556776,74709395728,77451116024,77525860472],[1455102000,76152664216,76195403472,77451116024,77525860472],[1455102300,75640083456,75622772888,82081848960,82097264312],[1455102600,80143787024,80178201664,82081848960,82097264312],[1455102900,76937368032,76996489824,79881250040,79893630512],[1455103200,78071203584,77697806688,79881250040,79893630512],[1455103500,75326487392,74212257776,78740305888,77939339784],[1455103800,76572577008,76002536088,78740305888,77939339784],[1455104100,73976297056,73959697128,83310422928,83384229064],[1455104400,80723821584,80800311840,83310422928,83384229064],[1455104700,76058777496,76117968824,78682295072,78680880232],[1455105000,77604061312,77595811656,78682295072,78680880232],[1455105300,76745626144,76737563376,80944281448,80977796936],[1455105600,79540016752,79579763080,80944281448,80977796936],[1455105900,77121693368,77168260168,78873955408,78902352864],[1455106200,77182871744,77209300000,78873955408,78902352864],[1455106500,75152113784,75175080096,79683667208,79709041680],[1455106800,77767379064,77785911160,79683667208,79709041680],[1455107100,74645194152,74659967360,77862801352,77908708256],[1455107400,75568464040,75601448472,77862801352,77908708256],[1455107700,72868083160,72886997512,82223250040,82299142008],[1455108000,78407664872,78459271736,82223250040,82299142008],[1455108300,72483440456,72488282592,82356528936,82392707704],[1455108600,79125142720,79156133872,82356528936,82392707704],[1455108900,73234816432,73264208720,76639138544,76694538832],[1455109200,75317974680,75349751528,76639138544,76694538832],[1455109500,73422129104,73408859784,76199793280,76206556176],[1455109800,74833009720,74841116576,76199793280,76206556176],[1455110100,73507246784,73536051536,78197852824,78273605720],[1455110400,76514553880,76574953312,78197852824,78273605720],[1455110700,74501727144,74533423688,78960252296,79006017072],[1455111000,76451744120,76499064080,78960252296,79006017072],[1455111300,73728061712,73757663712,84375439136,84323944144],[1455111600,81281609600,81244905736,84375439136,84323944144],[1455111900,75572990240,75588578184,78756997088,78824954760],[1455112200,77446698688,77494767024,78756997088,78824954760],[1455112500,75641053920,75644346552,78841192576,78846889072],[1455112800,77528346544,77544030848,78841192576,78846889072],[1455113100,76389627600,76425186784,81335931024,81364173336],[1455113400,79805622896,79838400960,81335931024,81364173336],[1455113700,77968781504,77998552368,82356853856,82350768424],[1455114000,80789290688,80780431872,82356853856,82350768424],[1455114300,78891791152,78908765656,83495463048,83599504776],[1455114600,80750403200,80847851176,83495463048,83599504776],[1455114900,77133582648,77182791104,87073543992,86994800920],[1455115200,83812114536,83765932608,87073543992,86994800920],[1455115500,78130028008,78175675200,82025585416,82125657448],[1455115800,80582008432,80640741760,82025585416,82125657448],[1455116100,78723038456,78712904960,82323103696,82374502408],[1455116400,80915247808,80954611280,82323103696,82374502408],[1455116700,79081355400,79099183528,82536714696,82568507496],[1455117000,80890245464,80920423824,82536714696,82568507496],[1455117300,78229801792,78264272512,81053190240,81108776096],[1455117600,79262752328,79314149032,81053190240,81108776096],[1455117900,77170627552,77200738928,82119909864,82118749480],[1455118200,79620934360,79659513384,82119909864,82118749480],[1455118500,76333104472,76412302576,84889202888,84788457224],[1455118800,83180456120,83113847592,84889202888,84788457224],[1455119100,79886158344,79913412384,82519833344,82571608192],[1455119400,81013695584,81056940096,82519833344,82571608192],[1455119700,78549004376,78566810808,81969607424,81974675640],[1455120000,80803765232,80819016888,81969607424,81974675640],[1455120300,79665470000,79707782872,84419470744,84468979752],[1455120600,82942155536,82981647736,84419470744,84468979752],[1455120900,81034541680,81053144352,85654204776,85681876448],[1455121200,83680484504,83714219712,85654204776,85681876448],[1455121500,80689081008,80717627544,85410832464,85384649288],[1455121800,82842068856,82876593504,85410832464,85384649288],[1455122100,79178299704,79289577640,87943585232,87810721880],[1455122400,85278283208,85186032192,87943585232,87810721880],[1455122700,80447695280,80463628800,84201653048,84253876816],[1455123000,82760741400,82802889160,84201653048,84253876816],[1455123300,81115544040,81138350624,85837101016,85871373744],[1455123600,84116769824,84139634192,85837101016,85871373744],[1455123900,81770614672,81768628864,86109883816,86111551920],[1455124200,84273554880,84279688464,86109883816,86111551920],[1455124500,81632513912,81668345928,85716888856,85805720400],[1455124800,83926923008,83990908712,85716888856,85805720400],[1455125100,80809080448,80810788432,83449480224,83437326056],[1455125400,81238539888,81282194096,83449480224,83437326056],[1455125700,78550423048,78644821552,87540461712,87343572168],[1455126000,84560414464,84430959304,87540461712,87343572168],[1455126300,78759452976,78778840680,81533164912,81536511280],[1455126600,79582344792,79587321776,81533164912,81536511280],[1455126900,76790440888,76810327456,80911821568,80961696784],[1455127200,80194675288,80234253032,80911821568,80961696784],[1455127500,80618772120,80636489328,86056731656,86078225856],[1455127800,84259428168,84258630536,86056731656,86078225856],[1455128100,81980377832,81942900072,86556780992,86553697232],[1455128400,84331212352,84332111048,86556780992,86553697232],[1455128700,80977995704,80980135824,85029853632,85012091744],[1455129000,82748418832,82757649576,85029853632,85012091744],[1455129300,80124464176,80143058200,89544955680,89368861528],[1455129600,85426733872,85290920992,89544955680,89368861528],[1455129900,79196813376,79159346000,90119798112,90108123240],[1455130200,86717149680,86694229208,90119798112,90108123240],[1455130500,80875158512,80848832032,85478801824,85509964936],[1455130800,84185812848,84205608616,85478801824,85509964936],[1455131100,82951653264,82939516328,87442240168,87413533528],[1455131400,85785736096,85762501224,87442240168,87413533528],[1455131700,83653186032,83650246400,87940314440,87958441760],[1455132000,85965467704,85960110008,87940314440,87958441760],[1455132300,83315561208,83274799400,88306713224,88314605664],[1455132600,86005467664,86026848784,88306713224,88314605664],[1455132900,83117605208,82563186208,92004039896,89122225576],[1455133200,88870003264,86830663040,92004039896,89122225576],[1455133500,82708332144,82669665392,86137873944,86108257144],[1455133800,85083989512,85051626160,86137873944,86108257144],[1455134100,84210923120,84175111864,88680961792,88653575352],[1455134400,87397411160,87364186696,88680961792,88653575352],[1455134700,86305907384,86251328992,91540388568,91464547512],[1455135000,89677040128,89611538504,91540388568,91464547512],[1455135300,86763043848,86722354736,91042535184,91002699760],[1455135600,89593090336,89545662512,91042535184,91002699760],[1455135900,87755264152,87695615968,92304835688,92261637136],[1455136200,89855199096,89846169736,92304835688,92261637136],[1455136500,86514226264,86538488152,96922140704,96749073328],[1455136800,94623288880,94479862440,96922140704,96749073328],[1455137100,90716468696,90655239616,94889004616,94860017272],[1455137400,92831623472,92793175016,94889004616,94860017272],[1455137700,89872594776,89807575424,94647782624,94569673152],[1455138000,93473063432,93393668728,94647782624,94569673152],[1455138300,93054581672,92972099504,99103862144,99020888624],[1455138600,96929200968,96859353256,99103862144,99020888624],[1455138900,93464953936,93416433912,97391754336,97320663640],[1455139200,95502482912,95455103008,97391754336,97320663640],[1455139500,92940134000,92931522808,97826188192,97774435192],[1455139800,95081210896,95052904160,97826188192,97774435192],[1455140100,91654960992,91649110104,103089314424,102959657112],[1455140400,99785748424,99668938896,103089314424,102959657112],[1455140700,93849620504,93755274552,97924635744,97812787104],[1455141000,95736573656,95660115232,97924635744,97812787104],[1455141300,92525968664,92502126856,96938069880,96844693664],[1455141600,95094881616,95009749040,96938069880,96844693664],[1455141900,92499318736,92431743464,96677595448,96607147624],[1455142200,94702145424,94632608352,96677595448,96607147624],[1455142500,91839418200,91775341312,95918257184,95863307072],[1455142800,93865936640,93806444472,95918257184,95863307072],[1455143100,90638504752,90575499240,94393946008,94348900640],[1455143400,91304926992,91246608088,94393946008,94348900640],[1455143700,86652705984,86593916832,95187452904,95240270760],[1455144000,91546337064,91570422112,95187452904,95240270760],[1455144300,84150840304,84102287264,86412735112,86343425824],[1455144600,84515482416,84447580856,86412735112,86343425824],[1455144900,81058226192,81003118544,83724809688,83695852376],[1455145200,82321854224,82286225448,83724809688,83695852376],[1455145500,80354470112,80308018248,84155456888,84122974224],[1455145800,82107256280,82063751096,84155456888,84122974224],[1455146100,78339283192,78282702840,81489877304,81471111008],[1455146400,79236105952,79204999632,81489877304,81471111008],[1455146700,74753427016,74698713088,77448339480,77411045816],[1455147000,74849079056,74820744656,77448339480,77411045816],[1455147300,70490494520,70480457120,77557477800,77535907592],[1455147600,74201101248,74176081336,77557477800,77535907592],[1455147900,67537766792,67519014224,69720494120,69739446704],[1455148200,67619241712,67629905800,69720494120,69739446704],[1455148500,63798111216,63785411752,66609071280,66584266200],[1455148800,65247584096,65229675432,66609071280,66584266200],[1455149100,62914094456,62923836368,65415886656,65457241728],[1455149400,63805546296,63825678296,65415886656,65457241728],[1455149700,60760006688,60756186440,62684830760,62750139448],[1455150000,60614298568,60652411296,62684830760,62750139448],[1455150300,56332716352,56330274544,58087309720,58151786952],[1455150600,55748041904,55799578776,58087309720,58151786952],[1455150900,51428904016,51451077032,55801784264,55827144624],[1455151200,52872380768,52891488480,55801784264,55827144624],[1455151500,47870480240,47878298096,53508032368,53525749472],[1455151800,50993427800,51003866320,53508032368,53525749472],[1455152100,45731937120,45728995688,46877502464,46882877584],[1455152400,45849838616,45852561120,46877502464,46882877584],[1455152700,44300335984,44303425704,46633380120,46654500576],[1455153000,45392295584,45414052200,46633380120,46654500576],[1455153300,42823630200,42838909416,43585365080,43579181024],[1455153600,42717099936,42719834816,43585365080,43579181024],[1455153900,40786328664,40804836392,40957678936,40963448704],[1455154200,39659204088,39669306248,40957678936,40963448704],[1455154500,37643151456,37654335264,41534535936,41511066728],[1455154800,39630263824,39626042712,41534535936,41511066728],[1455155100,36017012536,36047354576,37624900728,37633952952],[1455155400,36754564752,36761805120,37624900728,37633952952],[1455155700,34777674056,34784116168,34876471344,34879801904],[1455156000,34348069112,34352208056,34523623912,34538067144],[1455156300,35260930528,35248338120,38543064592,38545270232],[1455156600,37760872688,37774587872,38543064592,38545270232],[1455156900,36166013432,36206344032,36467787336,36511639848],[1455157200,36034558256,36062698032,36467787336,36511639848],[1455157500,35300957632,35298608200,35894143688,35903325256],[1455157800,34439960328,34447261816,35894143688,35903325256],[1455158100,32465703480,32473644472,36937057248,36962549496],[1455158400,35783091224,35811727264,36937057248,36962549496],[1455158700,34313109952,34344588736,36797489368,36819260736],[1455159000,35580302312,35599101576,36797489368,36819260736],[1455159300,33648403696,33652304568,35405492264,35387931280],[1455159600,34344286432,34339385880,35405492264,35387931280],[1455159900,32495243768,32507659776,33629058136,33615751296],[1455160200,32867967208,32868841392,33629058136,33615751296],[1455160500,31908539016,31934678192,33760867920,33771810400],[1455160800,33764023896,33756368368,33770940184,33771810400],[1455161100,33562147096,33552727160,33770940184,33722527320],[1455161400,30971268888,31031653504,33007063048,33101307240],[1455161700,27281360128,27276981176,29926433400,29953285104],[1455162000,28890771112,28914255288,29926433400,29953285104],[1455162300,27054924120,27068429448,28098101200,28104515896],[1455162600,27236081304,27247524760,28098101200,28104515896],[1455162900,26179205440,26196305256,28314734272,28318022560],[1455163200,28259386984,28262494064,28314734272,28318022560],[1455163500,28764503960,28768203576,30407192144,30413495448],[1455163800,29880725520,29887937168,30407192144,30413495448],[1455164100,28929099736,28944192120,29504769416,29535179736],[1455164400,28763184848,28786172000,29504769416,29535179736],[1455164700,27202253088,27215945088,27440702392,27473608664],[1455165000,26419923024,26429540248,27440702392,27473608664],[1455165300,24817213544,24794207080,27203456096,27249721440],[1455165600,25869957992,25899505032,27203456096,27249721440],[1455165900,23448120568,23453207160,24778743336,24816204312],[1455166200,24250755232,24280922184,24778743336,24816204312],[1455166500,23918224064,23936303688,26073973056,26102242376],[1455166800,26187961760,26205879264,26433937400,26429516776],[1455167100,27405165400,27400626728,29861800952,29856963680],[1455167400,28735907384,28747902464,29861800952,29856963680],[1455167700,26676924680,26712083960,27629837216,27631161016],[1455168000,27131378968,27132697672,27629837216,27631161016],[1455168300,26427913944,26433549144,27384884944,27401648008],[1455168600,26634085552,26645949696,27384884944,27401648008],[1455168900,25970599640,25960492936,29429293952,29377973744],[1455169200,28652634096,28634204200,29429293952,29377973744],[1455169500,26745307416,26792179440,26976683904,27029227824],[1455169800,25697180488,25723844520,26160061024,26192586480],[1455170100,25385998048,25396102064,27125386072,27125595800],[1455170400,26849776304,26850292400,27125386072,27125595800],[1455170700,27011521496,27016456792,28924976112,28939417136],[1455171000,28324805080,28341727280,28924976112,28939417136],[1455171300,27293817920,27310859112,28064978384,28068351544],[1455171600,27429487992,27434657712,28064978384,28068351544],[1455171900,26626837728,26641167008,28113604352,28141745184],[1455172200,27449148832,27459952928,28113604352,28141745184],[1455172500,26916950448,26900785736,30176677648,30198264928],[1455172800,29250446208,29273954672,30176677648,30198264928],[1455173100,28720085952,28738987096,33533863344,33523672424],[1455173400,32326064920,32328712792,33533863344,33523672424],[1455173700,30588736592,30610808776,32927577048,32927247584],[1455173905,32927577048,32927247584,32927577048,32927247584],[1455174216,33318989448,33335985072,33318989448,33335985072]],\"expiration\":5,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(47,'8da95cdb-65b4-44ff-ab5c-1260b67be953','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"hit\",\"key\":\"admin_home_customers\",\"value\":{\"4\":\"AS112\",\"2\":\"HEAnet\",\"5\":\"Imagine\",\"3\":\"PCH DNS\",\"1\":\"VAGRANT IXP\"},\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(48,'8da95cdb-668a-407a-9c87-c18979b81fd2','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::infrastructure001-protoall-bits-week-png.png\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(49,'8da95cdb-672c-4dbf-afe5-0f2d036a2c62','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','0','2019-05-11 14:37:48'),(50,'8da95cdb-6868-4c22-bdf8-58f0e59e3d7c','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::infrastructure001-protoall-bits-week-png.data\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(51,'8da95cdb-6d83-416d-a917-88ecabe0c5a0','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"grapher::infrastructure001-protoall-bits-week-png.data\",\"value\":[[1454455800,81294362816,81285576440,88069944432,88106694760],[1454457600,70861891680,70879651504,80870320288,80939228632],[1454459400,61820900952,61836187968,66968352168,67014678488],[1454461200,53303777096,53305052864,62845305440,62931096184],[1454463000,46965082136,46977456320,49870513416,49862850104],[1454464800,40384565960,40392848672,45678738008,45636379632],[1454466600,38216781752,38224697040,40799594304,40807874304],[1454468400,35944029240,35956335128,39960841976,39987092904],[1454470200,32967694816,32978399560,35519703248,35509715920],[1454472000,30070160152,30082385616,33153776584,33172195320],[1454473800,24414319016,24419567880,26577381368,26585448936],[1454475600,23904858944,23912816624,28590035120,28612257208],[1454477400,30063386920,30074640448,31599770560,31591656360],[1454479200,27785035432,27794444608,32122766120,32086708720],[1454481000,29279816552,29284912832,30922314872,30918322360],[1454482800,30666057464,30679904160,35515780640,35503495920],[1454484600,37357081544,37371358112,41662438288,41650997536],[1454486400,43327042600,43340908536,45779987440,45788160344],[1454488200,50489368880,50505400192,54572934248,54572019256],[1454490000,57200462984,57214479368,61853898576,61778503184],[1454491800,63373343256,63393476680,68516850000,68544855408],[1454493600,69064495536,69074671520,74284354992,74181294872],[1454495400,70013051296,70043538464,73622118040,73634910728],[1454497200,73012892712,73015317200,78255883456,78166086880],[1454499000,73352036232,73383848632,76636250720,76666954016],[1454500800,75620013040,75637879848,80283491816,80223183568],[1454502600,76228595344,76243703864,81054704368,81053125928],[1454504400,75999819824,76021488840,87437191816,87489136552],[1454506200,78292126288,78308144544,83569412240,83555038472],[1454508000,78085704544,78111659880,83185345296,83187726680],[1454509800,78345803896,78368818680,81801939440,81804611224],[1454511600,78013894008,78033177688,85710113408,85601906328],[1454513400,79577108928,79609217552,83162806944,83214050000],[1454515200,81293692760,81305309584,88821967104,88636556016],[1454517000,84816123360,84846219120,88918795392,88935110568],[1454518800,87081432392,87091507432,94021487096,93905920584],[1454520600,85651853808,85688961648,90248297272,90225347048],[1454522400,83505885640,83518601184,90176417144,89989158328],[1454524200,83793986488,83805506328,86665926344,86676329168],[1454526000,85511366136,85497869576,96762520456,96761447928],[1454527800,88476854712,88476454824,92160504896,92161351168],[1454529600,90648352872,90620921072,97641977904,97464214088],[1454531400,94026246008,93904977944,102154981240,102208628152],[1454533200,94198091872,94169919552,105749290568,105506634816],[1454535000,97110596728,97097309832,101634669488,101587174880],[1454536800,95556494568,95519992032,106372441136,106175058520],[1454538600,91696338768,91653353688,97470650608,97394349312],[1454540400,86827737208,86786107000,97104688184,96882082448],[1454542200,79701142008,79671642200,86761395400,86724876184],[1454544000,70123725592,70109586560,79172492272,79062640088],[1454545800,60995768104,61013157120,65948718584,65968776328],[1454547600,51537418600,51541293520,60431968360,60464608536],[1454549400,46418530088,46429869168,49621685936,49624261992],[1454551200,40376559632,40385829512,46871778392,46816799256],[1454553000,36917014256,36924532872,40277913368,40279221896],[1454554800,35410467488,35421283280,38138767224,38152503432],[1454556600,33269377160,33277090248,36432315808,36427636560],[1454558400,30547892968,30557396104,34193108352,34194383304],[1454560200,31117152736,31126264400,33853356856,33868214264],[1454562000,27903115128,27911278000,30223005072,30198625336],[1454563800,29934257672,29944865160,31506004712,31492730776],[1454565600,29441624672,29452300504,31908599968,31920348632],[1454567400,30348890248,30362244816,31980203864,32017690152],[1454569200,32179799496,32194323696,38244244752,38223516480],[1454571000,39366868856,39381515616,44505251488,44497151872],[1454572800,45996071472,46009294272,50062178904,50060593008],[1454574600,54807359568,54826227872,58070999064,58095039016],[1454576400,58276891720,58291351432,62305218472,62272611040],[1454578200,65252116728,65276435440,68656748056,68691325488],[1454580000,70086442808,70100528008,75931323424,75882340384],[1454581800,71930873456,71954324240,76252227928,76232277096],[1454583600,73408477528,73422544360,80465551304,80381818024],[1454585400,73455023456,73476718576,76442831336,76449727248],[1454587200,73239310816,73256046544,78661128224,78660634608],[1454589000,74237058536,74259646000,77340780208,77300023376],[1454590800,74964145272,74979110536,82920864392,82946083856],[1454592600,76809569096,76824240448,80064745264,80073796136],[1454594400,78100494176,78123839856,84511234640,84459278928],[1454596200,80466829544,80497494000,85060051544,85097480376],[1454598000,79293975272,79302495264,86915567736,86794316736],[1454599800,80392108824,80429461136,84012543440,83991247112],[1454601600,81984696224,82000466944,90237052568,90099949968],[1454603400,83126675616,83167204552,87233539496,87259043504],[1454605200,86443378304,86456597808,93991535760,93760894992],[1454607000,84513029168,84541310664,87859023048,87861768752],[1454608800,82589188984,82590017384,89199089152,88960602080],[1454610600,81692031704,81710528048,87764791192,87737411496],[1454612400,81436198776,81425187960,90264573040,90276420992],[1454614200,84071655264,84065463216,88066380704,88019011000],[1454616000,86614534032,86575647704,92804890792,92501827776],[1454617800,89907786856,89891653920,94556947296,94526956864],[1454619600,90940322576,90902602992,97276698920,97074876920],[1454621400,91819805536,91790983824,96481755968,96440473776],[1454623200,92839727080,92804172520,100117498896,99991715848],[1454625000,92579642360,92534196984,97562440600,97511791880],[1454626800,87659012520,87616060016,96628441184,96517502616],[1454628600,80090564440,80075514848,86851725672,86812310264],[1454630400,71545922224,71554291416,80467583936,80437053704],[1454632200,62981815624,62994380352,68179041600,68182648104],[1454634000,53779200528,53789997832,60927596696,60876776144],[1454635800,47277584224,47286596712,50927426888,50909429640],[1454637600,41026057808,41039247616,46214662192,46217699320],[1454639400,39383384936,39393919384,41802158416,41810225840],[1454641200,38794575608,38806824920,42883686072,42879516648],[1454643000,35771532760,35782286024,39361694576,39420423120],[1454644800,32261048376,32276826344,34701189880,34725474368],[1454646600,29589233832,29600958336,31761446336,31781482656],[1454648400,29002513576,29014087848,32288004048,32278281648],[1454650200,29895545880,29909371168,31954177568,31968767016],[1454652000,27768558936,27777968400,29728539720,29759542872],[1454653800,29464792272,29472097472,31411361648,31421028200],[1454655600,30423344512,30440973616,35401609136,35419534864],[1454657400,36985723216,36999985512,41006096752,41038368760],[1454659200,44306848280,44322889208,48474948920,48501553440],[1454661000,52106017048,52127083488,56038247120,56071574888],[1454662800,58431305184,58442361528,63086069168,63100869216],[1454664600,65132835200,65154774240,70261450840,70274799136],[1454666400,69027263272,69045404928,73692640008,73615980072],[1454668200,74354528840,74374535976,78701134464,78744029528],[1454670000,74035681200,74059215200,80040231704,80019278488],[1454671800,76155425048,76172657296,79529553000,79586814032],[1454673600,77201223000,77208283480,84144927920,84061288616],[1454675400,76618118088,76645229032,80326782152,80357024160],[1454677200,79549706568,79571666872,89202983328,89164870240],[1454679000,77138576104,77160551048,81251421304,81218265112],[1454680800,77066053152,77082186408,84314591488,84319207408],[1454682600,78949139680,78976938696,83071722112,83113883416],[1454684400,79057866040,79081264416,86101271528,85996828208],[1454686200,79144830352,79178862640,84364029176,84368287792],[1454688000,83198448968,83213494168,90495799128,90247050520],[1454689800,84953897344,84987291232,88368824480,88403817168],[1454691600,85091261696,85110719544,92081300744,91926442608],[1454693400,83391813912,83418296216,86807594640,86801574296],[1454695200,81663347184,81682287888,88283661112,88179522120],[1454697000,81375857456,81407486760,84702708408,84711773792],[1454698800,81688933936,81707529960,88450534256,88293906176],[1454700600,82318779800,82342788136,85426675872,85443623304],[1454702400,84787308568,84809255376,91408951816,91308697504],[1454704200,88754271928,88768685400,92482828864,92560383840],[1454706000,90803521808,90832576440,97675678448,97722071904],[1454707800,91612321776,91643840680,95574520072,95619477240],[1454709600,89608557896,89611301280,96616261504,96506777952],[1454711400,89500657448,89537073720,93721649416,93832095160],[1454713200,86665768776,86681079080,95677260024,95611031704],[1454715000,81781610280,81795772496,87560692520,87544151232],[1454716800,76014803152,76035591240,84960518456,85013712240],[1454718600,70021784376,70030907080,75041417936,75036067680],[1454720400,61331252176,61346404144,69398993992,69565920552],[1454722200,53780100328,53796932144,57557002832,57597809896],[1454724000,46353875272,46365433512,51565310088,51524669976],[1454725800,41243110496,41253014344,43854038928,43880993672],[1454727600,36769041240,36781714640,41075537720,41118023992],[1454729400,33497848976,33508769408,36320000176,36326492688],[1454731200,31045760368,31055440832,34052138040,34054560520],[1454733000,29848131368,29861875104,31416929104,31444169152],[1454734800,27358375856,27369089312,29617380512,29618447760],[1454736600,29378137528,29388613800,31919808512,31939410176],[1454738400,27611983816,27622568328,33403838184,33425163720],[1454740200,27089762760,27099282832,28703305824,28713841776],[1454742000,28737630024,28751976696,32431573736,32458045776],[1454743800,30756620824,30770650680,33567867896,33595693952],[1454745600,35672584032,35679646240,39091242744,39096327632],[1454747400,43631690192,43655557736,47215009296,47232414912],[1454749200,50212727384,50220092648,53546642672,53565627840],[1454751000,56257103664,56281898760,59389403912,59409253128],[1454752800,60004430168,60017699272,63455192864,63471363856],[1454754600,62144861376,62168576608,64350585784,64353294504],[1454756400,63882762576,63894235760,68615160216,68473431120],[1454758200,65726957088,65751822008,68794827056,68795088240],[1454760000,67498977400,67514699648,72489149360,72382598112],[1454761800,69373478600,69398247056,72178800752,72203651264],[1454763600,68556996040,68574036776,77100602488,77117762960],[1454765400,68938490880,68965160696,72240949736,72275569424],[1454767200,70057915504,70074033808,75362620256,75252930240],[1454769000,71577845848,71599414120,74736074312,74750242520],[1454770800,73959031800,73972174216,79940258664,79881389584],[1454772600,77195529776,77223553840,80466923752,80459406832],[1454774400,78513721400,78528805352,84462663952,84454338640],[1454776200,78969925656,79007048192,82615809008,82613047968],[1454778000,78719323720,78736046632,84185175488,84099313736],[1454779800,80959915944,80984503856,84152050328,84139376864],[1454781600,81118758912,81139350208,88388113096,88325246408],[1454783400,82487747352,82507356800,86789030376,86799310160],[1454785200,81723737320,81751659136,88420317368,88423779616],[1454787000,81514561576,81556262880,84660799584,84715692344],[1454788800,82846652816,82862919008,89335489944,89178351248],[1454790600,84816813464,84848066832,89194987320,89200051072],[1454792400,85311473904,85321879280,92615473608,92494265448],[1454794200,87908701736,87941461984,92803561328,92879680872],[1454796000,88546960872,88564808736,96976257264,96808990608],[1454797800,86625768440,86649160472,92563798240,92602694544],[1454799600,83144457928,83161564240,92505249520,92422916056],[1454801400,77998634264,78026186888,82895489248,82973338632],[1454803200,72780651152,72784481088,80267213200,80111372928],[1454805000,68267004384,68287852368,73934205232,73996117104],[1454806800,60477147464,60481616192,67816176208,67737847912],[1454808600,54907568168,54926146008,61041737280,61115098312],[1454810400,47030399904,47031295600,53222990008,53229097016],[1454812200,44998669392,45016382048,47951635440,48021841232],[1454814000,40884028328,40896067808,44915492496,44950109872],[1454815800,35649389592,35661029072,40349572016,40388050600],[1454817600,32954768824,32967110376,37344349656,37381316752],[1454819400,30661975616,30672840912,33084184992,33114596904],[1454821200,28931749064,28940710024,31144626528,31169671712],[1454823000,29538408176,29550405688,32015687992,32025484304],[1454824800,27059677136,27065867048,30969181024,30971519128],[1454826600,27703711848,27718478784,29947035176,29982042216],[1454828400,28359654344,28371151528,33329150880,33348586192],[1454830200,28960660032,28975635304,30932819896,30923375600],[1454832000,31942829064,31950467664,35128894512,35143944800],[1454833800,40435342240,40458916200,46566526872,46602123648],[1454835600,47722869232,47736410976,51900868192,51949814040],[1454837400,55738901680,55760465424,60708801920,60730316856],[1454839200,61086942328,61096311736,65518079544,65369489728],[1454841000,62854760040,62876951528,67179225960,67188450584],[1454842800,65180849360,65190971552,69487103248,69495334440],[1454844600,68553563664,68580929128,71955718784,72003619200],[1454846400,70157175488,70166860976,75890306800,75721886168],[1454848200,68443916048,68461305728,72001921280,72062211600],[1454850000,69710763688,69725118880,75714028376,75615794392],[1454851800,71449959712,71476562496,75005339288,75011123528],[1454853600,72142666040,72157543400,78179738488,78095240208],[1454855400,73705399160,73727919000,77932969768,77956928000],[1454857200,76342537920,76351363864,81806770088,81712828104],[1454859000,81822434792,81830423496,86922176896,86935487032],[1454860800,83265260200,83294779912,90762971896,90889921160],[1454862600,86888626304,86897184032,91536147744,91555520368],[1454864400,86125819144,86166091184,95301490704,95464561840],[1454866200,81847453152,81879707776,85640523488,85704200272],[1454868000,82974618880,82997094144,91062651744,90990369592],[1454869800,83241200320,83269713016,86637064912,86668095288],[1454871600,85909254528,85921878056,98680720360,98691446280],[1454873400,88315410392,88344324992,92066529048,92111042544],[1454875200,89900599928,89915385160,98334423920,98177988568],[1454877000,90367178048,90388415552,94892186864,94925800224],[1454878800,90345120128,90338759160,99092140584,98857492400],[1454880600,93315708416,93335305136,97619499600,97647244152],[1454882400,93470750928,93451614312,103445624824,103253903136],[1454884200,91365124328,91353232704,96256066760,96269899144],[1454886000,84740946320,84727951480,94223274368,94089304408],[1454887800,77301934320,77305954168,83973991760,83957138472],[1454889600,67836065952,67843247336,76283912256,76279249720],[1454891400,60934372800,60948731792,66883576352,66917665880],[1454893200,50892264016,50898265872,59038233416,59064762560],[1454895000,45922650856,45937474288,49353227456,49364606376],[1454896800,38668500408,38675954576,43880770640,43842198568],[1454898600,36530061880,36535207000,39964861504,39955435128],[1454900400,32756280120,32773812648,37160851880,37251710728],[1454902200,31586843792,31601126800,33820380192,33846207712],[1454904000,30634813184,30646727960,32867181960,32849335512],[1454905800,30817581032,30831990736,33498671352,33509499248],[1454907600,28508081712,28519002072,31850589200,31899893384],[1454909400,28514713576,28526004896,30218647944,30208335400],[1454911200,27370284368,27377324168,30896659152,30919054968],[1454913000,26343020464,26353420256,27614120144,27632757200],[1454914800,28320753128,28330517200,32463105424,32485427296],[1454916600,36234435696,36250292520,41030791240,41052216360],[1454918400,43479495656,43494124368,47772260344,47782113784],[1454920200,52311196464,52336421944,56167824344,56210392200],[1454922000,58119150632,58124864776,62430923456,62387087576],[1454923800,66945033720,66969680008,71456705080,71495807984],[1454925600,72319675408,72334758816,78233082616,78207399488],[1454927400,74350189800,74384333984,77351525072,77402259248],[1454929200,75018344400,75026661704,80539634832,80449555392],[1454931000,76143645984,76170238048,80474782448,80425504456],[1454932800,77568531568,77584673824,83851924176,83762926232],[1454934600,78703458696,78723356896,82353935056,82345517744],[1454936400,80538368480,80558048424,87906104496,87855474432],[1454938200,79329207168,79353015192,84701163736,84686792720],[1454940000,78059302936,78075453048,84953279704,84842232016],[1454941800,79648084088,79678243608,83154753848,83192930704],[1454943600,79861005040,79879672944,87632547432,87518351384],[1454945400,80216070024,80245069336,83536516120,83516951152],[1454947200,81035854216,81051648528,89207838304,89036841512],[1454949000,83888855984,83930306664,88203533032,88244742448],[1454950800,86290247128,85940388464,95481893728,92886730448],[1454952600,84341445440,84368681480,87781001968,87784991792],[1454954400,82526607968,82537352144,91065452488,90880267512],[1454956200,83205070744,83223681720,86916244952,86911430432],[1454958000,85974861696,85955119024,94870145824,94884743488],[1454959800,87590515256,87580183840,91873256184,91847332312],[1454961600,90259693744,90226306368,97502486504,97286684704],[1454963400,92742870824,92719081048,97924667472,97894228304],[1454965200,93098099000,93061335312,101107937352,100965391688],[1454967000,95236527320,95191469936,99685203416,99595539920],[1454968800,95407964936,95359657200,103500551976,103368779344],[1454970600,93488040720,93432792688,97732670264,97671919936],[1454972400,87095861600,87063618224,97213971000,97203384152],[1454974200,73853506040,73873037816,80612326656,80619506224],[1454976000,63716405648,63721648896,72607502488,72412285632],[1454977800,55054658984,55067690976,60311020072,60322670728],[1454979600,48498144600,48501415480,56643262584,56658586056],[1454981400,44272526792,44284996752,47014808008,47033847048],[1454983200,38750026464,38763359064,44346460304,44351784144],[1454985000,34199270672,34212675024,37762416896,37789498768],[1454986800,32231608760,32244283600,35247101672,35284426032],[1454988600,31305485912,31317945960,33665030320,33646376688],[1454990400,29637662360,29653914640,33404294208,33487706688],[1454992200,27895272080,27902689280,29698939560,29707282832],[1454994000,26896945440,26911209528,30098653608,30184091408],[1454994300,26997528560,27016147096,29243767472,29273266224],[1454994600,28555356880,28572670008,29243767472,29273266224],[1454994900,27632946808,27626263200,29281823888,29283592392],[1454995200,28731024264,28736591960,29281823888,29283592392],[1454995500,28239276896,28264665096,30242587176,30297833464],[1454995800,29533703312,29563942856,30242587176,30297833464],[1454996100,28845010360,28834004648,32149475432,32193755264],[1454996400,30900827840,30941132192,32149475432,32193755264],[1454996700,28546890864,28571254344,29422495944,29427928056],[1454997000,28831344952,28837382528,29422495944,29427928056],[1454997300,27780462168,27792883232,28399202632,28424414000],[1454997600,27875247016,27897542896,28399202632,28424414000],[1454997900,27125257656,27139617184,28120455504,28130514152],[1454998200,27559443008,27567579760,28120455504,28130514152],[1454998500,26993432256,26999999304,28678699064,28692005056],[1454998800,27947540904,27963277816,28678699064,28692005056],[1454999100,27381309880,27404034840,29982390400,30009595776],[1454999400,29305953504,29324062248,29982390400,30009595776],[1454999700,28561779064,28565849416,31098570112,31122463784],[1455000000,29725569936,29737944008,31098570112,31122463784],[1455000300,28398652928,28396237848,36961402232,37011148112],[1455000600,34289813784,34327101120,36961402232,37011148112],[1455000900,29176750640,29182875872,30881229456,30876170320],[1455001200,30625323256,30632641824,30881229456,30876170320],[1455001500,31077556528,31099358712,33703653712,33693491072],[1455001800,33127250424,33129963312,33703653712,33693491072],[1455002100,33256848936,33278918304,36908125928,36907790360],[1455002400,36710826736,36717719952,36908125928,36907790360],[1455002700,37089449752,37102290152,39245528432,39232063640],[1455003000,38450960760,38460627608,39245528432,39232063640],[1455003300,38228692536,38274212720,43842677688,43835296864],[1455003600,42834358024,42835448160,43842677688,43835296864],[1455003900,41548202080,41564877552,43874263672,43883895480],[1455004200,43079733976,43094350272,43874263672,43883895480],[1455004500,42230153856,42251023712,44747117736,44754653136],[1455004800,44701558904,44713942656,44747117736,44754653136],[1455005100,45672205592,45700062048,48526541432,48566391112],[1455005400,47718891360,47749777232,48526541432,48566391112],[1455005700,47123721624,47142526784,50174802048,50212914120],[1455006000,49678311112,49707115736,50174802048,50212914120],[1455006300,49624524048,49632136032,52373118320,52379485736],[1455006600,51113208984,51152829800,52373118320,52379485736],[1455006900,50206778984,50270220832,56759019024,56649152680],[1455007200,54998899416,54923776480,56759019024,56649152680],[1455007500,52410440416,52421813464,55470254240,55510774624],[1455007800,54903742760,54937434824,55470254240,55510774624],[1455008100,55151866848,55170196080,58933399960,58950114240],[1455008400,58432274040,58443166808,58933399960,58950114240],[1455008700,59654960648,59654018912,65678837720,65679798584],[1455009000,64955535872,64957204376,65678837720,65679798584],[1455009300,64503760904,64525826616,67370427576,67440163656],[1455009600,65973905624,66028283096,67370427576,67440163656],[1455009900,64637866160,64653405624,68880974400,68882106936],[1455010200,66932647592,66939890728,68880974400,68882106936],[1455010500,64672315208,64696440552,71937087448,71973833704],[1455010800,69721421584,69757115608,71937087448,71973833704],[1455011100,66038508624,66054881008,69249529656,69222240296],[1455011400,67849782152,67849005720,69249529656,69222240296],[1455011700,66222551440,66265585960,70049701960,70053646392],[1455012000,69242723760,69258310048,70049701960,70053646392],[1455012300,68932630536,68957902528,72691549048,72675776704],[1455012600,71182860808,71184290240,72691549048,72675776704],[1455012900,69068109560,69115498784,72318656504,72386103784],[1455013200,70374610608,70416969352,72318656504,72386103784],[1455013500,67595984768,67600373168,71712579944,71764481352],[1455013800,69746853992,69805480536,71712579944,71764481352],[1455014100,67785133832,67831034600,77050264040,76989853144],[1455014400,74095400816,74063279696,77050264040,76989853144],[1455014700,69105139064,69138139416,72728835216,72772489840],[1455015000,70908607104,70940345456,72728835216,72772489840],[1455015300,68213344392,68222541808,71818885632,71838670352],[1455015600,70676665504,70692772656,71818885632,71838670352],[1455015900,69905450360,69915335024,74802386552,74817927352],[1455016200,73441907160,73460362144,74802386552,74817927352],[1455016500,71484836072,71513912792,74332375240,74372445864],[1455016800,73075314264,73108008144,74332375240,74372445864],[1455017100,71589785384,71604165560,75196148816,75206179992],[1455017400,72904394000,72944930688,75196148816,75206179992],[1455017700,70228145520,70293697896,80365006672,80254065720],[1455018000,77526182768,77461481752,80365006672,80254065720],[1455018300,73187682328,73223005104,77783809336,77819756640],[1455018600,75942398672,75977052760,77783809336,77819756640],[1455018900,73412768448,73444890664,77187889088,77220687800],[1455019200,75721614248,75741161040,77187889088,77220687800],[1455019500,74435880264,74434527648,79346702040,79365472488],[1455019800,78171472200,78201439088,79346702040,79365472488],[1455020100,76821345608,76865794920,80130484664,80147642440],[1455020400,77874256264,77899380648,80130484664,80147642440],[1455020700,74501618800,74529626776,78813618648,78802805768],[1455021000,75950236496,75968816048,78813618648,78802805768],[1455021300,72414236768,72463991800,82769117576,82692514960],[1455021600,78001062704,77966150128,82769117576,82692514960],[1455021900,71146516504,71200188488,90311723920,90337707184],[1455022200,85057768560,85068444408,90311723920,90337707184],[1455022500,75520180104,75528993584,80305264600,80396943128],[1455022800,78231837360,78301885704,80305264600,80396943128],[1455023100,75113336952,75135626304,79091962720,79115277288],[1455023400,77093653296,77110413104,79091962720,79115277288],[1455023700,74308783296,74326282264,78729876472,78788127552],[1455024000,76709864016,76754922440,78729876472,78788127552],[1455024300,73956795784,73977676520,78590860400,78625529936],[1455024600,75868316320,75913141000,78590860400,78625529936],[1455024900,72697970752,72734189296,83882294008,83795068496],[1455025200,80927458312,80873705480,83882294008,83795068496],[1455025500,75688031048,75721058776,78974151696,79042871720],[1455025800,77546967600,77594913040,78974151696,79042871720],[1455026100,75590605648,75593481704,79103746016,79113650320],[1455026400,77427030504,77441388264,79103746016,79113650320],[1455026700,75349445784,75375200184,79747886808,79777586824],[1455027000,78378562768,78412239040,79747886808,79777586824],[1455027300,77086570592,77134779552,81882227280,81945172232],[1455027600,79981209312,80028380584,81882227280,81945172232],[1455027900,76986501440,76992791272,80451228080,80443642392],[1455028200,77950953096,77971532360,80451228080,80443642392],[1455028500,74881495088,74943282960,84798178136,84773715272],[1455028800,81627885152,81614522824,84798178136,84773715272],[1455029100,76319217272,76326214024,80325849480,80323448008],[1455029400,78452546352,78468950568,80325849480,80323448008],[1455029700,75747611416,75800724744,79408869240,79450208744],[1455030000,78061584744,78086828200,79408869240,79450208744],[1455030300,76551873808,76558786248,80502420152,80555772656],[1455030600,78976651984,79024117856,80502420152,80555772656],[1455030900,77205500816,77239874992,81383849728,81418251656],[1455031200,79134726360,79157940232,81383849728,81418251656],[1455031500,75944794416,75976223992,80519253120,80639668144],[1455031800,78039367064,78155024224,80519253120,80639668144],[1455032100,75048053736,75108285088,87094254400,86956265664],[1455032400,83612504280,83505420952,87094254400,86956265664],[1455032700,77611007488,77605728992,82337636080,82421621344],[1455033000,80424282240,80480684312,82337636080,82421621344],[1455033300,77834526680,77841962456,82271623568,82312101120],[1455033600,80380078016,80413621624,82271623568,82312101120],[1455033900,77725726312,77741505808,82038367296,82048597424],[1455034200,80579684480,80592640384,82038367296,82048597424],[1455034500,78941799968,78963732584,83354989504,83384403496],[1455034800,81659112920,81690068544,83354989504,83384403496],[1455035100,79614978816,79654002384,84061012728,84112503400],[1455035400,81319109240,81422628544,84061012728,84112503400],[1455035700,78132175536,78269462024,90043346272,89845526432],[1455036000,86860219952,86731025488,90043346272,89845526432],[1455036300,81881949680,81893353976,87192422240,87177791384],[1455036600,85202551352,85216681392,87192422240,87177791384],[1455036900,82300036032,82351064120,86358430712,86337364272],[1455037200,84734183696,84728167448,86358430712,86337364272],[1455037500,82530119184,82557994200,86567521000,86595024088],[1455037800,84405025136,84425585512,86567521000,86595024088],[1455038100,81281008192,81289297240,85697560280,85714168048],[1455038400,83701465648,83717783432,85697560280,85714168048],[1455038700,80898070096,80907738008,84765412624,84759589920],[1455039000,82350802760,82411275120,84765412624,84759589920],[1455039300,79177439264,79292610784,87776229768,87533323152],[1455039600,84438792200,84274906568,87776229768,87533323152],[1455039900,78549724672,78553172544,81925422608,81920679312],[1455040200,79949766496,79932208328,81925422608,81920679312],[1455040500,77267822144,77239250936,81905981952,81924753616],[1455040800,80224017288,80228703432,81905981952,81924753616],[1455041100,78482163384,78467573848,83715978272,83732960848],[1455041400,82047186680,82049504712,83715978272,83732960848],[1455041700,80258438480,80240253000,85292992400,85306538432],[1455042000,83413810296,83418343696,85292992400,85306538432],[1455042300,81428595544,81409632992,87294325824,87265064904],[1455042600,84542686976,84556110696,87294325824,87265064904],[1455042900,81260824200,81302015424,92631835024,92404065344],[1455043200,88579304048,88415578104,92631835024,92404065344],[1455043500,82300169080,82273109584,90980048672,90934361200],[1455043800,88223074736,88169093824,90980048672,90934361200],[1455044100,83648466568,83607357136,87484584416,87524644624],[1455044400,85515004648,85535962184,87484584416,87524644624],[1455044700,82887883952,82867679384,87480918088,87464260680],[1455045000,85389782872,85367840408,87480918088,87464260680],[1455045300,82695215336,82659009032,87819277400,87776534136],[1455045600,85799276880,85750662064,87819277400,87776534136],[1455045900,82956304232,82915274168,87351284008,87365162536],[1455046200,85339618168,85366708448,87351284008,87365162536],[1455046500,83677873288,83685005160,95223350016,95031168120],[1455046800,92075294768,91930208000,95223350016,95031168120],[1455047100,86459459104,86414906136,90157818536,90101858144],[1455047400,88625247912,88569182448,90157818536,90101858144],[1455047700,86873025712,86817662784,91426354688,91373491024],[1455048000,90540015112,90493074088,91426354688,91373491024],[1455048300,90511439544,90483851776,95758874616,95746321784],[1455048600,94183383680,94156801912,95758874616,95746321784],[1455048900,92446469312,92387272872,97533544232,97473281496],[1455049200,95441351840,95396379664,97533544232,97473281496],[1455049500,92452981056,92416703416,97242940184,97135505064],[1455049800,94629575704,94602596768,97242940184,97135505064],[1455050100,91431778584,91512032936,103031991896,102790254984],[1455050400,99203271872,99028649952,103031991896,102790254984],[1455050700,92828672840,92791878568,98537589544,98470069704],[1455051000,96364872712,96310789304,98537589544,98470069704],[1455051300,93138510808,93098594384,97417917872,97336156336],[1455051600,95829803544,95766382712,97417917872,97336156336],[1455051900,94672032352,94632776088,101139582280,101054329696],[1455052200,99189459104,99114044000,101139582280,101054329696],[1455052500,96208952040,96153068368,100006583968,99943496128],[1455052800,97300332784,97231034448,100006583968,99943496128],[1455053100,93268881848,93204377016,98565059976,98550048768],[1455053400,95434123176,95429843680,98565059976,98550048768],[1455053700,91390611952,91364997136,102852221704,102649425488],[1455054000,99090777472,98946787968,102852221704,102649425488],[1455054300,92918739992,92884130368,99118705984,99021422888],[1455054600,97517969592,97415310280,99118705984,99021422888],[1455054900,95169439536,95097934760,98397964584,98441098416],[1455055200,96166075432,96178905312,98397964584,98441098416],[1455055500,93086773744,93009284448,98024050744,97886772896],[1455055800,96083081008,95993608880,98024050744,97886772896],[1455056100,93717384928,93704018128,99185850912,99086027360],[1455056400,96827253120,96743157488,99185850912,99086027360],[1455056700,92825047272,92769778664,96953317024,96876401888],[1455057000,94029893568,93975406752,96953317024,96876401888],[1455057300,89703711904,89660065080,99281828936,99078903440],[1455057600,95350204928,95194407384,99281828936,99078903440],[1455057900,87845615464,87797144928,91215632384,91173729952],[1455058200,88773297944,88719101224,91215632384,91173729952],[1455058500,84557073768,84483290360,87746554312,87693106256],[1455058800,85838841760,85783272552,87746554312,87693106256],[1455059100,83060305312,83009165848,86962139632,86935328496],[1455059400,84661293280,84627166768,86962139632,86935328496],[1455059700,81060978744,81002702368,85037370688,84958525720],[1455060000,82597658992,82530203064,85037370688,84958525720],[1455060300,78267503432,78237497456,80924960344,80927611536],[1455060600,78077890864,78067570208,80924960344,80927611536],[1455060900,73798424544,73745453232,81538766648,81433964448],[1455061200,78183656544,78101321192,81538766648,81433964448],[1455061500,71305012504,71265692824,73216050512,73155698864],[1455061800,71453325936,71394328576,73216050512,73155698864],[1455062100,68033672472,67989155808,69940441440,69927056720],[1455062400,68980620904,68947727984,69940441440,69927056720],[1455062700,67390119592,67350429608,69306464512,69377142240],[1455063000,66891074680,66935143792,69306464512,69377142240],[1455063300,61831356248,61820699872,63443232768,63453169424],[1455063600,61856827176,61870061576,63443232768,63453169424],[1455063900,58624875704,58649997128,60333124656,60369663856],[1455064200,58015989928,58043615896,60333124656,60369663856],[1455064500,53880685040,53886141944,59094139848,59095613336],[1455064800,55281784232,55282544824,59094139848,59095613336],[1455065100,48905361704,48912135752,58300635888,58341265472],[1455065400,54657716608,54690801176,58300635888,58341265472],[1455065700,47611427064,47620508784,49777461232,49766015064],[1455066000,49110558680,49083554248,49777461232,49766015064],[1455066300,48339673152,48318968808,50298733184,50388292440],[1455066600,48843940512,48908541744,50298733184,50388292440],[1455066900,46415288440,46426136792,48496692320,48512166296],[1455067200,46649537744,46669275808,48496692320,48512166296],[1455067500,42836521544,42862085072,43818396840,43833645560],[1455067800,42291356536,42298133288,43818396840,43833645560],[1455068100,39642080320,39645777408,43066089832,43138314456],[1455068400,41292661360,41348172256,43066089832,43138314456],[1455068700,37498099336,37515383728,39029098088,39053916952],[1455069000,37872115464,37894065344,39029098088,39053916952],[1455069300,35222042232,35232543256,35612543264,35610130736],[1455069600,34857925880,34847281576,35612543264,35610130736],[1455069900,33739848936,33726763856,35649503672,35685016640],[1455070200,34812435920,34836475512,35649503672,35685016640],[1455070500,33059329448,33069502600,33888125064,33938088152],[1455070800,33187793592,33231962088,33888125064,33938088152],[1455071100,31832850232,31853085776,32613801024,32604908632],[1455071400,31820316752,31810533432,32613801024,32604908632],[1455071700,30723298960,30719529208,33850150424,33877704112],[1455072000,33174779680,33185087744,33850150424,33877704112],[1455072300,31531621488,31528068592,31694711904,31667226344],[1455072600,30360366464,30402474472,31105228480,31164246528],[1455072900,29135284200,29142180560,30266916720,30280157928],[1455073200,29959632928,29969604096,30266916720,30280157928],[1455073500,30202861200,30209903288,32667809816,32686414944],[1455073800,31675619296,31684634024,32667809816,32686414944],[1455074100,29861355920,29859811264,30909246488,30936379464],[1455074400,30530590168,30547225032,30909246488,30936379464],[1455074700,30262904480,30262266528,31853782264,31870615792],[1455075000,30998244400,31005229984,31853782264,31870615792],[1455075300,29780734808,29781267256,32204869784,32261188592],[1455075600,31143441160,31195027896,32204869784,32261188592],[1455075900,29227019528,29256414024,30204904168,30202975040],[1455076200,29106788920,29108831400,30204904168,30202975040],[1455076500,27010476912,27021255944,27919994488,27930502960],[1455076800,27484464720,27483379464,27919994488,27930502960],[1455077100,27310705960,27300962936,29347327424,29381078784],[1455077400,28404316784,28425114304,29347327424,29381078784],[1455077700,26690527424,26693030432,27714515408,27745034728],[1455078000,27379646480,27409549784,27714515408,27745034728],[1455078300,27081276576,27100498304,28249896144,28244776056],[1455078600,27562810480,27559919728,28249896144,28244776056],[1455078900,26656852024,26667098296,29001877616,29042877368],[1455079200,27707917464,27734171648,29001877616,29042877368],[1455079500,25213273872,25217971728,25991300440,26022830616],[1455079800,26063091912,26085549352,26222885848,26225149144],[1455080100,26575177672,26583716520,27481070960,27505746936],[1455080400,26766586712,26788543192,27481070960,27505746936],[1455080700,25833749192,25855062360,27461327448,27496311456],[1455081000,26896122592,26919900776,27461327448,27496311456],[1455081300,26449499192,26453044760,28404808280,28418340944],[1455081600,27562206984,27568212592,28404808280,28418340944],[1455081900,26322588768,26323718200,27786173880,27816053704],[1455082200,27033630392,27050041224,27786173880,27816053704],[1455082500,26042264704,26042598536,28284920504,28331301488],[1455082800,27031148888,27068048728,28284920504,28331301488],[1455083100,24828721936,24844807432,26101218952,26116406448],[1455083400,25643173128,25655252912,26101218952,26116406448],[1455083700,25721702136,25726966312,28420441992,28425429248],[1455084000,28293065784,28291453696,28420441992,28425429248],[1455084300,28548749072,28544571136,29890722760,29916075312],[1455084600,29075301648,29100240576,29890722760,29916075312],[1455084900,28185745496,28209928464,30386426720,30410955240],[1455085200,29499436408,29514404064,30386426720,30410955240],[1455085500,28262904512,28261060688,30081670584,30090475232],[1455085800,28891631816,28905143696,30081670584,30090475232],[1455086100,27328712744,27351533392,31033848248,31053098328],[1455086400,29801009768,29819850344,31033848248,31053098328],[1455086700,28117716472,28133353168,31101656656,31110207288],[1455087000,30440405280,30450270392,31101656656,31110207288],[1455087300,30081772128,30090568560,32944246336,32942771344],[1455087600,33846614104,33845827704,35855110128,35855856392],[1455087900,36641122752,36652470344,38730766072,38770297688],[1455088200,37739576224,37775933000,38730766072,38770297688],[1455088500,36572185248,36593896536,39426283744,39428142144],[1455088800,38691676672,38696633152,39426283744,39428142144],[1455089100,37712378992,37729327128,39594295368,39624207272],[1455089400,39153293072,39182580808,39594295368,39624207272],[1455089700,39721246664,39744386888,45668084568,45673491200],[1455090000,44121416896,44130374520,45668084568,45673491200],[1455090300,42004268904,42017729576,45142435232,45147771176],[1455090600,45036310216,45042742352,45142435232,45147771176],[1455090900,46138112432,46157964864,49695276832,49744320968],[1455091200,48704861744,48745032208,49695276832,49744320968],[1455091500,48320473128,48345623600,53159232144,53196960384],[1455091800,52710264952,52726269864,53159232144,53196960384],[1455092100,53150962544,53146168648,56979286240,57047743280],[1455092400,55731221072,55772544928,56979286240,57047743280],[1455092700,54426649488,54429985104,58166762000,58226240064],[1455093000,56983345856,57038807040,58166762000,58226240064],[1455093300,56367565200,56399948976,63664404272,63645678720],[1455093600,62334278008,62315130936,63664404272,63645678720],[1455093900,60675006752,60676125264,63789009880,63844578816],[1455094200,62792702408,62834612000,63789009880,63844578816],[1455094500,62634565840,62636187904,67929524440,67904078400],[1455094800,67390912600,67391237312,67929524440,67904078400],[1455095100,67616795608,67674495400,71280383688,71338120488],[1455095400,69667481984,69711188312,71280383688,71338120488],[1455095700,68152401296,68169141144,73577208688,73605093008],[1455096000,73637539000,73646417440,73771822616,73738397632],[1455096300,76144234568,76141724952,82346805584,82425122912],[1455096600,78755313152,78859023456,82346805584,82425122912],[1455096900,72377971344,72495890392,78583726208,78539225160],[1455097200,76220505064,76206568656,78583726208,78539225160],[1455097500,72892382512,72929459568,77651714752,77647729648],[1455097800,75920424816,75925632312,77651714752,77647729648],[1455098100,73166972576,73177371168,76043043696,76013519864],[1455098400,74727278608,74735070696,76043043696,76013519864],[1455098700,74679439840,74725785480,82093117824,82026456424],[1455099000,79377992504,79358617984,82093117824,82026456424],[1455099300,75278515280,75356620704,80446354720,80503799336],[1455099600,78189871888,78231038880,80446354720,80503799336],[1455099900,75053022576,75057491952,80066078072,80069306472],[1455100200,78330502504,78319023624,80066078072,80069306472],[1455100500,76431231008,76411266624,83969626808,84042751400],[1455100800,80860915456,80920334192,83969626808,84042751400],[1455101100,75600768920,75638655720,79728309992,79788805752],[1455101400,77875616696,77926698776,79728309992,79788805752],[1455101700,74667556776,74709395728,77451116024,77525860472],[1455102000,76152664216,76195403472,77451116024,77525860472],[1455102300,75640083456,75622772888,82081848960,82097264312],[1455102600,80143787024,80178201664,82081848960,82097264312],[1455102900,76937368032,76996489824,79881250040,79893630512],[1455103200,78071203584,77697806688,79881250040,79893630512],[1455103500,75326487392,74212257776,78740305888,77939339784],[1455103800,76572577008,76002536088,78740305888,77939339784],[1455104100,73976297056,73959697128,83310422928,83384229064],[1455104400,80723821584,80800311840,83310422928,83384229064],[1455104700,76058777496,76117968824,78682295072,78680880232],[1455105000,77604061312,77595811656,78682295072,78680880232],[1455105300,76745626144,76737563376,80944281448,80977796936],[1455105600,79540016752,79579763080,80944281448,80977796936],[1455105900,77121693368,77168260168,78873955408,78902352864],[1455106200,77182871744,77209300000,78873955408,78902352864],[1455106500,75152113784,75175080096,79683667208,79709041680],[1455106800,77767379064,77785911160,79683667208,79709041680],[1455107100,74645194152,74659967360,77862801352,77908708256],[1455107400,75568464040,75601448472,77862801352,77908708256],[1455107700,72868083160,72886997512,82223250040,82299142008],[1455108000,78407664872,78459271736,82223250040,82299142008],[1455108300,72483440456,72488282592,82356528936,82392707704],[1455108600,79125142720,79156133872,82356528936,82392707704],[1455108900,73234816432,73264208720,76639138544,76694538832],[1455109200,75317974680,75349751528,76639138544,76694538832],[1455109500,73422129104,73408859784,76199793280,76206556176],[1455109800,74833009720,74841116576,76199793280,76206556176],[1455110100,73507246784,73536051536,78197852824,78273605720],[1455110400,76514553880,76574953312,78197852824,78273605720],[1455110700,74501727144,74533423688,78960252296,79006017072],[1455111000,76451744120,76499064080,78960252296,79006017072],[1455111300,73728061712,73757663712,84375439136,84323944144],[1455111600,81281609600,81244905736,84375439136,84323944144],[1455111900,75572990240,75588578184,78756997088,78824954760],[1455112200,77446698688,77494767024,78756997088,78824954760],[1455112500,75641053920,75644346552,78841192576,78846889072],[1455112800,77528346544,77544030848,78841192576,78846889072],[1455113100,76389627600,76425186784,81335931024,81364173336],[1455113400,79805622896,79838400960,81335931024,81364173336],[1455113700,77968781504,77998552368,82356853856,82350768424],[1455114000,80789290688,80780431872,82356853856,82350768424],[1455114300,78891791152,78908765656,83495463048,83599504776],[1455114600,80750403200,80847851176,83495463048,83599504776],[1455114900,77133582648,77182791104,87073543992,86994800920],[1455115200,83812114536,83765932608,87073543992,86994800920],[1455115500,78130028008,78175675200,82025585416,82125657448],[1455115800,80582008432,80640741760,82025585416,82125657448],[1455116100,78723038456,78712904960,82323103696,82374502408],[1455116400,80915247808,80954611280,82323103696,82374502408],[1455116700,79081355400,79099183528,82536714696,82568507496],[1455117000,80890245464,80920423824,82536714696,82568507496],[1455117300,78229801792,78264272512,81053190240,81108776096],[1455117600,79262752328,79314149032,81053190240,81108776096],[1455117900,77170627552,77200738928,82119909864,82118749480],[1455118200,79620934360,79659513384,82119909864,82118749480],[1455118500,76333104472,76412302576,84889202888,84788457224],[1455118800,83180456120,83113847592,84889202888,84788457224],[1455119100,79886158344,79913412384,82519833344,82571608192],[1455119400,81013695584,81056940096,82519833344,82571608192],[1455119700,78549004376,78566810808,81969607424,81974675640],[1455120000,80803765232,80819016888,81969607424,81974675640],[1455120300,79665470000,79707782872,84419470744,84468979752],[1455120600,82942155536,82981647736,84419470744,84468979752],[1455120900,81034541680,81053144352,85654204776,85681876448],[1455121200,83680484504,83714219712,85654204776,85681876448],[1455121500,80689081008,80717627544,85410832464,85384649288],[1455121800,82842068856,82876593504,85410832464,85384649288],[1455122100,79178299704,79289577640,87943585232,87810721880],[1455122400,85278283208,85186032192,87943585232,87810721880],[1455122700,80447695280,80463628800,84201653048,84253876816],[1455123000,82760741400,82802889160,84201653048,84253876816],[1455123300,81115544040,81138350624,85837101016,85871373744],[1455123600,84116769824,84139634192,85837101016,85871373744],[1455123900,81770614672,81768628864,86109883816,86111551920],[1455124200,84273554880,84279688464,86109883816,86111551920],[1455124500,81632513912,81668345928,85716888856,85805720400],[1455124800,83926923008,83990908712,85716888856,85805720400],[1455125100,80809080448,80810788432,83449480224,83437326056],[1455125400,81238539888,81282194096,83449480224,83437326056],[1455125700,78550423048,78644821552,87540461712,87343572168],[1455126000,84560414464,84430959304,87540461712,87343572168],[1455126300,78759452976,78778840680,81533164912,81536511280],[1455126600,79582344792,79587321776,81533164912,81536511280],[1455126900,76790440888,76810327456,80911821568,80961696784],[1455127200,80194675288,80234253032,80911821568,80961696784],[1455127500,80618772120,80636489328,86056731656,86078225856],[1455127800,84259428168,84258630536,86056731656,86078225856],[1455128100,81980377832,81942900072,86556780992,86553697232],[1455128400,84331212352,84332111048,86556780992,86553697232],[1455128700,80977995704,80980135824,85029853632,85012091744],[1455129000,82748418832,82757649576,85029853632,85012091744],[1455129300,80124464176,80143058200,89544955680,89368861528],[1455129600,85426733872,85290920992,89544955680,89368861528],[1455129900,79196813376,79159346000,90119798112,90108123240],[1455130200,86717149680,86694229208,90119798112,90108123240],[1455130500,80875158512,80848832032,85478801824,85509964936],[1455130800,84185812848,84205608616,85478801824,85509964936],[1455131100,82951653264,82939516328,87442240168,87413533528],[1455131400,85785736096,85762501224,87442240168,87413533528],[1455131700,83653186032,83650246400,87940314440,87958441760],[1455132000,85965467704,85960110008,87940314440,87958441760],[1455132300,83315561208,83274799400,88306713224,88314605664],[1455132600,86005467664,86026848784,88306713224,88314605664],[1455132900,83117605208,82563186208,92004039896,89122225576],[1455133200,88870003264,86830663040,92004039896,89122225576],[1455133500,82708332144,82669665392,86137873944,86108257144],[1455133800,85083989512,85051626160,86137873944,86108257144],[1455134100,84210923120,84175111864,88680961792,88653575352],[1455134400,87397411160,87364186696,88680961792,88653575352],[1455134700,86305907384,86251328992,91540388568,91464547512],[1455135000,89677040128,89611538504,91540388568,91464547512],[1455135300,86763043848,86722354736,91042535184,91002699760],[1455135600,89593090336,89545662512,91042535184,91002699760],[1455135900,87755264152,87695615968,92304835688,92261637136],[1455136200,89855199096,89846169736,92304835688,92261637136],[1455136500,86514226264,86538488152,96922140704,96749073328],[1455136800,94623288880,94479862440,96922140704,96749073328],[1455137100,90716468696,90655239616,94889004616,94860017272],[1455137400,92831623472,92793175016,94889004616,94860017272],[1455137700,89872594776,89807575424,94647782624,94569673152],[1455138000,93473063432,93393668728,94647782624,94569673152],[1455138300,93054581672,92972099504,99103862144,99020888624],[1455138600,96929200968,96859353256,99103862144,99020888624],[1455138900,93464953936,93416433912,97391754336,97320663640],[1455139200,95502482912,95455103008,97391754336,97320663640],[1455139500,92940134000,92931522808,97826188192,97774435192],[1455139800,95081210896,95052904160,97826188192,97774435192],[1455140100,91654960992,91649110104,103089314424,102959657112],[1455140400,99785748424,99668938896,103089314424,102959657112],[1455140700,93849620504,93755274552,97924635744,97812787104],[1455141000,95736573656,95660115232,97924635744,97812787104],[1455141300,92525968664,92502126856,96938069880,96844693664],[1455141600,95094881616,95009749040,96938069880,96844693664],[1455141900,92499318736,92431743464,96677595448,96607147624],[1455142200,94702145424,94632608352,96677595448,96607147624],[1455142500,91839418200,91775341312,95918257184,95863307072],[1455142800,93865936640,93806444472,95918257184,95863307072],[1455143100,90638504752,90575499240,94393946008,94348900640],[1455143400,91304926992,91246608088,94393946008,94348900640],[1455143700,86652705984,86593916832,95187452904,95240270760],[1455144000,91546337064,91570422112,95187452904,95240270760],[1455144300,84150840304,84102287264,86412735112,86343425824],[1455144600,84515482416,84447580856,86412735112,86343425824],[1455144900,81058226192,81003118544,83724809688,83695852376],[1455145200,82321854224,82286225448,83724809688,83695852376],[1455145500,80354470112,80308018248,84155456888,84122974224],[1455145800,82107256280,82063751096,84155456888,84122974224],[1455146100,78339283192,78282702840,81489877304,81471111008],[1455146400,79236105952,79204999632,81489877304,81471111008],[1455146700,74753427016,74698713088,77448339480,77411045816],[1455147000,74849079056,74820744656,77448339480,77411045816],[1455147300,70490494520,70480457120,77557477800,77535907592],[1455147600,74201101248,74176081336,77557477800,77535907592],[1455147900,67537766792,67519014224,69720494120,69739446704],[1455148200,67619241712,67629905800,69720494120,69739446704],[1455148500,63798111216,63785411752,66609071280,66584266200],[1455148800,65247584096,65229675432,66609071280,66584266200],[1455149100,62914094456,62923836368,65415886656,65457241728],[1455149400,63805546296,63825678296,65415886656,65457241728],[1455149700,60760006688,60756186440,62684830760,62750139448],[1455150000,60614298568,60652411296,62684830760,62750139448],[1455150300,56332716352,56330274544,58087309720,58151786952],[1455150600,55748041904,55799578776,58087309720,58151786952],[1455150900,51428904016,51451077032,55801784264,55827144624],[1455151200,52872380768,52891488480,55801784264,55827144624],[1455151500,47870480240,47878298096,53508032368,53525749472],[1455151800,50993427800,51003866320,53508032368,53525749472],[1455152100,45731937120,45728995688,46877502464,46882877584],[1455152400,45849838616,45852561120,46877502464,46882877584],[1455152700,44300335984,44303425704,46633380120,46654500576],[1455153000,45392295584,45414052200,46633380120,46654500576],[1455153300,42823630200,42838909416,43585365080,43579181024],[1455153600,42717099936,42719834816,43585365080,43579181024],[1455153900,40786328664,40804836392,40957678936,40963448704],[1455154200,39659204088,39669306248,40957678936,40963448704],[1455154500,37643151456,37654335264,41534535936,41511066728],[1455154800,39630263824,39626042712,41534535936,41511066728],[1455155100,36017012536,36047354576,37624900728,37633952952],[1455155400,36754564752,36761805120,37624900728,37633952952],[1455155700,34777674056,34784116168,34876471344,34879801904],[1455156000,34348069112,34352208056,34523623912,34538067144],[1455156300,35260930528,35248338120,38543064592,38545270232],[1455156600,37760872688,37774587872,38543064592,38545270232],[1455156900,36166013432,36206344032,36467787336,36511639848],[1455157200,36034558256,36062698032,36467787336,36511639848],[1455157500,35300957632,35298608200,35894143688,35903325256],[1455157800,34439960328,34447261816,35894143688,35903325256],[1455158100,32465703480,32473644472,36937057248,36962549496],[1455158400,35783091224,35811727264,36937057248,36962549496],[1455158700,34313109952,34344588736,36797489368,36819260736],[1455159000,35580302312,35599101576,36797489368,36819260736],[1455159300,33648403696,33652304568,35405492264,35387931280],[1455159600,34344286432,34339385880,35405492264,35387931280],[1455159900,32495243768,32507659776,33629058136,33615751296],[1455160200,32867967208,32868841392,33629058136,33615751296],[1455160500,31908539016,31934678192,33760867920,33771810400],[1455160800,33764023896,33756368368,33770940184,33771810400],[1455161100,33562147096,33552727160,33770940184,33722527320],[1455161400,30971268888,31031653504,33007063048,33101307240],[1455161700,27281360128,27276981176,29926433400,29953285104],[1455162000,28890771112,28914255288,29926433400,29953285104],[1455162300,27054924120,27068429448,28098101200,28104515896],[1455162600,27236081304,27247524760,28098101200,28104515896],[1455162900,26179205440,26196305256,28314734272,28318022560],[1455163200,28259386984,28262494064,28314734272,28318022560],[1455163500,28764503960,28768203576,30407192144,30413495448],[1455163800,29880725520,29887937168,30407192144,30413495448],[1455164100,28929099736,28944192120,29504769416,29535179736],[1455164400,28763184848,28786172000,29504769416,29535179736],[1455164700,27202253088,27215945088,27440702392,27473608664],[1455165000,26419923024,26429540248,27440702392,27473608664],[1455165300,24817213544,24794207080,27203456096,27249721440],[1455165600,25869957992,25899505032,27203456096,27249721440],[1455165900,23448120568,23453207160,24778743336,24816204312],[1455166200,24250755232,24280922184,24778743336,24816204312],[1455166500,23918224064,23936303688,26073973056,26102242376],[1455166800,26187961760,26205879264,26433937400,26429516776],[1455167100,27405165400,27400626728,29861800952,29856963680],[1455167400,28735907384,28747902464,29861800952,29856963680],[1455167700,26676924680,26712083960,27629837216,27631161016],[1455168000,27131378968,27132697672,27629837216,27631161016],[1455168300,26427913944,26433549144,27384884944,27401648008],[1455168600,26634085552,26645949696,27384884944,27401648008],[1455168900,25970599640,25960492936,29429293952,29377973744],[1455169200,28652634096,28634204200,29429293952,29377973744],[1455169500,26745307416,26792179440,26976683904,27029227824],[1455169800,25697180488,25723844520,26160061024,26192586480],[1455170100,25385998048,25396102064,27125386072,27125595800],[1455170400,26849776304,26850292400,27125386072,27125595800],[1455170700,27011521496,27016456792,28924976112,28939417136],[1455171000,28324805080,28341727280,28924976112,28939417136],[1455171300,27293817920,27310859112,28064978384,28068351544],[1455171600,27429487992,27434657712,28064978384,28068351544],[1455171900,26626837728,26641167008,28113604352,28141745184],[1455172200,27449148832,27459952928,28113604352,28141745184],[1455172500,26916950448,26900785736,30176677648,30198264928],[1455172800,29250446208,29273954672,30176677648,30198264928],[1455173100,28720085952,28738987096,33533863344,33523672424],[1455173400,32326064920,32328712792,33533863344,33523672424],[1455173700,30588736592,30610808776,32927577048,32927247584],[1455173905,32927577048,32927247584,32927577048,32927247584],[1455174216,33318989448,33335985072,33318989448,33335985072]],\"expiration\":5,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(52,'8da95cdb-6ed0-4870-8820-f72eda355784','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"hit\",\"key\":\"admin_home_customers\",\"value\":{\"4\":\"AS112\",\"2\":\"HEAnet\",\"5\":\"Imagine\",\"3\":\"PCH DNS\",\"1\":\"VAGRANT IXP\"},\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(53,'8da95cdb-6fa5-46f6-afba-b14a5d76c611','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::infrastructure002-protoall-bits-week-png.png\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(54,'8da95cdb-7049-4f54-8246-230162ea098f','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','0','2019-05-11 14:37:48'),(55,'8da95cdb-7192-4c34-9f70-a0a3441e2d00','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"missed\",\"key\":\"grapher::infrastructure002-protoall-bits-week-png.data\",\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(56,'8da95cdb-766a-4fb4-94d4-0bc0f3d4f424','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'cache','{\"type\":\"set\",\"key\":\"grapher::infrastructure002-protoall-bits-week-png.data\",\"value\":[[1454455800,81294362816,81285576440,88069944432,88106694760],[1454457600,70861891680,70879651504,80870320288,80939228632],[1454459400,61820900952,61836187968,66968352168,67014678488],[1454461200,53303777096,53305052864,62845305440,62931096184],[1454463000,46965082136,46977456320,49870513416,49862850104],[1454464800,40384565960,40392848672,45678738008,45636379632],[1454466600,38216781752,38224697040,40799594304,40807874304],[1454468400,35944029240,35956335128,39960841976,39987092904],[1454470200,32967694816,32978399560,35519703248,35509715920],[1454472000,30070160152,30082385616,33153776584,33172195320],[1454473800,24414319016,24419567880,26577381368,26585448936],[1454475600,23904858944,23912816624,28590035120,28612257208],[1454477400,30063386920,30074640448,31599770560,31591656360],[1454479200,27785035432,27794444608,32122766120,32086708720],[1454481000,29279816552,29284912832,30922314872,30918322360],[1454482800,30666057464,30679904160,35515780640,35503495920],[1454484600,37357081544,37371358112,41662438288,41650997536],[1454486400,43327042600,43340908536,45779987440,45788160344],[1454488200,50489368880,50505400192,54572934248,54572019256],[1454490000,57200462984,57214479368,61853898576,61778503184],[1454491800,63373343256,63393476680,68516850000,68544855408],[1454493600,69064495536,69074671520,74284354992,74181294872],[1454495400,70013051296,70043538464,73622118040,73634910728],[1454497200,73012892712,73015317200,78255883456,78166086880],[1454499000,73352036232,73383848632,76636250720,76666954016],[1454500800,75620013040,75637879848,80283491816,80223183568],[1454502600,76228595344,76243703864,81054704368,81053125928],[1454504400,75999819824,76021488840,87437191816,87489136552],[1454506200,78292126288,78308144544,83569412240,83555038472],[1454508000,78085704544,78111659880,83185345296,83187726680],[1454509800,78345803896,78368818680,81801939440,81804611224],[1454511600,78013894008,78033177688,85710113408,85601906328],[1454513400,79577108928,79609217552,83162806944,83214050000],[1454515200,81293692760,81305309584,88821967104,88636556016],[1454517000,84816123360,84846219120,88918795392,88935110568],[1454518800,87081432392,87091507432,94021487096,93905920584],[1454520600,85651853808,85688961648,90248297272,90225347048],[1454522400,83505885640,83518601184,90176417144,89989158328],[1454524200,83793986488,83805506328,86665926344,86676329168],[1454526000,85511366136,85497869576,96762520456,96761447928],[1454527800,88476854712,88476454824,92160504896,92161351168],[1454529600,90648352872,90620921072,97641977904,97464214088],[1454531400,94026246008,93904977944,102154981240,102208628152],[1454533200,94198091872,94169919552,105749290568,105506634816],[1454535000,97110596728,97097309832,101634669488,101587174880],[1454536800,95556494568,95519992032,106372441136,106175058520],[1454538600,91696338768,91653353688,97470650608,97394349312],[1454540400,86827737208,86786107000,97104688184,96882082448],[1454542200,79701142008,79671642200,86761395400,86724876184],[1454544000,70123725592,70109586560,79172492272,79062640088],[1454545800,60995768104,61013157120,65948718584,65968776328],[1454547600,51537418600,51541293520,60431968360,60464608536],[1454549400,46418530088,46429869168,49621685936,49624261992],[1454551200,40376559632,40385829512,46871778392,46816799256],[1454553000,36917014256,36924532872,40277913368,40279221896],[1454554800,35410467488,35421283280,38138767224,38152503432],[1454556600,33269377160,33277090248,36432315808,36427636560],[1454558400,30547892968,30557396104,34193108352,34194383304],[1454560200,31117152736,31126264400,33853356856,33868214264],[1454562000,27903115128,27911278000,30223005072,30198625336],[1454563800,29934257672,29944865160,31506004712,31492730776],[1454565600,29441624672,29452300504,31908599968,31920348632],[1454567400,30348890248,30362244816,31980203864,32017690152],[1454569200,32179799496,32194323696,38244244752,38223516480],[1454571000,39366868856,39381515616,44505251488,44497151872],[1454572800,45996071472,46009294272,50062178904,50060593008],[1454574600,54807359568,54826227872,58070999064,58095039016],[1454576400,58276891720,58291351432,62305218472,62272611040],[1454578200,65252116728,65276435440,68656748056,68691325488],[1454580000,70086442808,70100528008,75931323424,75882340384],[1454581800,71930873456,71954324240,76252227928,76232277096],[1454583600,73408477528,73422544360,80465551304,80381818024],[1454585400,73455023456,73476718576,76442831336,76449727248],[1454587200,73239310816,73256046544,78661128224,78660634608],[1454589000,74237058536,74259646000,77340780208,77300023376],[1454590800,74964145272,74979110536,82920864392,82946083856],[1454592600,76809569096,76824240448,80064745264,80073796136],[1454594400,78100494176,78123839856,84511234640,84459278928],[1454596200,80466829544,80497494000,85060051544,85097480376],[1454598000,79293975272,79302495264,86915567736,86794316736],[1454599800,80392108824,80429461136,84012543440,83991247112],[1454601600,81984696224,82000466944,90237052568,90099949968],[1454603400,83126675616,83167204552,87233539496,87259043504],[1454605200,86443378304,86456597808,93991535760,93760894992],[1454607000,84513029168,84541310664,87859023048,87861768752],[1454608800,82589188984,82590017384,89199089152,88960602080],[1454610600,81692031704,81710528048,87764791192,87737411496],[1454612400,81436198776,81425187960,90264573040,90276420992],[1454614200,84071655264,84065463216,88066380704,88019011000],[1454616000,86614534032,86575647704,92804890792,92501827776],[1454617800,89907786856,89891653920,94556947296,94526956864],[1454619600,90940322576,90902602992,97276698920,97074876920],[1454621400,91819805536,91790983824,96481755968,96440473776],[1454623200,92839727080,92804172520,100117498896,99991715848],[1454625000,92579642360,92534196984,97562440600,97511791880],[1454626800,87659012520,87616060016,96628441184,96517502616],[1454628600,80090564440,80075514848,86851725672,86812310264],[1454630400,71545922224,71554291416,80467583936,80437053704],[1454632200,62981815624,62994380352,68179041600,68182648104],[1454634000,53779200528,53789997832,60927596696,60876776144],[1454635800,47277584224,47286596712,50927426888,50909429640],[1454637600,41026057808,41039247616,46214662192,46217699320],[1454639400,39383384936,39393919384,41802158416,41810225840],[1454641200,38794575608,38806824920,42883686072,42879516648],[1454643000,35771532760,35782286024,39361694576,39420423120],[1454644800,32261048376,32276826344,34701189880,34725474368],[1454646600,29589233832,29600958336,31761446336,31781482656],[1454648400,29002513576,29014087848,32288004048,32278281648],[1454650200,29895545880,29909371168,31954177568,31968767016],[1454652000,27768558936,27777968400,29728539720,29759542872],[1454653800,29464792272,29472097472,31411361648,31421028200],[1454655600,30423344512,30440973616,35401609136,35419534864],[1454657400,36985723216,36999985512,41006096752,41038368760],[1454659200,44306848280,44322889208,48474948920,48501553440],[1454661000,52106017048,52127083488,56038247120,56071574888],[1454662800,58431305184,58442361528,63086069168,63100869216],[1454664600,65132835200,65154774240,70261450840,70274799136],[1454666400,69027263272,69045404928,73692640008,73615980072],[1454668200,74354528840,74374535976,78701134464,78744029528],[1454670000,74035681200,74059215200,80040231704,80019278488],[1454671800,76155425048,76172657296,79529553000,79586814032],[1454673600,77201223000,77208283480,84144927920,84061288616],[1454675400,76618118088,76645229032,80326782152,80357024160],[1454677200,79549706568,79571666872,89202983328,89164870240],[1454679000,77138576104,77160551048,81251421304,81218265112],[1454680800,77066053152,77082186408,84314591488,84319207408],[1454682600,78949139680,78976938696,83071722112,83113883416],[1454684400,79057866040,79081264416,86101271528,85996828208],[1454686200,79144830352,79178862640,84364029176,84368287792],[1454688000,83198448968,83213494168,90495799128,90247050520],[1454689800,84953897344,84987291232,88368824480,88403817168],[1454691600,85091261696,85110719544,92081300744,91926442608],[1454693400,83391813912,83418296216,86807594640,86801574296],[1454695200,81663347184,81682287888,88283661112,88179522120],[1454697000,81375857456,81407486760,84702708408,84711773792],[1454698800,81688933936,81707529960,88450534256,88293906176],[1454700600,82318779800,82342788136,85426675872,85443623304],[1454702400,84787308568,84809255376,91408951816,91308697504],[1454704200,88754271928,88768685400,92482828864,92560383840],[1454706000,90803521808,90832576440,97675678448,97722071904],[1454707800,91612321776,91643840680,95574520072,95619477240],[1454709600,89608557896,89611301280,96616261504,96506777952],[1454711400,89500657448,89537073720,93721649416,93832095160],[1454713200,86665768776,86681079080,95677260024,95611031704],[1454715000,81781610280,81795772496,87560692520,87544151232],[1454716800,76014803152,76035591240,84960518456,85013712240],[1454718600,70021784376,70030907080,75041417936,75036067680],[1454720400,61331252176,61346404144,69398993992,69565920552],[1454722200,53780100328,53796932144,57557002832,57597809896],[1454724000,46353875272,46365433512,51565310088,51524669976],[1454725800,41243110496,41253014344,43854038928,43880993672],[1454727600,36769041240,36781714640,41075537720,41118023992],[1454729400,33497848976,33508769408,36320000176,36326492688],[1454731200,31045760368,31055440832,34052138040,34054560520],[1454733000,29848131368,29861875104,31416929104,31444169152],[1454734800,27358375856,27369089312,29617380512,29618447760],[1454736600,29378137528,29388613800,31919808512,31939410176],[1454738400,27611983816,27622568328,33403838184,33425163720],[1454740200,27089762760,27099282832,28703305824,28713841776],[1454742000,28737630024,28751976696,32431573736,32458045776],[1454743800,30756620824,30770650680,33567867896,33595693952],[1454745600,35672584032,35679646240,39091242744,39096327632],[1454747400,43631690192,43655557736,47215009296,47232414912],[1454749200,50212727384,50220092648,53546642672,53565627840],[1454751000,56257103664,56281898760,59389403912,59409253128],[1454752800,60004430168,60017699272,63455192864,63471363856],[1454754600,62144861376,62168576608,64350585784,64353294504],[1454756400,63882762576,63894235760,68615160216,68473431120],[1454758200,65726957088,65751822008,68794827056,68795088240],[1454760000,67498977400,67514699648,72489149360,72382598112],[1454761800,69373478600,69398247056,72178800752,72203651264],[1454763600,68556996040,68574036776,77100602488,77117762960],[1454765400,68938490880,68965160696,72240949736,72275569424],[1454767200,70057915504,70074033808,75362620256,75252930240],[1454769000,71577845848,71599414120,74736074312,74750242520],[1454770800,73959031800,73972174216,79940258664,79881389584],[1454772600,77195529776,77223553840,80466923752,80459406832],[1454774400,78513721400,78528805352,84462663952,84454338640],[1454776200,78969925656,79007048192,82615809008,82613047968],[1454778000,78719323720,78736046632,84185175488,84099313736],[1454779800,80959915944,80984503856,84152050328,84139376864],[1454781600,81118758912,81139350208,88388113096,88325246408],[1454783400,82487747352,82507356800,86789030376,86799310160],[1454785200,81723737320,81751659136,88420317368,88423779616],[1454787000,81514561576,81556262880,84660799584,84715692344],[1454788800,82846652816,82862919008,89335489944,89178351248],[1454790600,84816813464,84848066832,89194987320,89200051072],[1454792400,85311473904,85321879280,92615473608,92494265448],[1454794200,87908701736,87941461984,92803561328,92879680872],[1454796000,88546960872,88564808736,96976257264,96808990608],[1454797800,86625768440,86649160472,92563798240,92602694544],[1454799600,83144457928,83161564240,92505249520,92422916056],[1454801400,77998634264,78026186888,82895489248,82973338632],[1454803200,72780651152,72784481088,80267213200,80111372928],[1454805000,68267004384,68287852368,73934205232,73996117104],[1454806800,60477147464,60481616192,67816176208,67737847912],[1454808600,54907568168,54926146008,61041737280,61115098312],[1454810400,47030399904,47031295600,53222990008,53229097016],[1454812200,44998669392,45016382048,47951635440,48021841232],[1454814000,40884028328,40896067808,44915492496,44950109872],[1454815800,35649389592,35661029072,40349572016,40388050600],[1454817600,32954768824,32967110376,37344349656,37381316752],[1454819400,30661975616,30672840912,33084184992,33114596904],[1454821200,28931749064,28940710024,31144626528,31169671712],[1454823000,29538408176,29550405688,32015687992,32025484304],[1454824800,27059677136,27065867048,30969181024,30971519128],[1454826600,27703711848,27718478784,29947035176,29982042216],[1454828400,28359654344,28371151528,33329150880,33348586192],[1454830200,28960660032,28975635304,30932819896,30923375600],[1454832000,31942829064,31950467664,35128894512,35143944800],[1454833800,40435342240,40458916200,46566526872,46602123648],[1454835600,47722869232,47736410976,51900868192,51949814040],[1454837400,55738901680,55760465424,60708801920,60730316856],[1454839200,61086942328,61096311736,65518079544,65369489728],[1454841000,62854760040,62876951528,67179225960,67188450584],[1454842800,65180849360,65190971552,69487103248,69495334440],[1454844600,68553563664,68580929128,71955718784,72003619200],[1454846400,70157175488,70166860976,75890306800,75721886168],[1454848200,68443916048,68461305728,72001921280,72062211600],[1454850000,69710763688,69725118880,75714028376,75615794392],[1454851800,71449959712,71476562496,75005339288,75011123528],[1454853600,72142666040,72157543400,78179738488,78095240208],[1454855400,73705399160,73727919000,77932969768,77956928000],[1454857200,76342537920,76351363864,81806770088,81712828104],[1454859000,81822434792,81830423496,86922176896,86935487032],[1454860800,83265260200,83294779912,90762971896,90889921160],[1454862600,86888626304,86897184032,91536147744,91555520368],[1454864400,86125819144,86166091184,95301490704,95464561840],[1454866200,81847453152,81879707776,85640523488,85704200272],[1454868000,82974618880,82997094144,91062651744,90990369592],[1454869800,83241200320,83269713016,86637064912,86668095288],[1454871600,85909254528,85921878056,98680720360,98691446280],[1454873400,88315410392,88344324992,92066529048,92111042544],[1454875200,89900599928,89915385160,98334423920,98177988568],[1454877000,90367178048,90388415552,94892186864,94925800224],[1454878800,90345120128,90338759160,99092140584,98857492400],[1454880600,93315708416,93335305136,97619499600,97647244152],[1454882400,93470750928,93451614312,103445624824,103253903136],[1454884200,91365124328,91353232704,96256066760,96269899144],[1454886000,84740946320,84727951480,94223274368,94089304408],[1454887800,77301934320,77305954168,83973991760,83957138472],[1454889600,67836065952,67843247336,76283912256,76279249720],[1454891400,60934372800,60948731792,66883576352,66917665880],[1454893200,50892264016,50898265872,59038233416,59064762560],[1454895000,45922650856,45937474288,49353227456,49364606376],[1454896800,38668500408,38675954576,43880770640,43842198568],[1454898600,36530061880,36535207000,39964861504,39955435128],[1454900400,32756280120,32773812648,37160851880,37251710728],[1454902200,31586843792,31601126800,33820380192,33846207712],[1454904000,30634813184,30646727960,32867181960,32849335512],[1454905800,30817581032,30831990736,33498671352,33509499248],[1454907600,28508081712,28519002072,31850589200,31899893384],[1454909400,28514713576,28526004896,30218647944,30208335400],[1454911200,27370284368,27377324168,30896659152,30919054968],[1454913000,26343020464,26353420256,27614120144,27632757200],[1454914800,28320753128,28330517200,32463105424,32485427296],[1454916600,36234435696,36250292520,41030791240,41052216360],[1454918400,43479495656,43494124368,47772260344,47782113784],[1454920200,52311196464,52336421944,56167824344,56210392200],[1454922000,58119150632,58124864776,62430923456,62387087576],[1454923800,66945033720,66969680008,71456705080,71495807984],[1454925600,72319675408,72334758816,78233082616,78207399488],[1454927400,74350189800,74384333984,77351525072,77402259248],[1454929200,75018344400,75026661704,80539634832,80449555392],[1454931000,76143645984,76170238048,80474782448,80425504456],[1454932800,77568531568,77584673824,83851924176,83762926232],[1454934600,78703458696,78723356896,82353935056,82345517744],[1454936400,80538368480,80558048424,87906104496,87855474432],[1454938200,79329207168,79353015192,84701163736,84686792720],[1454940000,78059302936,78075453048,84953279704,84842232016],[1454941800,79648084088,79678243608,83154753848,83192930704],[1454943600,79861005040,79879672944,87632547432,87518351384],[1454945400,80216070024,80245069336,83536516120,83516951152],[1454947200,81035854216,81051648528,89207838304,89036841512],[1454949000,83888855984,83930306664,88203533032,88244742448],[1454950800,86290247128,85940388464,95481893728,92886730448],[1454952600,84341445440,84368681480,87781001968,87784991792],[1454954400,82526607968,82537352144,91065452488,90880267512],[1454956200,83205070744,83223681720,86916244952,86911430432],[1454958000,85974861696,85955119024,94870145824,94884743488],[1454959800,87590515256,87580183840,91873256184,91847332312],[1454961600,90259693744,90226306368,97502486504,97286684704],[1454963400,92742870824,92719081048,97924667472,97894228304],[1454965200,93098099000,93061335312,101107937352,100965391688],[1454967000,95236527320,95191469936,99685203416,99595539920],[1454968800,95407964936,95359657200,103500551976,103368779344],[1454970600,93488040720,93432792688,97732670264,97671919936],[1454972400,87095861600,87063618224,97213971000,97203384152],[1454974200,73853506040,73873037816,80612326656,80619506224],[1454976000,63716405648,63721648896,72607502488,72412285632],[1454977800,55054658984,55067690976,60311020072,60322670728],[1454979600,48498144600,48501415480,56643262584,56658586056],[1454981400,44272526792,44284996752,47014808008,47033847048],[1454983200,38750026464,38763359064,44346460304,44351784144],[1454985000,34199270672,34212675024,37762416896,37789498768],[1454986800,32231608760,32244283600,35247101672,35284426032],[1454988600,31305485912,31317945960,33665030320,33646376688],[1454990400,29637662360,29653914640,33404294208,33487706688],[1454992200,27895272080,27902689280,29698939560,29707282832],[1454994000,26896945440,26911209528,30098653608,30184091408],[1454994300,26997528560,27016147096,29243767472,29273266224],[1454994600,28555356880,28572670008,29243767472,29273266224],[1454994900,27632946808,27626263200,29281823888,29283592392],[1454995200,28731024264,28736591960,29281823888,29283592392],[1454995500,28239276896,28264665096,30242587176,30297833464],[1454995800,29533703312,29563942856,30242587176,30297833464],[1454996100,28845010360,28834004648,32149475432,32193755264],[1454996400,30900827840,30941132192,32149475432,32193755264],[1454996700,28546890864,28571254344,29422495944,29427928056],[1454997000,28831344952,28837382528,29422495944,29427928056],[1454997300,27780462168,27792883232,28399202632,28424414000],[1454997600,27875247016,27897542896,28399202632,28424414000],[1454997900,27125257656,27139617184,28120455504,28130514152],[1454998200,27559443008,27567579760,28120455504,28130514152],[1454998500,26993432256,26999999304,28678699064,28692005056],[1454998800,27947540904,27963277816,28678699064,28692005056],[1454999100,27381309880,27404034840,29982390400,30009595776],[1454999400,29305953504,29324062248,29982390400,30009595776],[1454999700,28561779064,28565849416,31098570112,31122463784],[1455000000,29725569936,29737944008,31098570112,31122463784],[1455000300,28398652928,28396237848,36961402232,37011148112],[1455000600,34289813784,34327101120,36961402232,37011148112],[1455000900,29176750640,29182875872,30881229456,30876170320],[1455001200,30625323256,30632641824,30881229456,30876170320],[1455001500,31077556528,31099358712,33703653712,33693491072],[1455001800,33127250424,33129963312,33703653712,33693491072],[1455002100,33256848936,33278918304,36908125928,36907790360],[1455002400,36710826736,36717719952,36908125928,36907790360],[1455002700,37089449752,37102290152,39245528432,39232063640],[1455003000,38450960760,38460627608,39245528432,39232063640],[1455003300,38228692536,38274212720,43842677688,43835296864],[1455003600,42834358024,42835448160,43842677688,43835296864],[1455003900,41548202080,41564877552,43874263672,43883895480],[1455004200,43079733976,43094350272,43874263672,43883895480],[1455004500,42230153856,42251023712,44747117736,44754653136],[1455004800,44701558904,44713942656,44747117736,44754653136],[1455005100,45672205592,45700062048,48526541432,48566391112],[1455005400,47718891360,47749777232,48526541432,48566391112],[1455005700,47123721624,47142526784,50174802048,50212914120],[1455006000,49678311112,49707115736,50174802048,50212914120],[1455006300,49624524048,49632136032,52373118320,52379485736],[1455006600,51113208984,51152829800,52373118320,52379485736],[1455006900,50206778984,50270220832,56759019024,56649152680],[1455007200,54998899416,54923776480,56759019024,56649152680],[1455007500,52410440416,52421813464,55470254240,55510774624],[1455007800,54903742760,54937434824,55470254240,55510774624],[1455008100,55151866848,55170196080,58933399960,58950114240],[1455008400,58432274040,58443166808,58933399960,58950114240],[1455008700,59654960648,59654018912,65678837720,65679798584],[1455009000,64955535872,64957204376,65678837720,65679798584],[1455009300,64503760904,64525826616,67370427576,67440163656],[1455009600,65973905624,66028283096,67370427576,67440163656],[1455009900,64637866160,64653405624,68880974400,68882106936],[1455010200,66932647592,66939890728,68880974400,68882106936],[1455010500,64672315208,64696440552,71937087448,71973833704],[1455010800,69721421584,69757115608,71937087448,71973833704],[1455011100,66038508624,66054881008,69249529656,69222240296],[1455011400,67849782152,67849005720,69249529656,69222240296],[1455011700,66222551440,66265585960,70049701960,70053646392],[1455012000,69242723760,69258310048,70049701960,70053646392],[1455012300,68932630536,68957902528,72691549048,72675776704],[1455012600,71182860808,71184290240,72691549048,72675776704],[1455012900,69068109560,69115498784,72318656504,72386103784],[1455013200,70374610608,70416969352,72318656504,72386103784],[1455013500,67595984768,67600373168,71712579944,71764481352],[1455013800,69746853992,69805480536,71712579944,71764481352],[1455014100,67785133832,67831034600,77050264040,76989853144],[1455014400,74095400816,74063279696,77050264040,76989853144],[1455014700,69105139064,69138139416,72728835216,72772489840],[1455015000,70908607104,70940345456,72728835216,72772489840],[1455015300,68213344392,68222541808,71818885632,71838670352],[1455015600,70676665504,70692772656,71818885632,71838670352],[1455015900,69905450360,69915335024,74802386552,74817927352],[1455016200,73441907160,73460362144,74802386552,74817927352],[1455016500,71484836072,71513912792,74332375240,74372445864],[1455016800,73075314264,73108008144,74332375240,74372445864],[1455017100,71589785384,71604165560,75196148816,75206179992],[1455017400,72904394000,72944930688,75196148816,75206179992],[1455017700,70228145520,70293697896,80365006672,80254065720],[1455018000,77526182768,77461481752,80365006672,80254065720],[1455018300,73187682328,73223005104,77783809336,77819756640],[1455018600,75942398672,75977052760,77783809336,77819756640],[1455018900,73412768448,73444890664,77187889088,77220687800],[1455019200,75721614248,75741161040,77187889088,77220687800],[1455019500,74435880264,74434527648,79346702040,79365472488],[1455019800,78171472200,78201439088,79346702040,79365472488],[1455020100,76821345608,76865794920,80130484664,80147642440],[1455020400,77874256264,77899380648,80130484664,80147642440],[1455020700,74501618800,74529626776,78813618648,78802805768],[1455021000,75950236496,75968816048,78813618648,78802805768],[1455021300,72414236768,72463991800,82769117576,82692514960],[1455021600,78001062704,77966150128,82769117576,82692514960],[1455021900,71146516504,71200188488,90311723920,90337707184],[1455022200,85057768560,85068444408,90311723920,90337707184],[1455022500,75520180104,75528993584,80305264600,80396943128],[1455022800,78231837360,78301885704,80305264600,80396943128],[1455023100,75113336952,75135626304,79091962720,79115277288],[1455023400,77093653296,77110413104,79091962720,79115277288],[1455023700,74308783296,74326282264,78729876472,78788127552],[1455024000,76709864016,76754922440,78729876472,78788127552],[1455024300,73956795784,73977676520,78590860400,78625529936],[1455024600,75868316320,75913141000,78590860400,78625529936],[1455024900,72697970752,72734189296,83882294008,83795068496],[1455025200,80927458312,80873705480,83882294008,83795068496],[1455025500,75688031048,75721058776,78974151696,79042871720],[1455025800,77546967600,77594913040,78974151696,79042871720],[1455026100,75590605648,75593481704,79103746016,79113650320],[1455026400,77427030504,77441388264,79103746016,79113650320],[1455026700,75349445784,75375200184,79747886808,79777586824],[1455027000,78378562768,78412239040,79747886808,79777586824],[1455027300,77086570592,77134779552,81882227280,81945172232],[1455027600,79981209312,80028380584,81882227280,81945172232],[1455027900,76986501440,76992791272,80451228080,80443642392],[1455028200,77950953096,77971532360,80451228080,80443642392],[1455028500,74881495088,74943282960,84798178136,84773715272],[1455028800,81627885152,81614522824,84798178136,84773715272],[1455029100,76319217272,76326214024,80325849480,80323448008],[1455029400,78452546352,78468950568,80325849480,80323448008],[1455029700,75747611416,75800724744,79408869240,79450208744],[1455030000,78061584744,78086828200,79408869240,79450208744],[1455030300,76551873808,76558786248,80502420152,80555772656],[1455030600,78976651984,79024117856,80502420152,80555772656],[1455030900,77205500816,77239874992,81383849728,81418251656],[1455031200,79134726360,79157940232,81383849728,81418251656],[1455031500,75944794416,75976223992,80519253120,80639668144],[1455031800,78039367064,78155024224,80519253120,80639668144],[1455032100,75048053736,75108285088,87094254400,86956265664],[1455032400,83612504280,83505420952,87094254400,86956265664],[1455032700,77611007488,77605728992,82337636080,82421621344],[1455033000,80424282240,80480684312,82337636080,82421621344],[1455033300,77834526680,77841962456,82271623568,82312101120],[1455033600,80380078016,80413621624,82271623568,82312101120],[1455033900,77725726312,77741505808,82038367296,82048597424],[1455034200,80579684480,80592640384,82038367296,82048597424],[1455034500,78941799968,78963732584,83354989504,83384403496],[1455034800,81659112920,81690068544,83354989504,83384403496],[1455035100,79614978816,79654002384,84061012728,84112503400],[1455035400,81319109240,81422628544,84061012728,84112503400],[1455035700,78132175536,78269462024,90043346272,89845526432],[1455036000,86860219952,86731025488,90043346272,89845526432],[1455036300,81881949680,81893353976,87192422240,87177791384],[1455036600,85202551352,85216681392,87192422240,87177791384],[1455036900,82300036032,82351064120,86358430712,86337364272],[1455037200,84734183696,84728167448,86358430712,86337364272],[1455037500,82530119184,82557994200,86567521000,86595024088],[1455037800,84405025136,84425585512,86567521000,86595024088],[1455038100,81281008192,81289297240,85697560280,85714168048],[1455038400,83701465648,83717783432,85697560280,85714168048],[1455038700,80898070096,80907738008,84765412624,84759589920],[1455039000,82350802760,82411275120,84765412624,84759589920],[1455039300,79177439264,79292610784,87776229768,87533323152],[1455039600,84438792200,84274906568,87776229768,87533323152],[1455039900,78549724672,78553172544,81925422608,81920679312],[1455040200,79949766496,79932208328,81925422608,81920679312],[1455040500,77267822144,77239250936,81905981952,81924753616],[1455040800,80224017288,80228703432,81905981952,81924753616],[1455041100,78482163384,78467573848,83715978272,83732960848],[1455041400,82047186680,82049504712,83715978272,83732960848],[1455041700,80258438480,80240253000,85292992400,85306538432],[1455042000,83413810296,83418343696,85292992400,85306538432],[1455042300,81428595544,81409632992,87294325824,87265064904],[1455042600,84542686976,84556110696,87294325824,87265064904],[1455042900,81260824200,81302015424,92631835024,92404065344],[1455043200,88579304048,88415578104,92631835024,92404065344],[1455043500,82300169080,82273109584,90980048672,90934361200],[1455043800,88223074736,88169093824,90980048672,90934361200],[1455044100,83648466568,83607357136,87484584416,87524644624],[1455044400,85515004648,85535962184,87484584416,87524644624],[1455044700,82887883952,82867679384,87480918088,87464260680],[1455045000,85389782872,85367840408,87480918088,87464260680],[1455045300,82695215336,82659009032,87819277400,87776534136],[1455045600,85799276880,85750662064,87819277400,87776534136],[1455045900,82956304232,82915274168,87351284008,87365162536],[1455046200,85339618168,85366708448,87351284008,87365162536],[1455046500,83677873288,83685005160,95223350016,95031168120],[1455046800,92075294768,91930208000,95223350016,95031168120],[1455047100,86459459104,86414906136,90157818536,90101858144],[1455047400,88625247912,88569182448,90157818536,90101858144],[1455047700,86873025712,86817662784,91426354688,91373491024],[1455048000,90540015112,90493074088,91426354688,91373491024],[1455048300,90511439544,90483851776,95758874616,95746321784],[1455048600,94183383680,94156801912,95758874616,95746321784],[1455048900,92446469312,92387272872,97533544232,97473281496],[1455049200,95441351840,95396379664,97533544232,97473281496],[1455049500,92452981056,92416703416,97242940184,97135505064],[1455049800,94629575704,94602596768,97242940184,97135505064],[1455050100,91431778584,91512032936,103031991896,102790254984],[1455050400,99203271872,99028649952,103031991896,102790254984],[1455050700,92828672840,92791878568,98537589544,98470069704],[1455051000,96364872712,96310789304,98537589544,98470069704],[1455051300,93138510808,93098594384,97417917872,97336156336],[1455051600,95829803544,95766382712,97417917872,97336156336],[1455051900,94672032352,94632776088,101139582280,101054329696],[1455052200,99189459104,99114044000,101139582280,101054329696],[1455052500,96208952040,96153068368,100006583968,99943496128],[1455052800,97300332784,97231034448,100006583968,99943496128],[1455053100,93268881848,93204377016,98565059976,98550048768],[1455053400,95434123176,95429843680,98565059976,98550048768],[1455053700,91390611952,91364997136,102852221704,102649425488],[1455054000,99090777472,98946787968,102852221704,102649425488],[1455054300,92918739992,92884130368,99118705984,99021422888],[1455054600,97517969592,97415310280,99118705984,99021422888],[1455054900,95169439536,95097934760,98397964584,98441098416],[1455055200,96166075432,96178905312,98397964584,98441098416],[1455055500,93086773744,93009284448,98024050744,97886772896],[1455055800,96083081008,95993608880,98024050744,97886772896],[1455056100,93717384928,93704018128,99185850912,99086027360],[1455056400,96827253120,96743157488,99185850912,99086027360],[1455056700,92825047272,92769778664,96953317024,96876401888],[1455057000,94029893568,93975406752,96953317024,96876401888],[1455057300,89703711904,89660065080,99281828936,99078903440],[1455057600,95350204928,95194407384,99281828936,99078903440],[1455057900,87845615464,87797144928,91215632384,91173729952],[1455058200,88773297944,88719101224,91215632384,91173729952],[1455058500,84557073768,84483290360,87746554312,87693106256],[1455058800,85838841760,85783272552,87746554312,87693106256],[1455059100,83060305312,83009165848,86962139632,86935328496],[1455059400,84661293280,84627166768,86962139632,86935328496],[1455059700,81060978744,81002702368,85037370688,84958525720],[1455060000,82597658992,82530203064,85037370688,84958525720],[1455060300,78267503432,78237497456,80924960344,80927611536],[1455060600,78077890864,78067570208,80924960344,80927611536],[1455060900,73798424544,73745453232,81538766648,81433964448],[1455061200,78183656544,78101321192,81538766648,81433964448],[1455061500,71305012504,71265692824,73216050512,73155698864],[1455061800,71453325936,71394328576,73216050512,73155698864],[1455062100,68033672472,67989155808,69940441440,69927056720],[1455062400,68980620904,68947727984,69940441440,69927056720],[1455062700,67390119592,67350429608,69306464512,69377142240],[1455063000,66891074680,66935143792,69306464512,69377142240],[1455063300,61831356248,61820699872,63443232768,63453169424],[1455063600,61856827176,61870061576,63443232768,63453169424],[1455063900,58624875704,58649997128,60333124656,60369663856],[1455064200,58015989928,58043615896,60333124656,60369663856],[1455064500,53880685040,53886141944,59094139848,59095613336],[1455064800,55281784232,55282544824,59094139848,59095613336],[1455065100,48905361704,48912135752,58300635888,58341265472],[1455065400,54657716608,54690801176,58300635888,58341265472],[1455065700,47611427064,47620508784,49777461232,49766015064],[1455066000,49110558680,49083554248,49777461232,49766015064],[1455066300,48339673152,48318968808,50298733184,50388292440],[1455066600,48843940512,48908541744,50298733184,50388292440],[1455066900,46415288440,46426136792,48496692320,48512166296],[1455067200,46649537744,46669275808,48496692320,48512166296],[1455067500,42836521544,42862085072,43818396840,43833645560],[1455067800,42291356536,42298133288,43818396840,43833645560],[1455068100,39642080320,39645777408,43066089832,43138314456],[1455068400,41292661360,41348172256,43066089832,43138314456],[1455068700,37498099336,37515383728,39029098088,39053916952],[1455069000,37872115464,37894065344,39029098088,39053916952],[1455069300,35222042232,35232543256,35612543264,35610130736],[1455069600,34857925880,34847281576,35612543264,35610130736],[1455069900,33739848936,33726763856,35649503672,35685016640],[1455070200,34812435920,34836475512,35649503672,35685016640],[1455070500,33059329448,33069502600,33888125064,33938088152],[1455070800,33187793592,33231962088,33888125064,33938088152],[1455071100,31832850232,31853085776,32613801024,32604908632],[1455071400,31820316752,31810533432,32613801024,32604908632],[1455071700,30723298960,30719529208,33850150424,33877704112],[1455072000,33174779680,33185087744,33850150424,33877704112],[1455072300,31531621488,31528068592,31694711904,31667226344],[1455072600,30360366464,30402474472,31105228480,31164246528],[1455072900,29135284200,29142180560,30266916720,30280157928],[1455073200,29959632928,29969604096,30266916720,30280157928],[1455073500,30202861200,30209903288,32667809816,32686414944],[1455073800,31675619296,31684634024,32667809816,32686414944],[1455074100,29861355920,29859811264,30909246488,30936379464],[1455074400,30530590168,30547225032,30909246488,30936379464],[1455074700,30262904480,30262266528,31853782264,31870615792],[1455075000,30998244400,31005229984,31853782264,31870615792],[1455075300,29780734808,29781267256,32204869784,32261188592],[1455075600,31143441160,31195027896,32204869784,32261188592],[1455075900,29227019528,29256414024,30204904168,30202975040],[1455076200,29106788920,29108831400,30204904168,30202975040],[1455076500,27010476912,27021255944,27919994488,27930502960],[1455076800,27484464720,27483379464,27919994488,27930502960],[1455077100,27310705960,27300962936,29347327424,29381078784],[1455077400,28404316784,28425114304,29347327424,29381078784],[1455077700,26690527424,26693030432,27714515408,27745034728],[1455078000,27379646480,27409549784,27714515408,27745034728],[1455078300,27081276576,27100498304,28249896144,28244776056],[1455078600,27562810480,27559919728,28249896144,28244776056],[1455078900,26656852024,26667098296,29001877616,29042877368],[1455079200,27707917464,27734171648,29001877616,29042877368],[1455079500,25213273872,25217971728,25991300440,26022830616],[1455079800,26063091912,26085549352,26222885848,26225149144],[1455080100,26575177672,26583716520,27481070960,27505746936],[1455080400,26766586712,26788543192,27481070960,27505746936],[1455080700,25833749192,25855062360,27461327448,27496311456],[1455081000,26896122592,26919900776,27461327448,27496311456],[1455081300,26449499192,26453044760,28404808280,28418340944],[1455081600,27562206984,27568212592,28404808280,28418340944],[1455081900,26322588768,26323718200,27786173880,27816053704],[1455082200,27033630392,27050041224,27786173880,27816053704],[1455082500,26042264704,26042598536,28284920504,28331301488],[1455082800,27031148888,27068048728,28284920504,28331301488],[1455083100,24828721936,24844807432,26101218952,26116406448],[1455083400,25643173128,25655252912,26101218952,26116406448],[1455083700,25721702136,25726966312,28420441992,28425429248],[1455084000,28293065784,28291453696,28420441992,28425429248],[1455084300,28548749072,28544571136,29890722760,29916075312],[1455084600,29075301648,29100240576,29890722760,29916075312],[1455084900,28185745496,28209928464,30386426720,30410955240],[1455085200,29499436408,29514404064,30386426720,30410955240],[1455085500,28262904512,28261060688,30081670584,30090475232],[1455085800,28891631816,28905143696,30081670584,30090475232],[1455086100,27328712744,27351533392,31033848248,31053098328],[1455086400,29801009768,29819850344,31033848248,31053098328],[1455086700,28117716472,28133353168,31101656656,31110207288],[1455087000,30440405280,30450270392,31101656656,31110207288],[1455087300,30081772128,30090568560,32944246336,32942771344],[1455087600,33846614104,33845827704,35855110128,35855856392],[1455087900,36641122752,36652470344,38730766072,38770297688],[1455088200,37739576224,37775933000,38730766072,38770297688],[1455088500,36572185248,36593896536,39426283744,39428142144],[1455088800,38691676672,38696633152,39426283744,39428142144],[1455089100,37712378992,37729327128,39594295368,39624207272],[1455089400,39153293072,39182580808,39594295368,39624207272],[1455089700,39721246664,39744386888,45668084568,45673491200],[1455090000,44121416896,44130374520,45668084568,45673491200],[1455090300,42004268904,42017729576,45142435232,45147771176],[1455090600,45036310216,45042742352,45142435232,45147771176],[1455090900,46138112432,46157964864,49695276832,49744320968],[1455091200,48704861744,48745032208,49695276832,49744320968],[1455091500,48320473128,48345623600,53159232144,53196960384],[1455091800,52710264952,52726269864,53159232144,53196960384],[1455092100,53150962544,53146168648,56979286240,57047743280],[1455092400,55731221072,55772544928,56979286240,57047743280],[1455092700,54426649488,54429985104,58166762000,58226240064],[1455093000,56983345856,57038807040,58166762000,58226240064],[1455093300,56367565200,56399948976,63664404272,63645678720],[1455093600,62334278008,62315130936,63664404272,63645678720],[1455093900,60675006752,60676125264,63789009880,63844578816],[1455094200,62792702408,62834612000,63789009880,63844578816],[1455094500,62634565840,62636187904,67929524440,67904078400],[1455094800,67390912600,67391237312,67929524440,67904078400],[1455095100,67616795608,67674495400,71280383688,71338120488],[1455095400,69667481984,69711188312,71280383688,71338120488],[1455095700,68152401296,68169141144,73577208688,73605093008],[1455096000,73637539000,73646417440,73771822616,73738397632],[1455096300,76144234568,76141724952,82346805584,82425122912],[1455096600,78755313152,78859023456,82346805584,82425122912],[1455096900,72377971344,72495890392,78583726208,78539225160],[1455097200,76220505064,76206568656,78583726208,78539225160],[1455097500,72892382512,72929459568,77651714752,77647729648],[1455097800,75920424816,75925632312,77651714752,77647729648],[1455098100,73166972576,73177371168,76043043696,76013519864],[1455098400,74727278608,74735070696,76043043696,76013519864],[1455098700,74679439840,74725785480,82093117824,82026456424],[1455099000,79377992504,79358617984,82093117824,82026456424],[1455099300,75278515280,75356620704,80446354720,80503799336],[1455099600,78189871888,78231038880,80446354720,80503799336],[1455099900,75053022576,75057491952,80066078072,80069306472],[1455100200,78330502504,78319023624,80066078072,80069306472],[1455100500,76431231008,76411266624,83969626808,84042751400],[1455100800,80860915456,80920334192,83969626808,84042751400],[1455101100,75600768920,75638655720,79728309992,79788805752],[1455101400,77875616696,77926698776,79728309992,79788805752],[1455101700,74667556776,74709395728,77451116024,77525860472],[1455102000,76152664216,76195403472,77451116024,77525860472],[1455102300,75640083456,75622772888,82081848960,82097264312],[1455102600,80143787024,80178201664,82081848960,82097264312],[1455102900,76937368032,76996489824,79881250040,79893630512],[1455103200,78071203584,77697806688,79881250040,79893630512],[1455103500,75326487392,74212257776,78740305888,77939339784],[1455103800,76572577008,76002536088,78740305888,77939339784],[1455104100,73976297056,73959697128,83310422928,83384229064],[1455104400,80723821584,80800311840,83310422928,83384229064],[1455104700,76058777496,76117968824,78682295072,78680880232],[1455105000,77604061312,77595811656,78682295072,78680880232],[1455105300,76745626144,76737563376,80944281448,80977796936],[1455105600,79540016752,79579763080,80944281448,80977796936],[1455105900,77121693368,77168260168,78873955408,78902352864],[1455106200,77182871744,77209300000,78873955408,78902352864],[1455106500,75152113784,75175080096,79683667208,79709041680],[1455106800,77767379064,77785911160,79683667208,79709041680],[1455107100,74645194152,74659967360,77862801352,77908708256],[1455107400,75568464040,75601448472,77862801352,77908708256],[1455107700,72868083160,72886997512,82223250040,82299142008],[1455108000,78407664872,78459271736,82223250040,82299142008],[1455108300,72483440456,72488282592,82356528936,82392707704],[1455108600,79125142720,79156133872,82356528936,82392707704],[1455108900,73234816432,73264208720,76639138544,76694538832],[1455109200,75317974680,75349751528,76639138544,76694538832],[1455109500,73422129104,73408859784,76199793280,76206556176],[1455109800,74833009720,74841116576,76199793280,76206556176],[1455110100,73507246784,73536051536,78197852824,78273605720],[1455110400,76514553880,76574953312,78197852824,78273605720],[1455110700,74501727144,74533423688,78960252296,79006017072],[1455111000,76451744120,76499064080,78960252296,79006017072],[1455111300,73728061712,73757663712,84375439136,84323944144],[1455111600,81281609600,81244905736,84375439136,84323944144],[1455111900,75572990240,75588578184,78756997088,78824954760],[1455112200,77446698688,77494767024,78756997088,78824954760],[1455112500,75641053920,75644346552,78841192576,78846889072],[1455112800,77528346544,77544030848,78841192576,78846889072],[1455113100,76389627600,76425186784,81335931024,81364173336],[1455113400,79805622896,79838400960,81335931024,81364173336],[1455113700,77968781504,77998552368,82356853856,82350768424],[1455114000,80789290688,80780431872,82356853856,82350768424],[1455114300,78891791152,78908765656,83495463048,83599504776],[1455114600,80750403200,80847851176,83495463048,83599504776],[1455114900,77133582648,77182791104,87073543992,86994800920],[1455115200,83812114536,83765932608,87073543992,86994800920],[1455115500,78130028008,78175675200,82025585416,82125657448],[1455115800,80582008432,80640741760,82025585416,82125657448],[1455116100,78723038456,78712904960,82323103696,82374502408],[1455116400,80915247808,80954611280,82323103696,82374502408],[1455116700,79081355400,79099183528,82536714696,82568507496],[1455117000,80890245464,80920423824,82536714696,82568507496],[1455117300,78229801792,78264272512,81053190240,81108776096],[1455117600,79262752328,79314149032,81053190240,81108776096],[1455117900,77170627552,77200738928,82119909864,82118749480],[1455118200,79620934360,79659513384,82119909864,82118749480],[1455118500,76333104472,76412302576,84889202888,84788457224],[1455118800,83180456120,83113847592,84889202888,84788457224],[1455119100,79886158344,79913412384,82519833344,82571608192],[1455119400,81013695584,81056940096,82519833344,82571608192],[1455119700,78549004376,78566810808,81969607424,81974675640],[1455120000,80803765232,80819016888,81969607424,81974675640],[1455120300,79665470000,79707782872,84419470744,84468979752],[1455120600,82942155536,82981647736,84419470744,84468979752],[1455120900,81034541680,81053144352,85654204776,85681876448],[1455121200,83680484504,83714219712,85654204776,85681876448],[1455121500,80689081008,80717627544,85410832464,85384649288],[1455121800,82842068856,82876593504,85410832464,85384649288],[1455122100,79178299704,79289577640,87943585232,87810721880],[1455122400,85278283208,85186032192,87943585232,87810721880],[1455122700,80447695280,80463628800,84201653048,84253876816],[1455123000,82760741400,82802889160,84201653048,84253876816],[1455123300,81115544040,81138350624,85837101016,85871373744],[1455123600,84116769824,84139634192,85837101016,85871373744],[1455123900,81770614672,81768628864,86109883816,86111551920],[1455124200,84273554880,84279688464,86109883816,86111551920],[1455124500,81632513912,81668345928,85716888856,85805720400],[1455124800,83926923008,83990908712,85716888856,85805720400],[1455125100,80809080448,80810788432,83449480224,83437326056],[1455125400,81238539888,81282194096,83449480224,83437326056],[1455125700,78550423048,78644821552,87540461712,87343572168],[1455126000,84560414464,84430959304,87540461712,87343572168],[1455126300,78759452976,78778840680,81533164912,81536511280],[1455126600,79582344792,79587321776,81533164912,81536511280],[1455126900,76790440888,76810327456,80911821568,80961696784],[1455127200,80194675288,80234253032,80911821568,80961696784],[1455127500,80618772120,80636489328,86056731656,86078225856],[1455127800,84259428168,84258630536,86056731656,86078225856],[1455128100,81980377832,81942900072,86556780992,86553697232],[1455128400,84331212352,84332111048,86556780992,86553697232],[1455128700,80977995704,80980135824,85029853632,85012091744],[1455129000,82748418832,82757649576,85029853632,85012091744],[1455129300,80124464176,80143058200,89544955680,89368861528],[1455129600,85426733872,85290920992,89544955680,89368861528],[1455129900,79196813376,79159346000,90119798112,90108123240],[1455130200,86717149680,86694229208,90119798112,90108123240],[1455130500,80875158512,80848832032,85478801824,85509964936],[1455130800,84185812848,84205608616,85478801824,85509964936],[1455131100,82951653264,82939516328,87442240168,87413533528],[1455131400,85785736096,85762501224,87442240168,87413533528],[1455131700,83653186032,83650246400,87940314440,87958441760],[1455132000,85965467704,85960110008,87940314440,87958441760],[1455132300,83315561208,83274799400,88306713224,88314605664],[1455132600,86005467664,86026848784,88306713224,88314605664],[1455132900,83117605208,82563186208,92004039896,89122225576],[1455133200,88870003264,86830663040,92004039896,89122225576],[1455133500,82708332144,82669665392,86137873944,86108257144],[1455133800,85083989512,85051626160,86137873944,86108257144],[1455134100,84210923120,84175111864,88680961792,88653575352],[1455134400,87397411160,87364186696,88680961792,88653575352],[1455134700,86305907384,86251328992,91540388568,91464547512],[1455135000,89677040128,89611538504,91540388568,91464547512],[1455135300,86763043848,86722354736,91042535184,91002699760],[1455135600,89593090336,89545662512,91042535184,91002699760],[1455135900,87755264152,87695615968,92304835688,92261637136],[1455136200,89855199096,89846169736,92304835688,92261637136],[1455136500,86514226264,86538488152,96922140704,96749073328],[1455136800,94623288880,94479862440,96922140704,96749073328],[1455137100,90716468696,90655239616,94889004616,94860017272],[1455137400,92831623472,92793175016,94889004616,94860017272],[1455137700,89872594776,89807575424,94647782624,94569673152],[1455138000,93473063432,93393668728,94647782624,94569673152],[1455138300,93054581672,92972099504,99103862144,99020888624],[1455138600,96929200968,96859353256,99103862144,99020888624],[1455138900,93464953936,93416433912,97391754336,97320663640],[1455139200,95502482912,95455103008,97391754336,97320663640],[1455139500,92940134000,92931522808,97826188192,97774435192],[1455139800,95081210896,95052904160,97826188192,97774435192],[1455140100,91654960992,91649110104,103089314424,102959657112],[1455140400,99785748424,99668938896,103089314424,102959657112],[1455140700,93849620504,93755274552,97924635744,97812787104],[1455141000,95736573656,95660115232,97924635744,97812787104],[1455141300,92525968664,92502126856,96938069880,96844693664],[1455141600,95094881616,95009749040,96938069880,96844693664],[1455141900,92499318736,92431743464,96677595448,96607147624],[1455142200,94702145424,94632608352,96677595448,96607147624],[1455142500,91839418200,91775341312,95918257184,95863307072],[1455142800,93865936640,93806444472,95918257184,95863307072],[1455143100,90638504752,90575499240,94393946008,94348900640],[1455143400,91304926992,91246608088,94393946008,94348900640],[1455143700,86652705984,86593916832,95187452904,95240270760],[1455144000,91546337064,91570422112,95187452904,95240270760],[1455144300,84150840304,84102287264,86412735112,86343425824],[1455144600,84515482416,84447580856,86412735112,86343425824],[1455144900,81058226192,81003118544,83724809688,83695852376],[1455145200,82321854224,82286225448,83724809688,83695852376],[1455145500,80354470112,80308018248,84155456888,84122974224],[1455145800,82107256280,82063751096,84155456888,84122974224],[1455146100,78339283192,78282702840,81489877304,81471111008],[1455146400,79236105952,79204999632,81489877304,81471111008],[1455146700,74753427016,74698713088,77448339480,77411045816],[1455147000,74849079056,74820744656,77448339480,77411045816],[1455147300,70490494520,70480457120,77557477800,77535907592],[1455147600,74201101248,74176081336,77557477800,77535907592],[1455147900,67537766792,67519014224,69720494120,69739446704],[1455148200,67619241712,67629905800,69720494120,69739446704],[1455148500,63798111216,63785411752,66609071280,66584266200],[1455148800,65247584096,65229675432,66609071280,66584266200],[1455149100,62914094456,62923836368,65415886656,65457241728],[1455149400,63805546296,63825678296,65415886656,65457241728],[1455149700,60760006688,60756186440,62684830760,62750139448],[1455150000,60614298568,60652411296,62684830760,62750139448],[1455150300,56332716352,56330274544,58087309720,58151786952],[1455150600,55748041904,55799578776,58087309720,58151786952],[1455150900,51428904016,51451077032,55801784264,55827144624],[1455151200,52872380768,52891488480,55801784264,55827144624],[1455151500,47870480240,47878298096,53508032368,53525749472],[1455151800,50993427800,51003866320,53508032368,53525749472],[1455152100,45731937120,45728995688,46877502464,46882877584],[1455152400,45849838616,45852561120,46877502464,46882877584],[1455152700,44300335984,44303425704,46633380120,46654500576],[1455153000,45392295584,45414052200,46633380120,46654500576],[1455153300,42823630200,42838909416,43585365080,43579181024],[1455153600,42717099936,42719834816,43585365080,43579181024],[1455153900,40786328664,40804836392,40957678936,40963448704],[1455154200,39659204088,39669306248,40957678936,40963448704],[1455154500,37643151456,37654335264,41534535936,41511066728],[1455154800,39630263824,39626042712,41534535936,41511066728],[1455155100,36017012536,36047354576,37624900728,37633952952],[1455155400,36754564752,36761805120,37624900728,37633952952],[1455155700,34777674056,34784116168,34876471344,34879801904],[1455156000,34348069112,34352208056,34523623912,34538067144],[1455156300,35260930528,35248338120,38543064592,38545270232],[1455156600,37760872688,37774587872,38543064592,38545270232],[1455156900,36166013432,36206344032,36467787336,36511639848],[1455157200,36034558256,36062698032,36467787336,36511639848],[1455157500,35300957632,35298608200,35894143688,35903325256],[1455157800,34439960328,34447261816,35894143688,35903325256],[1455158100,32465703480,32473644472,36937057248,36962549496],[1455158400,35783091224,35811727264,36937057248,36962549496],[1455158700,34313109952,34344588736,36797489368,36819260736],[1455159000,35580302312,35599101576,36797489368,36819260736],[1455159300,33648403696,33652304568,35405492264,35387931280],[1455159600,34344286432,34339385880,35405492264,35387931280],[1455159900,32495243768,32507659776,33629058136,33615751296],[1455160200,32867967208,32868841392,33629058136,33615751296],[1455160500,31908539016,31934678192,33760867920,33771810400],[1455160800,33764023896,33756368368,33770940184,33771810400],[1455161100,33562147096,33552727160,33770940184,33722527320],[1455161400,30971268888,31031653504,33007063048,33101307240],[1455161700,27281360128,27276981176,29926433400,29953285104],[1455162000,28890771112,28914255288,29926433400,29953285104],[1455162300,27054924120,27068429448,28098101200,28104515896],[1455162600,27236081304,27247524760,28098101200,28104515896],[1455162900,26179205440,26196305256,28314734272,28318022560],[1455163200,28259386984,28262494064,28314734272,28318022560],[1455163500,28764503960,28768203576,30407192144,30413495448],[1455163800,29880725520,29887937168,30407192144,30413495448],[1455164100,28929099736,28944192120,29504769416,29535179736],[1455164400,28763184848,28786172000,29504769416,29535179736],[1455164700,27202253088,27215945088,27440702392,27473608664],[1455165000,26419923024,26429540248,27440702392,27473608664],[1455165300,24817213544,24794207080,27203456096,27249721440],[1455165600,25869957992,25899505032,27203456096,27249721440],[1455165900,23448120568,23453207160,24778743336,24816204312],[1455166200,24250755232,24280922184,24778743336,24816204312],[1455166500,23918224064,23936303688,26073973056,26102242376],[1455166800,26187961760,26205879264,26433937400,26429516776],[1455167100,27405165400,27400626728,29861800952,29856963680],[1455167400,28735907384,28747902464,29861800952,29856963680],[1455167700,26676924680,26712083960,27629837216,27631161016],[1455168000,27131378968,27132697672,27629837216,27631161016],[1455168300,26427913944,26433549144,27384884944,27401648008],[1455168600,26634085552,26645949696,27384884944,27401648008],[1455168900,25970599640,25960492936,29429293952,29377973744],[1455169200,28652634096,28634204200,29429293952,29377973744],[1455169500,26745307416,26792179440,26976683904,27029227824],[1455169800,25697180488,25723844520,26160061024,26192586480],[1455170100,25385998048,25396102064,27125386072,27125595800],[1455170400,26849776304,26850292400,27125386072,27125595800],[1455170700,27011521496,27016456792,28924976112,28939417136],[1455171000,28324805080,28341727280,28924976112,28939417136],[1455171300,27293817920,27310859112,28064978384,28068351544],[1455171600,27429487992,27434657712,28064978384,28068351544],[1455171900,26626837728,26641167008,28113604352,28141745184],[1455172200,27449148832,27459952928,28113604352,28141745184],[1455172500,26916950448,26900785736,30176677648,30198264928],[1455172800,29250446208,29273954672,30176677648,30198264928],[1455173100,28720085952,28738987096,33533863344,33523672424],[1455173400,32326064920,32328712792,33533863344,33523672424],[1455173700,30588736592,30610808776,32927577048,32927247584],[1455173905,32927577048,32927247584,32927577048,32927247584],[1455174216,33318989448,33335985072,33318989448,33335985072]],\"expiration\":5,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(57,'8da95cdb-7e2d-4d89-b647-95c8c6bd004e','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'gate','{\"ability\":\"viewHorizon\",\"result\":\"allowed\",\"arguments\":[],\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/resources\\/views\\/layouts\\/menu.foil.php\",\"line\":342,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(58,'8da95cdb-7eb5-411b-94c8-d0b557596c6b','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'gate','{\"ability\":\"viewTelescope\",\"result\":\"allowed\",\"arguments\":[],\"file\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/resources\\/views\\/layouts\\/menu.foil.php\",\"line\":355,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(59,'8da95cdb-8193-42a1-8ce9-e778da6f2111','8da95cdb-8432-48ac-9613-0089efec57f7',NULL,1,'request','{\"uri\":\"\\/admin\",\"method\":\"GET\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\AdminController@dashboard\",\"middleware\":[\"web\",\"auth\",\"assert.privilege:3\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6IjY0SkJ1b3RHRFgyN2NMcGhlSHRkMkE9PSIsInZhbHVlIjoia3dHU3RcL3dib00wQ2dMaThQUVlqK01jMUh1SlpJMUhJN21sXC9IRUxpMUxUXC9hVjdxUTR6THlwKzJuUjQ0bzJiZSIsIm1hYyI6IjViZTM5ZmNiMWUxZDI5Yjk0NjI2YTA4YmEwNjU3NGU1MTgxNjdkNTQ3YTIyNzUwNWQ0YmVhNjI0NmZiZTBhMWQifQ%3D%3D; IXP_Manager=eyJpdiI6IndKb1UyOFwvOWpRMmdkTUUrZk5TQUtBPT0iLCJ2YWx1ZSI6ImtCNFppcW81d3F3V0VFSFlKa0lsQ29QcUY1bzk1YVlRa09yTXBQeDZVTkQ4M3pxaGVlQnlpRmZndG9iXC9WdGpZIiwibWFjIjoiZGNhMWY1MzE0MzJmZjM2MTZhZWU3YWVmZWYyZWVlZWMxZDdhMTYyYzE3MDIyN2I2YjRmMTAyYzdlODNkN2UyMCJ9\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/login\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"_token\":\"DKeD4q0Ssmn2xBbh6e7kEq9wzMUPAECXT2sp8KoJ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\\/admin\"},\"_flash\":{\"old\":[],\"new\":[]},\"url\":[],\"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d\":1},\"response_status\":200,\"response\":{\"view\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/resources\\/views\\/admin\\/dashboard.foil.php\",\"data\":{\"stats\":{\"types\":{\"1\":\"3\",\"3\":\"1\",\"4\":\"1\"},\"speeds\":{\"10\":2,\"100\":1,\"1000\":4,\"10000\":1},\"custsByLocation\":{\"Location 1\":8},\"byLocation\":{\"Location 1\":{\"1000\":4,\"100\":1,\"10\":2,\"10000\":1}},\"byLan\":{\"Infrastructure #1\":{\"1000\":3,\"100\":1,\"10\":1},\"Infrastructure #2\":{\"1000\":1,\"10\":1,\"10000\":1}},\"byIxp\":{\"VAGRANT IXP\":{\"1000\":1,\"100\":1,\"10\":1,\"10000\":1}},\"rsUsage\":[{\"vlanname\":\"Peering LAN 1\",\"overall_count\":4,\"rsclient_count\":\"4\"},{\"vlanname\":\"Peering LAN 2\",\"overall_count\":3,\"rsclient_count\":\"3\"}],\"ipv6Usage\":[{\"vlanname\":\"Peering LAN 1\",\"overall_count\":4,\"ipv6_count\":\"2\"},{\"vlanname\":\"Peering LAN 2\",\"overall_count\":3,\"ipv6_count\":\"2\"}],\"cached_at\":\"2019-05-11T14:37:48.621150Z\"},\"graphs\":{\"ixp\":[],\"1\":[],\"2\":[]},\"graph_period\":\"week\",\"graph_periods\":{\"day\":\"Day\",\"week\":\"Week\",\"month\":\"Month\",\"year\":\"Year\"},\"customers\":{\"4\":\"AS112\",\"2\":\"HEAnet\",\"5\":\"Imagine\",\"3\":\"PCH DNS\",\"1\":\"VAGRANT IXP\"}}},\"duration\":376,\"hostname\":\"barryo-mac3.local\",\"user\":{\"id\":1,\"name\":null,\"email\":\"joe@example.com\"}}','2019-05-11 14:37:48'),(60,'8da95ce1-2eec-4324-946e-735163bd51b8','8da95ce1-2fd3-4b02-a7bc-e0a63705b5a4',NULL,1,'request','{\"uri\":\"\\/logout\",\"method\":\"GET\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\Auth\\\\LoginController@logout\",\"middleware\":[\"web\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6IkhXT1hGajFhYkQrRDYrSTE0UXNrMmc9PSIsInZhbHVlIjoiN25NRUV2VzM0OEpDMWgwSmlWR0VsNjRKMkVzbFduQlVsWVlaV25vcGcxMjdvdkdrMGxIZEtYVko0djVHODZPaiIsIm1hYyI6ImE3MzcwODZkODVkZGZkYmIzYzhhZTViNzFiNWQxMWVmMTg5MjZmYjRmZTA4ZWViZGY1NTk4ZWU5ZGRlNTY5OGYifQ%3D%3D; IXP_Manager=eyJpdiI6IjNPMHFZb1R1Z1FYQWpHekZEMDlWNUE9PSIsInZhbHVlIjoiNzkxZlA4Zmh0SmplVU00UjI0WUtTQm8zSGF0SXJKK0JhM3VvXC9UTUFlUVJVaElsNFZIMGxWOGdwRGhZSE1EZHkiLCJtYWMiOiIxNGNkNmI5OWY1OWM0YjE0YTFiZGYzZDgzN2RlYmRkZjc1OTFjNDY3NWU4MGMyMjU0YTkyNmU5YWRjYjczOWU5In0%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/admin\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"ixp\":{\"utils\":{\"view\":{\"alerts\":[{}]}}},\"_flash\":{\"old\":[],\"new\":[]}},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\",\"duration\":216,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:52'),(61,'8da95ce1-9db3-41a8-be38-d497fecf6087','8da95ce1-9ed4-468f-bce1-66137866646a',NULL,1,'request','{\"uri\":\"\\/\",\"method\":\"GET\",\"controller_action\":\"Closure\",\"middleware\":[\"web\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6InFseGtVNENFcTliK0JxYzUweUpcL0x3PT0iLCJ2YWx1ZSI6InRlM3JaTzJvXC9tZ1hmTUtGaHNaTmF3PT0iLCJtYWMiOiJkN2JiNGMxYmI4NDBhMDQ5NWE4Yzg3ZjQwOWIxMDQyYmE0YjBjMWVmYzliMDEwODA1MTk2NjBmMzg3ZWQ5OTIxIn0%3D; IXP_Manager=eyJpdiI6IkRwYlRqaHRPaHA5VDBhdDdJZHFPV1E9PSIsInZhbHVlIjoic3ppVVFHSUdLZmw2R3FOOU12WlNyVCtUbjFpUExpWjdZZVBrZm5xMWVJbVJwbHQ2RWRKdWpNRkFnTzRScUNFNCIsIm1hYyI6ImM2MTVkODE5OWJhNTAwYTEwODgxMDEwNWY5NDIyMGQ3OTMxYzk0MGQwZGQ0MDNlNTAxMjA3MDY5ZWY5YzkwMGIifQ%3D%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/admin\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"ixp\":{\"utils\":{\"view\":{\"alerts\":[{}]}}},\"_flash\":{\"old\":[],\"new\":[]},\"_token\":\"WKKKCk5iiWTjLMNvET7WiIWC4tcoazit6yV9zPkQ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\"}},\"response_status\":302,\"response\":\"Redirected to http:\\/\\/ixp-ibn.ldev\\/login\",\"duration\":233,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:52'),(62,'8da95ce1-e637-4b7b-8213-ee96f1a0f04f','8da95ce1-e764-4e0b-8bdc-97466f8917de',NULL,1,'request','{\"uri\":\"\\/login\",\"method\":\"GET\",\"controller_action\":\"IXP\\\\Http\\\\Controllers\\\\Auth\\\\LoginController@showLoginForm\",\"middleware\":[\"web\",\"guest\"],\"headers\":{\"upgrade-insecure-requests\":\"1\",\"cookie\":\"XSRF-TOKEN=eyJpdiI6IktKYnVHelpoNlhxZ0E5YW85ZENVQVE9PSIsInZhbHVlIjoibFVTanlOYWRWdzdHYU1KNWN4aEZ4VWc4d3dka2NqSjNTMGRDQU01MlB1a3hNUHZBMkJSR0dzN0VVR2MzdlBVWCIsIm1hYyI6IjdjNzQyZGQyY2YzYTJhY2M4MjhjOWI5ZmRkNGJkZWVkYzNiYzFkYTAxODUwYzlmM2VjN2M5MDhhNzBiNDU1NDIifQ%3D%3D; IXP_Manager=eyJpdiI6IndrYXJTZjVyN0ZPcWdNNk1hbnBad0E9PSIsInZhbHVlIjoiQ2VXMkpVMndKeWR6TStZS0huaVdod21mOCtPQ0pYdGF4Qnl1N1pXZXM1Y0c1TDEwXC9NbDFXWDE3RTdzdms1M2EiLCJtYWMiOiI2ZWY4NjA0NjgwNjRmZWEwZDYzNjA3OGNkZjkxOTMwMjgzYmIwNTQ2ZGU3MWRhZTUxY2JiY2E2YTg2ZDM4ZjkyIn0%3D\",\"connection\":\"keep-alive\",\"dnt\":\"1\",\"referer\":\"http:\\/\\/ixp-ibn.ldev\\/admin\",\"accept-encoding\":\"gzip, deflate\",\"accept-language\":\"en-IE,en-GB;q=0.7,en;q=0.3\",\"accept\":\"text\\/html,application\\/xhtml+xml,application\\/xml;q=0.9,*\\/*;q=0.8\",\"user-agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko\\/20100101 Firefox\\/66.0\",\"host\":\"ixp-ibn.ldev\",\"content-length\":\"\",\"content-type\":\"\"},\"payload\":[],\"session\":{\"ixp\":{\"utils\":{\"view\":{\"alerts\":[]}}},\"_flash\":{\"old\":[],\"new\":[]},\"_token\":\"WKKKCk5iiWTjLMNvET7WiIWC4tcoazit6yV9zPkQ\",\"_previous\":{\"url\":\"http:\\/\\/ixp-ibn.ldev\\/login\"},\"url\":{\"intended\":\"http:\\/\\/ixp-ibn.ldev\\/admin\"}},\"response_status\":200,\"response\":{\"view\":\"\\/Users\\/barryo\\/dev\\/ixp-ibn\\/resources\\/views\\/auth\\/login.foil.php\",\"data\":[]},\"duration\":176,\"hostname\":\"barryo-mac3.local\"}','2019-05-11 14:37:52'); -/*!40000 ALTER TABLE `telescope_entries` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `telescope_entries_tags` --- - -DROP TABLE IF EXISTS `telescope_entries_tags`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `telescope_entries_tags` ( - `entry_uuid` char(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `tag` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - KEY `telescope_entries_tags_entry_uuid_tag_index` (`entry_uuid`,`tag`), - KEY `telescope_entries_tags_tag_index` (`tag`), - CONSTRAINT `telescope_entries_tags_entry_uuid_foreign` FOREIGN KEY (`entry_uuid`) REFERENCES `telescope_entries` (`uuid`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `telescope_entries_tags` --- - -LOCK TABLES `telescope_entries_tags` WRITE; -/*!40000 ALTER TABLE `telescope_entries_tags` DISABLE KEYS */; -INSERT INTO `telescope_entries_tags` VALUES ('8da95cda-4a7d-4c5e-8062-e8e8f6ef2fc6','Auth:1'),('8da95cda-9a9e-4e33-ac8c-93293a1408d1','Auth:1'),('8da95cda-eb0a-4e26-a3ae-f0e9faed8ea0','Auth:1'),('8da95cdb-324e-4d33-8829-71e48083ee84','Auth:1'),('8da95cdb-3f68-4114-aa58-5fdccf8e544c','Auth:1'),('8da95cdb-3ff4-4678-b1fc-56c67c36dcea','Auth:1'),('8da95cdb-406b-4616-8d2f-6829ebf8347f','Auth:1'),('8da95cdb-412f-433a-9660-7912dace02c4','Auth:1'),('8da95cdb-5461-4dfa-85d2-12c698a2b6de','Auth:1'),('8da95cdb-55db-4f8d-8e59-5aba480ec518','Auth:1'),('8da95cdb-5764-4b10-80df-c87b152f8919','Auth:1'),('8da95cdb-5a60-4e71-bf02-109c50c0397c','Auth:1'),('8da95cdb-5b5b-4a7c-9781-5619c9e9d1dc','Auth:1'),('8da95cdb-5cb6-45ad-a7aa-0d7ef2c8cb3f','Auth:1'),('8da95cdb-5e34-4529-8aee-e560c34a77a4','Auth:1'),('8da95cdb-6460-4ee4-9f20-81005e52b3d3','Auth:1'),('8da95cdb-65b4-44ff-ab5c-1260b67be953','Auth:1'),('8da95cdb-668a-407a-9c87-c18979b81fd2','Auth:1'),('8da95cdb-672c-4dbf-afe5-0f2d036a2c62','Auth:1'),('8da95cdb-6868-4c22-bdf8-58f0e59e3d7c','Auth:1'),('8da95cdb-6d83-416d-a917-88ecabe0c5a0','Auth:1'),('8da95cdb-6ed0-4870-8820-f72eda355784','Auth:1'),('8da95cdb-6fa5-46f6-afba-b14a5d76c611','Auth:1'),('8da95cdb-7049-4f54-8246-230162ea098f','Auth:1'),('8da95cdb-7192-4c34-9f70-a0a3441e2d00','Auth:1'),('8da95cdb-766a-4fb4-94d4-0bc0f3d4f424','Auth:1'),('8da95cdb-7e2d-4d89-b647-95c8c6bd004e','Auth:1'),('8da95cdb-7eb5-411b-94c8-d0b557596c6b','Auth:1'),('8da95cdb-8193-42a1-8ce9-e778da6f2111','Auth:1'); -/*!40000 ALTER TABLE `telescope_entries_tags` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `telescope_monitoring` --- - -DROP TABLE IF EXISTS `telescope_monitoring`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `telescope_monitoring` ( - `tag` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `telescope_monitoring` --- - -LOCK TABLES `telescope_monitoring` WRITE; -/*!40000 ALTER TABLE `telescope_monitoring` DISABLE KEYS */; -/*!40000 ALTER TABLE `telescope_monitoring` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `traffic_95th` --- - -DROP TABLE IF EXISTS `traffic_95th`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `traffic_95th` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cust_id` int(11) DEFAULT NULL, - `datetime` datetime DEFAULT NULL, - `average` bigint(20) DEFAULT NULL, - `max` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_70BB409ABFF2A482` (`cust_id`), - CONSTRAINT `FK_70BB409ABFF2A482` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `traffic_95th` --- - -LOCK TABLES `traffic_95th` WRITE; -/*!40000 ALTER TABLE `traffic_95th` DISABLE KEYS */; -/*!40000 ALTER TABLE `traffic_95th` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `traffic_95th_monthly` --- - -DROP TABLE IF EXISTS `traffic_95th_monthly`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `traffic_95th_monthly` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cust_id` int(11) DEFAULT NULL, - `month` date DEFAULT NULL, - `max_95th` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_ED79F9DCBFF2A482` (`cust_id`), - CONSTRAINT `FK_ED79F9DCBFF2A482` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `traffic_95th_monthly` --- - -LOCK TABLES `traffic_95th_monthly` WRITE; -/*!40000 ALTER TABLE `traffic_95th_monthly` DISABLE KEYS */; -/*!40000 ALTER TABLE `traffic_95th_monthly` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `traffic_daily` --- - -DROP TABLE IF EXISTS `traffic_daily`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `traffic_daily` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cust_id` int(11) NOT NULL, - `ixp_id` int(11) NOT NULL, - `day` date DEFAULT NULL, - `category` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `day_avg_in` bigint(20) DEFAULT NULL, - `day_avg_out` bigint(20) DEFAULT NULL, - `day_max_in` bigint(20) DEFAULT NULL, - `day_max_out` bigint(20) DEFAULT NULL, - `day_tot_in` bigint(20) DEFAULT NULL, - `day_tot_out` bigint(20) DEFAULT NULL, - `week_avg_in` bigint(20) DEFAULT NULL, - `week_avg_out` bigint(20) DEFAULT NULL, - `week_max_in` bigint(20) DEFAULT NULL, - `week_max_out` bigint(20) DEFAULT NULL, - `week_tot_in` bigint(20) DEFAULT NULL, - `week_tot_out` bigint(20) DEFAULT NULL, - `month_avg_in` bigint(20) DEFAULT NULL, - `month_avg_out` bigint(20) DEFAULT NULL, - `month_max_in` bigint(20) DEFAULT NULL, - `month_max_out` bigint(20) DEFAULT NULL, - `month_tot_in` bigint(20) DEFAULT NULL, - `month_tot_out` bigint(20) DEFAULT NULL, - `year_avg_in` bigint(20) DEFAULT NULL, - `year_avg_out` bigint(20) DEFAULT NULL, - `year_max_in` bigint(20) DEFAULT NULL, - `year_max_out` bigint(20) DEFAULT NULL, - `year_tot_in` bigint(20) DEFAULT NULL, - `year_tot_out` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_1F0F81A7BFF2A482` (`cust_id`), - KEY `IDX_1F0F81A7A5A4E881` (`ixp_id`), - CONSTRAINT `FK_1F0F81A7A5A4E881` FOREIGN KEY (`ixp_id`) REFERENCES `ixp` (`id`), - CONSTRAINT `FK_1F0F81A7BFF2A482` FOREIGN KEY (`cust_id`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `traffic_daily` --- - -LOCK TABLES `traffic_daily` WRITE; -/*!40000 ALTER TABLE `traffic_daily` DISABLE KEYS */; -/*!40000 ALTER TABLE `traffic_daily` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user` --- - -DROP TABLE IF EXISTS `user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `username` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `password` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `authorisedMobile` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `uid` int(11) DEFAULT NULL, - `privs` int(11) DEFAULT NULL, - `disabled` tinyint(1) DEFAULT NULL, - `lastupdated` datetime DEFAULT NULL, - `lastupdatedby` int(11) DEFAULT NULL, - `creator` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` datetime DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_8D93D649F85E0677` (`username`), - KEY `IDX_8D93D649DA0209B9` (`custid`), - CONSTRAINT `FK_8D93D649DA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user` --- - -LOCK TABLES `user` WRITE; -/*!40000 ALTER TABLE `user` DISABLE KEYS */; -INSERT INTO `user` VALUES (1,1,'vagrant','$2a$09$kI2ORSzVnuekb9XERfL1we2tENnDJXsR.oxlWM5ELHX9G3aoCdvne','joe@example.com',NULL,NULL,3,0,'2015-08-20 15:19:12',1,'travis','2014-01-06 13:54:22','Vagrant',NULL),(2,4,'as112','$2a$09$bYMQzLJs6VdISr3OlwqGAe7LVe0K6xALQUkThuhQ27hwB4EJ.g/1a','none@example.com',NULL,NULL,2,0,'2015-08-20 15:24:41',1,'vagrant','2015-08-20 15:24:41','Customer AS112',NULL),(3,4,'as112user','$2a$09$O1rXly8ResuQdbkZGQx6perb2FH72PvFsoVvjVvY5bd6DlyVNKwna','none@example.com',NULL,NULL,1,0,'2015-08-20 15:25:30',1,'vagrant','2015-08-20 15:25:20','AS112 User',NULL); -/*!40000 ALTER TABLE `user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user_logins` --- - -DROP TABLE IF EXISTS `user_logins`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user_logins` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` int(11) NOT NULL, - `ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL, - `at` datetime NOT NULL, - `customer_to_user_id` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `IDX_6341CC99A76ED395` (`user_id`), - KEY `at_idx` (`at`,`user_id`), - KEY `IDX_6341CC99D43FEAE2` (`customer_to_user_id`), - CONSTRAINT `FK_6341CC99A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_6341CC99D43FEAE2` FOREIGN KEY (`customer_to_user_id`) REFERENCES `customer_to_users` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user_logins` --- - -LOCK TABLES `user_logins` WRITE; -/*!40000 ALTER TABLE `user_logins` DISABLE KEYS */; -INSERT INTO `user_logins` VALUES (1,1,'10.37.129.2','2014-01-06 13:54:52',1),(2,1,'10.37.129.2','2014-01-13 10:38:11',1),(3,1,'10.0.2.2','2015-08-20 14:44:45',1),(4,1,'10.0.2.2','2017-11-09 12:14:12',1),(5,1,'10.0.2.2','2019-01-21 16:10:47',1),(6,1,'127.0.0.1','2019-05-11 14:37:47',1); -/*!40000 ALTER TABLE `user_logins` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user_pref` --- - -DROP TABLE IF EXISTS `user_pref`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user_pref` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `user_id` int(11) DEFAULT NULL, - `attribute` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ix` int(11) NOT NULL DEFAULT '0', - `op` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` longtext COLLATE utf8_unicode_ci, - `expire` bigint(20) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `IX_UserPreference_1` (`user_id`,`attribute`,`op`,`ix`), - KEY `IDX_DBD4D4F8A76ED395` (`user_id`), - CONSTRAINT `FK_DBD4D4F8A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user_pref` --- - -LOCK TABLES `user_pref` WRITE; -/*!40000 ALTER TABLE `user_pref` DISABLE KEYS */; -INSERT INTO `user_pref` VALUES (1,1,'auth.last_login_from',0,'=','10.0.2.2',0),(2,1,'auth.last_login_at',0,'=','1510229652',0),(4,3,'customer-notes.read_upto',0,'=','1440084320',0); -/*!40000 ALTER TABLE `user_pref` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `vendor` --- - -DROP TABLE IF EXISTS `vendor`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `vendor` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `shortname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nagios_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `bundle_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `vendor` --- - -LOCK TABLES `vendor` WRITE; -/*!40000 ALTER TABLE `vendor` DISABLE KEYS */; -INSERT INTO `vendor` VALUES (1,'Cisco Systems','Cisco','cisco',NULL),(2,'Foundry Networks','Brocade','brocade',NULL),(3,'Extreme Networks','Extreme','extreme',NULL),(4,'Force10 Networks','Force10','force10',NULL),(5,'Glimmerglass','Glimmerglass','glimmerglass',NULL),(6,'Allied Telesyn','AlliedTel','alliedtel',NULL),(7,'Enterasys','Enterasys','enterasys',NULL),(8,'Dell','Dell','dell',NULL),(9,'Hitachi Cable','Hitachi','hitachi',NULL),(10,'MRV','MRV','mrv',NULL),(11,'Transmode','Transmode','transmode',NULL),(12,'Brocade','Brocade','brocade',NULL),(13,'Juniper Networks','Juniper','juniper',NULL); -/*!40000 ALTER TABLE `vendor` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `virtualinterface` --- - -DROP TABLE IF EXISTS `virtualinterface`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `virtualinterface` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `custid` int(11) DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mtu` int(11) DEFAULT NULL, - `trunk` tinyint(1) DEFAULT NULL, - `channelgroup` int(11) DEFAULT NULL, - `lag_framing` tinyint(1) NOT NULL DEFAULT '0', - `fastlacp` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `IDX_11D9014FDA0209B9` (`custid`), - CONSTRAINT `FK_11D9014FDA0209B9` FOREIGN KEY (`custid`) REFERENCES `cust` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `virtualinterface` --- - -LOCK TABLES `virtualinterface` WRITE; -/*!40000 ALTER TABLE `virtualinterface` DISABLE KEYS */; -INSERT INTO `virtualinterface` VALUES (1,2,'','',0,0,0,0,0),(2,2,'','',0,0,0,0,0),(3,3,'','',0,0,0,0,0),(4,4,'','',0,0,0,0,0),(5,4,'','',0,0,0,0,0),(6,5,'','',0,0,0,0,0),(7,5,'','',0,0,0,0,0); -/*!40000 ALTER TABLE `virtualinterface` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `vlan` --- - -DROP TABLE IF EXISTS `vlan`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `vlan` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `infrastructureid` int(11) NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` int(11) DEFAULT NULL, - `private` tinyint(1) NOT NULL DEFAULT '0', - `notes` longtext COLLATE utf8_unicode_ci, - `peering_matrix` tinyint(1) NOT NULL DEFAULT '0', - `peering_manager` tinyint(1) NOT NULL DEFAULT '0', - `config_name` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `infra_config_name` (`infrastructureid`,`config_name`), - KEY `IDX_F83104A1721EBF79` (`infrastructureid`), - CONSTRAINT `FK_F83104A1721EBF79` FOREIGN KEY (`infrastructureid`) REFERENCES `infrastructure` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `vlan` --- - -LOCK TABLES `vlan` WRITE; -/*!40000 ALTER TABLE `vlan` DISABLE KEYS */; -INSERT INTO `vlan` VALUES (1,1,'Peering LAN 1',1,0,'',0,0,NULL),(2,2,'Peering LAN 2',2,0,'',0,0,NULL); -/*!40000 ALTER TABLE `vlan` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `vlaninterface` --- - -DROP TABLE IF EXISTS `vlaninterface`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `vlaninterface` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `ipv4addressid` int(11) DEFAULT NULL, - `ipv6addressid` int(11) DEFAULT NULL, - `virtualinterfaceid` int(11) DEFAULT NULL, - `vlanid` int(11) DEFAULT NULL, - `ipv4enabled` tinyint(1) DEFAULT '0', - `ipv4hostname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv6enabled` tinyint(1) DEFAULT '0', - `ipv6hostname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mcastenabled` tinyint(1) DEFAULT '0', - `irrdbfilter` tinyint(1) DEFAULT '1', - `bgpmd5secret` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv4bgpmd5secret` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipv6bgpmd5secret` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `maxbgpprefix` int(11) DEFAULT NULL, - `rsclient` tinyint(1) DEFAULT NULL, - `ipv4canping` tinyint(1) DEFAULT NULL, - `ipv6canping` tinyint(1) DEFAULT NULL, - `ipv4monitorrcbgp` tinyint(1) DEFAULT NULL, - `ipv6monitorrcbgp` tinyint(1) DEFAULT NULL, - `as112client` tinyint(1) DEFAULT NULL, - `busyhost` tinyint(1) DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `rsmorespecifics` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `UNIQ_B4B4411A73720641` (`ipv4addressid`), - UNIQUE KEY `UNIQ_B4B4411A7787D67C` (`ipv6addressid`), - KEY `IDX_B4B4411ABFDF15D5` (`virtualinterfaceid`), - KEY `IDX_B4B4411AF48D6D0` (`vlanid`), - CONSTRAINT `FK_B4B4411A73720641` FOREIGN KEY (`ipv4addressid`) REFERENCES `ipv4address` (`id`), - CONSTRAINT `FK_B4B4411A7787D67C` FOREIGN KEY (`ipv6addressid`) REFERENCES `ipv6address` (`id`), - CONSTRAINT `FK_B4B4411ABFDF15D5` FOREIGN KEY (`virtualinterfaceid`) REFERENCES `virtualinterface` (`id`) ON DELETE CASCADE, - CONSTRAINT `FK_B4B4411AF48D6D0` FOREIGN KEY (`vlanid`) REFERENCES `vlan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `vlaninterface` --- - -LOCK TABLES `vlaninterface` WRITE; -/*!40000 ALTER TABLE `vlaninterface` DISABLE KEYS */; -INSERT INTO `vlaninterface` VALUES (1,10,16,1,1,1,'a.heanet.ie',1,'a.heanet.ie',0,1,NULL,'N7rX2SdfbRsyBLTm','N7rX2SdfbRsyBLTm',1000,1,1,1,1,1,1,0,NULL,0),(2,137,417,2,2,1,'b.heanet.ie',1,'b.heanet.ie',0,1,NULL,'u5zSNJLAVT87RGXQ','u5zSNJLAVT87RGXQ',1000,1,1,1,1,1,0,0,NULL,0),(3,36,NULL,3,1,1,'a.pch.ie',0,'',0,1,NULL,'mcWsqMdzGwTKt67g','mcWsqMdzGwTKt67g',2000,1,1,0,1,0,1,0,NULL,0),(4,6,NULL,4,1,1,'a.as112.net',0,'',0,1,NULL,'w83fmGpRDtaKomQo','w83fmGpRDtaKomQo',20,1,1,0,1,0,0,0,NULL,0),(5,132,NULL,5,2,1,'b.as112.net',0,'',0,1,NULL,'Pz8VYMNwEdCjKz68','Pz8VYMNwEdCjKz68',20,1,1,0,1,0,0,0,NULL,0),(6,NULL,8,6,1,0,'',1,'a.imagine.ie',0,1,NULL,'X8Ks9QnbER9cyzU3','X8Ks9QnbER9cyzU3',1000,1,0,1,0,1,0,0,NULL,0),(7,172,470,7,2,1,'b.imagine.ie',1,'b.imagine.ie',0,1,NULL,'LyJND4eoKuQz5j49','LyJND4eoKuQz5j49',1000,1,1,1,1,1,0,0,NULL,0); -/*!40000 ALTER TABLE `vlaninterface` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2019-05-11 15:38:04 diff --git a/docker-compose.yml b/docker-compose.yml index 0ac931260..1a20b222c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,4 @@ -version: "2.3" - networks: ixpmanager: driver: bridge @@ -21,6 +19,7 @@ services: build: context: tools/docker/containers/mysql image: ixpmanager/mysql:dev + platform: linux/x86_64 ports: - 33060:3306 networks: @@ -73,6 +72,7 @@ services: environment: XDEBUG_CONFIG: remote_host=${DOCKER_XDEBUG_CONFIG_REMOTE_HOST} image: ixpmanager/www:v5.0.0 + platform: linux/x86_64 ports: - 8880:80 depends_on: @@ -120,6 +120,7 @@ services: cust-as112: image: ixpmanager/bird:1.6.3 + platform: linux/x86_64 depends_on: - "rs1" networks: @@ -132,6 +133,7 @@ services: cust-as42: image: ixpmanager/bird:1.6.3 + platform: linux/x86_64 depends_on: - "rs1" networks: @@ -144,6 +146,7 @@ services: cust-as1213: image: ixpmanager/bird:1.6.3 + platform: linux/x86_64 depends_on: - "rs1" networks: @@ -156,6 +159,7 @@ services: cust-as1213-v6: image: ixpmanager/bird6:1.6.3 + platform: linux/x86_64 depends_on: - "rs1" networks: @@ -168,6 +172,7 @@ services: cust-as25441-v6: image: ixpmanager/bird6:1.6.3 + platform: linux/x86_64 depends_on: - "rs1" networks: diff --git a/package-lock.json b/package-lock.json index a5edaf32a..99141145e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "ixpm-inex", + "name": "ixpm-ibn", "version": "1.7.1", "lockfileVersion": 3, "requires": true, @@ -7,38 +7,36 @@ "": { "version": "1.7.1", "dependencies": { - "@popperjs/core": "^2.9.0", - "@webpack-cli/init": "^1.1.3", - "bootbox": "^5.3.2", - "bootstrap": "^4.5.2", + "alpinejs": "^3.14.1", + "bootbox": "^6.0.0", + "bootstrap": "^4.6.2", + "braces": "^3.0.3", "cross-env": "^7.0.3", - "css-loader": "^3.6.0", + "css-loader": "^7.1.2", "datatables-responsive": "^1.0.7", "datatables.net-bs4": "^1.10.21", "datatables.net-responsive-bs4": "^2.2.5", - "postcss-loader": "^3.0.0", + "jquery": "^3.5.1", + "jquery-knob": "^1.2.11", + "jquery-ui-dist": "^1.12.1", + "postcss-loader": "^8.1.1", "style-loader": "^2.0.0" }, "devDependencies": { "autoprefixer": "^10.4.19", - "axios": "^0.21", - "blueimp-file-upload": "^9.34.0", - "clipboard": "^2.0.6", + "axios": "^1.6.4", + "blueimp-file-upload": "^10.32.0", + "clipboard": "^2.0.11", "font-awesome": "^4.7.0", "ip-address": "^5.9.4", - "jquery": "^3.5.1", - "jquery-knob": "^1.2.11", - "jquery-ui-dist": "^1.12.1", - "laravel-mix": "^5.0.0", - "lodash": "^4.17.20", - "moment": "^2.27.0", + "laravel-mix": "^6.0.49", + "moment": "^2.30.1", "postcss": "^8.4.38", - "resolve-url-loader": "^2.3.1", + "resolve-url-loader": "^5.0.0", "sass": "^1.26.10", - "sass-loader": "^7.3.1", + "sass-loader": "^9.0.3", "select2": "^4.0.13", - "tailwindcss": "^3.4.3", - "vue": "^2.6.11" + "tailwindcss": "^3.4.7" } }, "node_modules/@alloc/quick-lru": { @@ -46,6 +44,7 @@ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -57,6 +56,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -66,11 +67,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.6", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -78,28 +80,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", - "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helpers": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/traverse": "^7.24.6", - "@babel/types": "^7.24.6", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -114,12 +120,24 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -129,35 +147,42 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", - "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -165,19 +190,29 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", - "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-member-expression-to-functions": "^7.24.6", - "@babel/helper-optimise-call-expression": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -187,12 +222,24 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", - "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -203,10 +250,22 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -218,69 +277,45 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", - "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -290,32 +325,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", - "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", - "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-wrap-function": "^7.24.6" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -325,13 +366,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", - "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-member-expression-to-functions": "^7.24.6", - "@babel/helper-optimise-call-expression": "^7.24.6" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -341,93 +384,98 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", - "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", - "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -436,38 +484,93 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz", - "integrity": "sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", - "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" }, "engines": { "node": ">=6.9.0" @@ -476,29 +579,30 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", - "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", - "@babel/plugin-transform-optional-chaining": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", - "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -507,36 +611,39 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { @@ -545,6 +652,7 @@ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -559,27 +667,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -591,6 +684,8 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -602,6 +697,8 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -613,6 +710,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -627,6 +726,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -638,6 +739,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -645,26 +748,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.6.tgz", - "integrity": "sha512-gNkksSdV8RbsCoHF9sjVYrHfYACMl/8U32UfUhJ9+84/ASXw8dlx+eHyyF0m6ncQJ9IBSxfuCkB36GJqYdXTOA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", - "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -674,11 +765,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", - "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -691,6 +784,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -702,6 +797,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -709,24 +806,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", - "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -738,6 +823,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -749,6 +836,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -760,6 +849,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -771,6 +862,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -782,6 +875,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -793,6 +888,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -807,6 +904,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -817,24 +916,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", - "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -847,11 +934,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", - "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -861,14 +950,16 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz", - "integrity": "sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-remap-async-to-generator": "^7.24.6", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" }, "engines": { "node": ">=6.9.0" @@ -878,13 +969,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz", - "integrity": "sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-remap-async-to-generator": "^7.24.6" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -894,11 +987,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", - "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -908,11 +1003,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", - "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -922,12 +1019,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", - "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -937,12 +1036,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", - "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -953,17 +1054,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", - "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -974,12 +1075,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", - "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/template": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -989,11 +1092,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", - "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1003,12 +1108,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", - "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1018,11 +1125,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", - "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1031,28 +1140,32 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", - "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", - "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1061,13 +1174,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", - "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1076,13 +1191,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.6.tgz", - "integrity": "sha512-1l8b24NoCpaQ13Vi6FtLG1nv6kNoi8PWvQb1AYO7GHZDpFfBYc3lbXArx1lP2KRt8b4pej1eWc/zrRmsQTfOdQ==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/plugin-syntax-flow": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +1209,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", - "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1107,13 +1226,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", - "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1123,11 +1244,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", - "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1138,11 +1261,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", - "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1152,11 +1277,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", - "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1167,11 +1294,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", - "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1181,12 +1310,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", - "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1196,13 +1327,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", - "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1212,14 +1345,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", - "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1229,12 +1364,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", - "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1244,12 +1381,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", - "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1259,11 +1398,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", - "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1273,11 +1414,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", - "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1288,11 +1431,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", - "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1303,14 +1448,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", - "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.6" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1320,12 +1467,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", - "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1335,11 +1484,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", - "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1350,12 +1501,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", - "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1366,11 +1519,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", - "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1380,12 +1535,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", - "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1395,13 +1552,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", - "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1412,11 +1571,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", - "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1426,11 +1587,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", - "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1441,11 +1604,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", - "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1455,15 +1620,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.6.tgz", - "integrity": "sha512-W3gQydMb0SY99y/2lV0Okx2xg/8KzmZLQsLaiCmwNRl1kKomz14VurEm+2TossUb+sRvBCnGe+wx8KtIgDtBbQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz", + "integrity": "sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1474,12 +1640,24 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", - "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1489,12 +1667,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", - "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1504,11 +1684,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", - "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1518,11 +1700,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", - "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1532,28 +1716,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", - "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.6.tgz", - "integrity": "sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/plugin-syntax-typescript": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1563,11 +1732,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", - "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1577,12 +1748,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", - "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1592,12 +1765,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", - "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1607,12 +1782,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", - "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1622,26 +1799,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.6.tgz", - "integrity": "sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==", - "dependencies": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.6", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.6", - "@babel/plugin-syntax-import-attributes": "^7.24.6", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1653,59 +1833,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.6", - "@babel/plugin-transform-async-generator-functions": "^7.24.6", - "@babel/plugin-transform-async-to-generator": "^7.24.6", - "@babel/plugin-transform-block-scoped-functions": "^7.24.6", - "@babel/plugin-transform-block-scoping": "^7.24.6", - "@babel/plugin-transform-class-properties": "^7.24.6", - "@babel/plugin-transform-class-static-block": "^7.24.6", - "@babel/plugin-transform-classes": "^7.24.6", - "@babel/plugin-transform-computed-properties": "^7.24.6", - "@babel/plugin-transform-destructuring": "^7.24.6", - "@babel/plugin-transform-dotall-regex": "^7.24.6", - "@babel/plugin-transform-duplicate-keys": "^7.24.6", - "@babel/plugin-transform-dynamic-import": "^7.24.6", - "@babel/plugin-transform-exponentiation-operator": "^7.24.6", - "@babel/plugin-transform-export-namespace-from": "^7.24.6", - "@babel/plugin-transform-for-of": "^7.24.6", - "@babel/plugin-transform-function-name": "^7.24.6", - "@babel/plugin-transform-json-strings": "^7.24.6", - "@babel/plugin-transform-literals": "^7.24.6", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.6", - "@babel/plugin-transform-member-expression-literals": "^7.24.6", - "@babel/plugin-transform-modules-amd": "^7.24.6", - "@babel/plugin-transform-modules-commonjs": "^7.24.6", - "@babel/plugin-transform-modules-systemjs": "^7.24.6", - "@babel/plugin-transform-modules-umd": "^7.24.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.6", - "@babel/plugin-transform-new-target": "^7.24.6", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.6", - "@babel/plugin-transform-numeric-separator": "^7.24.6", - "@babel/plugin-transform-object-rest-spread": "^7.24.6", - "@babel/plugin-transform-object-super": "^7.24.6", - "@babel/plugin-transform-optional-catch-binding": "^7.24.6", - "@babel/plugin-transform-optional-chaining": "^7.24.6", - "@babel/plugin-transform-parameters": "^7.24.6", - "@babel/plugin-transform-private-methods": "^7.24.6", - "@babel/plugin-transform-private-property-in-object": "^7.24.6", - "@babel/plugin-transform-property-literals": "^7.24.6", - "@babel/plugin-transform-regenerator": "^7.24.6", - "@babel/plugin-transform-reserved-words": "^7.24.6", - "@babel/plugin-transform-shorthand-properties": "^7.24.6", - "@babel/plugin-transform-spread": "^7.24.6", - "@babel/plugin-transform-sticky-regex": "^7.24.6", - "@babel/plugin-transform-template-literals": "^7.24.6", - "@babel/plugin-transform-typeof-symbol": "^7.24.6", - "@babel/plugin-transform-unicode-escapes": "^7.24.6", - "@babel/plugin-transform-unicode-property-regex": "^7.24.6", - "@babel/plugin-transform-unicode-regex": "^7.24.6", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -1715,26 +1896,22 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-flow": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.6.tgz", - "integrity": "sha512-huoe0T1Qs9fQhMWbmqE/NHUeZbqmHDsN6n/jYvPcUUHfuKiPV32C9i8tDhMbQ1DEKTjbBP7Rjm3nSLwlB2X05g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "@babel/plugin-transform-flow-strip-types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1744,51 +1921,19 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.6.tgz", - "integrity": "sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "@babel/plugin-syntax-jsx": "^7.24.6", - "@babel/plugin-transform-modules-commonjs": "^7.24.6", - "@babel/plugin-transform-typescript": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", - "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.6", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", - "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1797,31 +1942,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1830,23 +1976,37 @@ } }, "node_modules/@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "peer": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -1856,6 +2016,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1873,6 +2034,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1885,6 +2047,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1896,13 +2059,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1920,6 +2085,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1935,6 +2101,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1951,6 +2118,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1964,6 +2132,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1972,41 +2141,50 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2015,28 +2193,22 @@ "node": ">= 8" } }, - "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { + "node_modules/@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "engines": { - "node": ">= 6" - } - }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2050,6 +2222,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2059,329 +2232,517 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "@babel/types": "^7.0.0" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/types": "^7.20.7" } }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "node_modules/@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" - }, - "node_modules/@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", - "dev": true - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@vue/compiler-sfc": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", - "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "node_modules/@types/clean-css": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.11.tgz", + "integrity": "sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.23.5", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" + "@types/node": "*", + "source-map": "^0.6.0" } }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" + "@types/node": "*" } }, - "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "license": "MIT" }, - "node_modules/@vue/component-compiler-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@vue/component-compiler-utils/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true, + "license": "MIT" }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "node_modules/@types/http-proxy": { + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "@types/node": "*" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "node_modules/@types/imagemin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-9.0.0.tgz", + "integrity": "sha512-4IaT+BdPUAFf/AAy3XlFAbqGk4RawhdidxWO5XTe+PJAYAr4d7m2FHiqyEPXbDpwS+IaLIJq5AIjLE9HcwMGBg==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@types/node": "*" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "node_modules/@types/imagemin-gifsicle": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.4.tgz", + "integrity": "sha512-ZghMBd/Jgqg5utTJNPmvf6DkuHzMhscJ8vgf/7MUGCpO+G+cLrhYltL+5d+h3A1B4W73S2SrmJZ1jS5LACpX+A==", + "dev": true, + "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@types/imagemin": "*" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "node_modules/@types/imagemin-mozjpeg": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.4.tgz", + "integrity": "sha512-ZCAxV8SYJB8ehwHpnbRpHjg5Wc4HcyuAMiDhXbkgC7gujDoOTyHO3dhDkUtZ1oK1DLBRZapqG9etdLVhUml7yQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "@types/imagemin": "*" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "node_modules/@types/imagemin-optipng": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.4.tgz", + "integrity": "sha512-mvKnDMC8eCYZetAQudjs1DbgpR84WhsTx1wgvdiXnpuUEti3oJ+MaMYBRWPY0JlQ4+y4TXKOfa7+LOuT8daegQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@types/imagemin": "*" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "node_modules/@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@types/imagemin": "*", + "@types/svgo": "^1" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "undici-types": "~6.19.2" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@types/node": "*" } }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "license": "Apache-2.0", + "dependencies": { "@xtuc/long": "4.2.2" } }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -2389,43 +2750,19 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "peer": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/generators": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/generators/-/generators-1.3.1.tgz", - "integrity": "sha512-BJTAtOIhCk9GCQwj1j5fw4wExDHjNbBoyAMm6i+A23VhdCsyIMlEokT0X8hMr/xY9scrDC4n8QCTYpWcOZd31Q==", - "dependencies": { - "colorette": "^1.2.1", - "execa": "^5.0.0", - "findup-sync": "^4.0.0", - "global-modules": "^2.0.0", - "got": "^11.8.0", - "jscodeshift": "^0.11.0", - "log-symbols": "^4.0.0", - "p-each-series": "^2.1.0", - "yeoman-environment": "^2.10.3", - "yeoman-generator": "^4.12.0" - }, + "dev": true, + "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } } }, "node_modules/@webpack-cli/info": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "peer": true, + "dev": true, + "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -2433,23 +2770,12 @@ "webpack-cli": "4.x.x" } }, - "node_modules/@webpack-cli/init": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@webpack-cli/init/-/init-1.1.3.tgz", - "integrity": "sha512-DvvX4HTltz/dM6Ybwiskxv+BXOH4JVkgI9j66jueA/uK3EAyQuCDM6a9eR06AZbUFaC/iCpt0zlG0msXrZ69wg==", - "dependencies": { - "@webpack-cli/generators": "^1.3.1" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "peer": true, + "dev": true, + "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -2462,18 +2788,21 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2483,9 +2812,10 @@ } }, "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2493,68 +2823,34 @@ "node": ">=0.4.0" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz", - "integrity": "sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==", - "dev": true, - "dependencies": { - "assert": "^1.3.0", - "camelcase": "^1.2.1", - "loader-utils": "^1.1.0", - "lodash.assign": "^4.0.1", - "lodash.defaults": "^3.1.2", - "object-path": "^0.9.2", - "regex-parser": "^2.2.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/lodash.defaults": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", - "integrity": "sha512-X7135IXFQt5JDFnYxOVAzVz+kFvwDn3N8DJYf+nrz/mMWEuSu7+OL6rWqsk3+VR1T4TejFCSu5isBJOLSID2bg==", - "dev": true, - "dependencies": { - "lodash.assign": "^3.0.0", - "lodash.restparam": "^3.0.0" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/lodash.defaults/node_modules/lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha512-/VVxzgGBmbphasTg51FrztxQJ/VgAUpol6zmJuSVSGcNg4g7FA4z7rQV8Ovr9V3vFBNWZhvKWHfpAytjTVUfFA==", - "dev": true, - "dependencies": { - "lodash._baseassign": "^3.0.0", - "lodash._createassigner": "^3.0.0", - "lodash.keys": "^3.0.0" + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "engines": { - "node": ">=8" + "node": ">=8.9" } }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2566,49 +2862,64 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": ">=5.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/alpinejs": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.14.1.tgz", + "integrity": "sha512-ICar8UsnRZAYvv/fCNfNeKMXNoXGUfwHrjx7LqXd08zIP95G2d9bAOuaL97re+1mgt/HojqHsfdOLo/A5LuWgQ==", + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@vue/reactivity": "~3.1.1" } }, "node_modules/ansi-html-community": { @@ -2619,292 +2930,94 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "devOptional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "devOptional": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "devOptional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "devOptional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/anymatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "devOptional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "devOptional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "devOptional": true, + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "engines": { - "node": ">=8" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz", - "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-array-method-boxes-properly": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -2914,77 +3027,49 @@ "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "license": "MIT" }, "node_modules/assert": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "license": "MIT", "dependencies": { "object.assign": "^4.1.4", "util": "^0.10.4" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "inherits": "2.0.3" } }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -3000,12 +3085,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3018,107 +3104,16 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-loader": { @@ -3126,6 +3121,7 @@ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^2.0.0", @@ -3140,207 +3136,70 @@ "webpack": ">=2" } }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, + "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, - "engines": { - "node": ">=8.9.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-loader/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-merge": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-2.0.1.tgz", - "integrity": "sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "dependencies": { - "@babel/core": "^7.0.0-beta.49", - "deepmerge": "^2.1.0", - "object.omit": "^3.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -3354,86 +3213,75 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/binaryextensions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=8" }, "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/blueimp-canvas-to-blob": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.5.0.tgz", - "integrity": "sha512-1Aq2Yn6SUsOERT4Ng7GUWRy6oRvqeNU2Iwhcq5ZH7aoejFkLEKjRx/XcpepfU7IMmj3sONSmiLmSgzj9umGUPw==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", + "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/blueimp-file-upload": { - "version": "9.34.0", - "resolved": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-9.34.0.tgz", - "integrity": "sha512-dXacFmyv6p0n+l5+u1ssYhSpCJdYabl7BZTw5WvB6ygY2ksTB3SdD6huafryEO5DH+XuspHDL6+IJ3m14Va+FQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-10.32.0.tgz", + "integrity": "sha512-3WMJw5Cbfz94Adl1OeyH+rRpGwHiNHzja+CR6aRWPoAtwrUwvP5gXKo0XdX+sdPE+iCU63Xmba88hoHQmzY8RQ==", "dev": true, + "license": "MIT", "optionalDependencies": { - "blueimp-canvas-to-blob": "3.5.0", - "blueimp-load-image": "2.12.2", - "blueimp-tmpl": "3.6.0" + "blueimp-canvas-to-blob": "3", + "blueimp-load-image": "5", + "blueimp-tmpl": "3" + }, + "peerDependencies": { + "jquery": ">=1.7" } }, "node_modules/blueimp-load-image": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-2.12.2.tgz", - "integrity": "sha512-o6YeeBo0e6g3/T7mPZtED/y/66VdhMxYVEqE5Owl+9Ew0MpLFgFh6humePBAh0JVRfCtK7CHQ7K84S4GIfaZtg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-5.16.0.tgz", + "integrity": "sha512-3DUSVdOtlfNRk7moRZuTwDmA3NnG8KIJuLcq3c0J7/BIr6X3Vb/EpX3kUH1joxUhmoVF4uCpDfz7wHkz8pQajA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/blueimp-tmpl": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.6.0.tgz", - "integrity": "sha512-FPbl2VMophcudvT2Li+y10RtKT4l7wBto1NZycXoVQb1JVlo8QbjDgEqL9Ph41/rUl4dTOv3mqWPoxqCHA1b7A==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.20.0.tgz", + "integrity": "sha512-g6ln9L+VX8ZA4WA8mgKMethYH+5teroJ2uOkCvcthy9Y9d9LrQ42OAMn+r3ECKu9CB+xe9GOChlIUJBSxwkI6g==", "dev": true, + "license": "MIT", "optional": true, "bin": { "tmpl.js": "js/compile.js" @@ -3442,13 +3290,16 @@ "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "license": "MIT" }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -3473,6 +3324,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3482,6 +3334,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3490,13 +3343,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/body-parser/node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -3507,34 +3362,33 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, + "license": "MIT", "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/bootbox": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/bootbox/-/bootbox-5.5.3.tgz", - "integrity": "sha512-B4mnm1DYgNHzoNtD7I0L/fixqvya4EEQy5bFF/yNmGI2Eq3WwVVwdfWf3hoF8KS+EaV4f0uIMqtxB1EAZwZPhQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bootbox/-/bootbox-6.0.0.tgz", + "integrity": "sha512-+Calbj1v5UvxAXXDAHfoBlsx63Hcz1JqHaZdJ5EjIcOlkyAbZLCreVScx0Em6ZUvsMCqynuz/3nGDyd9FtFrNQ==", + "license": "MIT", "peerDependencies": { - "bootstrap": "^3.1.0 || ^4.4.0", - "jquery": "^3.5.1", - "popper.js": "^1.16.0" + "@popperjs/core": "^2.0.0", + "bootstrap": "^4.4.0 || ^5.0.0", + "jquery": "^3.5.1" } }, "node_modules/bootstrap": { @@ -3551,6 +3405,7 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.1" @@ -3560,40 +3415,38 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -3607,6 +3460,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -3617,6 +3472,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -3628,6 +3485,8 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -3637,6 +3496,8 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "license": "ISC", "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", @@ -3653,37 +3514,20 @@ "node": ">= 0.12" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", "dependencies": { "pako": "~1.0.5" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -3698,11 +3542,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -3715,6 +3560,8 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -3724,136 +3571,39 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "dependencies": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3868,57 +3618,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, "node_modules/camelcase-css": { @@ -3926,6 +3643,7 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -3935,6 +3653,7 @@ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -3943,9 +3662,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001621", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", - "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", + "version": "1.0.30001659", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz", + "integrity": "sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==", "funding": [ { "type": "opencollective", @@ -3959,78 +3678,66 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": "*" } }, "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "devOptional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" }, "optionalDependencies": { - "fsevents": "^1.2.7" + "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", "engines": { "node": ">=6.0" } @@ -4039,82 +3746,40 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "string-width": "^4.2.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "dependencies": { - "colors": "1.0.3" + "node": "10.* || >= 12.*" }, - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/cli-table/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, "node_modules/clipboard": { @@ -4122,6 +3787,7 @@ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", "dev": true, + "license": "MIT", "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -4129,80 +3795,26 @@ } }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "engines": { - "node": ">= 0.10" + "node": ">=12" } }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -4212,133 +3824,83 @@ "node": ">=6" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, "node_modules/collect.js": { "version": "4.36.1", "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.36.1.tgz", "integrity": "sha512-jd97xWPKgHn6uvK31V6zcyPd40lUJd7gpYxbN2VOVxGWO4tyvS9Li4EpsFjXepGTo2tYcOTC4a8YsbQXMJ4XUw==", - "dev": true - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } + "license": "MIT" }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } + "license": "MIT" }, "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 0.8" } }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -4351,6 +3913,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -4369,6 +3932,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4377,13 +3941,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" }, "node_modules/concat": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", "integrity": "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==", "dev": true, + "license": "MIT", "dependencies": { "commander": "^2.9.0" }, @@ -4397,59 +3970,53 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } + "node_modules/concat/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true, + "license": "MIT" + }, "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", - "dev": true, - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -4457,31 +4024,12 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4489,13 +4037,16 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4504,65 +4055,62 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "deprecated": "This package is no longer supported.", + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dev": true, + "license": "MIT", "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", - "dependencies": { - "browserslist": "^4.23.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -4571,23 +4119,16 @@ "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", - "dependencies": { - "capture-stack-trace": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -4600,6 +4141,8 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -4613,6 +4156,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -4630,6 +4174,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4644,6 +4189,7 @@ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": "*" } @@ -4652,6 +4198,8 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -4669,149 +4217,95 @@ "node": "*" } }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-declaration-sorter/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "license": "ISC", "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.0.9" } }, "node_modules/css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/css-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, + "license": "MIT", "dependencies": { - "mdn-data": "2.0.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "engines": { @@ -4819,10 +4313,11 @@ } }, "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -4834,6 +4329,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -4842,167 +4338,82 @@ } }, "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, + "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "url": "https://opencollective.com/cssnano" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/cssnano/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.2.15" } }, "node_modules/csso": { @@ -5010,6 +4421,7 @@ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, + "license": "MIT", "dependencies": { "css-tree": "^1.1.2" }, @@ -5017,99 +4429,11 @@ "node": ">=8.0.0" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/cyclist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", - "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==" - }, - "node_modules/dargs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-6.1.0.tgz", - "integrity": "sha512-5dVBvpBLBnPwSsYXqfybFyehMmC/EenKEcf23AhCTgTf48JFBbmJKqoZBsERDnjL0FyiVTYWdFsRfTLHxLyKdQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/datatables": { "version": "1.10.18", "resolved": "https://registry.npmjs.org/datatables/-/datatables-1.10.18.tgz", "integrity": "sha512-ntatMgS9NN6UMpwbmO+QkYJuKlVeMA2Mi0Gu/QxyIh+dW7ZjLSDhPT2tWlzjpIWEkDYgieDzS9Nu7bdQCW0sbQ==", + "license": "MIT", "dependencies": { "jquery": ">=1.7" } @@ -5127,6 +4451,7 @@ "version": "1.13.11", "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz", "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==", + "license": "MIT", "dependencies": { "jquery": "1.8 - 4" } @@ -5135,6 +4460,7 @@ "version": "1.13.11", "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.13.11.tgz", "integrity": "sha512-1LnxzQDFKpwvBETc8wtUtQ+pUXhs6NJomNST5pRzzHAccckkj9rZeOp3mevKDnDJKuNhBM1Y0rIeZGylJnqh9A==", + "license": "MIT", "dependencies": { "datatables.net": "1.13.11", "jquery": "1.8 - 4" @@ -5144,6 +4470,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.5.1.tgz", "integrity": "sha512-hyJb2faIzEWUX5Yn4HOSq/6NNB9SXDVbI4OU9ny+XU/2ghZEz4676spOgzpDHTdWvCfM+t1mbUsT70fDiTTr9w==", + "license": "MIT", "dependencies": { "datatables.net": "^1.13.0", "jquery": ">=1.7" @@ -5153,26 +4480,21 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs4/-/datatables.net-responsive-bs4-2.5.1.tgz", "integrity": "sha512-cOVCG9zRioqJiqZUPXel5/vxKGt8EFhxgzVafDNy2hY3ZO+UMMuRKcs2br/QMoojbXzpKNf2rL/lM7NoXKVKZA==", + "license": "MIT", "dependencies": { "datatables.net-bs4": "^1.13.0", "datatables.net-responsive": "2.5.1", "jquery": ">=1.7" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "engines": { - "node": "*" - } - }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -5183,228 +4505,25 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dev": true, - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/default-gateway/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "isexe": "^2.0.0" + "execa": "^5.0.0" }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "engines": { - "node": ">=10" + "node": ">= 10" } }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5417,10 +4536,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -5433,80 +4564,29 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, "node_modules/delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5515,6 +4595,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -5525,43 +4607,32 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "engines": { - "node": ">=0.3.1" - } + "dev": true, + "license": "Apache-2.0" }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -5571,199 +4642,199 @@ "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } + "license": "MIT" }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } }, "node_modules/domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.4", "npm": ">=1.2" } }, "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-obj": "^2.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, "engines": { - "node": ">=6" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/dotenv-expand": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", - "integrity": "sha512-pHWVt6L/YkqbBCMb1hG6e7oO0WdMhlapDIibl+BZ9PncVE3i+G77uvNr8GUxW2ItSituOK8QOYC9oOJjwWD94A==", - "dev": true - }, - "node_modules/download-stats": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/download-stats/-/download-stats-0.3.4.tgz", - "integrity": "sha512-ic2BigbyUWx7/CBbsfGjf71zUNZB4edBGC3oRliSzsoNmvyVx3Ycfp1w3vp2Y78Ee0eIIkjIEO5KzW0zThDGaA==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", "dependencies": { - "JSONStream": "^1.2.1", - "lazy-cache": "^2.0.1", - "moment": "^2.15.1" - }, - "engines": { - "node": ">=0.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" } }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/editions": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz", - "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==", - "dependencies": { - "errlop": "^2.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "hasInstallScript": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.782", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.782.tgz", - "integrity": "sha512-JUfU61e8tr+i5Y1FKXcKs+Xe+rJ+CEqm4cgv1kMihPE2EvYHmYyVr3Im/+1+Z5B29Be2EEGCZCwAc6Tazdl1Yg==" + "version": "1.5.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz", + "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==", + "license": "ISC" }, "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -5777,17 +4848,22 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -5797,41 +4873,22 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "license": "MIT", "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=10.13.0" } }, "node_modules/entities": { @@ -5839,15 +4896,26 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/envinfo": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "peer": true, + "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -5855,123 +4923,21 @@ "node": ">=4" } }, - "node_modules/errlop": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz", - "integrity": "sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==", - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dependencies": { - "string-template": "~0.2.1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -5983,113 +4949,23 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, + "license": "MIT", "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha512-sziUVwcvQ+lOsrTyUY0Q11ilAPj+dy7AQ1E1MgSaHTaaAFTffaa08QSlGNU61iyVaroyb6nYdBV6oD7nzn6i8w==", - "dev": true, - "dependencies": { - "recast": "~0.11.12", - "through": "~2.3.6" - } - }, - "node_modules/es6-templates/node_modules/ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es6-templates/node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es6-templates/node_modules/recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==", - "dev": true, - "dependencies": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - }, - "engines": { - "node": ">= 0.8" } }, - "node_modules/es6-templates/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "license": "MIT" }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6098,44 +4974,36 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -6147,6 +5015,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -6155,6 +5024,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -6163,6 +5033,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -6172,6 +5044,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6180,29 +5053,24 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -6212,6 +5080,8 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6230,52 +5100,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -6313,17 +5143,12 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6332,13 +5157,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/express/node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -6349,238 +5176,58 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/extract-text-webpack-plugin": { - "version": "4.0.0-beta.0", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz", - "integrity": "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==", - "dev": true, - "dependencies": { - "async": "^2.4.1", - "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/extract-text-webpack-plugin/node_modules/schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fast-glob/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/fast-glob/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "peer": true, + "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, - "node_modules/fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -6590,6 +5237,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -6597,110 +5245,66 @@ "node": ">=0.8.0" } }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "deprecated": "This module is no longer supported." - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", - "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, + "license": "MIT", "dependencies": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0 < 7.0.0 || >= 8.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/file-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { @@ -6708,6 +5312,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -6726,6 +5331,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6734,93 +5340,63 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" + "node": ">=8" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "^2.0.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "peer": true, + "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, - "node_modules/flow-parser": { - "version": "0.236.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.236.0.tgz", - "integrity": "sha512-0OEk9Gr+Yj7wjDW2KgaNYUypKau71jAfFyeLQF5iVtxqc6uJHag/MT7pmaEApf4qM7u86DkBcd4ualddYMfbLw==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6835,32 +5411,17 @@ "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", "dev": true, + "license": "(OFL-1.1 AND MIT)", "engines": { "node": ">=0.10.3" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -6877,6 +5438,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6884,11 +5446,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6898,6 +5476,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -6906,196 +5485,66 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/friendly-errors-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "Unlicense" }, - "node_modules/friendly-errors-webpack-plugin/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/friendly-errors-webpack-plugin/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/friendly-errors-webpack-plugin/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "deprecated": "This package is no longer supported.", - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "license": "ISC" }, "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, "engines": { - "node": ">= 4.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7104,6 +5553,8 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -7113,6 +5564,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7121,6 +5573,8 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -7139,6 +5593,8 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7146,103 +5602,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gh-got": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-5.0.0.tgz", - "integrity": "sha512-B9bWm0vDR7CSbFPxt528dbMTWd9CUc4h9U3Ji7e781Jy9Xm0p6QWKVndA4ETEzDCd3/GqVCjVfqqpl2kR1j3nA==", - "dependencies": { - "got": "^6.2.0", - "is-plain-obj": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gh-got/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/gh-got/node_modules/got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==", - "dependencies": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gh-got/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gh-got/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/github-username": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/github-username/-/github-username-3.0.0.tgz", - "integrity": "sha512-pbA1zobA7urImyNixOkCb/eO2fRadF7+RZgdjzT3/k/KukA8CY7QZ7BNCdCetH1kB0YqeBmY+Hn76XaC3rmmzQ==", - "dependencies": { - "gh-got": "^5.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7259,112 +5625,52 @@ } }, "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, "node_modules/globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/good-listener": { @@ -7372,6 +5678,7 @@ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", "dev": true, + "license": "MIT", "dependencies": { "delegate": "^3.1.2" } @@ -7380,6 +5687,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -7387,106 +5696,41 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grouped-queue": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-1.1.0.tgz", - "integrity": "sha512-rZOFKfCqLhsu5VqjBjEWiwrYqJR07KxIkH4mLZlNlGDfntbb4FbMyGFP14TlvRPrU9S3Hnn/sgxbC5ZeN0no3Q==", - "dependencies": { - "lodash": "^4.17.15" - } + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -7498,6 +5742,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7509,6 +5755,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7516,79 +5764,33 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" + "node": ">=4" } }, "node_modules/hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -7598,6 +5800,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -7610,47 +5814,29 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -7658,80 +5844,161 @@ "wbuf": "^1.1.0" } }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" }, "node_modules/html-loader": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", - "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/html-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { - "es6-templates": "^0.2.3", - "fastparse": "^1.1.1", - "html-minifier": "^3.5.8", - "loader-utils": "^1.1.0", - "object-assign": "^4.1.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", "dev": true, + "license": "MIT", "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" }, "bin": { - "html-minifier": "cli.js" + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true + "node_modules/html-minifier-terser/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } }, - "node_modules/http-cache-semantics": { + "node_modules/html-minifier-terser/node_modules/commander": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/html-minifier-terser/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -7747,13 +6014,15 @@ "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -7764,116 +6033,43 @@ } }, "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "node": ">=12.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "peerDependencies": { + "@types/express": "^4.17.13" }, - "engines": { - "node": ">=10.19.0" + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -7882,6 +6078,8 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7889,48 +6087,23 @@ "node": ">=0.10.0" } }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/icss-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/icss-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -7944,113 +6117,111 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "node_modules/imagemin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-6.1.0.tgz", - "integrity": "sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "dependencies": { - "file-type": "^10.7.0", - "globby": "^8.0.1", - "make-dir": "^1.0.0", - "p-pipe": "^1.1.0", - "pify": "^4.0.1", - "replace-ext": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/imagemin/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "node_modules/imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", "dev": true, + "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/imagemin/node_modules/make-dir/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/img-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-3.0.2.tgz", - "integrity": "sha512-rSriLKgvi85Km7ppSF+AEAM3nU4fxpvCkaXtC/IoCEU7jfks55bEANFs0bB9YXYkxY9JurZQIZFtXh5Gue3upw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^1.1.0" }, + "engines": { + "node": ">=12" + }, "peerDependencies": { - "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0" + "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", - "dev": true - }, - "node_modules/import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dependencies": { - "import-from": "^2.1.0" + "node_modules/img-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" }, - "engines": { - "node": ">=4" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "node_modules/img-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, - "node_modules/import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", "dependencies": { - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "peer": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -8065,97 +6236,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "peer": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8164,10494 +6251,4825 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "node_modules/ip-address": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "jsbn": "1.1.0", + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.10" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/interpret": { + "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "peer": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true - }, - "node_modules/ip-address": { - "version": "5.9.4", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", - "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { - "jsbn": "1.1.0", - "lodash": "^4.17.15", - "sprintf-js": "1.1.2" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, + "node_modules/jquery-knob": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/jquery-knob/-/jquery-knob-1.2.11.tgz", + "integrity": "sha512-gyeWDmtr2x8XJLSNS2JGNYDUNmfmMrwmFcGPDJ074jnPPvMYf3PJFud4/6AubCT8ahOY7UL4YvALtSwCrxtBBQ==", + "license": "MIT" + }, + "node_modules/jquery-ui-dist": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.3.tgz", + "integrity": "sha512-qeTR3SOSQ0jgxaNXSFU6+JtxdzNUSJKgp8LCzVrVKntM25+2YBJW1Ea8B2AwjmmSHfPLy2dSlZxJQN06OfVFhg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" + "jquery": ">=1.8.0 <4.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "devOptional": true, - "dependencies": { - "binary-extensions": "^1.0.0" + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "node_modules/klona": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/klona/-/klona-1.1.2.tgz", + "integrity": "sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==", "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">= 8" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/laravel-mix": { + "version": "6.0.49", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz", + "integrity": "sha512-bBMFpFjp26XfijPvY5y9zGKud7VqlyOE0OWUcPo3vTBY5asw8LTjafAbee1dhfLz6PWNqDziz69CP78ELSpfKw==", + "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "laravel-mix": "bin/cli.js", + "mix": "bin/cli.js" + }, + "engines": { + "node": ">=12.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "postcss": "^8.3.11", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "node_modules/laravel-mix/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/laravel-mix/node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", "dev": true, + "license": "MIT", "dependencies": { - "is-typed-array": "^1.1.13" + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/laravel-mix/node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/laravel-mix/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" }, "engines": { - "node": ">= 0.4" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/laravel-mix/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "engines": { - "node": ">=0.10.0" + "node_modules/launch-editor": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, - "bin": { - "is-docker": "cli.js" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.11.5" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, "engines": { - "node": ">=4" + "node": ">=8.9.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "yallist": "^3.0.2" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "semver": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { - "is-path-inside": "^2.1.0" + "fs-monkey": "^1.0.4" }, "engines": { - "node": ">=6" + "node": ">= 4.0.0" } }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==", - "engines": { - "node": ">=0.10.0" + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/is-scoped": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", - "integrity": "sha512-iT1y0qJcdqXnHe6SCtN9cOBPRiarw8Cy1EZkawW50dxO/7oHC6AYvs1tH4QbBbi7UC/vYY3BnRmbE0bFLwvUog==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "scoped-regex": "^1.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "has-symbols": "^1.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, + "license": "ISC", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "node": ">= 6.13.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/istextorbinary": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.6.0.tgz", - "integrity": "sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==", - "dependencies": { - "binaryextensions": "^2.1.2", - "editions": "^2.2.0", - "textextensions": "^2.5.0" - }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://bevry.me/fund" + "node": ">=0.10.0" } }, - "node_modules/jackspeak": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", - "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "path-key": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "boolbase": "^1.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/jake/node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">= 6" } }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">= 8.3" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, - "bin": { - "jiti": "bin/jiti.js" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" - }, - "node_modules/jquery-knob": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/jquery-knob/-/jquery-knob-1.2.11.tgz", - "integrity": "sha512-gyeWDmtr2x8XJLSNS2JGNYDUNmfmMrwmFcGPDJ074jnPPvMYf3PJFud4/6AubCT8ahOY7UL4YvALtSwCrxtBBQ==", - "dev": true - }, - "node_modules/jquery-ui-dist": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz", - "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { - "jquery": ">=1.8.0 <4.0.0" + "wrappy": "1" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, - "node_modules/jscodeshift": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.11.0.tgz", - "integrity": "sha512-SdRK2C7jjs4k/kT2mwtO07KJN9RnjxtKn03d9JVj6c3j9WwaLcFYsICYDnLAzY0hp+wG2nxl+Cm2jWLiNVYb8g==", - "dependencies": { - "@babel/core": "^7.1.6", - "@babel/parser": "^7.1.6", - "@babel/plugin-proposal-class-properties": "^7.1.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.1.0", - "@babel/plugin-proposal-optional-chaining": "^7.1.0", - "@babel/plugin-transform-modules-commonjs": "^7.1.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-typescript": "^7.1.0", - "@babel/register": "^7.0.0", - "babel-core": "^7.0.0-bridge.0", - "colors": "^1.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^3.1.10", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.20.3", - "temp": "^0.8.1", - "write-file-atomic": "^2.3.0" + "mimic-fn": "^2.1.0" }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" + "engines": { + "node": ">=6" }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jscodeshift/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jscodeshift/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jscodeshift/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/jscodeshift/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jscodeshift/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "@types/retry": "0.12.0", + "retry": "^0.13.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, - "bin": { - "JSONStream": "bin.js" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 0.8" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true, + "license": "MIT" }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/laravel-mix": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.9.tgz", - "integrity": "sha512-1WCJiHimTRW3KlxcabRTco0q+bo4uKPaFTkc6cJ/bLEq4JT1aPkojoauUK7+PyiIlDJncw0Nt2MtDrv5C6j5IQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-transform-runtime": "^7.2.0", - "@babel/preset-env": "^7.2.0", - "@babel/runtime": "^7.2.0", - "autoprefixer": "^9.4.2", - "babel-loader": "^8.0.4", - "babel-merge": "^2.0.1", - "chokidar": "^2.0.3", - "clean-css": "^4.1.3", - "collect.js": "^4.12.8", - "concat": "^1.0.3", - "css-loader": "^1.0.1", - "dotenv": "^6.2.0", - "dotenv-expand": "^4.2.0", - "extract-text-webpack-plugin": "v4.0.0-beta.0", - "file-loader": "^2.0.0", - "friendly-errors-webpack-plugin": "^1.6.1", - "fs-extra": "^7.0.1", - "glob": "^7.1.2", - "html-loader": "^0.5.5", - "imagemin": "^6.0.0", - "img-loader": "^3.0.0", - "lodash": "^4.17.15", - "md5": "^2.2.1", - "optimize-css-assets-webpack-plugin": "^5.0.1", - "postcss-loader": "^3.0.0", - "style-loader": "^0.23.1", - "terser": "^3.11.0", - "terser-webpack-plugin": "^2.2.3", - "vue-loader": "^15.4.2", - "webpack": "^4.36.1", - "webpack-cli": "^3.1.2", - "webpack-dev-server": "^3.1.14", - "webpack-merge": "^4.1.0", - "webpack-notifier": "^1.5.1", - "yargs": "^15.4.1" - }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.9.0" + "node": ">=0.10.0" } }, - "node_modules/laravel-mix/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/laravel-mix/node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "engines": { + "node": ">=16 || 14 >=14.18" }, "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/laravel-mix/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } + "license": "ISC" }, - "node_modules/laravel-mix/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } + "license": "MIT" }, - "node_modules/laravel-mix/node_modules/css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" + "node": ">=8" } }, - "node_modules/laravel-mix/node_modules/css-loader/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=4.0.0" + "node": ">=0.12" } }, - "node_modules/laravel-mix/node_modules/css-loader/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" }, - "node_modules/laravel-mix/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/laravel-mix/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/laravel-mix/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/laravel-mix/node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/laravel-mix/node_modules/icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", - "dev": true, - "dependencies": { - "postcss": "^6.0.1" + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/laravel-mix/node_modules/icss-utils/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/laravel-mix/node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", "dev": true, + "license": "MIT", "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/laravel-mix/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/laravel-mix/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/laravel-mix/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", "dev": true, - "dependencies": { - "postcss": "^6.0.1" + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, "engines": { - "node": ">=4.0.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dev": true, + "license": "MIT", "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" }, "engines": { - "node": ">=4.0.0" + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/laravel-mix/node_modules/postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", - "dev": true, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "license": "MIT", "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/laravel-mix/node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, + "license": "MIT", "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/postcss-modules-values/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^3.0.0" + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/laravel-mix/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "postcss-selector-parser": "^6.0.5" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/laravel-mix/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/laravel-mix/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "license": "ISC", "dependencies": { - "ansi-regex": "^4.1.0" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/laravel-mix/node_modules/style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "dev": true, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" + "icss-utils": "^5.0.0" }, "engines": { - "node": ">= 0.12.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/laravel-mix/node_modules/webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" + "postcss-selector-parser": "^6.1.1" }, - "bin": { - "webpack-cli": "bin/cli.js" + "engines": { + "node": ">=12.0" }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.11.5" + "node": "^10 || ^12 || >=14.0" }, "peerDependencies": { - "webpack": "4.x.x" + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/webpack-cli/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/webpack-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/wrap-ansi": { + "node_modules/postcss-normalize-string": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/laravel-mix/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==", + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "license": "MIT", "dependencies": { - "set-getter": "^0.1.0" + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ==", + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", - "dev": true - }, - "node_modules/lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", - "dev": true - }, - "node_modules/lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha512-LziVL7IDnJjQeeV95Wvhw6G28Z8Q6da87LWKOPWmzBLv4u6FAT/x5v00pyGW0u38UoogNF2JnD3bGgZZDaNEBw==", + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash.restparam": "^3.0.0" + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", - "dev": true + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", - "dev": true + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", - "dev": true + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", - "dev": true + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", - "dev": true + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "license": "MIT" }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=10" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.4.x" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "safe-buffer": "^5.1.0" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "node": ">= 0.8" } }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "license": "MIT", "dependencies": { - "object-visit": "^1.0.0" + "resolve": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } + "license": "MIT" }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true, - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/mem-fs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.2.0.tgz", - "integrity": "sha512-b8g0jWKdl8pM0LqAPdK9i8ERL7nYrzmJfRhxMiWH2uYdfYnb7uXnmwVb0ZGe7xyEl4lj+nLIU3yf4zPUT+XsVQ==", + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", "dependencies": { - "through2": "^3.0.0", - "vinyl": "^2.0.1", - "vinyl-file": "^3.0.0" + "@babel/runtime": "^7.8.4" } }, - "node_modules/mem-fs-editor": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-6.0.0.tgz", - "integrity": "sha512-e0WfJAMm8Gv1mP5fEq/Blzy6Lt1VbLg7gNnZmZak7nhrBTibs+c6nQ4SKs/ZyJYHS1mFgDJeopsLAv7Ow0FMFg==", - "dependencies": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^2.6.1", - "glob": "^7.1.4", - "globby": "^9.2.0", - "isbinaryfile": "^4.0.0", - "mkdirp": "^0.5.0", - "multimatch": "^4.0.0", - "rimraf": "^2.6.3", - "through2": "^3.0.1", - "vinyl": "^2.2.0" - } + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true, + "license": "MIT" }, - "node_modules/mem-fs-editor/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "path-type": "^3.0.0" + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/mem-fs-editor/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "jsesc": "~0.5.0" }, - "engines": { - "node": ">=6" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/mem-fs-editor/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" } }, - "node_modules/mem-fs-editor/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "node": ">= 0.10" } }, - "node_modules/merge-descriptors": { + "node_modules/replace-ext": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true, - "dependencies": { - "source-map": "^0.6.1" + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=8.6" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromatch/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/micromatch/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=4" } }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" }, "engines": { - "node": ">=8.0" + "node": ">=12" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "bin": { - "mime": "cli.js" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "mime-db": "1.52.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 0.6" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/sass": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/sass-loader": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.3.tgz", + "integrity": "sha512-fOwsP98ac1VMme+V3+o0HaaMHp8Q/C9P+MUazLFVi3Jl7ORGHQXL1XeRZt3zLSGZQQPC8xE42Y2WptItvGjDQg==", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "klona": "^1.1.2", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^2.7.0", + "semver": "^7.3.2" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 8" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } + "license": "MIT" }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==", + "dev": true, + "license": "MIT" }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "license": "MIT", "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "@types/node-forge": "^1.3.0", + "node-forge": "^1" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mississippi/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "ms": "2.0.0" } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "deprecated": "This package is no longer supported.", + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "randombytes": "^2.1.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "ms": "2.0.0" } }, - "node_modules/multimatch/node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/multimatch/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/multimatch/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } + "license": "MIT" }, - "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", - "optional": true + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 0.6" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "sha.js": "bin.js" } }, - "node_modules/nanomatch/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "kind-of": "^6.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, - "dependencies": { - "lower-case": "^1.1.1" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-api": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-api/-/npm-api-1.0.1.tgz", - "integrity": "sha512-4sITrrzEbPcr0aNV28QyOmgn6C9yKiF8k92jn4buYAK8wmA5xo1qL3II5/gT1r7wxbXBflSduZ2K3FbtOrtGkA==", - "dependencies": { - "clone-deep": "^4.0.1", - "download-stats": "^0.3.4", - "JSONStream": "^1.3.5", - "moment": "^2.24.0", - "node-fetch": "^2.6.0", - "paged-request": "^2.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-path": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", - "integrity": "sha512-hPv/mbCYtXOhhqstmodis0boF1ooA8yz3PDJwTnkZvOlaJkd5aCAgA9tq6BUjJW5w8jXHI2qi9+w5N0tz+AAaA==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", - "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "gopd": "^1.0.1", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.omit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", - "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", - "dev": true, - "dependencies": { - "is-extendable": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.omit/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", - "dev": true, - "dependencies": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", - "integrity": "sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/paged-request": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-2.0.2.tgz", - "integrity": "sha512-NWrGqneZImDdcMU/7vMcAOo1bIi5h/pmpJqe7/jdsy85BA/s5MSaU/KlpxwW/IVPmIwBcq2uKPrBWWhEWhtxag==", - "dependencies": { - "axios": "^0.21.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-asn1/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-calc/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dependencies": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "dependencies": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dependencies": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-modules-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-modules-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-normalize-url/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-5.0.0.tgz", - "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", - "dependencies": { - "find-up": "^3.0.0", - "read-pkg": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "devOptional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "devOptional": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "devOptional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "devOptional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/readdirp/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "devOptional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "devOptional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recast": { - "version": "0.20.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", - "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", - "dependencies": { - "ast-types": "0.14.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "peer": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "peer": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, - "node_modules/resolve-url-loader": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.2.tgz", - "integrity": "sha512-sc/UVgiADdoTc+4cGPB7cUCnlEkzlxD1NXHw4oa9qA0fp30H8mAQ2ePJBP9MQ029DUuhEPouhNdvzT37pBCV0g==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^1.1.0", - "camelcase": "^4.1.0", - "convert-source-map": "^1.5.1", - "loader-utils": "^1.1.0", - "lodash.defaults": "^4.0.0", - "rework": "^1.0.1", - "rework-visit": "^1.0.0", - "source-map": "^0.5.7", - "urix": "^0.1.0" - } - }, - "node_modules/resolve-url-loader/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url-loader/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==", - "dev": true, - "dependencies": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - } - }, - "node_modules/rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==", - "dev": true - }, - "node_modules/rework/node_modules/convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==", - "dev": true - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.77.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", - "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/sass/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sass/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sass/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/sass/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/sass/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sass/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/sass/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/sass/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/scoped-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", - "integrity": "sha512-90/gFvaP4jXL0rXPD8FS7tWgmkQDlxCjs9cs3r3G5hAnrODt94kIh4SDbH/gm3HosGTik0omdSPOh0KQyGqjlg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", - "dev": true - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/select2": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", - "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-getter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz", - "integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==", - "dependencies": { - "to-object-path": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/shelljs/node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "node_modules/ssri": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", - "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==" - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", - "dependencies": { - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==", - "dependencies": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/style-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tailwindcss/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tailwindcss/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tailwindcss/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/tailwindcss/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tailwindcss/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/tailwindcss/node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/tailwindcss/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/tailwindcss/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/temp": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "dependencies": { - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - }, - "bin": { - "terser": "bin/uglifyjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", - "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", - "dev": true, - "dependencies": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/textextensions": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz", - "integrity": "sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==", - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/untildify": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", - "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "devOptional": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-file": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz", - "integrity": "sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "strip-bom-buf": "^1.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/vinyl-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "node_modules/vue": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", - "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", - "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", - "dev": true, - "dependencies": { - "@vue/compiler-sfc": "2.7.16", - "csstype": "^3.1.0" - } - }, - "node_modules/vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "node_modules/vue-loader": { - "version": "15.11.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.11.1.tgz", - "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", - "dev": true, - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "prettier": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "node_modules/watchpack-chokidar2": { + "node_modules/source-list-map": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "optional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/watchpack/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "optional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/watchpack/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "optional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/watchpack/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/watchpack/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/watchpack/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/watchpack/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/watchpack/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/webpack": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", - "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "peer": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/webpack-cli/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "peer": true - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "peer": true, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "peer": true, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=6.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-3-Clause" }, - "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } + "license": "MIT" }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, - "node_modules/webpack-dev-server/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } }, - "node_modules/webpack-dev-server/node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" + "safe-buffer": "~5.2.0" } }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { + "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^4.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, - "node_modules/webpack-log/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/tailwindcss": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, "bin": { - "uuid": "bin/uuid" + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "lodash": "^4.17.15" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" }, "peerDependencies": { - "@types/webpack": ">4.41.31" + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "@types/webpack": { + "postcss": { + "optional": true + }, + "ts-node": { "optional": true } } }, - "node_modules/webpack-notifier/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/webpack-notifier/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" + "license": "ISC", + "bin": { + "yaml": "bin.mjs" }, "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "node": ">= 14" } }, - "node_modules/webpack/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/webpack/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "license": "BSD-2-Clause", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/webpack/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/webpack/node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "any-promise": "^1.0.0" } }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "thenify": ">= 3.1.0 < 4" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "setimmediate": "^1.0.4" }, "engines": { - "node": ">= 4" + "node": ">=0.6.0" } }, - "node_modules/webpack/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dependencies": { - "figgy-pudding": "^3.5.1" - } + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dev": true, + "license": "MIT" }, - "node_modules/webpack/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "node_modules/webpack/node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" + "node": ">=8.0" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.6" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "license": "Apache-2.0" }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true, + "license": "MIT" }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.6" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "peer": true - }, - "node_modules/with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dependencies": { - "errno": "~0.1.7" + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 10.0.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "update-browserslist-db": "cli.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "punycode": "^2.1.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "punycode": "^1.4.1", + "qs": "^6.12.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" - }, + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/vue-style-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" + "minimalistic-assert": "^1.0.0" } }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", - "dev": true, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, "bin": { - "yaml": "bin.mjs" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">= 14" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/yeoman-environment": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.10.3.tgz", - "integrity": "sha512-pLIhhU9z/G+kjOXmJ2bPFm3nejfbH+f1fjYRSOteEXDBrv1EoJE/e+kuHixSXfCYfTkxjYsvRaDX+1QykLCnpQ==", - "dependencies": { - "chalk": "^2.4.1", - "debug": "^3.1.0", - "diff": "^3.5.0", - "escape-string-regexp": "^1.0.2", - "execa": "^4.0.0", - "globby": "^8.0.1", - "grouped-queue": "^1.1.0", - "inquirer": "^7.1.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mem-fs": "^1.1.0", - "mem-fs-editor": "^6.0.0", - "npm-api": "^1.0.0", - "semver": "^7.1.3", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.3", - "yeoman-generator": "^4.8.2" - } - }, - "node_modules/yeoman-environment/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/yeoman-environment/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=10.0.0" } }, - "node_modules/yeoman-environment/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dev": true, + "license": "ISC", "dependencies": { - "pump": "^3.0.0" + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/webpack": ">4.41.31" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + } } }, - "node_modules/yeoman-environment/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "engines": { - "node": ">=8.12.0" + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "node_modules/yeoman-environment/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { - "chalk": "^2.0.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/yeoman-environment/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=10.13.0" } }, - "node_modules/yeoman-generator": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-4.13.0.tgz", - "integrity": "sha512-f2/5N5IR3M2Ozm+QocvZQudlQITv2DwI6Mcxfy7R7gTTzaKgvUpgo/pQMJ+WQKm0KN0YMWCFOZpj0xFGxevc1w==", + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dev": true, + "license": "MIT", "dependencies": { - "async": "^2.6.2", - "chalk": "^2.4.2", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^6.1.0", - "dateformat": "^3.0.3", - "debug": "^4.1.1", - "diff": "^4.0.1", - "error": "^7.0.2", - "find-up": "^3.0.0", - "github-username": "^3.0.0", - "istextorbinary": "^2.5.1", - "lodash": "^4.17.11", - "make-dir": "^3.0.0", - "mem-fs-editor": "^7.0.1", - "minimist": "^1.2.5", - "pretty-bytes": "^5.2.0", - "read-chunk": "^3.2.0", - "read-pkg-up": "^5.0.0", - "rimraf": "^2.6.3", - "run-async": "^2.0.0", - "semver": "^7.2.1", - "shelljs": "^0.8.4", - "text-table": "^0.2.0", - "through2": "^3.0.1" + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, - "optionalDependencies": { - "grouped-queue": "^1.1.0", - "yeoman-environment": "^2.9.5" + "peerDependencies": { + "webpack": "3 || 4 || 5" } }, - "node_modules/yeoman-generator/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/yeoman-generator/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/yeoman-generator/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" + "node": ">=0.8.0" } }, - "node_modules/yeoman-generator/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dependencies": { - "path-type": "^3.0.0" - }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/yeoman-generator/node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { - "jake": "^10.8.5" + "isexe": "^2.0.0" }, "bin": { - "ejs": "bin/cli.js" + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/yeoman-generator/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/yeoman-generator/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/yeoman-generator/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/yeoman-generator/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" }, - "node_modules/yeoman-generator/node_modules/mem-fs-editor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-7.1.0.tgz", - "integrity": "sha512-BH6QEqCXSqGeX48V7zu+e3cMwHU7x640NB8Zk8VNvVZniz+p4FK60pMx/3yfkzo6miI6G3a8pH6z7FeuIzqrzA==", - "dependencies": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^3.1.5", - "glob": "^7.1.4", - "globby": "^9.2.0", - "isbinaryfile": "^4.0.0", - "mkdirp": "^1.0.0", - "multimatch": "^4.0.0", - "rimraf": "^3.0.0", - "through2": "^3.0.2", - "vinyl": "^2.2.1" - }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" - } - }, - "node_modules/yeoman-generator/node_modules/mem-fs-editor/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" }, - "bin": { - "rimraf": "bin.js" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/yeoman-generator/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.4" } }, - "node_modules/yeoman-generator/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/yeoman-generator/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/yeoman-generator/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yeoman-generator/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/yeoman-generator/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6" - } - }, - "node_modules/yeoman-generator/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "node": ">=12" } } } diff --git a/package.json b/package.json index 75b9be483..423064a20 100644 --- a/package.json +++ b/package.json @@ -11,36 +11,34 @@ }, "devDependencies": { "autoprefixer": "^10.4.19", - "axios": "^0.21", - "blueimp-file-upload": "^9.34.0", - "clipboard": "^2.0.6", + "axios": "^1.6.4", + "blueimp-file-upload": "^10.32.0", + "clipboard": "^2.0.11", "font-awesome": "^4.7.0", "ip-address": "^5.9.4", - "jquery": "^3.5.1", - "jquery-knob": "^1.2.11", - "jquery-ui-dist": "^1.12.1", - "laravel-mix": "^5.0.0", - "lodash": "^4.17.20", - "moment": "^2.27.0", + "laravel-mix": "^6.0.49", + "moment": "^2.30.1", "postcss": "^8.4.38", - "resolve-url-loader": "^2.3.1", + "resolve-url-loader": "^5.0.0", "sass": "^1.26.10", - "sass-loader": "^7.3.1", + "sass-loader": "^9.0.3", "select2": "^4.0.13", - "tailwindcss": "^3.4.3", - "vue": "^2.6.11" + "tailwindcss": "^3.4.7" }, "dependencies": { - "@popperjs/core": "^2.9.0", - "@webpack-cli/init": "^1.1.3", - "bootbox": "^5.3.2", - "bootstrap": "^4.5.2", + "alpinejs": "^3.14.1", + "bootbox": "^6.0.0", + "bootstrap": "^4.6.2", + "braces": "^3.0.3", "cross-env": "^7.0.3", - "css-loader": "^3.6.0", + "css-loader": "^7.1.2", "datatables-responsive": "^1.0.7", "datatables.net-bs4": "^1.10.21", "datatables.net-responsive-bs4": "^2.2.5", - "postcss-loader": "^3.0.0", + "jquery": "^3.5.1", + "jquery-knob": "^1.2.11", + "jquery-ui-dist": "^1.12.1", + "postcss-loader": "^8.1.1", "style-loader": "^2.0.0" }, "version": "1.7.1" diff --git a/psalm.xml b/psalm.xml index c888c95d3..e43aefb7e 100644 --- a/psalm.xml +++ b/psalm.xml @@ -2,10 +2,19 @@ + + + + + + + @@ -15,4 +24,16 @@ - + + + + + + + + + + + + + diff --git a/public/css/ixp-manager.css b/public/css/ixp-manager.css index 1171765d6..28c8cd6b4 100644 --- a/public/css/ixp-manager.css +++ b/public/css/ixp-manager.css @@ -688,3 +688,106 @@ td a:hover{ opacity: 1; /* Firefox */ } +.select2-container--default .select2-selection { + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: .125rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: .5rem; + padding-right: 1.5rem; + line-height: 1.25; + --tw-text-opacity: 1; + border-width: 1px; + --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-ring-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-shadow); + height: 2.25rem; + border-color: #ced4da; +} +.select2-container--default .select2-selection .select2-selection__rendered { + color: rgb(96 111 123 / var(--tw-text-opacity)); + line-height: 1.25rem; +} +.select2-container--default .select2-selection .select2-selection__arrow { + height: 2.25rem; + width: 1.5rem; +} + +/***** Tab Panels START *****/ +.tabNavMenu{ + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; + border-bottom: 1px solid rgba(0,0,0,.125); +} +.tabButton { + margin-bottom: -1px; + padding: .5rem 1rem; + background-color: transparent; + border: 1px solid transparent; + border-bottom: 0; + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + color: #718096; + font-size: .85em; + margin-right: .25rem; +} +.tabButton:hover { + border-color: rgba(0,0,0,.075); +} +.tabButton.active { + color: #4a5568; + background-color: #fff; + border-color: rgba(0,0,0,.125); +} +.tabContent {} +.tabContent .tabPanel { + overflow: hidden; + box-sizing: border-box; + padding: 0; + height: 0; + border: none; + border-bottom-left-radius: .5rem; + border-bottom-right-radius: .5rem; + opacity: 0; + transition: opacity 500ms; +} +.tabContent .tabPanel.active { + opacity: 1; + border: 1px solid rgba(0,0,0,.125); + border-top: none; + height: auto; + padding: 1rem 1.5rem; +} +.inputWrapper { + padding: 1rem; +} +.inputWrapper:nth-child(odd) { + background: rgba(0,0,0,.025); +} +.inputWrapper .form-group { + margin-bottom: 0; +} +.inputWrapper .form-group .form-check label { + display: block; + font-size: .875rem; + font-weight: 700; + color: rgb(96 111 123); +} +/***** Tab Panels END *******/ + +/* above 80px scrolldown */ +.badgeSwitcherFix { + position: fixed; + top: 0; + right: 0; + padding: .5rem; + background: rgba(255, 255, 255, .9); + border-radius: 0 0 0 1rem; +} \ No newline at end of file diff --git a/public/css/ixp-pack.css b/public/css/ixp-pack.css index 63383359e..2724ca06e 100644 --- a/public/css/ixp-pack.css +++ b/public/css/ixp-pack.css @@ -3,7 +3,3307 @@ * Copyright 2011-2022 The Bootstrap Authors * Copyright 2011-2022 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}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{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}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,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[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}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.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:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;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}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.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;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.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:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.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:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.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)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.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)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.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)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem 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-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;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:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{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{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.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}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .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}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .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}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.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: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:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .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{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;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:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;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){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;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){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-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;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-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;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.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:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-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}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;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){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@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:1rem 1rem}.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}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.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:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{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)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;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:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-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-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-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{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.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{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.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}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-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}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-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;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;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;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-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}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-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}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-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}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-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}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-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;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;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;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!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;-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}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!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}.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}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.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}.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}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}:root{--dt-row-selected:2,117,216;--dt-row-selected-text:255,255,255;--dt-row-selected-link:9,10,11;--dt-row-stripe:0,0,0;--dt-row-hover:0,0,0;--dt-column-ordering:0,0,0;--dt-html-background:white}:root.dark{--dt-html-background:rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;color:rgba(0,0,0,.5);content:"▶"}table.dataTable tr.dt-hasChild td.dt-control:before{content:"▼"}:root[data-bs-theme=dark] table.dataTable td.dt-control:before,html.dark table.dataTable td.dt-control:before{color:rgba(255,255,255,.5)}:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,html.dark table.dataTable tr.dt-hasChild td.dt-control:before{color:rgba(255,255,255,.5)}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_desc_disabled,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.8em}table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc_disabled:before{bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_desc_disabled:after{top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after{opacity:.6}table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after{display:none}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}div.dataTables_scrollBody>table.dataTable>thead>tr>td:after,div.dataTables_scrollBody>table.dataTable>thead>tr>td:before,div.dataTables_scrollBody>table.dataTable>thead>tr>th:after,div.dataTables_scrollBody>table.dataTable>thead>tr>th:before{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px;z-index:10}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:#0275d8;background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0,1,1,0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0,0)}100%{transform:translate(24px,0)}}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable td.dt-nowrap,table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable tfoot td,table.dataTable tfoot th,table.dataTable thead td,table.dataTable thead th{text-align:left}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px #0275d8;box-shadow:inset 0 0 0 9999px rgb(var(--dt-row-selected));color:#fff;color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:#090a0b;color:rgb(var(--dt-row-selected-link))}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe),.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2,117,216,.95);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2,117,216,.975);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody>table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:after,div.dataTables_scrollBody>table>thead .sorting_desc:before{display:none}div.dataTables_scrollBody>table>tbody tr:first-child td,div.dataTables_scrollBody>table>tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center!important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:1px}table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}/*! + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}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{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}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,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[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}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.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:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;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}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.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;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.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:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.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:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.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)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.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)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.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)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem 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-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;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:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{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{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.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}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .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}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .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}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.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: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:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .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{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;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:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;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){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;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){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-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;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-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;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-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:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.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:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-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}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;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){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@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:1rem 1rem}.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}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.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:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{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)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;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:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-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-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-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{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.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{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.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}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-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}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-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;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;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;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-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}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-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}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-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}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-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;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;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;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!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}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-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}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-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;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;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;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!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;-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}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!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}.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}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.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}.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}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ +:root{--dt-row-selected: 2, 117, 216;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 9, 10, 11;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;color:rgba(0, 0, 0, 0.5);content:"▶"}table.dataTable tr.dt-hasChild td.dt-control:before{content:"▼"}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before{color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{color:rgba(255, 255, 255, 0.5)}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody>table.dataTable>thead>tr>th:before,div.dataTables_scrollBody>table.dataTable>thead>tr>th:after,div.dataTables_scrollBody>table.dataTable>thead>tr>td:before,div.dataTables_scrollBody>table.dataTable>thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px;z-index:10}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(2, 117, 216);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgb(2, 117, 216);box-shadow:inset 0 0 0 9999px rgb(var(--dt-row-selected));color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(9, 10, 11);color:rgb(var(--dt-row-selected-link))}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.95);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.975);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:before,div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody tr:first-child th,div.dataTables_scrollBody>table>tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center !important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:1px}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} + +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} + +/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}:root{--dt-row-selected:2,117,216;--dt-row-selected-text:255,255,255;--dt-row-selected-link:9,10,11;--dt-row-stripe:0,0,0;--dt-row-hover:0,0,0;--dt-column-ordering:0,0,0;--dt-html-background:white}:root.dark{--dt-html-background:rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;color:rgba(0,0,0,.5);content:"▶"}table.dataTable tr.dt-hasChild td.dt-control:before{content:"▼"}:root[data-bs-theme=dark] table.dataTable td.dt-control:before,html.dark table.dataTable td.dt-control:before{color:rgba(255,255,255,.5)}:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,html.dark table.dataTable tr.dt-hasChild td.dt-control:before{color:rgba(255,255,255,.5)}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_desc_disabled,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.8em}table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc_disabled:before{bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_desc_disabled:after{top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after{opacity:.6}table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after{display:none}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}div.dataTables_scrollBody>table.dataTable>thead>tr>td:after,div.dataTables_scrollBody>table.dataTable>thead>tr>td:before,div.dataTables_scrollBody>table.dataTable>thead>tr>th:after,div.dataTables_scrollBody>table.dataTable>thead>tr>th:before{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px;z-index:10}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:#0275d8;background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0,1,1,0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0,0)}100%{transform:translate(24px,0)}}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable td.dt-nowrap,table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable tfoot td,table.dataTable tfoot th,table.dataTable thead td,table.dataTable thead th{text-align:left}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px #0275d8;box-shadow:inset 0 0 0 9999px rgb(var(--dt-row-selected));color:#fff;color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:#090a0b;color:rgb(var(--dt-row-selected-link))}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe),.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2,117,216,.95);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2,117,216,.975);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody>table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:after,div.dataTables_scrollBody>table>thead .sorting_desc:before{display:none}div.dataTables_scrollBody>table>tbody tr:first-child td,div.dataTables_scrollBody>table>tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center!important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:1px}table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;color:rgba(0,0,0,.5);content:"►"}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{content:"◄"}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th.dtr-control:before{content:"▼"}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.control,table.dataTable.dtr-column>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before{display:inline-block;color:rgba(0,0,0,.5);content:"►"}table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before{content:"◄"}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before,table.dataTable.dtr-column>tbody>tr.parent th.dtr-control:before{content:"▼"}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:0 0!important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;box-shadow:0 12px 30px rgba(0,0,0,.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before{color:rgba(255,255,255,.5)!important}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:#404346}html.dark div.dtr-modal div.dtr-modal-display{background-color:#212529;border:1px solid rgba(255,255,255,.15)}div.dtr-bs-modal table.table tr:first-child td{border-top:none}#navbarSupportedContent a{font-size:15px}@media (max-width:768px){#side-navbar{display:block;margin-left:-220px;width:220px!important;height:96%;overflow:scroll;transition:all .3s ease}#side-navbar.active{margin-left:0;z-index:200;position:absolute;display:block!important}#slide-reveal-overlay{position:fixed;left:0;height:100%;width:100%;z-index:100;background-color:rgba(0,0,0,.5)}}@media (max-width:992px){#side-navbar .nav-item a{font-size:.9rem}#side-navbar h6{font-size:.9rem}}@media (min-width:992px){#navbarSupportedContent a{font-size:14px}#div-header-select-customer{width:150px}}@media (min-width:992px) and (max-width:1205px){.navbar-expand-lg #navbarSupportedContent .navbar-nav .nav-link{padding-right:.3rem;padding-left:.3rem}}@media (min-width:1200px){#div-header-select-customer{width:175px}}.former-help-text{display:none}.form-check input[type=checkbox]{margin-right:10px!important}.reset-button-well{float:right;position:absolute;margin-left:55%}.table_view_info{border-collapse:separate;border-spacing:15px 15px}.table_view_info tr td{vertical-align:top}.dropdown-submenu{position:relative!important}.dropdown-submenu .dropdown-menu-l{top:0;left:-163px;margin-top:-1px}.former-input-col-sm-6 .form-group>div{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.former-label-col-sm-6 .form-group>label{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.fa-facebook:hover{color:#3b5998}.fa-twitter:hover{color:#4099ff}.fa-linkedin:hover{color:#007bb5}.fa-github:hover,.fa-globe:hover{color:grey}.dropup .dropdown-toggle:after{margin-top:4px}.error-border-select{border:1px solid #dc3545!important}.valid-border-select{border:1px solid #28a745!important}.a-disabled{pointer-events:none;cursor:default;opacity:.6}.cursor-pointer{cursor:pointer}.center-dd-caret:after{margin-bottom:auto;margin-top:auto}.cursor-default{pointer-events:none;cursor:default}.dataTable .dropdown-item:focus,.dropdown-item:hover{width:auto;color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active:hover{background-color:#005bc3!important;color:#fff!important}@media (max-width:576px){.h2{font-size:1.6rem}}@media (min-width:768px){#div-header-select-customer{width:300px}}.no-padding{padding:0!important}.padding-10{padding:10px 15px!important}.mono{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.ixpm-select-input-xs{height:20px;line-height:20px}.page-content{background-color:#fff!important;padding:20px;margin:0 -20px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15);-moz-box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15)}.list_preamble_container{display:block}.list_preamble{display:block;text-align:right}.pm-table{margin-bottom:18px;margin-left:auto;margin-right:auto}.pm-table th{padding:0;text-align:center;vertical-align:bottom;border:1px solid #ddd;border-bottom-width:2px;border-top:none;font-weight:700}.pm-table th.asn{cursor:hand;cursor:pointer}.pm-table th:last-child{border-right-width:2px}.pm-table td{text-align:center;vertical-align:top;border:1px solid #ddd}.pm-table td.peering{cursor:hand;cursor:pointer}.pm-table td.zoom1{padding:0 1px;font-size:8px;line-height:12px}.pm-table td.zoom2{padding:2px 4px;font-size:11px;line-height:15px}.pm-table td.zoom3{padding:4px 8px;font-size:13px;line-height:18px}.pm-table td.zoom4{padding:6px 10px;font-size:15px;line-height:20px}.pm-table td.zoom5{padding:8px 12px;font-size:18px;line-height:24px}.pm-table th.zoom1{font-size:8px;line-height:12px}.pm-table th.zoom2{font-size:11px;line-height:15px}.pm-table th.zoom3{font-size:13px;line-height:18px}.pm-table th.zoom4{font-size:15px;line-height:20px}.pm-table th.zoom5{font-size:18px;line-height:24px}.pm-table td:last-child{border-right-width:2px}.pm-table th.name{border-left:none;border-right:none;border-top:none}.pm-table th.asn{border-left:none;border-top:none;border-right-width:2px}.pm-table td.name{text-align:left;border-left:none;border-right:none;font-weight:700}.pm-table td.asn{text-align:right;border-left:none;border-right-width:2px;font-weight:700}.pm-table tr:last-child{border-bottom-width:2px}.pm-table td.peered{background-color:#0c0;width:10px}.pm-table td.not-peered{background-color:#d63030;width:10px}.pm-table td.bilateral-rs{width:10px}.pm-table td.rs-only{width:10px}.pm-table td.bilateral-only{width:10px}.pm-table colgroup.hover,.pm-table td.hover,.pm-table tr.hover{background-color:#eee;border-left:2px solid #555;border-right:2px solid #555}.pm-table td.hover2{border-left:1px solid #555;border-right:1px solid #555}.pm-table td.highlight,.pm-table th.highlight{background-color:#fcf6cf}.pm-table td.highlight2,.pm-table th.highlight2{background-color:#eee}.controls-fieldset-bordered{margin-left:90px}.legend-fieldset-bordered{font-size:14px;line-height:20px;margin-bottom:0;border-style:none none none;width:none;padding:5px}.fieldset-bordered{border:1px solid #ccc;padding:10px;border-radius:4px 4px 4px 4px;transition:border .2s linear 0s,box-shadow .2s linear 0s}.info_box .title{position:relative;top:-30px;margin-left:0;padding:2px 7px;display:inline;font-size:1em;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #ddd;background-color:#fafafa;background-color:#f9f9f9;background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(to bottom,#fff,#f0f0f0);background-repeat:repeat-x}.info_box .title a{color:#555;text-decoration:none}.info_box .content{margin-top:-10px}.dropdown-menu li{display:block}.droppable{border:#ccc 1px solid;border-radius:8px;background:#eee;color:#666;padding:20px;margin:10px;clear:both;text-align:center}.droppable.hover{background:#ddd}.uploadList{margin:0;padding:0;list-style:none}.uploadItem{overflow:hidden;border-bottom:#bcbcbc 1px solid;margin:0 20px;padding:3px}.uploadItem span{overflow:hidden;width:150px;float:left;display:block}.uploadItem a,a.addInputRow,a.delInputRow{display:inline-block;background:url(add.png) no-repeat;height:16px;width:16px;text-indent:-999px}.uploadItem a{float:left;display:block;padding-left:20px;background-image:url(delete.png)}a.delInputRow{background-image:url(delete.png)}.progress{margin:5px 0;height:15px;border-radius:3px;background:#545a74}.upperCase{text-transform:uppercase}.lowerCase{text-transform:lowercase}td a:hover{text-decoration:none}.lb-sm{font-size:12px}.lb-md{font-size:16px}.lb-lg{font-size:20px}.asn-table{margin-left:30px;font-family:'Courier New',Courier,monospace}.asn-table tr td{padding:1px;padding-left:5px}.scrollable-dropdown{height:auto;max-height:200px;overflow-x:hidden}.table-no-border>tbody>tr>td,.table-no-border>tbody>tr>th,.table-no-border>tfoot>tr>td,.table-no-border>tfoot>tr>th,.table-no-border>thead>tr>td,.table-no-border>thead>tr>th{border:none!important}.page-content .page-header li.pull-right{list-style-type:none!important}.loader{border:6px solid #f3f3f3;border-radius:50%;border-top:6px solid #3498db;width:30px;height:30px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.wrap{-ms-word-break:break-all;word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.form-control::placeholder{font-weight:lighter;opacity:1}/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#cbd5e0}input::placeholder,textarea::placeholder{opacity:1;color:#cbd5e0}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,153,225,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,153,225,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent}h1{font-size:2.4rem;line-height:1;color:#1a202c;font-weight:300;margin-bottom:1rem}h2{font-size:2rem;margin-bottom:.5rem;font-weight:500;line-height:1.2}h3{font-size:1.75rem;line-height:1.2}h3,h4{margin-bottom:.5rem;font-weight:300;color:#1a202c}h4{font-size:1.5rem;line-height:1}h5{font-size:1.25rem;font-weight:400}h5,h6{margin-bottom:.5rem;line-height:1.2}h6{font-size:1rem;font-weight:500}p{margin-bottom:1rem}li{display:list-item}ol{list-style-type:decimal}ol,ul{display:block;margin:1em 0;padding-left:40px}ul{list-style-type:disc}dl{margin:1em 0}dl,dt{display:block}code,pre{font-size:.9em}pre{display:block;font-family:monospace;white-space:pre;margin:1em 0}hr{margin-bottom:10px}a{color:rgb(66 153 225/var(--tw-text-opacity))}a:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.tw-border-t-1{border-top-width:1px}.tw-border-b-1{border-bottom-width:1px}.tw-border-1{border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}#side-navbar,.shadow{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#side-navbar{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding-right:0;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}#side-navbar ol,#side-navbar ul{list-style:none;margin:0;padding:0}#side-navbar h6{margin:0;border-right-width:4px;--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));padding:1rem 1rem 1rem .25rem}#side-navbar h6,.nav-link{display:block;--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-link{padding:.5rem .5rem .5rem .75rem;font-size:.875rem;-webkit-text-decoration-line:none;text-decoration-line:none}#side-navbar li,.nav-link:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}#side-navbar li{display:block;border-right-width:4px;--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));padding:0;font-weight:500}#side-navbar li.active{font-weight:700!important}#side-navbar li.active,#side-navbar li:hover{--tw-border-opacity:1;border-color:rgb(56 161 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}#side-navbar li:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-sub-menu-item{margin-left:2rem}.ixpm-table a{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity));-webkit-text-decoration-line:none;text-decoration-line:none}.ixpm-table a:hover{--tw-text-opacity:1;color:rgb(66 153 225/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.btn{border-radius:.125rem;font-weight:700}.btn,.btn:hover{border-color:transparent}.btn-primary{--tw-bg-opacity:1;background-color:rgb(66 153 225/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(39 121 189/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;background-color:rgb(72 187 120/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(31 157 85/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;background-color:rgb(135 149 161/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(96 111 123/var(--tw-bg-opacity))}.btn-outline-secondary{border-radius:.125rem;--tw-border-opacity:1;border-color:rgb(184 194 204/var(--tw-border-opacity));background-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(184 194 204/var(--tw-text-opacity));border-width:1px}.btn-outline-secondary:hover{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.btn-white{border-radius:.125rem;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));font-weight:600;--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity));--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.btn-white,.btn-white:hover{border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}.btn-white:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.btn-info{border-radius:.125rem;--tw-border-opacity:1;border-color:rgb(56 178 172/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));font-weight:600;--tw-text-opacity:1;color:rgb(56 178 172/var(--tw-text-opacity));--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.btn-info,.btn-info:hover{border-width:1px}.btn-info:hover{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(56 178 172/var(--tw-bg-opacity))}input.form-control{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.125rem;padding:.5rem 1rem;--tw-text-opacity:1;border-width:1px;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}input.form-control,input.form-control:focus{line-height:1.25;color:rgb(96 111 123/var(--tw-text-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}input.form-control:focus{--tw-text-opacity:1;--tw-shadow:0 0 0 3px rgba(52,144,220,0.5);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);outline:2px solid transparent;outline-offset:2px}.input-group-append .btn{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);border-color:#ced4da}label.control-label,label.form-check-label{display:block;font-size:.875rem;font-weight:700;--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.badge{border-radius:9999px;padding:.25rem .75rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.badge-info{--tw-bg-opacity:1;background-color:rgb(56 178 172/var(--tw-bg-opacity))}.badge-success{--tw-bg-opacity:1;background-color:rgb(72 187 120/var(--tw-bg-opacity))}.badge-secondary{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.badge-warning{--tw-bg-opacity:1;background-color:rgb(246 173 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.card{border-color:#dae1e7;border-radius:.125rem;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.card .card-header{border-top-left-radius:.125rem;border-top-right-radius:.125rem;border-bottom-width:0}a{display:inline-block;vertical-align:baseline;font-weight:700;color:rgb(108 178 235/var(--tw-text-opacity))}a,a:hover{--tw-text-opacity:1}a:hover{color:rgb(39 121 189/var(--tw-text-opacity));-webkit-text-decoration-line:none;text-decoration-line:none}.table-light td,.table-light thead th{border-color:#ced4da}.docstore table{width:100%;table-layout:auto}.docstore td{border-color:rgb(226 232 240/var(--tw-border-opacity));border-top-width:1px}.docstore td,.docstore td.top{--tw-border-opacity:1;padding:.5rem}.docstore td.top{border-top-width:2px;border-color:rgb(226 232 240/var(--tw-border-opacity))}.docstore td.meta{display:none;width:.25rem;white-space:nowrap}@media (min-width:1024px){.docstore td.meta{display:table-cell;width:.25rem;white-space:nowrap}}.docstore td.icon{margin-right:1rem;width:.25rem;white-space:nowrap;padding:.5rem;text-align:center}.tw-collapse{visibility:collapse}.tw-relative{position:relative}.tw-float-right{float:right}.tw-m-0{margin:0}.tw-m-2{margin:.5rem}.tw-mx-3{margin-left:.75rem;margin-right:.75rem}.tw-mx-4{margin-left:1rem;margin-right:1rem}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-0{margin-top:0;margin-bottom:0}.tw-my-1{margin-top:.25rem;margin-bottom:.25rem}.tw-my-10{margin-top:2.5rem;margin-bottom:2.5rem}.tw-my-12{margin-top:3rem;margin-bottom:3rem}.tw-my-4{margin-top:1rem;margin-bottom:1rem}.tw-my-6{margin-top:1.5rem;margin-bottom:1.5rem}.tw-my-8{margin-top:2rem;margin-bottom:2rem}.tw-mb-0{margin-bottom:0}.tw-mb-16{margin-bottom:4rem}.tw-mb-2{margin-bottom:.5rem}.tw-mb-6{margin-bottom:1.5rem}.tw-mb-8{margin-bottom:2rem}.tw-ml-12{margin-left:3rem}.tw-ml-2{margin-left:.5rem}.tw-ml-4{margin-left:1rem}.tw-ml-6{margin-left:1.5rem}.tw-ml-8{margin-left:2rem}.tw-mr-2{margin-right:.5rem}.tw-mr-3{margin-right:.75rem}.tw-mr-4{margin-right:1rem}.tw-mr-6{margin-right:1.5rem}.tw-mt-1{margin-top:.25rem}.tw-mt-16{margin-top:4rem}.tw-mt-2{margin-top:.5rem}.tw-mt-4{margin-top:1rem}.tw-mt-6{margin-top:1.5rem}.tw-mt-8{margin-top:2rem}.tw-block{display:block}.tw-inline-block{display:inline-block}.tw-inline{display:inline}.tw-flex{display:flex}.tw-hidden{display:none}.tw-h-24{height:6rem}.tw-w-6{width:1.5rem}.tw-w-auto{width:auto}.tw-w-full{width:100%}.tw-min-w-full{min-width:100%}.tw-max-w-lg{max-width:50rem}.tw-max-w-md{max-width:40rem}.tw-max-w-sm{max-width:30rem}.tw-flex-1{flex:1 1 0%}.tw-cursor-pointer{cursor:pointer}.tw-list-none{list-style-type:none}.tw-flex-wrap{flex-wrap:wrap}.tw-items-center{align-items:center}.tw-justify-between{justify-content:space-between}.tw-self-center{align-self:center}.tw-overflow-hidden{overflow:hidden}.tw-rounded-full{border-radius:9999px}.tw-rounded-lg{border-radius:.5rem}.tw-rounded-sm{border-radius:.125rem}.tw-border-2{border-width:2px}.tw-border-b-2{border-bottom-width:2px}.tw-border-l-4{border-left-width:4px}.tw-border-r-4{border-right-width:4px}.tw-border-t-2{border-top-width:2px}.tw-border-blue-500{--tw-border-opacity:1;border-color:rgb(66 153 225/var(--tw-border-opacity))}.tw-border-gray-200{--tw-border-opacity:1;border-color:rgb(237 242 247/var(--tw-border-opacity))}.tw-border-gray-300{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.tw-border-gray-400{--tw-border-opacity:1;border-color:rgb(203 213 224/var(--tw-border-opacity))}.tw-border-gray-500{--tw-border-opacity:1;border-color:rgb(160 174 192/var(--tw-border-opacity))}.tw-border-gray-600{--tw-border-opacity:1;border-color:rgb(113 128 150/var(--tw-border-opacity))}.tw-border-green-500{--tw-border-opacity:1;border-color:rgb(72 187 120/var(--tw-border-opacity))}.tw-border-grey-light{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity))}.tw-border-grey-lighter{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity))}.tw-border-orange-500{--tw-border-opacity:1;border-color:rgb(237 137 54/var(--tw-border-opacity))}.tw-border-red-500{--tw-border-opacity:1;border-color:rgb(245 101 101/var(--tw-border-opacity))}.tw-border-red-lighter{--tw-border-opacity:1;border-color:rgb(249 172 170/var(--tw-border-opacity))}.tw-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(235 248 255/var(--tw-bg-opacity))}.tw-bg-blue-lightest{--tw-bg-opacity:1;background-color:rgb(239 248 255/var(--tw-bg-opacity))}.tw-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247 250 252/var(--tw-bg-opacity))}.tw-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(237 242 247/var(--tw-bg-opacity))}.tw-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(160 174 192/var(--tw-bg-opacity))}.tw-bg-green-100{--tw-bg-opacity:1;background-color:rgb(240 255 244/var(--tw-bg-opacity))}.tw-bg-grey-lighter{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.tw-bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 250 240/var(--tw-bg-opacity))}.tw-bg-red-100{--tw-bg-opacity:1;background-color:rgb(255 245 245/var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.tw-p-0{padding:0}.tw-p-1{padding:.25rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-5{padding:1.25rem}.tw-p-6{padding:1.5rem}.tw-px-1{padding-left:.25rem;padding-right:.25rem}.tw-px-10{padding-left:2.5rem;padding-right:2.5rem}.tw-px-3{padding-left:.75rem;padding-right:.75rem}.tw-px-4{padding-left:1rem;padding-right:1rem}.tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-py-0{padding-top:0;padding-bottom:0}.tw-py-1{padding-top:.25rem;padding-bottom:.25rem}.tw-py-2{padding-top:.5rem;padding-bottom:.5rem}.tw-py-20{padding-top:5rem;padding-bottom:5rem}.tw-py-4{padding-top:1rem;padding-bottom:1rem}.tw-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.tw-pb-2{padding-bottom:.5rem}.tw-pb-8{padding-bottom:2rem}.tw-pl-0{padding-left:0}.tw-pl-16{padding-left:4rem}.tw-pl-2{padding-left:.5rem}.tw-pl-4{padding-left:1rem}.tw-pr-4{padding-right:1rem}.tw-pt-0{padding-top:0}.tw-pt-4{padding-top:1rem}.tw-pt-6{padding-top:1.5rem}.tw-text-center{text-align:center}.tw-text-right{text-align:right}.tw-align-middle{vertical-align:middle}.tw-font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.tw-text-base{font-size:1rem}.tw-text-lg{font-size:1.125rem}.tw-text-sm{font-size:.875rem}.tw-text-xl{font-size:1.25rem}.tw-text-xs{font-size:.75rem}.tw-font-bold{font-weight:700}.tw-font-normal{font-weight:400}.tw-font-semibold{font-weight:600}.tw-uppercase{text-transform:uppercase}.tw-italic{font-style:italic}.tw-leading-tight{line-height:1.25}.tw-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.tw-text-blue-700{--tw-text-opacity:1;color:rgb(43 108 176/var(--tw-text-opacity))}.tw-text-blue-dark{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity))}.tw-text-gray-500{--tw-text-opacity:1;color:rgb(160 174 192/var(--tw-text-opacity))}.tw-text-gray-600{--tw-text-opacity:1;color:rgb(113 128 150/var(--tw-text-opacity))}.tw-text-gray-700{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity))}.tw-text-green-500{--tw-text-opacity:1;color:rgb(72 187 120/var(--tw-text-opacity))}.tw-text-green-600{--tw-text-opacity:1;color:rgb(56 161 105/var(--tw-text-opacity))}.tw-text-green-700{--tw-text-opacity:1;color:rgb(47 133 90/var(--tw-text-opacity))}.tw-text-green-dark{--tw-text-opacity:1;color:rgb(31 157 85/var(--tw-text-opacity))}.tw-text-grey-dark{--tw-text-opacity:1;color:rgb(135 149 161/var(--tw-text-opacity))}.tw-text-grey-darker{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.tw-text-grey-darkest{--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity))}.tw-text-orange-500{--tw-text-opacity:1;color:rgb(237 137 54/var(--tw-text-opacity))}.tw-text-orange-700{--tw-text-opacity:1;color:rgb(192 86 33/var(--tw-text-opacity))}.tw-text-red-500{--tw-text-opacity:1;color:rgb(245 101 101/var(--tw-text-opacity))}.tw-text-red-600{--tw-text-opacity:1;color:rgb(229 62 62/var(--tw-text-opacity))}.tw-text-red-700{--tw-text-opacity:1;color:rgb(197 48 48/var(--tw-text-opacity))}.tw-text-red-lighter{--tw-text-opacity:1;color:rgb(249 172 170/var(--tw-text-opacity))}.tw-line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.tw-shadow-lg{--tw-shadow:0 15px 30px 0 rgba(0,0,0,0.11),0 5px 15px 0 rgba(0,0,0,0.08);--tw-shadow-colored:0 15px 30px 0 var(--tw-shadow-color),0 5px 15px 0 var(--tw-shadow-color)}.tw-shadow-lg,.tw-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.tw-shadow-md{--tw-shadow:0 4px 8px 0 rgba(0,0,0,0.12),0 2px 4px 0 rgba(0,0,0,0.08);--tw-shadow-colored:0 4px 8px 0 var(--tw-shadow-color),0 2px 4px 0 var(--tw-shadow-color)}.\[a-f0-9\:\\\.\\-\]{a-f0-9:\.\-}.hover\:tw-bg-grey-lighter:hover{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.hover\:tw-no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}@media (min-width:768px){.md\:tw-mt-0{margin-top:0}.md\:tw-inline{display:inline}.md\:tw-table-cell{display:table-cell}.md\:tw-text-left{text-align:left}.md\:tw-text-right{text-align:right}}@media (min-width:1024px){.lg\:tw-inline-block{display:inline-block}.lg\:tw-inline{display:inline}.lg\:tw-table-cell{display:table-cell}} + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +:root{--dt-row-selected: 2, 117, 216;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 9, 10, 11;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;color:rgba(0, 0, 0, 0.5);content:"▶"}table.dataTable tr.dt-hasChild td.dt-control:before{content:"▼"}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before{color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{color:rgba(255, 255, 255, 0.5)}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody>table.dataTable>thead>tr>th:before,div.dataTables_scrollBody>table.dataTable>thead>tr>th:after,div.dataTables_scrollBody>table.dataTable>thead>tr>td:before,div.dataTables_scrollBody>table.dataTable>thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px;z-index:10}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(2, 117, 216);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgb(2, 117, 216);box-shadow:inset 0 0 0 9999px rgb(var(--dt-row-selected));color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(9, 10, 11);color:rgb(var(--dt-row-selected-link))}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.95);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.975);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:before,div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody tr:first-child th,div.dataTables_scrollBody>table>tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center !important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:1px}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty { + cursor: default !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before { + display: none !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control { + cursor: pointer; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before { + margin-right: 0.5em; + display: inline-block; + color: rgba(0, 0, 0, 0.5); + content: "►"; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control.arrow-right::before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control.arrow-right::before { + content: "◄"; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th.dtr-control:before { + content: "▼"; +} +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td.dtr-control, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th.dtr-control { + padding-left: 0.333em; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control, +table.dataTable.dtr-column > tbody > tr > th.dtr-control, +table.dataTable.dtr-column > tbody > tr > td.control, +table.dataTable.dtr-column > tbody > tr > th.control { + cursor: pointer; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-column > tbody > tr > th.dtr-control:before, +table.dataTable.dtr-column > tbody > tr > td.control:before, +table.dataTable.dtr-column > tbody > tr > th.control:before { + display: inline-block; + color: rgba(0, 0, 0, 0.5); + content: "►"; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > th.dtr-control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > td.control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > th.control.arrow-right::before { + content: "◄"; +} +table.dataTable.dtr-column > tbody > tr.parent td.dtr-control:before, +table.dataTable.dtr-column > tbody > tr.parent th.dtr-control:before, +table.dataTable.dtr-column > tbody > tr.parent td.control:before, +table.dataTable.dtr-column > tbody > tr.parent th.control:before { + content: "▼"; +} +table.dataTable > tbody > tr.child { + padding: 0.5em 1em; +} +table.dataTable > tbody > tr.child:hover { + background: transparent !important; +} +table.dataTable > tbody > tr.child ul.dtr-details { + display: inline-block; + list-style-type: none; + margin: 0; + padding: 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li { + border-bottom: 1px solid #efefef; + padding: 0.5em 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li:first-child { + padding-top: 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li:last-child { + padding-bottom: 0; + border-bottom: none; +} +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 75px; + font-weight: bold; +} + +div.dtr-modal { + position: fixed; + box-sizing: border-box; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 100; + padding: 10em 1em; +} +div.dtr-modal div.dtr-modal-display { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 50%; + height: fit-content; + max-height: 75%; + overflow: auto; + margin: auto; + z-index: 102; + overflow: auto; + background-color: #f5f5f7; + border: 1px solid black; + border-radius: 0.5em; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); +} +div.dtr-modal div.dtr-modal-content { + position: relative; + padding: 2.5em; +} +div.dtr-modal div.dtr-modal-content h2 { + margin-top: 0; +} +div.dtr-modal div.dtr-modal-close { + position: absolute; + top: 6px; + right: 6px; + width: 22px; + height: 22px; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 12; +} +div.dtr-modal div.dtr-modal-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background: rgba(0, 0, 0, 0.6); +} + +@media screen and (max-width: 767px) { + div.dtr-modal div.dtr-modal-display { + width: 95%; + } +} +html.dark table.dataTable > tbody > tr > td.dtr-control:before { + color: rgba(255, 255, 255, 0.5) !important; +} +html.dark table.dataTable > tbody > tr.child ul.dtr-details > li { + border-bottom-color: #404346; +} +html.dark div.dtr-modal div.dtr-modal-display { + background-color: #212529; + border: 1px solid rgba(255, 255, 255, 0.15); +} + +div.dtr-bs-modal table.table tr:first-child td { + border-top: none; +} + +@CHARSET "UTF-8"; + + + + + + + +/* +* BEGIN CSS used for Bootstrap 4 +*/ + + + + +/***********************************************************************************/ +/************************************* NAV BAR *************************************/ +/***********************************************************************************/ + + +#navbarSupportedContent a { + font-size: 15px; +} + +@media (max-width: 768px) { + #side-navbar { + display: block; + margin-left: -220px; + width: 220px !important; + height: 96%; + overflow: scroll; + transition: all 0.3s ease; + } + + #side-navbar.active { + margin-left: 0; + z-index: 200; + position: absolute; + display: block !important; + } + + #slide-reveal-overlay{ + position: fixed; + left: 0px; + height: 100%; + width: 100%; + z-index: 100; + background-color: rgba(0, 0, 0, 0.5); + } +} + +@media (max-width: 992px) { + #side-navbar .nav-item a{ + font-size: 0.9rem; + } + + #side-navbar h6{ + font-size: 0.9rem; + } +} + + +/* +:::::::::::::::::::::::::::::::::::::::::::::::::::: +COL-LG +*/ + +/* Large devices (desktops, 992px and up) */ +@media (min-width: 992px) { + #navbarSupportedContent a{ + font-size: 14px; + } + + #div-header-select-customer{ + width: 150px; + } + +} + +/* Large devices (desktops, 992px and up) */ +@media (min-width: 992px ) and (max-width: 1205px) { + + .navbar-expand-lg #navbarSupportedContent .navbar-nav .nav-link{ + padding-right:.3rem; + padding-left:.3rem + } +} + +/* +:::::::::::::::::::::::::::::::::::::::::::::::::::: +COL-XL +*/ +/* Extra large devices (large desktops, 1200px and up) */ +@media (min-width: 1200px) { + #div-header-select-customer{ + width: 175px; + } +} + + .former-help-text { + display: none; + } + + .form-check input[type="checkbox"]{ + margin-right: 10px !important; + } + + .reset-button-well{ + float: right; + position: absolute; + margin-left: 55%; + } + + .table_view_info{ + border-collapse: separate; + border-spacing: 15px 15px; + } + + .table_view_info tr td{ + vertical-align: top; + } + + .dropdown-submenu { + position: relative !important; + } + + .dropdown-submenu .dropdown-menu-l { + top: 0; + left: -163px; + margin-top: -1px; + } + + .former-input-col-sm-6 .form-group > div{ + -ms-flex:0 0 50%; + flex:0 0 50%; + max-width:50%; + } + + .former-label-col-sm-6 .form-group > label{ + -ms-flex:0 0 33.333333%; + flex:0 0 33.333333%; + max-width:33.333333%; + } + + + .fa-facebook:hover { + color: #3B5998; + + } + + .fa-twitter:hover { + color: #4099FF; + + } + + .fa-linkedin:hover { + color: #007bb5; + + } + + .fa-globe:hover, .fa-github:hover { + color: grey; + + } + + .dropup .dropdown-toggle:after{ + margin-top : 4px; + } + + .error-border-select{ + border: 1px solid #dc3545 !important; + } + + .valid-border-select{ + border: 1px solid #28a745 !important; + } + + .a-disabled { + pointer-events: none; + cursor: default; + opacity: 0.6; + } + + .cursor-pointer { + cursor: pointer; + } + + .center-dd-caret:after{ + margin-bottom: auto; + margin-top: auto; + } + + .cursor-default{ + pointer-events: none; + cursor: default; + } + + .dataTable .dropdown-item:focus, .dropdown-item:hover{ + width: auto; + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; + } + + .dropdown-item.active:hover { + background-color: #005BC3!important; + color: white!important; + } + /* + #################################################### + M E D I A Q U E R I E S + #################################################### + */ + + /* + :::::::::::::::::::::::::::::::::::::::::::::::::::: + Bootstrap 4 breakpoints + */ + + + /* + :::::::::::::::::::::::::::::::::::::::::::::::::::: + COL-SM + */ + /* Small devices (landscape phones, 544px and up) */ + @media (max-width: 576px) { + .h2 {font-size: 1.6rem} + } + + + + /* + :::::::::::::::::::::::::::::::::::::::::::::::::::: + COL-MD + */ + /* Medium devices (tablets, 768px and up) */ + @media (min-width: 768px) { + #div-header-select-customer{ + width: 300px; + } + } + + +/* +* END CSS used for Bootstrap 4 +*/ + +.no-padding{ + padding: 0!important; +} + +.padding-10{ + padding: 10px 15px!important; +} + + +.mono { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + /* font-size: 12px; */ +} + +.ixpm-select-input-xs { + height: 20px; + line-height: 20px; +} + + + +/* The white background content wrapper */ +.page-content { + background-color: #fff !important; + padding: 20px; + margin: 0 -20px; /* negative indent the amount of the padding to maintain the grid system */ + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.15); + box-shadow: 0 1px 2px rgba(0,0,0,.15); +} + + +.list_preamble_container { + display: block; +} + +.list_preamble { + display: block; + text-align: right; +} + + + + + + +.pm-table { + margin-bottom: 18px; + margin-left: auto; + margin-right: auto; +} + + +.pm-table th { + padding: 0px; + text-align: center; + vertical-align: bottom; + border: 1px solid #dddddd; + border-bottom-width: 2px; + border-top: none; + font-weight: bold; +} + +.pm-table th.asn { + cursor: hand; + cursor: pointer; +} + +.pm-table th:last-child { + border-right-width: 2px; +} + +.pm-table td { + text-align: center; + vertical-align: top; + border: 1px solid #dddddd; +} + +.pm-table td.peering { + cursor: hand; + cursor: pointer; +} + +.pm-table td.zoom1 { + padding: 0px 1px; + font-size: 8px; + line-height: 12px; +} + +.pm-table td.zoom2 { + padding: 2px 4px; + font-size: 11px; + line-height: 15px; +} + +.pm-table td.zoom3 { + padding: 4px 8px; + font-size: 13px; + line-height: 18px; +} + +.pm-table td.zoom4 { + padding: 6px 10px; + font-size: 15px; + line-height: 20px; +} + +.pm-table td.zoom5 { + padding: 8px 12px; + font-size: 18px; + line-height: 24px; +} + +.pm-table th.zoom1 { + font-size: 8px; + line-height: 12px; +} + +.pm-table th.zoom2 { + font-size: 11px; + line-height: 15px; +} + +.pm-table th.zoom3 { + font-size: 13px; + line-height: 18px; +} + +.pm-table th.zoom4 { + font-size: 15px; + line-height: 20px; +} + +.pm-table th.zoom5 { + font-size: 18px; + line-height: 24px; +} + +.pm-table td:last-child { + border-right-width: 2px; +} + + + +.pm-table th.name { + border-left: none; + border-right: none; + border-top: none; +} + +.pm-table th.asn { + border-left: none; + border-top: none; + border-right-width: 2px; +} + +.pm-table td.name { + text-align: left; + border-left: none; + border-right: none; + font-weight: bold; +} + +.pm-table td.asn { + text-align: right; + border-left: none; + border-right-width: 2px; + font-weight: bold; +} + +.pm-table tr:last-child { + border-bottom-width: 2px; +} + + +.pm-table td.peered { + background-color: #00cc00; + width: 10px; +} + +.pm-table td.not-peered { + background-color: #d63030; + width: 10px; +} + +.pm-table td.bilateral-rs { + width: 10px; +} + +.pm-table td.rs-only { + width: 10px; +} + +.pm-table td.bilateral-only { + width: 10px; +} + + +.pm-table tr.hover, .pm-table colgroup.hover, .pm-table td.hover { + background-color: #eee; + border-left: 2px solid #555; + border-right: 2px solid #555; +} + +.pm-table td.hover2 { + border-left: 1px solid #555; + border-right: 1px solid #555; +} + + +.pm-table th.highlight, .pm-table td.highlight { + background-color: #fcf6cf; +} + +.pm-table th.highlight2, .pm-table td.highlight2 { + background-color: #eee; +} + +.controls-fieldset-bordered { + margin-left: 90px; +} + +.legend-fieldset-bordered { + font-size: 14px; + line-height: 20px; + margin-bottom: 0px; + border-style: none none none; + width: none; + padding: 5px; +} + +.fieldset-bordered { + border: 1px solid #CCCCCC; + padding: 10px; + border-radius: 4px 4px 4px 4px; + transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s; +} + +.info_box .title { + position: relative; + top: -30px; + margin-left: 0em; + padding: 2px 7px; + display: inline; + font-size: 1em; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: 1px solid #dddddd; + background-color: #fafafa; + background-color: #f9f9f9; + background-image: -moz-linear-gradient( top, #ffffff, #f0f0f0 ); + background-image: -webkit-gradient( linear, 0 0, 0 100%, from(#ffffff), to(#f0f0f0) ); + background-image: -webkit-linear-gradient(top, #ffffff, #f0f0f0); + background-image: -o-linear-gradient(top, #ffffff, #f0f0f0); + background-image: linear-gradient(to bottom, #ffffff, #f0f0f0); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff0f0f0', GradientType=0); +} + +.info_box .title a{ + color:#555555; + text-decoration:none; +} +.info_box .content{ + margin-top:-10px; +} + + +/* Bootstrap Dropdowns in Breadcrumbs: + http://stackoverflow.com/questions/12194573/bootstrap-dropdown-within-breadcrumb */ +.dropdown-menu li { + display: block; +} + + + + + + +.droppable { + border: #ccc 1px solid; + border-radius: 8px; + background: #eee; + color: #666; + padding: 20px; + margin: 10px; + clear: both; + text-align: center; +} + +.droppable.hover { + background: #ddd; +} + +.uploadList { + margin: 0; + padding: 0; + list-style: none; +} + +.uploadItem { + overflow: hidden; + border-bottom: #BCBCBC 1px solid; + margin: 0 20px; + padding: 3px; +} + +.uploadItem span { + overflow: hidden; + width: 150px; + float: left; + display: block; +} + +a.addInputRow, +a.delInputRow, +.uploadItem a { + display: inline-block; + background: url(add.png) no-repeat; + height: 16px; + width: 16px; + text-indent: -999px; +} + +.uploadItem a { + float: left; + display: block; + padding-left: 20px; + background-image: url(delete.png); +} + +a.delInputRow { + background-image: url(delete.png); +} + +.progress { + margin: 5px 0; + height: 15px; + border-radius: 3px; + background: #545A74; +} + +.upperCase { + text-transform:uppercase; +} + +.lowerCase { + text-transform:lowercase; +} + + + +td a:hover{ + text-decoration: none; +} + + +.lb-sm { + font-size: 12px; +} + +.lb-md { + font-size: 16px; +} + +.lb-lg { + font-size: 20px; +} + +.asn-table{ + margin-left: 30px; + font-family: 'Courier New', Courier, monospace; +} + +.asn-table tr td{ + padding : 1px; + padding-left: 5px; +} + +.scrollable-dropdown { + height: auto; + max-height: 200px; + overflow-x: hidden; +} + +.table-no-border > thead > tr > th, +.table-no-border > tbody > tr > th, +.table-no-border > tfoot > tr > th, +.table-no-border > thead > tr > td, +.table-no-border > tbody > tr > td, +.table-no-border > tfoot > tr > td { + border: none !important; +} + +.page-content .page-header li.pull-right { + list-style-type: none !important; +} + +.loader { + border: 6px solid #f3f3f3; + border-radius: 50%; + border-top: 6px solid #3498db; + width: 30px; + height: 30px; + -webkit-animation: spin 2s linear infinite; /* Safari */ + animation: spin 2s linear infinite; +} + +/* Safari */ +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.wrap { + -ms-word-break: break-all; + word-break: break-all; + + /* Non standard for webkit */ + word-break: break-word; + + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; +} + + + +.form-control::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ + font-weight: lighter; + opacity: 1; /* Firefox */ +} + +.select2-container--default .select2-selection { + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: .125rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: .5rem; + padding-right: 1.5rem; + line-height: 1.25; + --tw-text-opacity: 1; + border-width: 1px; + --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + box-shadow: var(--tw-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-ring-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-shadow); + height: 2.25rem; + border-color: #ced4da; +} +.select2-container--default .select2-selection .select2-selection__rendered { + color: rgb(96 111 123 / var(--tw-text-opacity)); + line-height: 1.25rem; +} +.select2-container--default .select2-selection .select2-selection__arrow { + height: 2.25rem; + width: 1.5rem; +} + +/***** Tab Panels START *****/ +.tabNavMenu{ + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; + border-bottom: 1px solid rgba(0,0,0,.125); +} +.tabButton { + margin-bottom: -1px; + padding: .5rem 1rem; + background-color: transparent; + border: 1px solid transparent; + border-bottom: 0; + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + color: #718096; + font-size: .85em; + margin-right: .25rem; +} +.tabButton:hover { + border-color: rgba(0,0,0,.075); +} +.tabButton.active { + color: #4a5568; + background-color: #fff; + border-color: rgba(0,0,0,.125); +} +.tabContent {} +.tabContent .tabPanel { + overflow: hidden; + box-sizing: border-box; + padding: 0; + height: 0; + border: none; + border-bottom-left-radius: .5rem; + border-bottom-right-radius: .5rem; + opacity: 0; + transition: opacity 500ms; +} +.tabContent .tabPanel.active { + opacity: 1; + border: 1px solid rgba(0,0,0,.125); + border-top: none; + height: auto; + padding: 1rem 1.5rem; +} +.inputWrapper { + padding: 1rem; +} +.inputWrapper:nth-child(odd) { + background: rgba(0,0,0,.025); +} +.inputWrapper .form-group { + margin-bottom: 0; +} +.inputWrapper .form-group .form-check label { + display: block; + font-size: .875rem; + font-weight: 700; + color: rgb(96 111 123); +} +/***** Tab Panels END *******/ + +/* above 80px scrolldown */ +.badgeSwitcherFix { + position: fixed; + top: 0; + right: 0; + padding: .5rem; + background: rgba(255, 255, 255, .9); + border-radius: 0 0 0 1rem; +} +/*! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }h1{color:#1a202c;font-size:2.4rem;font-weight:300;line-height:1;margin-bottom:1rem}h2{font-size:2rem;font-weight:500;line-height:1.2;margin-bottom:.5rem}h3{font-size:1.75rem;line-height:1.2}h3,h4{color:#1a202c;font-weight:300;margin-bottom:.5rem}h4{font-size:1.5rem;line-height:1}h5{font-size:1.25rem;font-weight:400}h5,h6{line-height:1.2;margin-bottom:.5rem}h6{font-size:1rem;font-weight:500}p{margin-bottom:1rem}li{display:list-item}ol{list-style-type:decimal}ol,ul{display:block;margin:1em 0;padding-left:40px}ul{list-style-type:disc}dl{margin:1em 0}dl,dt{display:block}code,pre{font-size:.9em}pre{display:block;font-family:monospace;margin:1em 0;white-space:pre}hr{margin-bottom:10px}a{color:rgb(59 130 246/var(--tw-text-opacity))}a:hover{text-decoration-line:underline}.tw-border-t-1{border-top-width:1px}.tw-border-b-1{border-bottom-width:1px}.tw-border-1{border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#side-navbar{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);padding-right:0}#side-navbar ol,#side-navbar ul{list-style:none;margin:0;padding:0}#side-navbar h6{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));border-right-width:4px;margin:0;padding:1rem 1rem 1rem .25rem}#side-navbar h6,.nav-link{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity));display:block}.nav-link{font-size:.875rem;line-height:1.25rem;padding:.5rem .5rem .5rem .75rem;text-decoration-line:none}.nav-link:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}#side-navbar li{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));border-right-width:4px;color:rgb(96 111 123/var(--tw-text-opacity));display:block;font-weight:500;padding:0}#side-navbar li.active{font-weight:700!important}#side-navbar li.active,#side-navbar li:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}#side-navbar li:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-sub-menu-item{margin-left:2rem}.ixpm-table a{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity));text-decoration-line:none}.ixpm-table a:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity));text-decoration-line:underline}.btn{border-radius:.125rem;font-weight:700}.btn,.btn:hover{border-color:transparent}.btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(39 121 189/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(31 157 85/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(135 149 161/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(96 111 123/var(--tw-bg-opacity))}.btn-outline-secondary{--tw-border-opacity:1;--tw-text-opacity:1;background-color:transparent;border-color:rgb(184 194 204/var(--tw-border-opacity));border-radius:.125rem;border-width:1px;color:rgb(184 194 204/var(--tw-text-opacity));font-weight:600}.btn-outline-secondary:hover{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.btn-white{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);color:rgb(61 72 82/var(--tw-text-opacity));font-weight:600}.btn-white,.btn-white:hover{border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}.btn-white:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.btn-info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(20 184 166/var(--tw-border-opacity));border-radius:.125rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);color:rgb(20 184 166/var(--tw-text-opacity));font-weight:600}.btn-info:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity));border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}input.form-control{--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.125rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);padding:.5rem 1rem;width:100%}input.form-control,input.form-control:focus{color:rgb(96 111 123/var(--tw-text-opacity));line-height:1.25}input.form-control:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.input-group-append .btn{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-color:#ced4da;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}label.control-label,label.form-check-label{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity));display:block;font-size:.875rem;font-weight:700;line-height:1.25rem}.badge{--tw-text-opacity:1;border-radius:9999px;color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700;padding:.25rem .75rem}.badge-info{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.badge-success{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.badge-secondary{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.badge-warning{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity));color:rgb(0 0 0/var(--tw-text-opacity))}.card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-color:#dae1e7;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.card .card-header{border-bottom-width:0;border-top-left-radius:.125rem;border-top-right-radius:.125rem}a{color:rgb(108 178 235/var(--tw-text-opacity));display:inline-block;font-weight:700;vertical-align:baseline}a,a:hover{--tw-text-opacity:1}a:hover{color:rgb(39 121 189/var(--tw-text-opacity));text-decoration-line:none}.table-light td,.table-light thead th{border-color:#ced4da}.docstore table{table-layout:auto;width:100%}.docstore td{border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-width:1px}.docstore td,.docstore td.top{--tw-border-opacity:1;padding:.5rem}.docstore td.top{border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-width:2px}.docstore td.meta{display:none;white-space:nowrap;width:.25rem}@media (min-width:1024px){.docstore td.meta{display:table-cell;white-space:nowrap;width:.25rem}}.docstore td.icon{margin-right:1rem;padding:.5rem;text-align:center;white-space:nowrap;width:.25rem}.tw-collapse{visibility:collapse}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-inset-0{inset:0}.tw-float-right{float:right}.tw-m-0{margin:0}.tw-m-2{margin:.5rem}.tw-mx-3{margin-left:.75rem;margin-right:.75rem}.tw-mx-4{margin-left:1rem;margin-right:1rem}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-0{margin-bottom:0;margin-top:0}.tw-my-1{margin-bottom:.25rem;margin-top:.25rem}.tw-my-10{margin-bottom:2.5rem;margin-top:2.5rem}.tw-my-12{margin-bottom:3rem;margin-top:3rem}.tw-my-4{margin-bottom:1rem;margin-top:1rem}.tw-my-6{margin-bottom:1.5rem;margin-top:1.5rem}.tw-my-8{margin-bottom:2rem;margin-top:2rem}.tw-mb-0{margin-bottom:0}.tw-mb-16{margin-bottom:4rem}.tw-mb-2{margin-bottom:.5rem}.tw-mb-6{margin-bottom:1.5rem}.tw-mb-8{margin-bottom:2rem}.tw-ml-12{margin-left:3rem}.tw-ml-2{margin-left:.5rem}.tw-ml-4{margin-left:1rem}.tw-ml-6{margin-left:1.5rem}.tw-ml-8{margin-left:2rem}.tw-mr-1{margin-right:.25rem}.tw-mr-2{margin-right:.5rem}.tw-mr-3{margin-right:.75rem}.tw-mr-4{margin-right:1rem}.tw-mr-6{margin-right:1.5rem}.tw-mt-1{margin-top:.25rem}.tw-mt-16{margin-top:4rem}.tw-mt-2{margin-top:.5rem}.tw-mt-3{margin-top:.75rem}.tw-mt-4{margin-top:1rem}.tw-mt-6{margin-top:1.5rem}.tw-mt-8{margin-top:2rem}.tw-block{display:block}.tw-inline-block{display:inline-block}.tw-inline{display:inline}.tw-flex{display:flex}.tw-inline-flex{display:inline-flex}.tw-hidden{display:none}.tw-h-24{height:6rem}.tw-h-4{height:1rem}.tw-h-5{height:1.25rem}.tw-h-6{height:1.5rem}.tw-h-7{height:1.75rem}.tw-h-8{height:2rem}.tw-w-10{width:2.5rem}.tw-w-20{width:5rem}.tw-w-4{width:1rem}.tw-w-5{width:1.25rem}.tw-w-6{width:1.5rem}.tw-w-auto{width:auto}.tw-w-full{width:100%}.tw-min-w-16{min-width:4rem}.tw-min-w-full{min-width:100%}.tw-max-w-lg{max-width:32rem}.tw-max-w-md{max-width:28rem}.tw-max-w-sm{max-width:24rem}.tw-flex-1{flex:1 1 0%}.tw-cursor-pointer{cursor:pointer}.tw-list-none{list-style-type:none}.tw-flex-wrap{flex-wrap:wrap}.tw-items-center{align-items:center}.tw-justify-start{justify-content:flex-start}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.tw-divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.tw-divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(209 213 219/var(--tw-divide-opacity))}.tw-self-center{align-self:center}.tw-overflow-hidden{overflow:hidden}.tw-whitespace-nowrap{white-space:nowrap}.tw-rounded{border-radius:.25rem}.tw-rounded-full{border-radius:9999px}.tw-rounded-lg{border-radius:.5rem}.tw-rounded-md{border-radius:.375rem}.tw-rounded-sm{border-radius:.125rem}.tw-border-2{border-width:2px}.tw-border-b{border-bottom-width:1px}.tw-border-b-2{border-bottom-width:2px}.tw-border-l-4{border-left-width:4px}.tw-border-r-4{border-right-width:4px}.tw-border-t{border-top-width:1px}.tw-border-t-2{border-top-width:2px}.tw-border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.tw-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.tw-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.tw-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.tw-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.tw-border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.tw-border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.tw-border-green-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.tw-border-grey-light{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity))}.tw-border-grey-lighter{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity))}.tw-border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.tw-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.tw-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.tw-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.tw-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.tw-border-red-lighter{--tw-border-opacity:1;border-color:rgb(249 172 170/var(--tw-border-opacity))}.tw-border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.tw-bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.tw-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.tw-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.tw-bg-blue-lightest{--tw-bg-opacity:1;background-color:rgb(239 248 255/var(--tw-bg-opacity))}.tw-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.tw-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.tw-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.tw-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.tw-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.tw-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.tw-bg-green-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.tw-bg-green-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.tw-bg-grey-lighter{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.tw-bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.tw-bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.tw-bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.tw-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.tw-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.tw-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.tw-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.tw-bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.tw-bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.tw-p-0{padding:0}.tw-p-1{padding:.25rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-5{padding:1.25rem}.tw-p-6{padding:1.5rem}.tw-px-1{padding-left:.25rem;padding-right:.25rem}.tw-px-1\.5{padding-left:.375rem;padding-right:.375rem}.tw-px-10{padding-left:2.5rem;padding-right:2.5rem}.tw-px-2{padding-left:.5rem;padding-right:.5rem}.tw-px-3{padding-left:.75rem;padding-right:.75rem}.tw-px-4{padding-left:1rem;padding-right:1rem}.tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-py-0{padding-bottom:0;padding-top:0}.tw-py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.tw-py-1{padding-bottom:.25rem;padding-top:.25rem}.tw-py-2{padding-bottom:.5rem;padding-top:.5rem}.tw-py-20{padding-bottom:5rem;padding-top:5rem}.tw-py-4{padding-bottom:1rem;padding-top:1rem}.tw-py-5{padding-bottom:1.25rem;padding-top:1.25rem}.tw-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.tw-pb-2{padding-bottom:.5rem}.tw-pb-8{padding-bottom:2rem}.tw-pl-0{padding-left:0}.tw-pl-16{padding-left:4rem}.tw-pl-2{padding-left:.5rem}.tw-pl-4{padding-left:1rem}.tw-pr-4{padding-right:1rem}.tw-pt-0{padding-top:0}.tw-pt-4{padding-top:1rem}.tw-pt-6{padding-top:1.5rem}.tw-text-center{text-align:center}.tw-text-right{text-align:right}.tw-align-middle{vertical-align:middle}.tw-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.tw-text-base{font-size:1rem;line-height:1.5rem}.tw-text-lg{font-size:1.125rem;line-height:1.75rem}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-xl{font-size:1.25rem;line-height:1.75rem}.tw-text-xs{font-size:.75rem;line-height:1rem}.tw-font-bold{font-weight:700}.tw-font-medium{font-weight:500}.tw-font-normal{font-weight:400}.tw-font-semibold{font-weight:600}.tw-uppercase{text-transform:uppercase}.tw-italic{font-style:italic}.tw-slashed-zero{--tw-slashed-zero:slashed-zero}.tw-lining-nums,.tw-slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tw-lining-nums{--tw-numeric-figure:lining-nums}.tw-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tw-leading-3{line-height:.75rem}.tw-leading-5{line-height:1.25rem}.tw-leading-6{line-height:1.5rem}.tw-leading-7{line-height:1.75rem}.tw-leading-8{line-height:2rem}.tw-leading-tight{line-height:1.25}.tw-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.tw-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.tw-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.tw-text-blue-dark{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity))}.tw-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.tw-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.tw-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.tw-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.tw-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.tw-text-green-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.tw-text-green-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.tw-text-green-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.tw-text-green-dark{--tw-text-opacity:1;color:rgb(31 157 85/var(--tw-text-opacity))}.tw-text-grey-dark{--tw-text-opacity:1;color:rgb(135 149 161/var(--tw-text-opacity))}.tw-text-grey-darker{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.tw-text-grey-darkest{--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity))}.tw-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.tw-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.tw-text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.tw-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.tw-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.tw-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.tw-text-red-lighter{--tw-text-opacity:1;color:rgb(249 172 170/var(--tw-text-opacity))}.tw-line-through{text-decoration-line:line-through}.tw-opacity-40{opacity:.4}.tw-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.tw-shadow,.tw-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.tw-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.tw-shadow-md,.tw-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.tw-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.tw-ring-inset{--tw-ring-inset:inset}.tw-ring-blue-700\/10{--tw-ring-color:rgba(29,78,216,.1)}.tw-ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.tw-ring-gray-500\/10{--tw-ring-color:hsla(220,9%,46%,.1)}.tw-ring-gray-800\/10{--tw-ring-color:rgba(31,41,55,.1)}.tw-ring-green-600\/20{--tw-ring-color:rgba(5,150,105,.2)}.tw-ring-pink-700\/10{--tw-ring-color:rgba(190,24,93,.1)}.tw-ring-red-600\/10{--tw-ring-color:rgba(220,38,38,.1)}.tw-ring-yellow-600\/20{--tw-ring-color:rgba(217,119,6,.2)}.\[a-f0-9\:\\\.\\-\]{a-f0-9:\.\-}.\[id\:\%d\]{id:%d}.hover\:tw-border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:tw-bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:tw-bg-grey-lighter:hover{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.hover\:tw-no-underline:hover{text-decoration-line:none}.hover\:tw-opacity-80:hover{opacity:.8}@media (min-width:640px){.sm\:tw-p-6{padding:1.5rem}.sm\:tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:tw-pl-0{padding-left:0}}@media (min-width:768px){.md\:tw-mt-0{margin-top:0}.md\:tw-inline{display:inline}.md\:tw-table-cell{display:table-cell}.md\:tw-text-left{text-align:left}.md\:tw-text-right{text-align:right}}@media (min-width:1024px){.lg\:tw-inline-block{display:inline-block}.lg\:tw-inline{display:inline}.lg\:tw-table-cell{display:table-cell}} diff --git a/public/css/tailwind.css b/public/css/tailwind.css index 5b62a0560..ac2e8e7ac 100644 --- a/public/css/tailwind.css +++ b/public/css/tailwind.css @@ -1 +1 @@ -/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#cbd5e0}input::placeholder,textarea::placeholder{opacity:1;color:#cbd5e0}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,153,225,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,153,225,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }h1{font-size:2.4rem;line-height:1;color:#1a202c;font-weight:300;margin-bottom:1rem}h2{font-size:2rem;margin-bottom:.5rem;font-weight:500;line-height:1.2}h3{font-size:1.75rem;line-height:1.2}h3,h4{margin-bottom:.5rem;font-weight:300;color:#1a202c}h4{font-size:1.5rem;line-height:1}h5{font-size:1.25rem;font-weight:400}h5,h6{margin-bottom:.5rem;line-height:1.2}h6{font-size:1rem;font-weight:500}p{margin-bottom:1rem}li{display:list-item}ol{list-style-type:decimal}ol,ul{display:block;margin:1em 0;padding-left:40px}ul{list-style-type:disc}dl{margin:1em 0}dl,dt{display:block}code,pre{font-size:.9em}pre{display:block;font-family:monospace;white-space:pre;margin:1em 0}hr{margin-bottom:10px}a{color:rgb(66 153 225/var(--tw-text-opacity))}a:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.tw-border-t-1{border-top-width:1px}.tw-border-b-1{border-bottom-width:1px}.tw-border-1{border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}#side-navbar,.shadow{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#side-navbar{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));padding-right:0;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}#side-navbar ol,#side-navbar ul{list-style:none;margin:0;padding:0}#side-navbar h6{margin:0;border-right-width:4px;--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));padding:1rem 1rem 1rem .25rem}#side-navbar h6,.nav-link{display:block;--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-link{padding:.5rem .5rem .5rem .75rem;font-size:.875rem;-webkit-text-decoration-line:none;text-decoration-line:none}#side-navbar li,.nav-link:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}#side-navbar li{display:block;border-right-width:4px;--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));padding:0;font-weight:500}#side-navbar li.active{font-weight:700!important}#side-navbar li.active,#side-navbar li:hover{--tw-border-opacity:1;border-color:rgb(56 161 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}#side-navbar li:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-sub-menu-item{margin-left:2rem}.ixpm-table a{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity));-webkit-text-decoration-line:none;text-decoration-line:none}.ixpm-table a:hover{--tw-text-opacity:1;color:rgb(66 153 225/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.btn{border-radius:.125rem;font-weight:700}.btn,.btn:hover{border-color:transparent}.btn-primary{--tw-bg-opacity:1;background-color:rgb(66 153 225/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(39 121 189/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;background-color:rgb(72 187 120/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(31 157 85/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;background-color:rgb(135 149 161/var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(96 111 123/var(--tw-bg-opacity))}.btn-outline-secondary{border-radius:.125rem;--tw-border-opacity:1;border-color:rgb(184 194 204/var(--tw-border-opacity));background-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(184 194 204/var(--tw-text-opacity));border-width:1px}.btn-outline-secondary:hover{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.btn-white{border-radius:.125rem;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));font-weight:600;--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity));--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.btn-white,.btn-white:hover{border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}.btn-white:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.btn-info{border-radius:.125rem;--tw-border-opacity:1;border-color:rgb(56 178 172/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));font-weight:600;--tw-text-opacity:1;color:rgb(56 178 172/var(--tw-text-opacity));--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.btn-info,.btn-info:hover{border-width:1px}.btn-info:hover{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(56 178 172/var(--tw-bg-opacity))}input.form-control{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.125rem;padding:.5rem 1rem;--tw-text-opacity:1;border-width:1px;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}input.form-control,input.form-control:focus{line-height:1.25;color:rgb(96 111 123/var(--tw-text-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}input.form-control:focus{--tw-text-opacity:1;--tw-shadow:0 0 0 3px rgba(52,144,220,0.5);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);outline:2px solid transparent;outline-offset:2px}.input-group-append .btn{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);border-color:#ced4da}label.control-label,label.form-check-label{display:block;font-size:.875rem;font-weight:700;--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.badge{border-radius:9999px;padding:.25rem .75rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.badge-info{--tw-bg-opacity:1;background-color:rgb(56 178 172/var(--tw-bg-opacity))}.badge-success{--tw-bg-opacity:1;background-color:rgb(72 187 120/var(--tw-bg-opacity))}.badge-secondary{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.badge-warning{--tw-bg-opacity:1;background-color:rgb(246 173 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.card{border-color:#dae1e7;border-radius:.125rem;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.card .card-header{border-top-left-radius:.125rem;border-top-right-radius:.125rem;border-bottom-width:0}a{display:inline-block;vertical-align:baseline;font-weight:700;color:rgb(108 178 235/var(--tw-text-opacity))}a,a:hover{--tw-text-opacity:1}a:hover{color:rgb(39 121 189/var(--tw-text-opacity));-webkit-text-decoration-line:none;text-decoration-line:none}.table-light td,.table-light thead th{border-color:#ced4da}.docstore table{width:100%;table-layout:auto}.docstore td{border-color:rgb(226 232 240/var(--tw-border-opacity));border-top-width:1px}.docstore td,.docstore td.top{--tw-border-opacity:1;padding:.5rem}.docstore td.top{border-top-width:2px;border-color:rgb(226 232 240/var(--tw-border-opacity))}.docstore td.meta{display:none;width:.25rem;white-space:nowrap}@media (min-width:1024px){.docstore td.meta{display:table-cell;width:.25rem;white-space:nowrap}}.docstore td.icon{margin-right:1rem;width:.25rem;white-space:nowrap;padding:.5rem;text-align:center}.tw-collapse{visibility:collapse}.tw-relative{position:relative}.tw-float-right{float:right}.tw-m-0{margin:0}.tw-m-2{margin:.5rem}.tw-mx-3{margin-left:.75rem;margin-right:.75rem}.tw-mx-4{margin-left:1rem;margin-right:1rem}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-0{margin-top:0;margin-bottom:0}.tw-my-1{margin-top:.25rem;margin-bottom:.25rem}.tw-my-10{margin-top:2.5rem;margin-bottom:2.5rem}.tw-my-12{margin-top:3rem;margin-bottom:3rem}.tw-my-4{margin-top:1rem;margin-bottom:1rem}.tw-my-6{margin-top:1.5rem;margin-bottom:1.5rem}.tw-my-8{margin-top:2rem;margin-bottom:2rem}.tw-mb-0{margin-bottom:0}.tw-mb-16{margin-bottom:4rem}.tw-mb-2{margin-bottom:.5rem}.tw-mb-6{margin-bottom:1.5rem}.tw-mb-8{margin-bottom:2rem}.tw-ml-12{margin-left:3rem}.tw-ml-2{margin-left:.5rem}.tw-ml-4{margin-left:1rem}.tw-ml-6{margin-left:1.5rem}.tw-ml-8{margin-left:2rem}.tw-mr-2{margin-right:.5rem}.tw-mr-3{margin-right:.75rem}.tw-mr-4{margin-right:1rem}.tw-mr-6{margin-right:1.5rem}.tw-mt-1{margin-top:.25rem}.tw-mt-16{margin-top:4rem}.tw-mt-2{margin-top:.5rem}.tw-mt-4{margin-top:1rem}.tw-mt-6{margin-top:1.5rem}.tw-mt-8{margin-top:2rem}.tw-block{display:block}.tw-inline-block{display:inline-block}.tw-inline{display:inline}.tw-flex{display:flex}.tw-hidden{display:none}.tw-h-24{height:6rem}.tw-w-6{width:1.5rem}.tw-w-auto{width:auto}.tw-w-full{width:100%}.tw-min-w-full{min-width:100%}.tw-max-w-lg{max-width:50rem}.tw-max-w-md{max-width:40rem}.tw-max-w-sm{max-width:30rem}.tw-flex-1{flex:1 1 0%}.tw-cursor-pointer{cursor:pointer}.tw-list-none{list-style-type:none}.tw-flex-wrap{flex-wrap:wrap}.tw-items-center{align-items:center}.tw-justify-between{justify-content:space-between}.tw-self-center{align-self:center}.tw-overflow-hidden{overflow:hidden}.tw-rounded-full{border-radius:9999px}.tw-rounded-lg{border-radius:.5rem}.tw-rounded-sm{border-radius:.125rem}.tw-border-2{border-width:2px}.tw-border-b-2{border-bottom-width:2px}.tw-border-l-4{border-left-width:4px}.tw-border-r-4{border-right-width:4px}.tw-border-t-2{border-top-width:2px}.tw-border-blue-500{--tw-border-opacity:1;border-color:rgb(66 153 225/var(--tw-border-opacity))}.tw-border-gray-200{--tw-border-opacity:1;border-color:rgb(237 242 247/var(--tw-border-opacity))}.tw-border-gray-300{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.tw-border-gray-400{--tw-border-opacity:1;border-color:rgb(203 213 224/var(--tw-border-opacity))}.tw-border-gray-500{--tw-border-opacity:1;border-color:rgb(160 174 192/var(--tw-border-opacity))}.tw-border-gray-600{--tw-border-opacity:1;border-color:rgb(113 128 150/var(--tw-border-opacity))}.tw-border-green-500{--tw-border-opacity:1;border-color:rgb(72 187 120/var(--tw-border-opacity))}.tw-border-grey-light{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity))}.tw-border-grey-lighter{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity))}.tw-border-orange-500{--tw-border-opacity:1;border-color:rgb(237 137 54/var(--tw-border-opacity))}.tw-border-red-500{--tw-border-opacity:1;border-color:rgb(245 101 101/var(--tw-border-opacity))}.tw-border-red-lighter{--tw-border-opacity:1;border-color:rgb(249 172 170/var(--tw-border-opacity))}.tw-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(235 248 255/var(--tw-bg-opacity))}.tw-bg-blue-lightest{--tw-bg-opacity:1;background-color:rgb(239 248 255/var(--tw-bg-opacity))}.tw-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247 250 252/var(--tw-bg-opacity))}.tw-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(237 242 247/var(--tw-bg-opacity))}.tw-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(160 174 192/var(--tw-bg-opacity))}.tw-bg-green-100{--tw-bg-opacity:1;background-color:rgb(240 255 244/var(--tw-bg-opacity))}.tw-bg-grey-lighter{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.tw-bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 250 240/var(--tw-bg-opacity))}.tw-bg-red-100{--tw-bg-opacity:1;background-color:rgb(255 245 245/var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.tw-p-0{padding:0}.tw-p-1{padding:.25rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-5{padding:1.25rem}.tw-p-6{padding:1.5rem}.tw-px-1{padding-left:.25rem;padding-right:.25rem}.tw-px-10{padding-left:2.5rem;padding-right:2.5rem}.tw-px-3{padding-left:.75rem;padding-right:.75rem}.tw-px-4{padding-left:1rem;padding-right:1rem}.tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-py-0{padding-top:0;padding-bottom:0}.tw-py-1{padding-top:.25rem;padding-bottom:.25rem}.tw-py-2{padding-top:.5rem;padding-bottom:.5rem}.tw-py-20{padding-top:5rem;padding-bottom:5rem}.tw-py-4{padding-top:1rem;padding-bottom:1rem}.tw-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.tw-pb-2{padding-bottom:.5rem}.tw-pb-8{padding-bottom:2rem}.tw-pl-0{padding-left:0}.tw-pl-16{padding-left:4rem}.tw-pl-2{padding-left:.5rem}.tw-pl-4{padding-left:1rem}.tw-pr-4{padding-right:1rem}.tw-pt-0{padding-top:0}.tw-pt-4{padding-top:1rem}.tw-pt-6{padding-top:1.5rem}.tw-text-center{text-align:center}.tw-text-right{text-align:right}.tw-align-middle{vertical-align:middle}.tw-font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.tw-text-base{font-size:1rem}.tw-text-lg{font-size:1.125rem}.tw-text-sm{font-size:.875rem}.tw-text-xl{font-size:1.25rem}.tw-text-xs{font-size:.75rem}.tw-font-bold{font-weight:700}.tw-font-normal{font-weight:400}.tw-font-semibold{font-weight:600}.tw-uppercase{text-transform:uppercase}.tw-italic{font-style:italic}.tw-leading-tight{line-height:1.25}.tw-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.tw-text-blue-700{--tw-text-opacity:1;color:rgb(43 108 176/var(--tw-text-opacity))}.tw-text-blue-dark{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity))}.tw-text-gray-500{--tw-text-opacity:1;color:rgb(160 174 192/var(--tw-text-opacity))}.tw-text-gray-600{--tw-text-opacity:1;color:rgb(113 128 150/var(--tw-text-opacity))}.tw-text-gray-700{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity))}.tw-text-green-500{--tw-text-opacity:1;color:rgb(72 187 120/var(--tw-text-opacity))}.tw-text-green-600{--tw-text-opacity:1;color:rgb(56 161 105/var(--tw-text-opacity))}.tw-text-green-700{--tw-text-opacity:1;color:rgb(47 133 90/var(--tw-text-opacity))}.tw-text-green-dark{--tw-text-opacity:1;color:rgb(31 157 85/var(--tw-text-opacity))}.tw-text-grey-dark{--tw-text-opacity:1;color:rgb(135 149 161/var(--tw-text-opacity))}.tw-text-grey-darker{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.tw-text-grey-darkest{--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity))}.tw-text-orange-500{--tw-text-opacity:1;color:rgb(237 137 54/var(--tw-text-opacity))}.tw-text-orange-700{--tw-text-opacity:1;color:rgb(192 86 33/var(--tw-text-opacity))}.tw-text-red-500{--tw-text-opacity:1;color:rgb(245 101 101/var(--tw-text-opacity))}.tw-text-red-600{--tw-text-opacity:1;color:rgb(229 62 62/var(--tw-text-opacity))}.tw-text-red-700{--tw-text-opacity:1;color:rgb(197 48 48/var(--tw-text-opacity))}.tw-text-red-lighter{--tw-text-opacity:1;color:rgb(249 172 170/var(--tw-text-opacity))}.tw-line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.tw-shadow-lg{--tw-shadow:0 15px 30px 0 rgba(0,0,0,0.11),0 5px 15px 0 rgba(0,0,0,0.08);--tw-shadow-colored:0 15px 30px 0 var(--tw-shadow-color),0 5px 15px 0 var(--tw-shadow-color)}.tw-shadow-lg,.tw-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.tw-shadow-md{--tw-shadow:0 4px 8px 0 rgba(0,0,0,0.12),0 2px 4px 0 rgba(0,0,0,0.08);--tw-shadow-colored:0 4px 8px 0 var(--tw-shadow-color),0 2px 4px 0 var(--tw-shadow-color)}.\[a-f0-9\:\\\.\\-\]{a-f0-9:\.\-}.\[id\:\%d\]{id:%d}.hover\:tw-bg-grey-lighter:hover{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.hover\:tw-no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}@media (min-width:768px){.md\:tw-mt-0{margin-top:0}.md\:tw-inline{display:inline}.md\:tw-table-cell{display:table-cell}.md\:tw-text-left{text-align:left}.md\:tw-text-right{text-align:right}}@media (min-width:1024px){.lg\:tw-inline-block{display:inline-block}.lg\:tw-inline{display:inline}.lg\:tw-table-cell{display:table-cell}} \ No newline at end of file +/*! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }h1{color:#1a202c;font-size:2.4rem;font-weight:300;line-height:1;margin-bottom:1rem}h2{font-size:2rem;font-weight:500;line-height:1.2;margin-bottom:.5rem}h3{font-size:1.75rem;line-height:1.2}h3,h4{color:#1a202c;font-weight:300;margin-bottom:.5rem}h4{font-size:1.5rem;line-height:1}h5{font-size:1.25rem;font-weight:400}h5,h6{line-height:1.2;margin-bottom:.5rem}h6{font-size:1rem;font-weight:500}p{margin-bottom:1rem}li{display:list-item}ol{list-style-type:decimal}ol,ul{display:block;margin:1em 0;padding-left:40px}ul{list-style-type:disc}dl{margin:1em 0}dl,dt{display:block}code,pre{font-size:.9em}pre{display:block;font-family:monospace;margin:1em 0;white-space:pre}hr{margin-bottom:10px}a{color:rgb(59 130 246/var(--tw-text-opacity))}a:hover{text-decoration-line:underline}.tw-border-t-1{border-top-width:1px}.tw-border-b-1{border-bottom-width:1px}.tw-border-1{border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#side-navbar{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);padding-right:0}#side-navbar ol,#side-navbar ul{list-style:none;margin:0;padding:0}#side-navbar h6{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));border-right-width:4px;margin:0;padding:1rem 1rem 1rem .25rem}#side-navbar h6,.nav-link{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity));display:block}.nav-link{font-size:.875rem;line-height:1.25rem;padding:.5rem .5rem .5rem .75rem;text-decoration-line:none}.nav-link:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}#side-navbar li{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity));border-right-width:4px;color:rgb(96 111 123/var(--tw-text-opacity));display:block;font-weight:500;padding:0}#side-navbar li.active{font-weight:700!important}#side-navbar li.active,#side-navbar li:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}#side-navbar li:hover{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.nav-sub-menu-item{margin-left:2rem}.ixpm-table a{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity));text-decoration-line:none}.ixpm-table a:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity));text-decoration-line:underline}.btn{border-radius:.125rem;font-weight:700}.btn,.btn:hover{border-color:transparent}.btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(39 121 189/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(31 157 85/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(135 149 161/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(96 111 123/var(--tw-bg-opacity))}.btn-outline-secondary{--tw-border-opacity:1;--tw-text-opacity:1;background-color:transparent;border-color:rgb(184 194 204/var(--tw-border-opacity));border-radius:.125rem;border-width:1px;color:rgb(184 194 204/var(--tw-text-opacity));font-weight:600}.btn-outline-secondary:hover{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.btn-white{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);color:rgb(61 72 82/var(--tw-text-opacity));font-weight:600}.btn-white,.btn-white:hover{border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}.btn-white:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.btn-info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(20 184 166/var(--tw-border-opacity));border-radius:.125rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);color:rgb(20 184 166/var(--tw-text-opacity));font-weight:600}.btn-info:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity));border-color:rgb(218 225 231/var(--tw-border-opacity));border-width:1px}input.form-control{--tw-text-opacity:1;--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.125rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);padding:.5rem 1rem;width:100%}input.form-control,input.form-control:focus{color:rgb(96 111 123/var(--tw-text-opacity));line-height:1.25}input.form-control:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.input-group-append .btn{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-color:#ced4da;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}label.control-label,label.form-check-label{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity));display:block;font-size:.875rem;font-weight:700;line-height:1.25rem}.badge{--tw-text-opacity:1;border-radius:9999px;color:rgb(255 255 255/var(--tw-text-opacity));font-weight:700;padding:.25rem .75rem}.badge-info{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.badge-success{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.badge-secondary{--tw-bg-opacity:1;background-color:rgb(184 194 204/var(--tw-bg-opacity))}.badge-warning{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity));color:rgb(0 0 0/var(--tw-text-opacity))}.card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-color:#dae1e7;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.card .card-header{border-bottom-width:0;border-top-left-radius:.125rem;border-top-right-radius:.125rem}a{color:rgb(108 178 235/var(--tw-text-opacity));display:inline-block;font-weight:700;vertical-align:baseline}a,a:hover{--tw-text-opacity:1}a:hover{color:rgb(39 121 189/var(--tw-text-opacity));text-decoration-line:none}.table-light td,.table-light thead th{border-color:#ced4da}.docstore table{table-layout:auto;width:100%}.docstore td{border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-width:1px}.docstore td,.docstore td.top{--tw-border-opacity:1;padding:.5rem}.docstore td.top{border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-width:2px}.docstore td.meta{display:none;white-space:nowrap;width:.25rem}@media (min-width:1024px){.docstore td.meta{display:table-cell;white-space:nowrap;width:.25rem}}.docstore td.icon{margin-right:1rem;padding:.5rem;text-align:center;white-space:nowrap;width:.25rem}.tw-collapse{visibility:collapse}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-inset-0{inset:0}.tw-float-right{float:right}.tw-m-0{margin:0}.tw-m-2{margin:.5rem}.tw-mx-3{margin-left:.75rem;margin-right:.75rem}.tw-mx-4{margin-left:1rem;margin-right:1rem}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-0{margin-bottom:0;margin-top:0}.tw-my-1{margin-bottom:.25rem;margin-top:.25rem}.tw-my-10{margin-bottom:2.5rem;margin-top:2.5rem}.tw-my-12{margin-bottom:3rem;margin-top:3rem}.tw-my-4{margin-bottom:1rem;margin-top:1rem}.tw-my-6{margin-bottom:1.5rem;margin-top:1.5rem}.tw-my-8{margin-bottom:2rem;margin-top:2rem}.tw-mb-0{margin-bottom:0}.tw-mb-16{margin-bottom:4rem}.tw-mb-2{margin-bottom:.5rem}.tw-mb-6{margin-bottom:1.5rem}.tw-mb-8{margin-bottom:2rem}.tw-ml-12{margin-left:3rem}.tw-ml-2{margin-left:.5rem}.tw-ml-4{margin-left:1rem}.tw-ml-6{margin-left:1.5rem}.tw-ml-8{margin-left:2rem}.tw-mr-1{margin-right:.25rem}.tw-mr-2{margin-right:.5rem}.tw-mr-3{margin-right:.75rem}.tw-mr-4{margin-right:1rem}.tw-mr-6{margin-right:1.5rem}.tw-mt-1{margin-top:.25rem}.tw-mt-16{margin-top:4rem}.tw-mt-2{margin-top:.5rem}.tw-mt-3{margin-top:.75rem}.tw-mt-4{margin-top:1rem}.tw-mt-6{margin-top:1.5rem}.tw-mt-8{margin-top:2rem}.tw-block{display:block}.tw-inline-block{display:inline-block}.tw-inline{display:inline}.tw-flex{display:flex}.tw-inline-flex{display:inline-flex}.tw-hidden{display:none}.tw-h-24{height:6rem}.tw-h-4{height:1rem}.tw-h-5{height:1.25rem}.tw-h-6{height:1.5rem}.tw-h-7{height:1.75rem}.tw-h-8{height:2rem}.tw-w-10{width:2.5rem}.tw-w-20{width:5rem}.tw-w-4{width:1rem}.tw-w-5{width:1.25rem}.tw-w-6{width:1.5rem}.tw-w-auto{width:auto}.tw-w-full{width:100%}.tw-min-w-16{min-width:4rem}.tw-min-w-full{min-width:100%}.tw-max-w-lg{max-width:32rem}.tw-max-w-md{max-width:28rem}.tw-max-w-sm{max-width:24rem}.tw-flex-1{flex:1 1 0%}.tw-cursor-pointer{cursor:pointer}.tw-list-none{list-style-type:none}.tw-flex-wrap{flex-wrap:wrap}.tw-items-center{align-items:center}.tw-justify-start{justify-content:flex-start}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.tw-divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.tw-divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(209 213 219/var(--tw-divide-opacity))}.tw-self-center{align-self:center}.tw-overflow-hidden{overflow:hidden}.tw-whitespace-nowrap{white-space:nowrap}.tw-rounded{border-radius:.25rem}.tw-rounded-full{border-radius:9999px}.tw-rounded-lg{border-radius:.5rem}.tw-rounded-md{border-radius:.375rem}.tw-rounded-sm{border-radius:.125rem}.tw-border-2{border-width:2px}.tw-border-b{border-bottom-width:1px}.tw-border-b-2{border-bottom-width:2px}.tw-border-l-4{border-left-width:4px}.tw-border-r-4{border-right-width:4px}.tw-border-t{border-top-width:1px}.tw-border-t-2{border-top-width:2px}.tw-border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.tw-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.tw-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.tw-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.tw-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.tw-border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.tw-border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.tw-border-green-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.tw-border-grey-light{--tw-border-opacity:1;border-color:rgb(218 225 231/var(--tw-border-opacity))}.tw-border-grey-lighter{--tw-border-opacity:1;border-color:rgb(241 245 248/var(--tw-border-opacity))}.tw-border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.tw-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.tw-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.tw-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.tw-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.tw-border-red-lighter{--tw-border-opacity:1;border-color:rgb(249 172 170/var(--tw-border-opacity))}.tw-border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.tw-bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.tw-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.tw-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.tw-bg-blue-lightest{--tw-bg-opacity:1;background-color:rgb(239 248 255/var(--tw-bg-opacity))}.tw-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.tw-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.tw-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.tw-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.tw-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.tw-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.tw-bg-green-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.tw-bg-green-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.tw-bg-grey-lighter{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.tw-bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.tw-bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.tw-bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.tw-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.tw-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.tw-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.tw-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.tw-bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.tw-bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.tw-p-0{padding:0}.tw-p-1{padding:.25rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-5{padding:1.25rem}.tw-p-6{padding:1.5rem}.tw-px-1{padding-left:.25rem;padding-right:.25rem}.tw-px-1\.5{padding-left:.375rem;padding-right:.375rem}.tw-px-10{padding-left:2.5rem;padding-right:2.5rem}.tw-px-2{padding-left:.5rem;padding-right:.5rem}.tw-px-3{padding-left:.75rem;padding-right:.75rem}.tw-px-4{padding-left:1rem;padding-right:1rem}.tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-py-0{padding-bottom:0;padding-top:0}.tw-py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.tw-py-1{padding-bottom:.25rem;padding-top:.25rem}.tw-py-2{padding-bottom:.5rem;padding-top:.5rem}.tw-py-20{padding-bottom:5rem;padding-top:5rem}.tw-py-4{padding-bottom:1rem;padding-top:1rem}.tw-py-5{padding-bottom:1.25rem;padding-top:1.25rem}.tw-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.tw-pb-2{padding-bottom:.5rem}.tw-pb-8{padding-bottom:2rem}.tw-pl-0{padding-left:0}.tw-pl-16{padding-left:4rem}.tw-pl-2{padding-left:.5rem}.tw-pl-4{padding-left:1rem}.tw-pr-4{padding-right:1rem}.tw-pt-0{padding-top:0}.tw-pt-4{padding-top:1rem}.tw-pt-6{padding-top:1.5rem}.tw-text-center{text-align:center}.tw-text-right{text-align:right}.tw-align-middle{vertical-align:middle}.tw-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.tw-text-base{font-size:1rem;line-height:1.5rem}.tw-text-lg{font-size:1.125rem;line-height:1.75rem}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-xl{font-size:1.25rem;line-height:1.75rem}.tw-text-xs{font-size:.75rem;line-height:1rem}.tw-font-bold{font-weight:700}.tw-font-medium{font-weight:500}.tw-font-normal{font-weight:400}.tw-font-semibold{font-weight:600}.tw-uppercase{text-transform:uppercase}.tw-italic{font-style:italic}.tw-slashed-zero{--tw-slashed-zero:slashed-zero}.tw-lining-nums,.tw-slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tw-lining-nums{--tw-numeric-figure:lining-nums}.tw-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tw-leading-3{line-height:.75rem}.tw-leading-5{line-height:1.25rem}.tw-leading-6{line-height:1.5rem}.tw-leading-7{line-height:1.75rem}.tw-leading-8{line-height:2rem}.tw-leading-tight{line-height:1.25}.tw-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.tw-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.tw-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.tw-text-blue-dark{--tw-text-opacity:1;color:rgb(39 121 189/var(--tw-text-opacity))}.tw-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.tw-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.tw-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.tw-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.tw-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.tw-text-green-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.tw-text-green-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.tw-text-green-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.tw-text-green-dark{--tw-text-opacity:1;color:rgb(31 157 85/var(--tw-text-opacity))}.tw-text-grey-dark{--tw-text-opacity:1;color:rgb(135 149 161/var(--tw-text-opacity))}.tw-text-grey-darker{--tw-text-opacity:1;color:rgb(96 111 123/var(--tw-text-opacity))}.tw-text-grey-darkest{--tw-text-opacity:1;color:rgb(61 72 82/var(--tw-text-opacity))}.tw-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.tw-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.tw-text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.tw-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.tw-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.tw-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.tw-text-red-lighter{--tw-text-opacity:1;color:rgb(249 172 170/var(--tw-text-opacity))}.tw-line-through{text-decoration-line:line-through}.tw-opacity-40{opacity:.4}.tw-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.tw-shadow,.tw-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.tw-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.tw-shadow-md,.tw-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.tw-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.tw-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.tw-ring-inset{--tw-ring-inset:inset}.tw-ring-blue-700\/10{--tw-ring-color:rgba(29,78,216,.1)}.tw-ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.tw-ring-gray-500\/10{--tw-ring-color:hsla(220,9%,46%,.1)}.tw-ring-gray-800\/10{--tw-ring-color:rgba(31,41,55,.1)}.tw-ring-green-600\/20{--tw-ring-color:rgba(5,150,105,.2)}.tw-ring-pink-700\/10{--tw-ring-color:rgba(190,24,93,.1)}.tw-ring-red-600\/10{--tw-ring-color:rgba(220,38,38,.1)}.tw-ring-yellow-600\/20{--tw-ring-color:rgba(217,119,6,.2)}.\[a-f0-9\:\\\.\\-\]{a-f0-9:\.\-}.\[id\:\%d\]{id:%d}.hover\:tw-border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:tw-bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:tw-bg-grey-lighter:hover{--tw-bg-opacity:1;background-color:rgb(241 245 248/var(--tw-bg-opacity))}.hover\:tw-no-underline:hover{text-decoration-line:none}.hover\:tw-opacity-80:hover{opacity:.8}@media (min-width:640px){.sm\:tw-p-6{padding:1.5rem}.sm\:tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:tw-pl-0{padding-left:0}}@media (min-width:768px){.md\:tw-mt-0{margin-top:0}.md\:tw-inline{display:inline}.md\:tw-table-cell{display:table-cell}.md\:tw-text-left{text-align:left}.md\:tw-text-right{text-align:right}}@media (min-width:1024px){.lg\:tw-inline-block{display:inline-block}.lg\:tw-inline{display:inline}.lg\:tw-table-cell{display:table-cell}} diff --git a/public/js/ixp-manager.js b/public/js/ixp-manager.js index 2a175728c..f412e2042 100644 --- a/public/js/ixp-manager.js +++ b/public/js/ixp-manager.js @@ -250,5 +250,14 @@ function ixpWhoisPrefix( prefix, subnet = true ) { }) } +/***** Tab Panels START *****/ +$(document).on('click','.tabButton',function(e) { + $('.tabButton').removeClass('active'); + $(this).addClass('active'); + $('.tabPanel').removeClass('active'); + const target = $(this).data('target'); + $(target).addClass('active'); +}); +/***** Tab Panels END *******/ diff --git a/public/js/ixp-pack.js b/public/js/ixp-pack.js index 3bb80ba73..d20434f90 100644 --- a/public/js/ixp-pack.js +++ b/public/js/ixp-pack.js @@ -1 +1,28195 @@ -function ixpFormatFileSize(t){return"number"!=typeof t?"":t>=1073741824?(t/1073741824).toFixed(2)+" GB":t>=1048576?(t/1048576).toFixed(2)+" MB":(t/1024).toFixed(2)+" KB"}function ixpRandomString(t=12){let e="";if(void 0===window.crypto.getRandomValues)alert("No cryptographically secure PRNG available.");else{let i="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",r=new Uint32Array(t);window.crypto.getRandomValues(r);for(var n=0;n/g,">").replace(/"/g,""").replace(/'/g,""")}function ixpAsnumber(t){let e=WHOIS_ASN_URL+"/"+t,n='
';bootbox.dialog({message:'

',size:"large",title:"AS Number Lookup",onEscape:!0,buttons:{cancel:{label:"Close",callback:function(){return $(".bootbox.modal").modal("hide"),!1}}}});$.ajax(e).done(function(t){n+=t+"
",$(".bootbox-body").html(n).scrollTop()}).fail(function(){throw alert(`Error running ajax query for ${e}`),`Error running ajax query for ${e}`})}function ixpWhoisPrefix(t,e=!0){let n=t.split("/"),i=encodeURI(WHOIS_PREFIX_URL+"/"+n[0]+"/");if(e&&2!==n.length)return!1;e&&(i=encodeURI(WHOIS_PREFIX_URL+"/"+n[0]+"/"+n[1]));let r='
';bootbox.dialog({message:'

',size:"large",title:"Prefix Whois Lookup",onEscape:!0,buttons:{cancel:{label:"Close",callback:function(){return $(".bootbox.modal").modal("hide"),!1}}}});$.ajax(i).done(function(t){r+=t+"
",$(".bootbox-body").html(r).scrollTop()}).fail(function(){throw alert(`Error running ajax query for ${i}`),`Error running ajax query for ${i}`})}!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";var n=[],i=Object.getPrototypeOf,r=n.slice,s=n.flat?function(t){return n.flat.call(t)}:function(t){return n.concat.apply([],t)},o=n.push,a=n.indexOf,l={},u=l.toString,c=l.hasOwnProperty,h=c.toString,d=h.call(Object),f={},p=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},g=function(t){return null!=t&&t===t.window},m=t.document,v={type:!0,src:!0,nonce:!0,noModule:!0};function _(t,e,n){var i,r,s=(n=n||m).createElement("script");if(s.text=t,e)for(i in v)(r=e[i]||e.getAttribute&&e.getAttribute(i))&&s.setAttribute(i,r);n.head.appendChild(s).parentNode.removeChild(s)}function y(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?l[u.call(t)]||"object":typeof t}var b="3.7.1",w=/HTML$/i,x=function(t,e){return new x.fn.init(t,e)};function S(t){var e=!!t&&"length"in t&&t.length,n=y(t);return!p(t)&&!g(t)&&("array"===n||0===e||"number"==typeof e&&0+~]|"+E+")"+E+"*"),B=new RegExp(E+"|>"),z=new RegExp(L),$=new RegExp("^"+R+"$"),q={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+j),PSEUDO:new RegExp("^"+L),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),bool:new RegExp("^(?:"+N+")$","i"),needsContext:new RegExp("^"+E+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,U=/^h\d$/i,V=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/[+~]/,X=new RegExp("\\\\[\\da-fA-F]{1,6}"+E+"?|\\\\([^\\r\\n\\f])","g"),K=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},Z=function(){lt()},Q=dt(function(t){return!0===t.disabled&&D(t,"fieldset")},{dir:"parentNode",next:"legend"});try{m.apply(n=r.call(M.childNodes),M.childNodes),n[M.childNodes.length].nodeType}catch(e){m={apply:function(t,e){P.apply(t,r.call(e))},call:function(t){P.apply(t,r.call(arguments,1))}}}function J(t,e,n,i){var r,s,o,a,l,c,h,g=e&&e.ownerDocument,_=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==_&&9!==_&&11!==_)return n;if(!i&&(lt(e),e=e||u,d)){if(11!==_&&(l=V.exec(t)))if(r=l[1]){if(9===_){if(!(o=e.getElementById(r)))return n;if(o.id===r)return m.call(n,o),n}else if(g&&(o=g.getElementById(r))&&J.contains(e,o)&&o.id===r)return m.call(n,o),n}else{if(l[2])return m.apply(n,e.getElementsByTagName(t)),n;if((r=l[3])&&e.getElementsByClassName)return m.apply(n,e.getElementsByClassName(r)),n}if(!(I[t+" "]||p&&p.test(t))){if(h=t,g=e,1===_&&(B.test(t)||W.test(t))){for((g=G.test(t)&&at(e.parentNode)||e)==e&&f.scope||((a=e.getAttribute("id"))?a=x.escapeSelector(a):e.setAttribute("id",a=v)),s=(c=ct(t)).length;s--;)c[s]=(a?"#"+a:":scope")+" "+ht(c[s]);h=c.join(",")}try{return m.apply(n,g.querySelectorAll(h)),n}catch(e){I(t,!0)}finally{a===v&&e.removeAttribute("id")}}}return _t(t.replace(A,"$1"),e,n,i)}function tt(){var t=[];return function e(n,r){return t.push(n+" ")>i.cacheLength&&delete e[t.shift()],e[n+" "]=r}}function et(t){return t[v]=!0,t}function nt(t){var e=u.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return D(e,"input")&&e.type===t}}function rt(t){return function(e){return(D(e,"input")||D(e,"button"))&&e.type===t}}function st(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Q(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ot(t){return et(function(e){return e=+e,et(function(n,i){for(var r,s=t([],n.length,e),o=s.length;o--;)n[r=s[o]]&&(n[r]=!(i[r]=n[r]))})})}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var e,n=t?t.ownerDocument||t:M;return n!=u&&9===n.nodeType&&n.documentElement&&(h=(u=n).documentElement,d=!x.isXMLDoc(u),g=h.matches||h.webkitMatchesSelector||h.msMatchesSelector,h.msMatchesSelector&&M!=u&&(e=u.defaultView)&&e.top!==e&&e.addEventListener("unload",Z),f.getById=nt(function(t){return h.appendChild(t).id=x.expando,!u.getElementsByName||!u.getElementsByName(x.expando).length}),f.disconnectedMatch=nt(function(t){return g.call(t,"*")}),f.scope=nt(function(){return u.querySelectorAll(":scope")}),f.cssHas=nt(function(){try{return u.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}}),f.getById?(i.filter.ID=function(t){var e=t.replace(X,K);return function(t){return t.getAttribute("id")===e}},i.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var n=e.getElementById(t);return n?[n]:[]}}):(i.filter.ID=function(t){var e=t.replace(X,K);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},i.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var n,i,r,s=e.getElementById(t);if(s){if((n=s.getAttributeNode("id"))&&n.value===t)return[s];for(r=e.getElementsByName(t),i=0;s=r[i++];)if((n=s.getAttributeNode("id"))&&n.value===t)return[s]}return[]}}),i.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},i.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&d)return e.getElementsByClassName(t)},p=[],nt(function(t){var e;h.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||p.push("\\["+E+"*(?:value|"+N+")"),t.querySelectorAll("[id~="+v+"-]").length||p.push("~="),t.querySelectorAll("a#"+v+"+*").length||p.push(".#.+[+~]"),t.querySelectorAll(":checked").length||p.push(":checked"),(e=u.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&p.push(":enabled",":disabled"),(e=u.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||p.push("\\["+E+"*name"+E+"*="+E+"*(?:''|\"\")")}),f.cssHas||p.push(":has"),p=p.length&&new RegExp(p.join("|")),O=function(t,e){if(t===e)return l=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!f.sortDetached&&e.compareDocumentPosition(t)===n?t===u||t.ownerDocument==M&&J.contains(M,t)?-1:e===u||e.ownerDocument==M&&J.contains(M,e)?1:o?a.call(o,t)-a.call(o,e):0:4&n?-1:1)}),u}for(e in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),d&&!I[e+" "]&&(!p||!p.test(e)))try{var n=g.call(t,e);if(n||f.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){I(e,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(X,K),t[3]=(t[3]||t[4]||t[5]||"").replace(X,K),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return q.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&z.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(X,K).toLowerCase();return"*"===t?function(){return!0}:function(t){return D(t,e)}},CLASS:function(t){var e=b[t+" "];return e||(e=new RegExp("(^|"+E+")"+t+"("+E+"|$)"))&&b(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,e,n){return function(i){var r=J.attr(i,t);return null==r?"!="===e:!e||(r+="","="===e?r===n:"!="===e?r!==n:"^="===e?n&&0===r.indexOf(n):"*="===e?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function H(t,e,n){return p(e)?x.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?x.grep(t,function(t){return t===e!==n}):"string"!=typeof e?x.grep(t,function(t){return-1)[^>]*|#([\w-]+))$/;(x.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||F,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:W.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof x?e[0]:e,x.merge(this,x.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:m,!0)),L.test(i[1])&&x.isPlainObject(e))for(i in e)p(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(r=m.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):p(t)?void 0!==n.ready?n.ready(t):t(x):x.makeArray(t,this)}).prototype=x.fn,F=x(m);var B=/^(?:parents|prev(?:Until|All))/,z={children:!0,contents:!0,next:!0,prev:!0};function $(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}x.fn.extend({has:function(t){var e=x(t,this),n=e.length;return this.filter(function(){for(var t=0;t\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;yt=m.createDocumentFragment().appendChild(m.createElement("div")),(bt=m.createElement("input")).setAttribute("type","radio"),bt.setAttribute("checked","checked"),bt.setAttribute("name","t"),yt.appendChild(bt),f.checkClone=yt.cloneNode(!0).cloneNode(!0).lastChild.checked,yt.innerHTML="",f.noCloneChecked=!!yt.cloneNode(!0).lastChild.defaultValue,yt.innerHTML="",f.option=!!yt.lastChild;var Dt={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Ct(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&D(t,e)?x.merge([t],n):n}function Tt(t,e){for(var n=0,i=t.length;n",""]);var kt=/<|&#?\w+;/;function Et(t,e,n,i,r){for(var s,o,a,l,u,c,h=e.createDocumentFragment(),d=[],f=0,p=t.length;f\s*$/g;function Lt(t,e){return D(t,"table")&&D(11!==e.nodeType?e:e.firstChild,"tr")&&x(t).children("tbody")[0]||t}function Ht(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Ft(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,r,s,o,a;if(1===e.nodeType){if(rt.hasData(t)&&(a=rt.get(t).events))for(r in rt.remove(e,"handle events"),a)for(n=0,i=a[r].length;n").attr(t.scriptAttrs||{}).prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&r("error"===t.type?404:200,t.type)}),m.head.appendChild(e[0])},abort:function(){n&&n()}}});var Ze,Qe=[],Je=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Qe.pop()||x.expando+"_"+ke.guid++;return this[t]=!0,t}}),x.ajaxPrefilter("json jsonp",function(e,n,i){var r,s,o,a=!1!==e.jsonp&&(Je.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Je.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=p(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Je,"$1"+r):!1!==e.jsonp&&(e.url+=(Ee.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||x.error(r+" was not called"),o[0]},e.dataTypes[0]="json",s=t[r],t[r]=function(){o=arguments},i.always(function(){void 0===s?x(t).removeProp(r):t[r]=s,e[r]&&(e.jsonpCallback=n.jsonpCallback,Qe.push(r)),o&&p(s)&&s(o[0]),o=s=void 0}),"script"}),f.createHTMLDocument=((Ze=m.implementation.createHTMLDocument("").body).innerHTML="
",2===Ze.childNodes.length),x.parseHTML=function(t,e,n){return"string"!=typeof t?[]:("boolean"==typeof e&&(n=e,e=!1),e||(f.createHTMLDocument?((i=(e=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,e.head.appendChild(i)):e=m),s=!n&&[],(r=L.exec(t))?[e.createElement(r[1])]:(r=Et([t],e,s),s&&s.length&&x(s).remove(),x.merge([],r.childNodes)));var i,r,s},x.fn.load=function(t,e,n){var i,r,s,o=this,a=t.indexOf(" ");return-1").append(x.parseHTML(t)).find(i):t)}).always(n&&function(t,e){o.each(function(){n.apply(this,s||[t.responseText,e,t])})}),this},x.expr.pseudos.animated=function(t){return x.grep(x.timers,function(e){return t===e.elem}).length},x.offset={setOffset:function(t,e,n){var i,r,s,o,a,l,u=x.css(t,"position"),c=x(t),h={};"static"===u&&(t.style.position="relative"),a=c.offset(),s=x.css(t,"top"),l=x.css(t,"left"),("absolute"===u||"fixed"===u)&&-1<(s+l).indexOf("auto")?(o=(i=c.position()).top,r=i.left):(o=parseFloat(s)||0,r=parseFloat(l)||0),p(e)&&(e=e.call(t,n,x.extend({},a))),null!=e.top&&(h.top=e.top-a.top+o),null!=e.left&&(h.left=e.left-a.left+r),"using"in e?e.using.call(t,h):c.css(h)}},x.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){x.offset.setOffset(this,t,e)});var e,n,i=this[0];return i?i.getClientRects().length?(e=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n,i=this[0],r={top:0,left:0};if("fixed"===x.css(i,"position"))e=i.getBoundingClientRect();else{for(e=this.offset(),n=i.ownerDocument,t=i.offsetParent||n.documentElement;t&&(t===n.body||t===n.documentElement)&&"static"===x.css(t,"position");)t=t.parentNode;t&&t!==i&&1===t.nodeType&&((r=x(t).offset()).top+=x.css(t,"borderTopWidth",!0),r.left+=x.css(t,"borderLeftWidth",!0))}return{top:e.top-r.top-x.css(i,"marginTop",!0),left:e.left-r.left-x.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===x.css(t,"position");)t=t.offsetParent;return t||dt})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;x.fn[t]=function(i){return Z(this,function(t,i,r){var s;if(g(t)?s=t:9===t.nodeType&&(s=t.defaultView),void 0===r)return s?s[e]:t[i];s?s.scrollTo(n?s.pageXOffset:r,n?r:s.pageYOffset):t[i]=r},t,i,arguments.length)}}),x.each(["top","left"],function(t,e){x.cssHooks[e]=Xt(f.pixelPosition,function(t,n){if(n)return n=Gt(t,e),$t.test(n)?x(t).position()[e]+"px":n})}),x.each({Height:"height",Width:"width"},function(t,e){x.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){x.fn[i]=function(r,s){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(!0===r||!0===s?"margin":"border");return Z(this,function(e,n,r){var s;return g(e)?0===i.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(s=e.documentElement,Math.max(e.body["scroll"+t],s["scroll"+t],e.body["offset"+t],s["offset"+t],s["client"+t])):void 0===r?x.css(e,n,a):x.style(e,n,r,a)},e,o?r:void 0,o)}})}),x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){x.fn[e]=function(t){return this.on(e,t)}}),x.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)},hover:function(t,e){return this.on("mouseenter",t).on("mouseleave",e||t)}}),x.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){x.fn[e]=function(t,n){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,n){n=t(n||this.defaultElement||this)[0],this.element=t(n),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},n!==this&&(t.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===n&&this.destroy()}}),this.document=t(n.style?n.ownerDocument:n.document||n),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,n){e._removeClass(n,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,n){var i,r,s,o=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(o={},e=(i=e.split(".")).shift(),i.length){for(r=o[e]=t.widget.extend({},this.options[e]),s=0;s
"),r=i.children()[0];return t("body").append(i),e=r.offsetWidth,i.css("overflow","scroll"),e===(r=r.offsetWidth)&&(r=i[0].clientWidth),i.remove(),n=e-r},getScrollInfo:function(e){var n=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),i=e.isWindow||e.isDocument?"":e.element.css("overflow-y");n="scroll"===n||"auto"===n&&e.widthi(r(o),r(f))?p.important="horizontal":p.important="vertical",e.using.call(this,t,p)}),a.offset(t.extend(C,{using:o}))})},t.ui.position={fit:{left:function(t,e){var n=e.within,r=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=t.left-e.collisionPosition.marginLeft,a=r-o,l=o+e.collisionWidth-s-r;e.collisionWidth>s?0s?0")[0],E=_.each;function A(t){return null==t?t+"":"object"==typeof t?y[b.call(t)]||"object":typeof t}function I(t,e,n){var i=C[e.type]||{};return null==t?n||!e.def?null:e.def:(t=i.floor?~~t:parseFloat(t),isNaN(t)?e.def:i.mod?(t+i.mod)%i.mod:Math.min(i.max,Math.max(0,t)))}function O(t){var e=S(),n=e._rgba=[];return t=t.toLowerCase(),E(x,function(i,r){var s=(s=r.re.exec(t))&&r.parse(s);r=r.space||"rgba";if(s)return s=e[r](s),e[D[r].cache]=s[D[r].cache],n=e._rgba=s._rgba,!1}),n.length?("0,0,0,0"===n.join()&&_.extend(n,U.transparent),e):U[t]}function M(t,e,n){return 6*(n=(n+1)%1)<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}k.style.cssText="background-color:rgba(1,1,1,.5)",T.rgba=-1u.mod/2?a+=u.mod:a-l>u.mod/2&&(a-=u.mod)),s[i]=I((l-a)*e+a,n)))}),this[n](s)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),n=e.pop(),i=S(t)._rgba;return S(_.map(e,function(t,e){return(1-n)*i[e]+n*t}))},toRgbaString:function(){var t="rgba(",e=_.map(this._rgba,function(t,e){return null!=t?t:2
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),r={width:e.width(),height:e.height()},s=document.activeElement;try{s.id}catch(i){s=document.body}return e.wrap(i),e[0]!==s&&!t.contains(e[0],s)||t(s).trigger("focus"),i=e.parent(),"static"===e.css("position")?(i.css({position:"relative"}),e.css({position:"relative"})):(t.extend(n,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,i){n[i]=e.css(i),isNaN(parseInt(n[i],10))&&(n[i]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(r),i.css(n).show()},removeWrapper:function(e){var n=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),e[0]!==n&&!t.contains(e[0],n)||t(n).trigger("focus")),e}}),t.extend(t.effects,{version:"1.13.2",define:function(e,n,i){return i||(i=n,n="effect"),t.effects.effect[e]=i,t.effects.effect[e].mode=n,i},scaledDimensions:function(t,e,n){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var i="horizontal"!==n?(e||100)/100:1;e="vertical"!==n?(e||100)/100:1;return{height:t.height()*e,width:t.width()*i,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*i}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,n){var i=t.queue();1").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),float:e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(V+"placeholder",n)),e.css({position:i,left:r.left,top:r.top}),n},removePlaceholder:function(t){var e=V+"placeholder",n=t.data(e);n&&(n.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,n,i,r){return r=r||{},t.each(n,function(t,n){var s=e.cssUnit(n);0");u.appendTo("body").addClass(e.className).css({top:l.top-o,left:l.left-a,height:i.innerHeight(),width:i.innerWidth(),position:r?"fixed":"absolute"}).animate(s,e.duration,e.easing,function(){u.remove(),"function"==typeof n&&n()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=J(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})},z={},t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,e){z[e]=function(e){return Math.pow(e,t+2)}}),t.extend(z,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,n=4;t<((e=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(z,function(e,n){t.easing["easeIn"+e]=n,t.easing["easeOut"+e]=function(t){return 1-n(1-t)},t.easing["easeInOut"+e]=function(t){return t<.5?n(2*t)/2:1-n(-2*t+2)/2}}),k=t.effects,t.effects.define("blind","hide",function(e,n){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},r=t(this),s=e.direction||"up",o=r.cssClip(),a={clip:t.extend({},o)},l=t.effects.createPlaceholder(r);a.clip[i[s][0]]=a.clip[i[s][1]],"show"===e.mode&&(r.cssClip(a.clip),l&&l.css(t.effects.clipToBox(a)),a.clip=o),l&&l.animate(t.effects.clipToBox(a),e.duration,e.easing),r.animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:n})}),t.effects.define("bounce",function(e,n){var i,r,s=t(this),o="hide"===(h=e.mode),a="show"===h,l=e.direction||"up",u=e.distance,c=e.times||5,h=2*c+(a||o?1:0),d=e.duration/h,f=e.easing,p="up"===l||"down"===l?"top":"left",g="up"===l||"left"===l,m=0;e=s.queue().length;for(t.effects.createPlaceholder(s),l=s.css(p),u=u||s["top"==p?"outerHeight":"outerWidth"]()/3,a&&((r={opacity:1})[p]=l,s.css("opacity",0).css(p,g?2*-u:2*u).animate(r,d,f)),o&&(u/=Math.pow(2,c-1)),(r={})[p]=l;m").css({position:"absolute",visibility:"visible",left:-r*p,top:-i*g}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:g,left:s+(d?a*p:0),top:o+(d?l*g:0),opacity:d?0:1}).animate({left:s+(d?0:a*p),top:o+(d?0:l*g),opacity:d?1:0},e.duration||500,e.easing,v)}),t.effects.define("fade","toggle",function(e,n){var i="show"===e.mode;t(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:n})}),t.effects.define("fold","hide",function(e,n){var i=t(this),r="show"===(g=e.mode),s="hide"===g,o=e.size||15,a=/([0-9]+)%/.exec(o),l=e.horizFirst?["right","bottom"]:["bottom","right"],u=e.duration/2,c=t.effects.createPlaceholder(i),h=i.cssClip(),d={clip:t.extend({},h)},f={clip:t.extend({},h)},p=[h[l[0]],h[l[1]]],g=i.queue().length;a&&(o=parseInt(a[1],10)/100*p[s?0:1]),d.clip[l[0]]=o,f.clip[l[0]]=o,f.clip[l[1]]=0,r&&(i.cssClip(f.clip),c&&c.css(t.effects.clipToBox(f)),f.clip=h),i.queue(function(n){c&&c.animate(t.effects.clipToBox(d),u,e.easing).animate(t.effects.clipToBox(f),u,e.easing),n()}).animate(d,u,e.easing).animate(f,u,e.easing).queue(n),t.effects.unshift(i,g,4)}),t.effects.define("highlight","show",function(e,n){var i=t(this),r={backgroundColor:i.css("backgroundColor")};"hide"===e.mode&&(r.opacity=0),t.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:n})}),t.effects.define("size",function(e,n){var i,r=t(this),s=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=e.mode,u="effect"!==l,c=e.scale||"both",h=e.origin||["middle","center"],d=r.css("position"),f=r.position(),p=t.effects.scaledDimensions(r),g=e.from||p,m=e.to||t.effects.scaledDimensions(r,0);t.effects.createPlaceholder(r),"show"===l&&(l=g,g=m,m=l),i={from:{y:g.height/p.height,x:g.width/p.width},to:{y:m.height/p.height,x:m.width/p.width}},"box"!==c&&"both"!==c||(i.from.y!==i.to.y&&(g=t.effects.setTransition(r,o,i.from.y,g),m=t.effects.setTransition(r,o,i.to.y,m)),i.from.x!==i.to.x&&(g=t.effects.setTransition(r,a,i.from.x,g),m=t.effects.setTransition(r,a,i.to.x,m))),"content"!==c&&"both"!==c||i.from.y!==i.to.y&&(g=t.effects.setTransition(r,s,i.from.y,g),m=t.effects.setTransition(r,s,i.to.y,m)),h&&(h=t.effects.getBaseline(h,p),g.top=(p.outerHeight-g.outerHeight)*h.y+f.top,g.left=(p.outerWidth-g.outerWidth)*h.x+f.left,m.top=(p.outerHeight-m.outerHeight)*h.y+f.top,m.left=(p.outerWidth-m.outerWidth)*h.x+f.left),delete g.outerHeight,delete g.outerWidth,r.css(g),"content"!==c&&"both"!==c||(o=o.concat(["marginTop","marginBottom"]).concat(s),a=a.concat(["marginLeft","marginRight"]),r.find("*[width]").each(function(){var n=t(this),r={height:(s=t.effects.scaledDimensions(n)).height*i.from.y,width:s.width*i.from.x,outerHeight:s.outerHeight*i.from.y,outerWidth:s.outerWidth*i.from.x},s={height:s.height*i.to.y,width:s.width*i.to.x,outerHeight:s.height*i.to.y,outerWidth:s.width*i.to.x};i.from.y!==i.to.y&&(r=t.effects.setTransition(n,o,i.from.y,r),s=t.effects.setTransition(n,o,i.to.y,s)),i.from.x!==i.to.x&&(r=t.effects.setTransition(n,a,i.from.x,r),s=t.effects.setTransition(n,a,i.to.x,s)),u&&t.effects.saveStyle(n),n.css(r),n.animate(s,e.duration,e.easing,function(){u&&t.effects.restoreStyle(n)})})),r.animate(m,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=r.offset();0===m.opacity&&r.css("opacity",g.opacity),u||(r.css("position","static"===d?"relative":d).offset(e),t.effects.saveStyle(r)),n()}})}),t.effects.define("scale",function(e,n){var i=t(this),r=e.mode;r=parseInt(e.percent,10)||(0===parseInt(e.percent,10)||"effect"!==r?0:100),r=t.extend(!0,{from:t.effects.scaledDimensions(i),to:t.effects.scaledDimensions(i,r,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(r.from.opacity=1,r.to.opacity=0),t.effects.effect.size.call(this,r,n)}),t.effects.define("puff","hide",function(e,n){e=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150}),t.effects.effect.scale.call(this,e,n)}),t.effects.define("pulsate","show",function(e,n){var i=t(this),r="show"===(u=e.mode),s=2*(e.times||5)+(r||"hide"===u?1:0),o=e.duration/s,a=0,l=1,u=i.queue().length;for(!r&&i.is(":visible")||(i.css("opacity",0).show(),a=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,n=this.options.icons;n&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+n.header),e.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,n.header)._addClass(e,null,n.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var n=t.ui.keyCode,i=this.headers.length,r=this.headers.index(e.target),s=!1;switch(e.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(r+1)%i];break;case n.LEFT:case n.UP:s=this.headers[(r-1+i)%i];break;case n.SPACE:case n.ENTER:this._eventHandler(e);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[i-1]}s&&(t(e.target).attr("tabIndex",-1),t(s).attr("tabIndex",0),t(s).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,n=this.options,i=n.heightStyle,r=this.element.parent();this.active=this._findActive(n.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),n=e.uniqueId().attr("id"),i=e.next(),r=i.uniqueId().attr("id");e.attr("aria-controls",r),i.attr("aria-labelledby",n)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(n.event),"fill"===i?(e=r.height(),this.element.siblings(":visible").each(function(){var n=t(this),i=n.css("position");"absolute"!==i&&"fixed"!==i&&(e-=n.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===i&&(e=0,this.headers.next().each(function(){var n=t(this).is(":visible");n||t(this).show(),e=Math.max(e,t(this).css("height","").height()),n||t(this).hide()}).height(e))},_activate:function(e){(e=this._findActive(e)[0])!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var n={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){n[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var n=this.options,i=this.active,r=t(e.currentTarget),s=r[0]===i[0],o=s&&n.collapsible,a=o?t():r.next(),l=i.next();a={oldHeader:i,oldPanel:l,newHeader:o?t():r,newPanel:a};e.preventDefault(),s&&!n.collapsible||!1===this._trigger("beforeActivate",e,a)||(n.active=!o&&this.headers.index(r),this.active=s?t():r,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),s||(this._removeClass(r,"ui-accordion-header-collapsed")._addClass(r,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=r.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(r.next(),"ui-accordion-content-active")))},_toggle:function(e){var n=e.newPanel,i=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=i,this.options.animate?this._animate(n,i,e):(i.hide(),n.show(),this._toggleComplete(e)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):n.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),n.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,n){var i,r,s,o=this,a=0,l=t.css("box-sizing"),u=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(e){var n=t(e.target),i=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),n.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var n=this.active||this._menuItems().first();e||this.focus(t,n)},blur:function(e){this._delay(function(){t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(e){var n,i;this.previousFilter||e.clientX===this.lastMousePosition.x&&e.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:e.clientX,y:e.clientY},n=t(e.target).closest(".ui-menu-item"),i=t(e.currentTarget),n[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,i))))},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var n,i,r,s=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:n=this.previousFilter||"",r=s=!1,i=96<=e.keyCode&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),i===n?r=!0:i=n+i,n=this._filterMenuItems(i),(n=r&&-1!==n.index(this.active.next())?this.active.nextAll(".ui-menu-item"):n).length||(i=String.fromCharCode(e.keyCode),n=this._filterMenuItems(i)),n.length?(this.focus(e,n),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}s&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,n,i=this,r=this.options.icons.submenu,s=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),n=s.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),n=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);i._addClass(s,"ui-menu-icon","ui-icon "+r),n.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",n.attr("id"))}),this._addClass(n,"ui-menu","ui-widget ui-widget-content ui-front"),(e=s.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var e=t(this);i._isDivider(e)&&i._addClass(e,"ui-menu-divider","ui-widget-content")}),s=(n=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(s,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var n;"icons"===t&&(n=this.element.find(".ui-menu-icon"),this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),n=this.active.children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",n.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(n=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(n),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var n,i,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-r,i=this.activeMenu.scrollTop(),r=this.activeMenu.height(),e=e.outerHeight(),n<0?this.activeMenu.scrollTop(i+n):r",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var e,n,i,r="textarea"===(s=this.element[0].nodeName.toLowerCase()),s="input"===s;this.isMultiLine=r||!s&&this._isContentEditable(this.element),this.valueMethod=this.element[r||s?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(r){if(this.element.prop("readOnly"))n=i=e=!0;else{n=i=e=!1;var s=t.ui.keyCode;switch(r.keyCode){case s.PAGE_UP:e=!0,this._move("previousPage",r);break;case s.PAGE_DOWN:e=!0,this._move("nextPage",r);break;case s.UP:e=!0,this._keyEvent("previous",r);break;case s.DOWN:e=!0,this._keyEvent("next",r);break;case s.ENTER:this.menu.active&&(e=!0,r.preventDefault(),this.menu.select(r));break;case s.TAB:this.menu.active&&this.menu.select(r);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(r),r.preventDefault());break;default:n=!0,this._searchTimeout(r)}}},keypress:function(i){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||i.preventDefault());if(!n){var r=t.ui.keyCode;switch(i.keyCode){case r.PAGE_UP:this._move("previousPage",i);break;case r.PAGE_DOWN:this._move("nextPage",i);break;case r.UP:this._keyEvent("previous",i);break;case r.DOWN:this._keyEvent("next",i)}}},input:function(t){if(i)return i=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=t("

- For more information, see the official documentation here. + For more information, see the official documentation here.

\ No newline at end of file diff --git a/resources/views/docstore/dir/create.foil.php b/resources/views/docstore/dir/create.foil.php index 714280235..c9e9f5fd3 100644 --- a/resources/views/docstore/dir/create.foil.php +++ b/resources/views/docstore/dir/create.foil.php @@ -10,7 +10,7 @@ section( 'page-header-postamble' ) ?> diff --git a/resources/views/docstore/dir/list.foil.php b/resources/views/docstore/dir/list.foil.php index 54fbf6515..7dab87ca8 100644 --- a/resources/views/docstore/dir/list.foil.php +++ b/resources/views/docstore/dir/list.foil.php @@ -14,7 +14,7 @@ section( 'page-header-postamble' ) ?>
- + Documentation diff --git a/resources/views/docstore/log/list.foil.php b/resources/views/docstore/log/list.foil.php index 9870dc4ad..9bee0e1f3 100644 --- a/resources/views/docstore/log/list.foil.php +++ b/resources/views/docstore/log/list.foil.php @@ -12,7 +12,7 @@ section( 'page-header-postamble' ) ?> isSuperUser() ): ?> diff --git a/resources/views/docstore/welcome.foil.php b/resources/views/docstore/welcome.foil.php index 7ae5a6e4e..cbe995ce4 100644 --- a/resources/views/docstore/welcome.foil.php +++ b/resources/views/docstore/welcome.foil.php @@ -24,6 +24,6 @@

- For more information, see the official document here. + For more information, see the official document here.

\ No newline at end of file diff --git a/resources/views/infrastructure/edit-form.foil.php b/resources/views/infrastructure/edit-form.foil.php index c545f6cae..12099f860 100644 --- a/resources/views/infrastructure/edit-form.foil.php +++ b/resources/views/infrastructure/edit-form.foil.php @@ -24,7 +24,7 @@ ->placeholder( 'Choose a country' ) ->addClass( 'chzn-select' ) ->blockHelp( 'The country is shown in the IX-F Member + href="https://docs.ixpmanager.org/latest/features/ixf-export/">IX-F Member Export for the IXP. For IXPs that span more than one country, this should represent the head office / administrative location. Specific city and country information can be added to the facility / location diff --git a/resources/views/infrastructure/list-preamble.foil.php b/resources/views/infrastructure/list-preamble.foil.php index 9b2ffb219..44971da04 100644 --- a/resources/views/infrastructure/list-preamble.foil.php +++ b/resources/views/infrastructure/list-preamble.foil.php @@ -4,7 +4,7 @@
It looks like you have an IXP listed below that is either not registered with the IXP Manager community or - does not have an IX-F ID. Please see our community page + does not have an IX-F ID. Please see our community page for details on registering.
diff --git a/resources/views/interfaces/core-bundle/create/form-wizard.foil.php b/resources/views/interfaces/core-bundle/create/form-wizard.foil.php index 6afc5e969..49831835c 100644 --- a/resources/views/interfaces/core-bundle/create/form-wizard.foil.php +++ b/resources/views/interfaces/core-bundle/create/form-wizard.foil.php @@ -14,7 +14,7 @@ section( 'page-header-postamble' ) ?>
- + Documentation diff --git a/resources/views/interfaces/core-bundle/edit/edit-wizard.foil.php b/resources/views/interfaces/core-bundle/edit/edit-wizard.foil.php index d14c5667f..608ba3513 100644 --- a/resources/views/interfaces/core-bundle/edit/edit-wizard.foil.php +++ b/resources/views/interfaces/core-bundle/edit/edit-wizard.foil.php @@ -9,7 +9,7 @@ section( 'page-header-postamble' ) ?>
- + Documentation diff --git a/resources/views/interfaces/core-bundle/list.foil.php b/resources/views/interfaces/core-bundle/list.foil.php index bb97c3889..b0880104c 100644 --- a/resources/views/interfaces/core-bundle/list.foil.php +++ b/resources/views/interfaces/core-bundle/list.foil.php @@ -9,7 +9,7 @@ section( 'page-header-postamble' ) ?>
- + Documentation diff --git a/resources/views/layouts/footer-content.foil.php b/resources/views/layouts/footer-content.foil.php index 5dda39892..6393b16bb 100644 --- a/resources/views/layouts/footer-content.foil.php +++ b/resources/views/layouts/footer-content.foil.php @@ -32,7 +32,7 @@ - + diff --git a/resources/views/layouts/header-documentation.foil.php b/resources/views/layouts/header-documentation.foil.php index f7617afad..58e031ecd 100644 --- a/resources/views/layouts/header-documentation.foil.php +++ b/resources/views/layouts/header-documentation.foil.php @@ -7,6 +7,6 @@ Homepage - Documentation + Documentation
\ No newline at end of file diff --git a/resources/views/layouts/ixpv4.foil.php b/resources/views/layouts/ixpv4.foil.php index 0acf2ba66..63a9e875e 100644 --- a/resources/views/layouts/ixpv4.foil.php +++ b/resources/views/layouts/ixpv4.foil.php @@ -94,7 +94,8 @@ const MARKDOWN_URL = ""; const DATATABLE_STATE_DURATION = 0; - + +append() ?> diff --git a/resources/views/statistics/core-bundle.foil.php b/resources/views/statistics/core-bundle.foil.php index 3d17590b3..83196480e 100644 --- a/resources/views/statistics/core-bundle.foil.php +++ b/resources/views/statistics/core-bundle.foil.php @@ -145,7 +145,7 @@
Core bundle graphs shows traffic between our switches - this can between inter-switch links between switches within the same facility or between switches connecting facilities together. - More details in the documentation. + More details in the documentation.
diff --git a/resources/views/statistics/js/p2p-table.foil.php b/resources/views/statistics/js/p2p-table.foil.php new file mode 100644 index 000000000..7495fb302 --- /dev/null +++ b/resources/views/statistics/js/p2p-table.foil.php @@ -0,0 +1,74 @@ + \ No newline at end of file diff --git a/resources/views/statistics/league-table.foil.php b/resources/views/statistics/league-table.foil.php index a262d2e24..84dc3d3ee 100644 --- a/resources/views/statistics/league-table.foil.php +++ b/resources/views/statistics/league-table.foil.php @@ -144,7 +144,7 @@
No records for found for day->format('Y-m-d') ?>. This may be expected (date in future / date before records were kept / etc.). However, if you have Grapher enabled with the Mrtg backend configured, then please ensure you are - inserting + inserting traffic data into the database.
diff --git a/resources/views/statistics/location.foil.php b/resources/views/statistics/location.foil.php index 0bc99ea0a..68bc3f7f1 100644 --- a/resources/views/statistics/location.foil.php +++ b/resources/views/statistics/location.foil.php @@ -74,7 +74,7 @@ Facility graphs show traffic exchanged that originates and/or terminates in a given facility. It does not include traffic passing through facility. You can see inter-facility traffic via the Inter-Switch / PoP graphs. More details in - the documentation. + the documentation. diff --git a/resources/views/statistics/member.foil.php b/resources/views/statistics/member.foil.php index 0cc50cf76..2fbc7e284 100644 --- a/resources/views/statistics/member.foil.php +++ b/resources/views/statistics/member.foil.php @@ -61,7 +61,7 @@