diff --git a/.drone.yml b/backend/.drone.yml similarity index 100% rename from .drone.yml rename to backend/.drone.yml diff --git a/Dockerfile b/backend/Dockerfile similarity index 100% rename from Dockerfile rename to backend/Dockerfile diff --git a/backend/coverage-reports/coverage-python.xml b/backend/coverage-reports/coverage-python.xml new file mode 100644 index 0000000..f52dde1 --- /dev/null +++ b/backend/coverage-reports/coverage-python.xml @@ -0,0 +1,3598 @@ + + + + + + /home/michigg/GIT/own/lama/backend/src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docker-compose.prod.yml b/backend/docker-compose.prod.yml similarity index 100% rename from docker-compose.prod.yml rename to backend/docker-compose.prod.yml diff --git a/docker-compose.test.yml b/backend/docker-compose.test.yml similarity index 92% rename from docker-compose.test.yml rename to backend/docker-compose.test.yml index 0716eaa..9980c44 100644 --- a/docker-compose.test.yml +++ b/backend/docker-compose.test.yml @@ -20,9 +20,11 @@ services: depends_on: - ci_dblama - ci_ldap + volumes: + - ./coverage-reports:/coverage-reports ports: - 0.0.0.0:8888:80 - + ci_dblama: image: postgres:11.2-alpine networks: diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml new file mode 100644 index 0000000..0830250 --- /dev/null +++ b/backend/docker-compose.yml @@ -0,0 +1,58 @@ +# DEV SETUP! +version: "3" + +networks: + pg_db: + external: false + ldap_net: + external: false + +services: + api: + image: lama:0.1 + build: + context: docker/lama + dockerfile: Dockerfile.dev + networks: + - ldap_net + - pg_db + env_file: + - docker/lama/dev.env + volumes: + - ./src:/lama + - ./coverage-reports:/coverage-reports + depends_on: + - db + - ldap + ports: + - 0.0.0.0:8000:80 + + db: + image: postgres:11.2-alpine + networks: + - pg_db + volumes: + - ./db/pgdata/:/var/lib/postgresql/data/ + env_file: + - docker/lama/dev.env + + ldap: + image: docker.clkl.de/ldap/ldap:0.3-lama + build: + context: docker/ldap + dockerfile: Dockerfile.ldap + env_file: docker/ldap/ldap.env + networks: + - ldap_net + + ldap_admin: + image: docker.clkl.de/ldap/admin:0.1-lama + build: + context: docker/ldap + dockerfile: Dockerfile.admin + networks: + - ldap_net + depends_on: + - ldap + ports: + - 0.0.0.0:8888:80 diff --git a/docker/lama/Dockerfile b/backend/docker/lama/Dockerfile similarity index 100% rename from docker/lama/Dockerfile rename to backend/docker/lama/Dockerfile diff --git a/docker/lama/Dockerfile.dev b/backend/docker/lama/Dockerfile.dev similarity index 71% rename from docker/lama/Dockerfile.dev rename to backend/docker/lama/Dockerfile.dev index 092fafe..9522b2f 100644 --- a/docker/lama/Dockerfile.dev +++ b/backend/docker/lama/Dockerfile.dev @@ -7,5 +7,7 @@ WORKDIR /lama EXPOSE 80 COPY entrypoint.sh / -CMD ["python3", "manage.py", "runserver", "0.0.0.0:80"] -#CMD ["/entrypoint.sh"] +RUN chmod +x /entrypoint.sh + +#CMD ["python3", "manage.py", "runserver", "0.0.0.0:80"] +CMD ["/entrypoint.sh"] diff --git a/docker/lama/Dockerfile.test b/backend/docker/lama/Dockerfile.test similarity index 63% rename from docker/lama/Dockerfile.test rename to backend/docker/lama/Dockerfile.test index c199bdf..2fb3924 100644 --- a/docker/lama/Dockerfile.test +++ b/backend/docker/lama/Dockerfile.test @@ -2,11 +2,13 @@ FROM alpine:3.9 ADD ["docker/lama/requirements.txt", "/requirements.txt"] RUN apk upgrade --update && \ apk add --update python3 build-base openldap-dev python3-dev py3-psycopg2 && \ - pip3 install -r /requirements.txt && rm /requirements.txt + pip3 install -r /requirements.txt && rm /requirements.txt && \ + pip3 install coverage WORKDIR /lama EXPOSE 80 #ENTRYPOINT ["python3", "manage.py"] ADD ["./src", "/lama"] -ADD ["./docker/lama/entrypoint.sh", "/lama/entrypoint.sh"] +ADD ["./docker/lama/entrypoint.test.sh", "/lama/entrypoint.sh"] +RUN chmod +x /lama/entrypoint.sh CMD ["python3", "manage.py", "runserver", "0.0.0.0:80"] diff --git a/docker/lama/dev.env b/backend/docker/lama/dev.env similarity index 97% rename from docker/lama/dev.env rename to backend/docker/lama/dev.env index d91d21c..cf7ef8a 100644 --- a/docker/lama/dev.env +++ b/backend/docker/lama/dev.env @@ -6,7 +6,7 @@ SITE_NAME=LAMa SECRET_KEY=supersecret ALLOWED_HOSTS=localhost -DATABASE_HOST=dblama +DATABASE_HOST=db DATABASE_PORT=5432 POSTGRES_USER=lama diff --git a/backend/docker/lama/entrypoint.sh b/backend/docker/lama/entrypoint.sh new file mode 100644 index 0000000..2d06619 --- /dev/null +++ b/backend/docker/lama/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh +echo "-------- make migrations --------" +python3 /lama/manage.py makemigrations account_helper +echo "-------- migrate --------" +python3 /lama/manage.py migrate +echo "-------- generate test data --------" +python3 /lama/manage.py generate_test_data +echo "-------- start server --------" +python3 /lama/manage.py runserver 0.0.0.0:80 diff --git a/docker/lama/entrypoint.sh b/backend/docker/lama/entrypoint.test.sh old mode 100755 new mode 100644 similarity index 61% rename from docker/lama/entrypoint.sh rename to backend/docker/lama/entrypoint.test.sh index c7c51ad..3e75db2 --- a/docker/lama/entrypoint.sh +++ b/backend/docker/lama/entrypoint.test.sh @@ -4,4 +4,6 @@ python3 /lama/manage.py makemigrations account_helper echo "-------- migrate --------" python3 /lama/manage.py migrate echo "-------- start test --------" -python3 /lama/manage.py test +coverage run /lama/manage.py test +echo "-------- write test report --------" +coverage xml -i -o /coverage-reports/coverage.xml diff --git a/docker/lama/production.env b/backend/docker/lama/production.env similarity index 100% rename from docker/lama/production.env rename to backend/docker/lama/production.env diff --git a/backend/docker/lama/requirements.txt b/backend/docker/lama/requirements.txt new file mode 100644 index 0000000..aaed44e --- /dev/null +++ b/backend/docker/lama/requirements.txt @@ -0,0 +1,10 @@ +Django==3.0.3 +django-auth-ldap==2.1.0 +django-ldapdb==1.4.0 +Jinja2==2.10.3 +djangorestframework==3.11.0 +djangorestframework-simplejwt==4.4.0 +django-cors-headers==3.2.1 +PyYAML==5.3.1 +uritemplate==3.0.1 +drf-yasg==1.17.1 diff --git a/docker/lama/test.env b/backend/docker/lama/test.env similarity index 100% rename from docker/lama/test.env rename to backend/docker/lama/test.env diff --git a/docker/ldap/Dockerfile.admin b/backend/docker/ldap/Dockerfile.admin similarity index 100% rename from docker/ldap/Dockerfile.admin rename to backend/docker/ldap/Dockerfile.admin diff --git a/docker/ldap/Dockerfile.ldap b/backend/docker/ldap/Dockerfile.ldap similarity index 80% rename from docker/ldap/Dockerfile.ldap rename to backend/docker/ldap/Dockerfile.ldap index 833b5f6..6164158 100644 --- a/docker/ldap/Dockerfile.ldap +++ b/backend/docker/ldap/Dockerfile.ldap @@ -1,13 +1,15 @@ -FROM alpine:3.9 +FROM alpine:3.11 + +ENV LDAP_PACKAGE_NAME OPENLDAP_REL_ENG_2_4_49 RUN apk add --upgrade --no-cache build-base groff libtool openldap openssl-dev cyrus-sasl-dev util-linux-dev WORKDIR /openldap -RUN wget https://github.com/openldap/openldap/archive/OPENLDAP_REL_ENG_2_4_47.zip\ - && unzip -d /openldap OPENLDAP_REL_ENG_2_4_47.zip\ - && rm OPENLDAP_REL_ENG_2_4_47.zip\ - && mv openldap-OPENLDAP_REL_ENG_2_4_47/* .\ - && rm -r openldap-OPENLDAP_REL_ENG_2_4_47/ +RUN wget https://github.com/openldap/openldap/archive/${LDAP_PACKAGE_NAME}.zip \ + && unzip -d /openldap ${LDAP_PACKAGE_NAME}.zip\ + && rm ${LDAP_PACKAGE_NAME}.zip\ + && mv openldap-${LDAP_PACKAGE_NAME}/* .\ + && rm -r openldap-${LDAP_PACKAGE_NAME}/ RUN ./configure --prefix=/usr \ --sysconfdir=/etc \ @@ -37,7 +39,7 @@ RUN make depend \ && make \ && make prefix=/usr libexec=/usr/lib -C contrib/slapd-modules/lastbind \ && make install \ - && make prefix=/usr libexec=/usr/lib -C contrib/slapd-modules/lastbind install + && make prefix=/usr libexec=/usr/lib -C contrib/slapd-modules/lastbind install #RUN adduser ldap -D @@ -61,6 +63,7 @@ RUN sed -i s/dc:\ $dc/dc:\ $dcr/g /etc/openldap/start.ldif ADD slapd.conf /etc/openldap/slapd.conf RUN chown ldap:ldap -R /etc/openldap RUN chown ldap:ldap -R /var/lib/openldap +RUN chmod +x /entrypoint.sh EXPOSE 389 diff --git a/docker/ldap/admin/Dockerfile b/backend/docker/ldap/admin/Dockerfile similarity index 100% rename from docker/ldap/admin/Dockerfile rename to backend/docker/ldap/admin/Dockerfile diff --git a/docker/ldap/admin/httpd.conf b/backend/docker/ldap/admin/httpd.conf similarity index 100% rename from docker/ldap/admin/httpd.conf rename to backend/docker/ldap/admin/httpd.conf diff --git a/docker/ldap/admin/phpldapadmin_conf.php b/backend/docker/ldap/admin/phpldapadmin_conf.php similarity index 100% rename from docker/ldap/admin/phpldapadmin_conf.php rename to backend/docker/ldap/admin/phpldapadmin_conf.php diff --git a/docker/ldap/docker-compose.yml b/backend/docker/ldap/docker-compose.yml similarity index 100% rename from docker/ldap/docker-compose.yml rename to backend/docker/ldap/docker-compose.yml diff --git a/docker/ldap/entrypoint.sh b/backend/docker/ldap/entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from docker/ldap/entrypoint.sh rename to backend/docker/ldap/entrypoint.sh diff --git a/docker/ldap/ldap.env b/backend/docker/ldap/ldap.env similarity index 100% rename from docker/ldap/ldap.env rename to backend/docker/ldap/ldap.env diff --git a/docker/ldap/slapd.conf b/backend/docker/ldap/slapd.conf similarity index 100% rename from docker/ldap/slapd.conf rename to backend/docker/ldap/slapd.conf diff --git a/docker/ldap/start.ldif b/backend/docker/ldap/start.ldif similarity index 100% rename from docker/ldap/start.ldif rename to backend/docker/ldap/start.ldif diff --git a/docker/traefik/traefik.toml b/backend/docker/traefik/traefik.toml similarity index 100% rename from docker/traefik/traefik.toml rename to backend/docker/traefik/traefik.toml diff --git a/example.env b/backend/example.env similarity index 100% rename from example.env rename to backend/example.env diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..ad098db --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,10 @@ +Django==3.0.3 +python-ldap==3.2.0 +django-auth-ldap==2.1.0 +django-ldapdb==1.4.0 +Jinja2==2.10.3 +djangorestframework==3.11.0 +django-cors-headers==3.2.1 +PyYAML==5.3.1 +uritemplate==3.0.1 +drf-yasg==1.17.1 diff --git a/src/__init__.py b/backend/src/__init__.py similarity index 100% rename from src/__init__.py rename to backend/src/__init__.py diff --git a/src/account_helper/__init__.py b/backend/src/account_helper/__init__.py similarity index 100% rename from src/account_helper/__init__.py rename to backend/src/account_helper/__init__.py diff --git a/src/account_helper/admin.py b/backend/src/account_helper/admin.py similarity index 100% rename from src/account_helper/admin.py rename to backend/src/account_helper/admin.py diff --git a/src/account_helper/apps.py b/backend/src/account_helper/apps.py similarity index 100% rename from src/account_helper/apps.py rename to backend/src/account_helper/apps.py diff --git a/src/account_helper/management/__init__.py b/backend/src/account_helper/management/__init__.py similarity index 100% rename from src/account_helper/management/__init__.py rename to backend/src/account_helper/management/__init__.py diff --git a/src/account_helper/management/commands/__init__.py b/backend/src/account_helper/management/commands/__init__.py similarity index 100% rename from src/account_helper/management/commands/__init__.py rename to backend/src/account_helper/management/commands/__init__.py diff --git a/src/account_helper/management/commands/deletable.py b/backend/src/account_helper/management/commands/deletable.py similarity index 98% rename from src/account_helper/management/commands/deletable.py rename to backend/src/account_helper/management/commands/deletable.py index 8530f5f..20c9ec4 100644 --- a/src/account_helper/management/commands/deletable.py +++ b/backend/src/account_helper/management/commands/deletable.py @@ -47,7 +47,7 @@ def handle(self, *args, **options): LdapUser.base_dn = LdapUser.ROOT_DN ldap_user = LdapUser.objects.get(dn=deletable.ldap_dn) ldap_user.delete_complete() - except ObjectDoesNotExist as err: + except ObjectDoesNotExist: self.stdout.write(self.style.ERROR(f"User with the username {options['fduser']} not found.")) return elif not options['all'] and not options['fduser']: diff --git a/backend/src/account_helper/management/commands/generate_test_data.py b/backend/src/account_helper/management/commands/generate_test_data.py new file mode 100644 index 0000000..7c6e577 --- /dev/null +++ b/backend/src/account_helper/management/commands/generate_test_data.py @@ -0,0 +1,36 @@ +from django.contrib.auth.models import User, Permission +from django.core.management.base import BaseCommand + +from account_helper.models import Realm +from account_manager.models import LdapGroup, LdapUser + + +class Command(BaseCommand): + help = 'Generate test data' + + def handle(self, *args, **options): + try: + admin = User.objects.create_superuser(username="admin", email="admin@admin.de", password="2malDrei") + admin.is_superuser = True + admin.is_active = True + admin.is_staff = True + admin.is_admin = True + admin.save() + except Exception: + admin = User.objects.get(username="admin") + + wiai = Realm.objects.create(name="WIAI", ldap_base_dn="ou=wiai,ou=fachschaften,dc=test,dc=de", + email="test@root.de") + Realm.objects.create(name="SOWI", ldap_base_dn="ou=sowi,ou=fachschaften,dc=test,dc=de") + Realm.objects.create(name="HUWI", ldap_base_dn="ou=huwi,ou=fachschaften,dc=test,dc=de") + + ldap_user, user = LdapUser.create_with_django_user(realm=wiai, + username="test", + email="test@test.de", + password="2malDrei") + ldap_group = LdapGroup.full_create(wiai, name="TestGroup", members=[ldap_user.dn]) + django_group = ldap_group.get_django_group() + + permission = Permission.objects.get(codename="add_deleteduser") + django_group.permissions.add(permission) + django_group.save() diff --git a/src/account_helper/models.py b/backend/src/account_helper/models.py similarity index 52% rename from src/account_helper/models.py rename to backend/src/account_helper/models.py index 29a87c3..b37faf3 100644 --- a/src/account_helper/models.py +++ b/backend/src/account_helper/models.py @@ -1,16 +1,38 @@ +from django.conf import settings from django.contrib.auth.models import Group, User from django.db import models from django.utils import timezone -from django.conf import settings - # Create your models here. +from account_helper.validators import validate_ldap_base_dn + + class Realm(models.Model): name = models.CharField(max_length=200, unique=True) email = models.CharField(max_length=200) admin_group = models.ForeignKey(Group, models.PROTECT, blank=True, null=True, related_name='admin_groups') default_group = models.ForeignKey(Group, models.PROTECT, blank=True, null=True, related_name='default_groups') - ldap_base_dn = models.CharField(max_length=400, unique=True) + ldap_base_dn = models.CharField(max_length=400, unique=True, validators=[validate_ldap_base_dn]) + + def delete(self, using=None, keep_parents=False): + from account_manager.models import LdapUser + from account_manager.models import LdapGroup + from _ldap import LDAPError + try: + ldap_users = LdapUser.get_users(self) + ldap_usernames = [user.username for user in ldap_users] + ldap_groups = LdapGroup.get_groups(self) + ldap_groupnames = [group.name for group in ldap_groups] + django_user = User.objects.filter(username__contains=ldap_usernames) + django_groups = Group.objects.filter(name__contains=ldap_groupnames) + django_user.delete() + django_groups.delete() + ldap_users.delete() + ldap_groups.delete() + except LDAPError: + # TODO: Save delete + pass + return super().delete(using, keep_parents) def __str__(self): return f'{self.name} - {self.ldap_base_dn}' diff --git a/backend/src/account_helper/validators.py b/backend/src/account_helper/validators.py new file mode 100644 index 0000000..053fd2c --- /dev/null +++ b/backend/src/account_helper/validators.py @@ -0,0 +1,8 @@ +import logging + +logger = logging.getLogger(__name__) + + +def validate_ldap_base_dn(ldap_base_dn): + from account_manager.models import LdapUser + LdapUser.creation_test(ldap_base_dn) diff --git a/src/account_manager/__init__.py b/backend/src/account_manager/__init__.py similarity index 100% rename from src/account_manager/__init__.py rename to backend/src/account_manager/__init__.py diff --git a/src/account_manager/admin.py b/backend/src/account_manager/admin.py similarity index 100% rename from src/account_manager/admin.py rename to backend/src/account_manager/admin.py diff --git a/src/account_manager/tests/__init__.py b/backend/src/account_manager/api/__init__.py similarity index 100% rename from src/account_manager/tests/__init__.py rename to backend/src/account_manager/api/__init__.py diff --git a/src/account_manager/tests/realm/__init__.py b/backend/src/account_manager/api/v1/__init__.py similarity index 100% rename from src/account_manager/tests/realm/__init__.py rename to backend/src/account_manager/api/v1/__init__.py diff --git a/src/account_manager/tests/realm_users/__init__.py b/backend/src/account_manager/api/v1/authentication/__init__.py similarity index 100% rename from src/account_manager/tests/realm_users/__init__.py rename to backend/src/account_manager/api/v1/authentication/__init__.py diff --git a/backend/src/account_manager/api/v1/authentication/serializers.py b/backend/src/account_manager/api/v1/authentication/serializers.py new file mode 100644 index 0000000..fbed1c8 --- /dev/null +++ b/backend/src/account_manager/api/v1/authentication/serializers.py @@ -0,0 +1,36 @@ +from django.contrib.auth.models import User, Permission +from rest_framework_simplejwt.serializers import TokenObtainPairSerializer + +import logging + +logger = logging.getLogger(__name__) + + +class LamaTokenObtainPairSerializer(TokenObtainPairSerializer): + + @classmethod + def get_token(cls, user: User): + token = super().get_token(user) + + if user.is_superuser: + permissions = Permission.objects.all() + else: + permissions = user.user_permissions.all() | Permission.objects.filter(group__user=user) + perm_tuple = [LamaTokenObtainPairSerializer._get_casl_dict(x.codename, x.name) for x in permissions] + + logger.error(Permission.objects.all()) + logger.error(user.user_permissions.all()) + # Add custom claims + token['user'] = {'username': user.username, 'email': user.email, 'rules': perm_tuple} + # ... + + return token + + @staticmethod + def _get_casl_dict(codename: str, description: str): + splitted_codename = codename.split('_') + subject = splitted_codename[-1] + subject = subject.capitalize() + action = "_".join(splitted_codename[0:-2]) if len(splitted_codename) > 2 else splitted_codename[0] + + return {'action': action, 'subject': subject, 'description': description} diff --git a/backend/src/account_manager/api/v1/authentication/views.py b/backend/src/account_manager/api/v1/authentication/views.py new file mode 100644 index 0000000..b9cbbc9 --- /dev/null +++ b/backend/src/account_manager/api/v1/authentication/views.py @@ -0,0 +1,6 @@ +from .serializers import LamaTokenObtainPairSerializer +from rest_framework_simplejwt.views import TokenObtainPairView + + +class LamaTokenObtainPairView(TokenObtainPairView): + serializer_class = LamaTokenObtainPairSerializer diff --git a/src/account_manager/tests/utils/__init__.py b/backend/src/account_manager/api/v1/group/__init__.py similarity index 100% rename from src/account_manager/tests/utils/__init__.py rename to backend/src/account_manager/api/v1/group/__init__.py diff --git a/backend/src/account_manager/api/v1/group/serializers.py b/backend/src/account_manager/api/v1/group/serializers.py new file mode 100644 index 0000000..3df8b2d --- /dev/null +++ b/backend/src/account_manager/api/v1/group/serializers.py @@ -0,0 +1,25 @@ +from rest_framework import serializers +from rest_framework.exceptions import ValidationError +from rest_framework.serializers import raise_errors_on_nested_writes + +from account_helper.models import Realm +from account_manager.models import LdapGroup + + +class LdapGroupSerializer(serializers.ModelSerializer): + class Meta: + model = LdapGroup + fields = ('dn', 'name', 'description', 'members') + read_only_fields = ('dn',) + extra_kwargs = {'description': {'required': False}} + + def create(self, validated_data): + realm_id = self.context["view"].kwargs.get("realm_id") + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + return LdapGroup.full_create(realms.first(), **validated_data) + + def update(self, instance, validated_data): + raise_errors_on_nested_writes('update', self, validated_data) + return instance.full_update(instance, **validated_data) diff --git a/backend/src/account_manager/api/v1/group/views.py b/backend/src/account_manager/api/v1/group/views.py new file mode 100644 index 0000000..c9226ed --- /dev/null +++ b/backend/src/account_manager/api/v1/group/views.py @@ -0,0 +1,64 @@ +from django.contrib.auth.models import Group +from rest_framework import generics +from rest_framework.exceptions import ValidationError + +from account_helper.models import Realm +from account_manager.api.v1.group.serializers import LdapGroupSerializer +from account_manager.models import LdapGroup +import logging + +logger = logging.getLogger(__name__) + + +class RealmGroupsApi(generics.ListCreateAPIView): + serializer_class = LdapGroupSerializer + + # TODO: Extract MIXIN + def get_realm(self): + realm_id = self.kwargs.get('realm_id') + if not realm_id: + raise ValidationError("Realm Id is required") + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + return realms[0] + + def get_queryset(self): + realm = self.get_realm() + ldap_groups = LdapGroup.get_groups(realm=realm) + return ldap_groups + + +class RealmGroupApi(generics.RetrieveUpdateDestroyAPIView): + serializer_class = LdapGroupSerializer + lookup_field = 'dn' + lookup_url_kwarg = 'group_dn' + + def get_group(self, realm): + group_dn = self.kwargs.get('group_dn') + ldap_group = LdapGroup.get_group(group_dn=group_dn, realm=realm) + if not ldap_group: + raise ValidationError("Could not retrieve group") + return ldap_group + + def get_realm(self): + realm_id = self.kwargs.get('realm_id') + if not realm_id: + raise ValidationError("Realm Id is required") + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + return realms[0] + + def get_object(self): + return self.get_queryset() + + def get_queryset(self): + realm = self.get_realm() + ldap_group = self.get_group(realm) + logger.error(ldap_group) + return ldap_group + + def perform_destroy(self, instance): + realm = self.get_realm() + instance.full_delete(realm) diff --git a/backend/src/account_manager/api/v1/permissions.py b/backend/src/account_manager/api/v1/permissions.py new file mode 100644 index 0000000..79f4406 --- /dev/null +++ b/backend/src/account_manager/api/v1/permissions.py @@ -0,0 +1,39 @@ +from rest_framework import permissions + +from account_helper.models import Realm + + +class RealmAdminPermission(permissions.BasePermission): + message = 'Realm Admin permissions required' + + def has_permission(self, request, view): + realm_id = view.kwargs.get('realm_id', None) + if realm_id: + return request.user.is_superuser or len( + Realm.objects.filter(id=realm_id).filter( + admin_group__user__username__contains=request.user.username)) > 0 + else: + return request.user.is_superuser or len( + Realm.objects.filter(admin_group__user__username__contains=request.user.username)) > 0 + + +class ManageGroupPermission(permissions.BasePermission): + message = 'Die angefragte Gruppe gehört einem anderen Bereich an. ' \ + 'Gruppen können nur von dem Bereich bearbeitet werden, in dem sie erstellt wurden.' + + def has_permission(self, request, view): + realm_id = view.kwargs.get('realm_id', None) + group_dn = view.kwargs.get('group_dn', None) + + return not (realm_id and group_dn and Realm.objects.get(id=realm_id).ldap_base_dn not in group_dn) + + +class ManageUserPermission(permissions.BasePermission): + message = 'Der angefragte Nutzer gehört einem anderen Bereich an. ' \ + 'Nutzer können nur von dem Bereich bearbeitet werden, in dem sie erstellt wurden.' + + def has_permission(self, request, view): + realm_id = view.kwargs.get('realm_id', None) + user_dn = view.kwargs.get('user_dn', None) + + return not (realm_id and user_dn and Realm.objects.get(id=realm_id).ldap_base_dn not in user_dn) diff --git a/src/account_manager/utils/__init__.py b/backend/src/account_manager/api/v1/realm/__init__.py similarity index 100% rename from src/account_manager/utils/__init__.py rename to backend/src/account_manager/api/v1/realm/__init__.py diff --git a/backend/src/account_manager/api/v1/realm/serializers.py b/backend/src/account_manager/api/v1/realm/serializers.py new file mode 100644 index 0000000..0e975a4 --- /dev/null +++ b/backend/src/account_manager/api/v1/realm/serializers.py @@ -0,0 +1,95 @@ +import logging + +from django.contrib.auth.models import Group +from rest_framework import serializers + +from account_helper.models import Realm +from account_manager.models import LdapGroup + +logger = logging.getLogger(__name__) + + +class GroupSerializer(serializers.ModelSerializer): + class Meta: + model = Group + fields = ("id", "name", "permissions") + read_only_fields = ("id", "permissions") + extra_kwargs = { + 'name': {'validators': []}, + } + + +class RealmSerializer(serializers.ModelSerializer): + admin_group = GroupSerializer(read_only=True) + default_group = GroupSerializer(read_only=True) + + class Meta: + model = Realm + fields = "__all__" + read_only_fields = ("id", "name", "email", "ldap_base_dn", "admin_group", "default_group") + + +class RealmUpdateSerializer(serializers.ModelSerializer): + admin_group = GroupSerializer(default=None, allow_null=True, required=False) + default_group = GroupSerializer(default=None, allow_null=True, required=False) + + class Meta: + model = Realm + fields = ("id", "name", "email", "ldap_base_dn", "admin_group", "default_group") + + def validate_default_group(self, value): + realm_id = self.context["view"].kwargs.get("realm_id") + realm = Realm.objects.get(id=realm_id) + if value and not LdapGroup.group_exists(group_name=value['name'], realm=realm): + raise serializers.ValidationError("LDAP Group with default group name not found") + return value + + def validate_admin_group(self, value): + realm_id = self.context["view"].kwargs.get("realm_id") + realm = Realm.objects.get(id=realm_id) + if value and not LdapGroup.group_exists(group_name=value['name'], realm=realm): + raise serializers.ValidationError("LDAP Group with admin group name not found") + return value + + def get_django_group(self, realm: Realm, group_name: str) -> Group: + ldap_default_group = LdapGroup.get_group(group_name=group_name, realm=realm) + return ldap_default_group.get_django_group() + + def update(self, instance, validated_data): + # Required because ldapdb did not provide save method + realm_id = self.context["view"].kwargs.get("realm_id") + realm = Realm.objects.get(id=realm_id) + + admin_group = validated_data.get("admin_group") + default_group = validated_data.get("default_group") + + admin_group_name = admin_group['name'] if admin_group else None + default_group_name = default_group['name'] if admin_group else None + + instance.admin_group = self.get_django_group(realm=realm, + group_name=admin_group_name) if admin_group_name else instance.admin_group + instance.default_group = self.get_django_group(realm=realm, + group_name=default_group_name) if default_group_name else instance.default_group + + instance.name = validated_data.get('name', instance.name) + instance.email = validated_data.get('email', instance.email) + instance.ldap_base_dn = validated_data.get('ldap_base_dn', instance.ldap_base_dn) + instance.save() + return instance + + +class RealmCreateSerializer(serializers.ModelSerializer): + class Meta: + model = Realm + fields = ("id", "name", "ldap_base_dn") + read_only_fields = ("id",) + + +class ExtendedRealmSerializer(serializers.ModelSerializer): + realm = RealmUpdateSerializer(read_only=True) + user_count = serializers.IntegerField(read_only=True) + group_count = serializers.IntegerField(read_only=True) + + class Meta: + model = Realm + fields = ("realm", "user_count", "group_count") diff --git a/backend/src/account_manager/api/v1/realm/views.py b/backend/src/account_manager/api/v1/realm/views.py new file mode 100644 index 0000000..fd5766a --- /dev/null +++ b/backend/src/account_manager/api/v1/realm/views.py @@ -0,0 +1,77 @@ +import logging +from smtplib import SMTPAuthenticationError, SMTPConnectError, SMTPException +from socket import timeout + +from rest_framework import generics, status +from rest_framework.exceptions import ValidationError +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from account_helper.models import Realm +from account_manager.api.v1.permissions import RealmAdminPermission +from account_manager.utils.mail_utils import realm_send_mail +from account_manager.utils.main_views import get_group_user_count_wrapper +from .serializers import ExtendedRealmSerializer, RealmUpdateSerializer, RealmCreateSerializer + +logger = logging.getLogger(__name__) + + +class RealmsApi(generics.ListCreateAPIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + serializer_class = ExtendedRealmSerializer + + def get_serializer_class(self): + if self.request.method == 'GET': + return ExtendedRealmSerializer + if self.request.method == 'POST': + return RealmCreateSerializer + return ExtendedRealmSerializer + + def get_queryset(self): + django_user = self.request.user + if django_user.is_superuser: + realms = Realm.objects.order_by('name').all() + else: + realms = Realm.objects.filter(admin_group__user__username__contains=django_user.username).order_by('name') + if realms: + return [get_group_user_count_wrapper(realm) for realm in realms] + return realms + + def create(self, request, *args, **kwargs): + if not request.user.is_superuser: + raise ValidationError("Realm creation requires super user privileges") + return super().create(request, args, kwargs) + + +class RealmApi(generics.RetrieveUpdateDestroyAPIView): + permission_classes = [IsAuthenticated] + queryset = Realm.objects.all() + lookup_field = "id" + lookup_url_kwarg = "realm_id" + serializer_class = RealmUpdateSerializer + + +class MailTestingApi(APIView): + def post(self, request): + realm_id = self.kwargs.get('realm_id') + realm = Realm.objects.get(id=realm_id) + test_msg = f'Du hast die Mail Konfiguration für {realm.name} erfolgreich abgeschlossen.' + success_msg = 'Test erfolgreich' + error_msg_auth = f'Mail konnte nicht versendet werden, Anmeldedaten inkorrekt.' + error_msg_connect = f'Mail konnte nicht versendet werden. Verbindungsaufbau abgelehnt. ' \ + f'Bitte überprüfen sie die Server Addresse und den Port' + error_msg_timeout = f'Mail konnte nicht versendet werden. Zeitüberschreitung beim Verbindungsaufbau. ' \ + f'Bitte überprüfen sie die Server Addresse und den Port' + error_msg_smtp = f'Mail konnte nicht versendet werden. Bitte kontaktieren sie den Administrator' + try: + realm_send_mail(realm, realm.email, f'{realm.name} Test Mail', test_msg) + except SMTPAuthenticationError: + return Response({'msg': error_msg_auth}, status=status.HTTP_401_UNAUTHORIZED) + except SMTPConnectError: + return Response({'msg': error_msg_connect}, status=status.HTTP_503_SERVICE_UNAVAILABLE) + except timeout: + return Response({'msg': error_msg_timeout}, status=status.HTTP_504_GATEWAY_TIMEOUT) + except SMTPException: + return Response({'msg': error_msg_smtp}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return Response({'msg': success_msg}, status=status.HTTP_201_CREATED) diff --git a/src/account_manager/views/__init__.py b/backend/src/account_manager/api/v1/super_admin/__init__.py similarity index 100% rename from src/account_manager/views/__init__.py rename to backend/src/account_manager/api/v1/super_admin/__init__.py diff --git a/backend/src/account_manager/api/v1/super_admin/serializers.py b/backend/src/account_manager/api/v1/super_admin/serializers.py new file mode 100644 index 0000000..1799771 --- /dev/null +++ b/backend/src/account_manager/api/v1/super_admin/serializers.py @@ -0,0 +1,18 @@ +from django.contrib.auth.models import User +from rest_framework import serializers + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ( + 'id', 'last_login', 'is_superuser', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', + 'date_joined', 'groups', 'user_permissions') + read_only_fields = ( + 'id', 'last_login', 'username', 'first_name', 'last_name', 'email', 'is_active', + 'date_joined', 'groups', 'user_permissions') + + +class MailSerializer(serializers.Serializer): + subject = serializers.CharField() + template = serializers.CharField(max_length=32000) diff --git a/backend/src/account_manager/api/v1/super_admin/views.py b/backend/src/account_manager/api/v1/super_admin/views.py new file mode 100644 index 0000000..5aa174c --- /dev/null +++ b/backend/src/account_manager/api/v1/super_admin/views.py @@ -0,0 +1,66 @@ +import logging + +from django.contrib.auth.models import User +from rest_framework import generics +from rest_framework import permissions +from rest_framework.mixins import UpdateModelMixin +from rest_framework.response import Response +from rest_framework.views import APIView + +from account_manager.api.v1.super_admin.serializers import UserSerializer, MailSerializer +from account_manager.utils.mail_utils import WelcomeMailTemplateController, DeletionMailTemplateController + +logger = logging.getLogger(__name__) + + +class SuperAdminUsersApi(generics.ListAPIView): + permission_classes = [permissions.IsAdminUser] + serializer_class = UserSerializer + queryset = User.objects.all().order_by('username') + + +class SuperAdminUserApi(generics.RetrieveUpdateAPIView): + permission_classes = [permissions.IsAdminUser] + serializer_class = UserSerializer + queryset = User.objects.all() + lookup_url_kwarg = 'id' + lookup_field = 'id' + + +class WelcomeMail(generics.RetrieveUpdateAPIView): + serializer_class = MailSerializer + + def retrieve(self, request, *args, **kwargs): + welcome_mail = WelcomeMailTemplateController() + template = welcome_mail.get_template() + # TODO: implement subject + subject = "Test" + data = {'subject': subject, 'template': template} + serializer = self.get_serializer(data) + return Response(serializer.data) + + def update(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + welcome_mail = WelcomeMailTemplateController() + welcome_mail.save_template(serializer.data.get('template')) + return Response(serializer.data) + + +class DeletionMail(generics.RetrieveUpdateAPIView): + serializer_class = MailSerializer + + def retrieve(self, request, *args, **kwargs): + deletion_mail = DeletionMailTemplateController() + template = deletion_mail.get_template() + subject = "Test" + data = {'subject': subject, 'template': template} + serializer = self.get_serializer(data) + return Response(serializer.data) + + def update(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + deletion_mail = DeletionMailTemplateController() + deletion_mail.save_template(serializer.data.get('template')) + return Response(serializer.data) diff --git a/backend/src/account_manager/api/v1/urls.py b/backend/src/account_manager/api/v1/urls.py new file mode 100644 index 0000000..fe0e147 --- /dev/null +++ b/backend/src/account_manager/api/v1/urls.py @@ -0,0 +1,30 @@ +from django.urls import path + +from account_manager.api.v1.group.views import RealmGroupsApi, RealmGroupApi +from account_manager.api.v1.super_admin.views import SuperAdminUsersApi, SuperAdminUserApi, WelcomeMail, DeletionMail +from account_manager.api.v1.user.views import RealmUserApi, RealmUsersApi, RealmUserPasswordResetMail, \ + RealmUserWelcomeMail, RealmUserGroupsApi +from account_manager.api.v1.realm.views import RealmsApi, RealmApi, MailTestingApi + +urlpatterns = [ + path('v1/realm/', RealmsApi.as_view()), + path('v1/realm//', RealmApi.as_view()), + + # Not done yet + path('v1/realm//mail/test/', MailTestingApi.as_view()), + + path('v1/realm//group/', RealmGroupsApi.as_view()), + path('v1/realm//group//', RealmGroupApi.as_view()), + + path('v1/realm//user/', RealmUsersApi.as_view()), + path('v1/realm//user//', RealmUserApi.as_view()), + path('v1/realm//user//group/', RealmUserGroupsApi.as_view()), + path('v1/realm//user//delete/cancel/', RealmUserPasswordResetMail.as_view()), + path('v1/realm//user//mail/password-reset/', RealmUserPasswordResetMail.as_view()), + path('v1/realm//user//mail/welcome/', RealmUserWelcomeMail.as_view()), + + path('v1/admin/user/', SuperAdminUsersApi.as_view()), + path('v1/admin/user//', SuperAdminUserApi.as_view()), + path('v1/admin/mail/welcome/', WelcomeMail.as_view()), + path('v1/admin/mail/deletion/', DeletionMail.as_view()), +] diff --git a/src/core/__init__.py b/backend/src/account_manager/api/v1/user/__init__.py similarity index 100% rename from src/core/__init__.py rename to backend/src/account_manager/api/v1/user/__init__.py diff --git a/backend/src/account_manager/api/v1/user/serializers.py b/backend/src/account_manager/api/v1/user/serializers.py new file mode 100644 index 0000000..004c2db --- /dev/null +++ b/backend/src/account_manager/api/v1/user/serializers.py @@ -0,0 +1,79 @@ +import logging + +from django.contrib.sites.shortcuts import get_current_site +from rest_framework import serializers +from rest_framework.exceptions import ValidationError + +from account_helper.models import DeletedUser, Realm +from account_manager.models import LdapUser, LdapGroup +from account_manager.utils.user_views import get_protocol + +logger = logging.getLogger(__name__) + + +class LdapUserGroupSerializer(serializers.ModelSerializer): + class Meta: + model = LdapGroup + fields = ('dn', 'name', 'description', 'members') + read_only_fields = ('dn', 'description', 'members') + + +class LdapUserSerializer(serializers.ModelSerializer): + class Meta: + model = LdapUser + fields = ( + 'dn', 'email', 'username', 'display_name', 'first_name', 'last_name', 'phone', 'mobile_phone', + 'last_login') + read_only_fields = ('dn', 'password', 'last_login', 'display_name') + extra_kwargs = {'username': {'validators': []}} + + def create(self, validated_data): + request = self.context["request"] + realm_id = self.context["view"].kwargs.get("realm_id") + if not realm_id: + raise ValidationError("Realm id is required") + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + + current_site = get_current_site(request) + protocol = get_protocol(request=request) + + return LdapUser.create_with_django_user_creation_and_welcome_mail(realm=realms[0], + protocol=protocol, + domain=current_site.domain, + username=validated_data.get('username'), + email=validated_data.get('email')) + + +class DeletedUserSerializer(serializers.ModelSerializer): + class Meta: + model = DeletedUser + fields = '__all__' + + +class ExtendedUserSerializer(serializers.Serializer): + user = LdapUserSerializer() + deleted_user = DeletedUserSerializer(read_only=True) + groups = LdapUserGroupSerializer(read_only=True, many=True) + active = serializers.BooleanField(read_only=True) + + def update(self, instance, validated_data): + ldap_user = instance['user'] + user_validated_data = validated_data['user'] + + LdapUser.update_user(ldap_user, user_validated_data) + return instance + + +class UserGroupUpdateSerializer(serializers.Serializer): + groups = LdapUserGroupSerializer(many=True) + available_groups = LdapUserGroupSerializer(read_only=True, many=True) + + def validate(self, attrs): + logger.error(attrs) + return super().validate(attrs) + + def update(self, instance, validated_data): + groups = validated_data['groups'] + logger.error(groups) diff --git a/backend/src/account_manager/api/v1/user/views.py b/backend/src/account_manager/api/v1/user/views.py new file mode 100644 index 0000000..8d363db --- /dev/null +++ b/backend/src/account_manager/api/v1/user/views.py @@ -0,0 +1,306 @@ +import logging + +from _ldap import OBJECT_CLASS_VIOLATION +from django.contrib.auth.forms import PasswordResetForm +from django.contrib.auth.models import User +from django.contrib.sites.shortcuts import get_current_site +from django.core.exceptions import ObjectDoesNotExist +from django.db import IntegrityError +from django.http import Http404, HttpRequest +from rest_framework import generics, status +from rest_framework.exceptions import ValidationError +from rest_framework import mixins +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from account_helper.models import Realm, DeletedUser +from account_manager.api.v1.permissions import RealmAdminPermission +from account_manager.api.v1.user.serializers import LdapUserSerializer, ExtendedUserSerializer, LdapUserGroupSerializer, \ + UserGroupUpdateSerializer +from account_manager.models import LdapUser, LdapGroup +from account_manager.utils.django_user import update_django_user +from account_manager.utils.mail_utils import send_welcome_mail, send_deletion_mail +from account_manager.utils.user_views import get_protocol + +REALM_ID_IS_REQUIRED = "Realm Id is required" + +logger = logging.getLogger(__name__) + + +class RealmUsersApi(generics.ListCreateAPIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + + def get_serializer_class(self): + if self.request.method == 'GET': + return ExtendedUserSerializer + if self.request.method == 'POST': + return LdapUserSerializer + return LdapUserSerializer + + def get_queryset(self): + realm_id = self.kwargs.get('realm_id') + if not realm_id: + raise ValidationError(REALM_ID_IS_REQUIRED) + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + realm = realms[0] + ldap_users = LdapUser.get_users(realm=realm) + ldap_user_wrappers = [LdapUser.get_extended_user(user) for user in ldap_users] + return ldap_user_wrappers + + +class RealmUserApi(generics.RetrieveUpdateDestroyAPIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + serializer_class = ExtendedUserSerializer + queryset = LdapUser.get_users() + lookup_field = "dn" + lookup_url_kwarg = "user_dn" + + def get_object(self): + realm_id = self.kwargs.get('realm_id') + user_dn = self.kwargs.get('user_dn') + + if not realm_id: + raise ValidationError(REALM_ID_IS_REQUIRED) + if not user_dn: + raise ValidationError("User dn is required") + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + realm = realms[0] + ldap_user = LdapUser.get_user_by_dn(dn=user_dn, realm=realm) + if not ldap_user: + raise Http404 + + # May raise a permission denied + self.check_object_permissions(self.request, ldap_user) + user_wrapper = LdapUser.get_extended_user(ldap_user) + # TODO: maybe also relevant on user list + groups = LdapGroup.get_user_groups(realm=realm, ldap_user=ldap_user) + user_wrapper['groups'] = groups + + return user_wrapper + + def user_delete_controller(self, ldap_user: LdapUser, realm: Realm): + LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' + try: + django_user = User.objects.get(username=ldap_user.username) + try: + user = DeletedUser.objects.create(user=django_user, ldap_dn=ldap_user.dn) + logger.warning(user) + # TODO: more feedback from mail + send_deletion_mail(realm=realm, user=ldap_user) + return Response({'msg': 'Nutzer wurde als gelöscht markiert.'}, status=status.HTTP_200_OK) + except IntegrityError as err: + logger.error(err) + return Response({'msg': 'Nutzer ist bereits als gelöscht markiert.'}, status=status.HTTP_409_CONFLICT) + except ObjectDoesNotExist as err: + logger.error(err) + return Response({'msg': 'Nutzer existiert nicht.'}, status=status.HTTP_409_CONFLICT) + + def delete(self, request, *args, **kwargs): + realm_id = self.kwargs.get('realm_id') + if not realm_id: + raise ValidationError(REALM_ID_IS_REQUIRED) + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + realm = realms[0] + + ldap_user_wrapper = self.get_object() + logger.error(ldap_user_wrapper) + ldap_user = ldap_user_wrapper['user'] + LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' + if ldap_user.is_deleteable_user(realm): + try: + if request.query_params.get('force'): + username = ldap_user.username + ldap_user.delete_complete() + return Response({'msg': f'Nutzer {username} wurde erfolgreich gelöscht.'}, + status=status.HTTP_200_OK) + return self.user_delete_controller(ldap_user=ldap_user, realm=realm) + except OBJECT_CLASS_VIOLATION: + return Response({'msg': f'Der Nutzer {ldap_user.username} konnte nicht gelöscht werden, ' + f'da er der letzte Nutzer einer Gruppe ist. ' + f'Bitte lösche die Gruppe zuerst oder trage einen anderen Nutzer ' + f'in die Gruppe ein.'}, + status=status.HTTP_400_BAD_REQUEST) + else: + return Response({'msg': f'Der Nutzer, {ldap_user.username}, gehört anscheinend zu den Admins. ' + f'Solange der Nutzer dieser Gruppe angehört kann dieser nicht gelöscht werden. ' + f'Bitte trage vorher den Nutzer aus der Admin Gruppe aus.'}, + status=status.HTTP_400_BAD_REQUEST) + + +class RealmUserPasswordResetMail(APIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + + def post(self, request): + realm_id = self.kwargs.get('realm_id') + user_dn = self.kwargs.get('user_dn') + + realm = Realm.objects.get(id=realm_id) + ldap_user = LdapUser.get_user_by_dn(dn=user_dn, realm=realm) + try: + if ldap_user.email: + logger.info(f"Sending email to {ldap_user.email}") + form = PasswordResetForm({'email': ldap_user.email}) + if form.is_valid(): + logger.info('CREATE REQUEST') + pw_reset_request = HttpRequest() + pw_reset_request.META['SERVER_NAME'] = get_current_site(request).domain + pw_reset_request.META['SERVER_PORT'] = '80' + if request.is_secure(): + pw_reset_request.META['SERVER_PORT'] = '443' + logger.info('form.save') + form.save( + request=pw_reset_request, + use_https=True, + from_email=realm.email, + email_template_name='registration/password_reset_email.html') + return Response({'msg': 'Die Passwort zurücksetzen E-Mail wurde erfolgreich versendet.'}, + status=status.HTTP_201_CREATED) + return Response({'msg': 'Der Nutzer E-Mail Addresse ist ungültig. Es wurde keine E-Mail übermittelt.'}, + status=status.HTTP_400_BAD_REQUEST) + return Response({'msg': 'Der Nutzer besitzt keine E-Mail Addresse. ' + 'Bitte tragen Sie diese nach und probieren es erneut'}, + status=status.HTTP_400_BAD_REQUEST) + except Exception as err: + logger.error(f'Error: {err}') + return Response({'msg': 'Die Passwort zurücksetzen E-Mail konnte nicht versendet werden.'}, + status.HTTP_500_INTERNAL_SERVER_ERROR) + + +class RealmUserWelcomeMail(APIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + + def post(self, request): + realm_id = self.kwargs.get('realm_id') + user_dn = self.kwargs.get('user_dn') + + realm = Realm.objects.get(id=realm_id) + ldap_user = LdapUser.get_user_by_dn(dn=user_dn, realm=realm) + + update_django_user(ldap_user) + current_site = get_current_site(request) + protocol = get_protocol(request) + send_welcome_mail(domain=current_site.domain, + email=ldap_user.email, + protocol=protocol, + realm=realm, + user=User.objects.get(username=ldap_user.username)) + return Response({'msg': 'Willkommensmail erfolgreich versendet.'}, status=status.HTTP_201_CREATED) + + +class RealmUserDeleteCancel(APIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + + def get(self, request): + user_dn = self.kwargs.get('user_dn') + + try: + DeletedUser.objects.get(ldap_dn=user_dn).delete() + except ObjectDoesNotExist: + return Response({'msg': 'Nutzer ist nicht als gelöscht markiert.'}, status=status.HTTP_409_CONFLICT) + return Response({'msg': 'Nutzerlöschung wurde abgebrochen.'}, status=status.HTTP_204_NO_CONTENT) + + +def validate_requested_group_names(request): + groups = request.data.get('groups') + group_names = [group.get('name') for group in groups if group.get('name')] + logger.error(group_names) + if len(group_names) < len(groups): + raise ValidationError("Gruppenname einer oder mehrerer Gruppen fehlt") + return group_names + + +def ldap_add_user_to_groups(ldap_user_dn, user_groups): + for group in user_groups: + group.members.append(ldap_user_dn) + group.save() + + +def get_available_given_groups(realm, user_dn): + ldap_user = LdapUser.get_user_by_dn(dn=user_dn, realm=realm) + user_groups = LdapGroup.get_user_groups(realm=realm, ldap_user=ldap_user) + realm_groups = LdapGroup.get_groups(realm=realm) + realm_groups_available = [realm_group for realm_group in realm_groups if realm_group not in user_groups] + return ldap_user, realm_groups_available, user_groups + + +class RealmUserGroupsApi(generics.RetrieveUpdateAPIView): + permission_classes = [IsAuthenticated, RealmAdminPermission] + serializer_class = UserGroupUpdateSerializer + lookup_field = 'user_dn' + + def get_user(self, realm): + user_dn = self.kwargs.get('user_dn') + ldap_user = LdapUser.get_user_by_dn(dn=user_dn, realm=realm) + if not ldap_user: + raise ValidationError("Could not retrieve user") + return ldap_user + + def get_realm(self): + realm_id = self.kwargs.get('realm_id') + if not realm_id: + raise ValidationError(REALM_ID_IS_REQUIRED) + realms = Realm.objects.filter(id=realm_id) + if not realms.exists(): + raise ValidationError(f"Realm with {realm_id} not found") + return realms[0] + + def get_queryset(self): + return self._get_user_wrapper() + + def get_object(self): + return self._get_user_wrapper() + + def _get_user_wrapper(self): + realm = self.get_realm() + user_dn = self.kwargs.get('user_dn') + _, realm_groups_available, user_groups = get_available_given_groups(realm, user_dn) + wrapper = {'groups': user_groups, 'available_groups': realm_groups_available} + return wrapper + + def retrieve(self, request, *args, **kwargs): + groups_wrapper = self.get_queryset() + serializer = self.get_serializer(groups_wrapper) + return Response(serializer.data) + + def update(self, request, *args, **kwargs): + # TODO implement in serializer + realm = self.get_realm() + ldap_user = self.get_user(realm) + + ldap_groups = LdapGroup.get_user_groups(realm, ldap_user) + current_group_names = [group.name for group in ldap_groups] + group_names = validate_requested_group_names(request) + + to_add = [group_name for group_name in group_names if group_name not in current_group_names] + logger.error(to_add) + if to_add: + try: + to_add_ldap_groups = [LdapGroup.get_group(group_name, realm) for group_name in to_add] + ldap_add_user_to_groups(ldap_user.dn, to_add_ldap_groups) + except OBJECT_CLASS_VIOLATION: + return Response({'msg': 'Bearbeiten fehlgeschlagen. ' + 'Der Nutzer konnte nicht zu den Gruppen hinzugefügt werden.'}, + status=status.HTTP_400_BAD_REQUEST) + + to_remove = [group_name for group_name in current_group_names if group_name not in group_names] + logger.error(to_remove) + if to_remove: + try: + to_remove_ldap_groups = [LdapGroup.get_group(group_name, realm) for group_name in to_remove] + LdapGroup.remove_user_from_groups(ldap_user.dn, to_remove_ldap_groups) + except OBJECT_CLASS_VIOLATION: + return Response({'msg': 'Bearbeiten fehlgeschlagen. ' + 'Der Nutzer scheint der letzte in einer Gruppe zu sein. ' + 'Bitte tragen sie den Nutzer zuerst aus der Gruppe aus.'}, + status=status.HTTP_400_BAD_REQUEST) + + groups_wrapper = self.get_queryset() + serializer = self.get_serializer(groups_wrapper) + return Response(serializer.data) diff --git a/src/account_manager/apps.py b/backend/src/account_manager/apps.py similarity index 100% rename from src/account_manager/apps.py rename to backend/src/account_manager/apps.py diff --git a/src/account_manager/models.py b/backend/src/account_manager/models.py similarity index 64% rename from src/account_manager/models.py rename to backend/src/account_manager/models.py index a641328..882c72a 100644 --- a/src/account_manager/models.py +++ b/backend/src/account_manager/models.py @@ -6,21 +6,17 @@ from typing import List from django.contrib.auth.models import User, Group -from django.core.exceptions import ObjectDoesNotExist -from django.db import OperationalError +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db.models import Q from ldap import NO_SUCH_OBJECT, ALREADY_EXISTS from ldapdb.models import fields as ldap_fields from ldapdb.models.base import Model from account_helper.models import DeletedUser, Realm -from account_manager.utils.dbldap import get_filterstr from account_manager.utils.mail_utils import send_welcome_mail logger = logging.getLogger(__name__) -import ldap - class LdapUser(Model): """ @@ -30,7 +26,6 @@ class LdapUser(Model): ROOT_DN = os.environ.get('LDAP_USER_ENTRY', 'dc=test,dc=de') base_dn = ROOT_DN object_classes = ['inetOrgPerson'] - # last_modified = ldap_fields.DateTimeField(db_column='modifyTimestamp', blank=True) # inetOrgPerson username = ldap_fields.CharField(db_column='uid', primary_key=True) @@ -44,14 +39,44 @@ class LdapUser(Model): photo = ldap_fields.ImageField(db_column='photo') last_login = ldap_fields.DateTimeField(db_column='authTimestamp', blank=True) - # photo = ldap_fields.ImageField(db_column='jpegPhoto') - def __str__(self): return self.username def __unicode__(self): return self.full_name + @staticmethod + def creation_test(base_dn): + try: + LdapUser.base_dn = f'ou=people,{base_dn}' + user = LdapUser.objects.create(username='dummy', first_name=' ', last_name=' ') + user.save() + user.delete() + except Exception: + raise ValidationError( + 'Realm user creation test failed. Please prove the provided dn', + ) + + def is_deleteable(self, realm: Realm): + user_groups = LdapGroup.get_user_groups(realm, self) + user_group_names = [group.name for group in user_groups] + user_admin_realms = Realm.objects.filter(id=realm.id).filter(admin_group__name__in=user_group_names) + return not user_admin_realms.exists() + + @staticmethod + def create_user(realm, username, email, password=None): + if not LdapUser.is_user_duplicate(username): + LdapUser.base_dn = f'ou=people, {realm.ldap_base_dn}' + if password: + ldap_user = LdapUser.objects.create(username=username, email=email, display_name=email, first_name=" ", + last_name=" ", password=password) + else: + ldap_user = LdapUser.objects.create(username=username, email=email, display_name=email, first_name=" ", + last_name=" ") + return ldap_user + else: + raise ALREADY_EXISTS('User already exists') + @staticmethod def create_with_django_user_creation_and_welcome_mail(realm, protocol, domain, username, email): ldap_user, user = LdapUser.create_with_django_user(realm, username, email) @@ -59,30 +84,44 @@ def create_with_django_user_creation_and_welcome_mail(realm, protocol, domain, u return ldap_user @staticmethod - def create_with_django_user(realm, username, email, password=None): + def create_with_django_user(realm, username, email, password=None) -> ('LdapUser', User): if not LdapUser.is_user_duplicate(username): + ldap_user = LdapUser.create_user(realm, username, email, password) LdapUser.base_dn = f'ou=people, {realm.ldap_base_dn}' - # TODO: rewrite - if password: - ldap_user = LdapUser.objects.create(username=username, email=email, first_name=" ", last_name=" ", - password=password) - else: - ldap_user = LdapUser.objects.create(username=username, email=email, first_name=" ", last_name=" ") if password: user, _ = User.objects.get_or_create(username=username, email=email, password=password) else: user, _ = User.objects.get_or_create(username=username, email=email) + if realm.default_group: + ldap_default_group = LdapGroup.get_group(group_name=realm.default_group.name, realm=realm) + LdapGroup.add_user_to_groups(ldap_user=ldap_user, ldap_groups=[ldap_default_group, ]) return ldap_user, user else: raise ALREADY_EXISTS('User already exists') + @staticmethod + def update_user(ldap_user, validated_data): + ldap_user.email = validated_data.get('email', ldap_user.email) + ldap_user.username = validated_data.get('username', ldap_user.username) + first_name = validated_data.get('first_name', ldap_user.first_name) + ldap_user.first_name = first_name if first_name else ' ' + last_name = validated_data.get('last_name', ldap_user.last_name) + if first_name and last_name: + ldap_user.display_name = f'{first_name} {last_name}' + else: + ldap_user.display_name = ldap_user.email + ldap_user.last_name = last_name if last_name else ' ' + ldap_user.phone = validated_data.get('phone', ldap_user.phone) + ldap_user.mobile_phone = validated_data.get('mobile_phone', ldap_user.mobile_phone) + ldap_user.save() + @staticmethod def get_extended_user(ldap_user): wrapper = {'user': ldap_user} try: wrapper['deleted_user'] = DeletedUser.objects.get(ldap_dn=ldap_user.dn) except ObjectDoesNotExist: - wrapper['deleted_user'] = {} + wrapper['deleted_user'] = None try: django_user = User.objects.get(username=ldap_user.username) wrapper['active'] = True if django_user.last_login else False @@ -101,7 +140,6 @@ def password_reset(user, raw_password): @staticmethod def get_users_by_dn(realm, users): LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' - # logger.debug(users) users = [re.compile('uid=([a-zA-Z0-9_-]*),(ou=[a-zA-Z_]*),(.*)').match(user).group(1) for user in users] query = Q(username=users.pop()) @@ -116,7 +154,7 @@ def is_user_duplicate(username: str): try: LdapUser.objects.get(username=username) return True - except (NO_SUCH_OBJECT, ObjectDoesNotExist) as err: + except (NO_SUCH_OBJECT, ObjectDoesNotExist): return False @staticmethod @@ -145,7 +183,7 @@ def get_user(username: str, realm: Realm = None): LdapUser.base_dn = f'ou=people, {realm.ldap_base_dn}' if realm else LdapUser.ROOT_DN try: return LdapUser.objects.get(username=username) - except Exception as e: + except Exception: return None @staticmethod @@ -153,7 +191,7 @@ def get_user_by_dn(dn: str, realm: Realm = None): LdapUser.base_dn = f'ou=people, {realm.ldap_base_dn}' if realm else LdapUser.ROOT_DN try: return LdapUser.objects.get(dn=dn) - except Exception as e: + except Exception: return None @staticmethod @@ -161,7 +199,7 @@ def get_users(realm: Realm = None): LdapUser.base_dn = f'ou=people, {realm.ldap_base_dn}' if realm else LdapUser.ROOT_DN try: return LdapUser.objects.all() - except Exception as e: + except Exception: return None @staticmethod @@ -208,7 +246,7 @@ class LdapGroup(Model): object_classes = ['groupOfNames'] name = ldap_fields.CharField(db_column='cn', max_length=200, primary_key=True) - description = ldap_fields.CharField(db_column='description', max_length=1024) + description = ldap_fields.CharField(db_column='description', max_length=1024, blank=True, null=True) members = ldap_fields.ListField(db_column='member') @staticmethod @@ -233,15 +271,21 @@ def remove_user_from_groups(ldap_user_dn, user_groups=None): group.members.remove(ldap_user_dn) group.save() - def get_django_group(self): + def get_django_group(self) -> Group: django_group, _ = Group.objects.get_or_create(name=self.name) return django_group @staticmethod - def get_group(group_name: str, realm: Realm = None): - LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' if realm else LdapGroup.ROOT_DN + def get_group(group_name: str = None, group_dn: str = None, realm: Realm = None): + if not group_name and not group_dn: + raise ValidationError("group_name or group_dn required") + LdapGroup.set_root_dn(realm) + logger.error(group_dn) try: - return LdapGroup.objects.get(name=group_name) + if group_name: + return LdapGroup.objects.get(name=group_name) + else: + return LdapGroup.objects.get(dn=group_dn) except Exception as e: logger.error(e) return None @@ -256,8 +300,50 @@ def get_groups(realm: Realm = None): return None @staticmethod - def set_root_dn(realm): - LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' + def group_exists(group_name: str, realm: Realm = None): + LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' if realm else LdapGroup.ROOT_DN + return LdapGroup.objects.filter(name=group_name).exists() + + @staticmethod + def set_root_dn(realm: Realm = None): + LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' if realm else LdapGroup.ROOT_DN + + def full_update(self, instance, **validated_data): + django_group = self.get_django_group() + + for attr, value in validated_data.items(): + setattr(instance, attr, value) + instance.save() + + if django_group: + # TODO: implement User update + django_group.name = validated_data.get('name') + django_group.save() + return instance + + @staticmethod + def full_create(realm, **kwargs): + logger.error(realm) + LdapGroup.set_root_dn(realm) + ldap_group = LdapGroup.objects.create(**kwargs) + if 'description' in kwargs: + del kwargs['description'] + del kwargs['members'] + logger.error('members') + Group.objects.get_or_create(**kwargs) + return ldap_group + + def full_delete(self, realm): + if realm.admin_group and realm.admin_group.name == self.name: + realm.admin_group = None + realm.save() + if realm.default_group and realm.default_group.name == self.name: + realm.default_group = None + realm.save() + django_group = self.get_django_group() + if django_group: + django_group.delete() + return self.delete() def __str__(self): return self.name diff --git a/src/account_manager/tests/test_forms.py b/backend/src/account_manager/tests/__init__.py similarity index 100% rename from src/account_manager/tests/test_forms.py rename to backend/src/account_manager/tests/__init__.py diff --git a/src/account_manager/tests/realm/test_detail_view.py b/backend/src/account_manager/tests/api/realm/test_detail_view.py similarity index 100% rename from src/account_manager/tests/realm/test_detail_view.py rename to backend/src/account_manager/tests/api/realm/test_detail_view.py diff --git a/backend/src/account_manager/tests/realm/__init__.py b/backend/src/account_manager/tests/realm/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/account_manager/tests/realm/test_add_view.py b/backend/src/account_manager/tests/realm/test_add_view.py similarity index 91% rename from src/account_manager/tests/realm/test_add_view.py rename to backend/src/account_manager/tests/realm/test_add_view.py index 1698817..b6c5086 100644 --- a/src/account_manager/tests/realm/test_add_view.py +++ b/backend/src/account_manager/tests/realm/test_add_view.py @@ -8,13 +8,16 @@ from account_manager.tests.utils.utils import get_realm, get_user, clear_realm_user, clear_realm_group, get_password, \ get_group +REALM_ADD_ERROR_RESPONSE = 'Das hinzufügen des Bereichs ist fehlgeschlagen.' + +NEW_REALM_BASE_DN = 'ou=test,ou=fachschaften,dc=test,dc=de' + class RealmAddViewTest(TestCase): databases = ["default", "ldap"] @classmethod def setUpTestData(cls): - # User.objects.get_or_create(username="test", email="test@test.de") User.objects.create_superuser( username='test_superuser', password=get_password(), @@ -79,7 +82,7 @@ def test_with_login(self): def test_with_login_and_post_valid_form(self): self.client.login(username=self.ldap_user_1.username, password=get_password()) response = self.client.post(reverse('realm-add'), - {'name': 'test', 'ldap_base_dn': 'ou=test,ou=fachschaften,dc=test,dc=de'}) + {'name': 'test', 'ldap_base_dn': NEW_REALM_BASE_DN}) self.assertContains(response, 'Leider hast du keine Rechte', status_code=403) def test_with_super_user_login(self): @@ -101,14 +104,14 @@ def test_with_super_user_login_add_realm(self): def test_with_super_user_login_add_extisting_realm(self): self.client.login(username=self.django_superuser.username, password=get_password()) response = self.client.post(reverse('realm-add'), - {'name': 'test', 'ldap_base_dn': 'ou=test,ou=fachschaften,dc=test,dc=de'}) - self.assertContains(response, 'Das hinzufügen des Bereichs ist fehlgeschlagen.', status_code=409) + {'name': 'test', 'ldap_base_dn': NEW_REALM_BASE_DN}) + self.assertContains(response, REALM_ADD_ERROR_RESPONSE, status_code=409) def test_with_super_user_login_add_extisting_realm_with_different_name(self): self.client.login(username=self.django_superuser.username, password=get_password()) response = self.client.post(reverse('realm-add'), - {'name': 'test_new', 'ldap_base_dn': 'ou=test,ou=fachschaften,dc=test,dc=de'}) - self.assertContains(response, 'Das hinzufügen des Bereichs ist fehlgeschlagen.', status_code=409) + {'name': 'test_new', 'ldap_base_dn': NEW_REALM_BASE_DN}) + self.assertContains(response, REALM_ADD_ERROR_RESPONSE, status_code=409) def test_with_super_user_login_add_realm_with_not_existing_ldap_base_dn(self): self.client.login(username=self.django_superuser.username, password=get_password()) @@ -116,4 +119,4 @@ def test_with_super_user_login_add_realm_with_not_existing_ldap_base_dn(self): {'name': 'test_not_extisting_ldap_dn', 'ldap_base_dn': 'ou=not_exists,ou=fachschaften,dc=test,dc=de'}) - self.assertContains(response, 'Das hinzufügen des Bereichs ist fehlgeschlagen.', status_code=409) + self.assertContains(response, REALM_ADD_ERROR_RESPONSE, status_code=409) diff --git a/src/account_manager/tests/realm/test_delete_view.py b/backend/src/account_manager/tests/realm/test_delete_view.py similarity index 100% rename from src/account_manager/tests/realm/test_delete_view.py rename to backend/src/account_manager/tests/realm/test_delete_view.py diff --git a/src/account_manager/tests/realm/test_home_view.py b/backend/src/account_manager/tests/realm/test_home_view.py similarity index 100% rename from src/account_manager/tests/realm/test_home_view.py rename to backend/src/account_manager/tests/realm/test_home_view.py diff --git a/src/account_manager/tests/realm/test_update_view.py b/backend/src/account_manager/tests/realm/test_update_view.py similarity index 100% rename from src/account_manager/tests/realm/test_update_view.py rename to backend/src/account_manager/tests/realm/test_update_view.py diff --git a/backend/src/account_manager/tests/realm_users/__init__.py b/backend/src/account_manager/tests/realm_users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/account_manager/tests/realm_users/test_list_view.py b/backend/src/account_manager/tests/realm_users/test_list_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_list_view.py rename to backend/src/account_manager/tests/realm_users/test_list_view.py diff --git a/src/account_manager/tests/realm_users/test_user_add_view.py b/backend/src/account_manager/tests/realm_users/test_user_add_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_add_view.py rename to backend/src/account_manager/tests/realm_users/test_user_add_view.py diff --git a/src/account_manager/tests/realm_users/test_user_delete_cancel_view.py b/backend/src/account_manager/tests/realm_users/test_user_delete_cancel_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_delete_cancel_view.py rename to backend/src/account_manager/tests/realm_users/test_user_delete_cancel_view.py diff --git a/src/account_manager/tests/realm_users/test_user_delete_confirm_view.py b/backend/src/account_manager/tests/realm_users/test_user_delete_confirm_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_delete_confirm_view.py rename to backend/src/account_manager/tests/realm_users/test_user_delete_confirm_view.py diff --git a/src/account_manager/tests/realm_users/test_user_delete_view.py b/backend/src/account_manager/tests/realm_users/test_user_delete_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_delete_view.py rename to backend/src/account_manager/tests/realm_users/test_user_delete_view.py diff --git a/src/account_manager/tests/realm_users/test_user_detail_view.py b/backend/src/account_manager/tests/realm_users/test_user_detail_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_detail_view.py rename to backend/src/account_manager/tests/realm_users/test_user_detail_view.py diff --git a/src/account_manager/tests/realm_users/test_user_direct_delete.py b/backend/src/account_manager/tests/realm_users/test_user_direct_delete.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_direct_delete.py rename to backend/src/account_manager/tests/realm_users/test_user_direct_delete.py diff --git a/src/account_manager/tests/realm_users/test_user_password_reset_view.py b/backend/src/account_manager/tests/realm_users/test_user_password_reset_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_password_reset_view.py rename to backend/src/account_manager/tests/realm_users/test_user_password_reset_view.py diff --git a/src/account_manager/tests/realm_users/test_user_update_view.py b/backend/src/account_manager/tests/realm_users/test_user_update_view.py similarity index 100% rename from src/account_manager/tests/realm_users/test_user_update_view.py rename to backend/src/account_manager/tests/realm_users/test_user_update_view.py diff --git a/backend/src/account_manager/tests/test_forms.py b/backend/src/account_manager/tests/test_forms.py new file mode 100644 index 0000000..e69de29 diff --git a/src/account_manager/tests/test_models.py b/backend/src/account_manager/tests/test_models.py similarity index 100% rename from src/account_manager/tests/test_models.py rename to backend/src/account_manager/tests/test_models.py diff --git a/src/account_manager/tests/test_views.py b/backend/src/account_manager/tests/test_views.py similarity index 100% rename from src/account_manager/tests/test_views.py rename to backend/src/account_manager/tests/test_views.py diff --git a/backend/src/account_manager/tests/utils/__init__.py b/backend/src/account_manager/tests/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/account_manager/tests/utils/utils.py b/backend/src/account_manager/tests/utils/utils.py similarity index 100% rename from src/account_manager/tests/utils/utils.py rename to backend/src/account_manager/tests/utils/utils.py diff --git a/src/account_manager/urls.py b/backend/src/account_manager/urls.py similarity index 100% rename from src/account_manager/urls.py rename to backend/src/account_manager/urls.py diff --git a/backend/src/account_manager/utils/__init__.py b/backend/src/account_manager/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/account_manager/utils/dbldap.py b/backend/src/account_manager/utils/dbldap.py similarity index 100% rename from src/account_manager/utils/dbldap.py rename to backend/src/account_manager/utils/dbldap.py diff --git a/src/account_manager/utils/django_user.py b/backend/src/account_manager/utils/django_user.py similarity index 82% rename from src/account_manager/utils/django_user.py rename to backend/src/account_manager/utils/django_user.py index 8bf82f1..7b8a4f6 100644 --- a/src/account_manager/utils/django_user.py +++ b/backend/src/account_manager/utils/django_user.py @@ -1,7 +1,7 @@ from django.contrib.auth.models import User -def update_dajngo_user(ldap_user): +def update_django_user(ldap_user): user, _ = User.objects.get_or_create(username=ldap_user.username) user.email = ldap_user.email user.save() diff --git a/src/account_manager/utils/mail_utils.py b/backend/src/account_manager/utils/mail_utils.py similarity index 100% rename from src/account_manager/utils/mail_utils.py rename to backend/src/account_manager/utils/mail_utils.py diff --git a/backend/src/core/__init__.py b/backend/src/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/core/docker_settings.py b/backend/src/core/docker_settings.py similarity index 75% rename from src/core/docker_settings.py rename to backend/src/core/docker_settings.py index 8dd6444..f009838 100644 --- a/src/core/docker_settings.py +++ b/backend/src/core/docker_settings.py @@ -30,6 +30,11 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'corsheaders', + 'rest_framework', + 'rest_framework.authtoken', + 'rest_framework_simplejwt', + 'drf_yasg', 'account_manager', 'account_helper', ] @@ -42,6 +47,7 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'corsheaders.middleware.CorsMiddleware', ] ROOT_URLCONF = 'core.urls' @@ -180,8 +186,8 @@ EMAIL_TIMEOUT = 15 EMAIL_HOST = os.environ['EMAIL_HOST'] EMAIL_PORT = int(os.environ['EMAIL_PORT']) - EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER','') - EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD','') + EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER', '') + EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD', '') EMAIL_USE_TLS = os.environ.get('EMAIL_USE_TLS', 'False') == 'True' EMAIL_USE_SSL = os.environ.get('EMAIL_USE_SSL', 'False') == 'True' @@ -233,3 +239,68 @@ } }, } + +######################################################################################################################## +# REST Framework # +######################################################################################################################## +# REST_FRAMEWORK = { +# 'DEFAULT_AUTHENTICATION_CLASSES': { +# 'rest_framework_simplejwt.authentication.JWTAuthentication', +# } +# } +REST_FRAMEWORK = { + 'DEFAULT_PERMISSION_CLASSES': ( + # By default we set everything to admin, + # then open endpoints on a case-by-case basis + 'rest_framework.permissions.IsAdminUser', + ), + 'TEST_REQUEST_RENDERER_CLASSES': ( + 'rest_framework.renderers.MultiPartRenderer', + 'rest_framework.renderers.JSONRenderer', + 'rest_framework.renderers.TemplateHTMLRenderer' + ), + 'DEFAULT_AUTHENTICATION_CLASSES': ( + 'rest_framework_simplejwt.authentication.JWTAuthentication', + 'rest_framework.authentication.SessionAuthentication', + ), + 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', + 'PAGE_SIZE': 20, +} + +from datetime import timedelta + +SIMPLE_JWT = { + 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5), + 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), + 'ROTATE_REFRESH_TOKENS': True, + 'BLACKLIST_AFTER_ROTATION': True, + + 'ALGORITHM': 'HS256', + 'SIGNING_KEY': SECRET_KEY, + 'VERIFYING_KEY': None, + 'AUDIENCE': None, + 'ISSUER': None, + + 'AUTH_HEADER_TYPES': ('Bearer',), + 'USER_ID_FIELD': 'id', + 'USER_ID_CLAIM': 'user_id', + + 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',), + 'TOKEN_TYPE_CLAIM': 'token_type', + + 'JTI_CLAIM': 'jti', + + 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp', + 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5), + 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1), +} + +CORS_ORIGIN_ALLOW_ALL = False +CORS_ALLOW_CREDENTIALS = True +CORS_ORIGIN_WHITELIST = ( + # TODO - set this properly for production + 'http://127.0.0.1:8080', + 'http://127.0.0.1:8000', + 'http://localhost:8080', + 'http://localhost:8000', +) diff --git a/src/core/jinja2.py b/backend/src/core/jinja2.py similarity index 100% rename from src/core/jinja2.py rename to backend/src/core/jinja2.py diff --git a/src/core/settings.py b/backend/src/core/settings_test.py similarity index 98% rename from src/core/settings.py rename to backend/src/core/settings_test.py index 6735421..ff0412a 100644 --- a/src/core/settings.py +++ b/backend/src/core/settings_test.py @@ -40,6 +40,10 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'corsheaders', + 'rest_framework', + 'rest_framework.authtoken', + 'drf_yasg', 'account_manager', 'account_helper', ] diff --git a/src/core/tokens.py b/backend/src/core/tokens.py similarity index 100% rename from src/core/tokens.py rename to backend/src/core/tokens.py diff --git a/src/core/urls.py b/backend/src/core/urls.py similarity index 50% rename from src/core/urls.py rename to backend/src/core/urls.py index 7bbaeb6..fb3cab7 100644 --- a/src/core/urls.py +++ b/backend/src/core/urls.py @@ -14,15 +14,35 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path, include +from django.urls import path, include, re_path from django.contrib.auth import views as auth_views from django.contrib.auth.decorators import user_passes_test +from drf_yasg import openapi +from drf_yasg.views import get_schema_view +from rest_framework import permissions +from rest_framework.authtoken import views +from rest_framework_simplejwt.views import TokenRefreshView +from account_manager.api.v1.authentication.views import LamaTokenObtainPairView + from account_manager.forms import LdapPasswordResetForm from account_manager.views.user_views import LdapPasswordChangeView from .views import about login_forbidden = user_passes_test(lambda u: u.is_anonymous(), '/') +schema_view = get_schema_view( + openapi.Info( + title="LAMa API", + default_version='0.1.0', + description="API for Ldap Account Manager", + terms_of_service="https://www.google.com/policies/terms/", + contact=openapi.Contact(email="michael-guenther.goetz@stud.uni-bamberg.de"), + license=openapi.License(name="AGPL License"), + ), + public=True, + permission_classes=(permissions.IsAuthenticated,), +) + urlpatterns = [ path('', include('account_manager.urls')), path('admin/', admin.site.urls), @@ -34,4 +54,17 @@ name='password_reset'), path('accounts/', include('django.contrib.auth.urls')), + + # API + # path('api/auth/', include('rest_framework.urls')), + # path('api/auth/token/', views.obtain_auth_token), + path('api/', include('account_manager.api.v1.urls')), + # Simple jwt + path('api/auth/token/', LamaTokenObtainPairView.as_view(), name='token_obtain_pair'), + path('api/auth/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), + + # drf yasg + re_path(r'api/docs/swagger(?P\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'), + path('api/docs/swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), + path('api/docs/redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ] diff --git a/src/core/views.py b/backend/src/core/views.py similarity index 100% rename from src/core/views.py rename to backend/src/core/views.py diff --git a/src/core/wsgi.py b/backend/src/core/wsgi.py similarity index 100% rename from src/core/wsgi.py rename to backend/src/core/wsgi.py diff --git a/src/manage.py b/backend/src/manage.py old mode 100755 new mode 100644 similarity index 100% rename from src/manage.py rename to backend/src/manage.py diff --git a/src/static/admin/css/autocomplete.css b/backend/src/static/admin/css/autocomplete.css similarity index 100% rename from src/static/admin/css/autocomplete.css rename to backend/src/static/admin/css/autocomplete.css diff --git a/src/static/admin/css/base.css b/backend/src/static/admin/css/base.css similarity index 100% rename from src/static/admin/css/base.css rename to backend/src/static/admin/css/base.css diff --git a/src/static/admin/css/changelists.css b/backend/src/static/admin/css/changelists.css similarity index 100% rename from src/static/admin/css/changelists.css rename to backend/src/static/admin/css/changelists.css diff --git a/src/static/admin/css/dashboard.css b/backend/src/static/admin/css/dashboard.css similarity index 100% rename from src/static/admin/css/dashboard.css rename to backend/src/static/admin/css/dashboard.css diff --git a/src/static/admin/css/fonts.css b/backend/src/static/admin/css/fonts.css similarity index 100% rename from src/static/admin/css/fonts.css rename to backend/src/static/admin/css/fonts.css diff --git a/src/static/admin/css/forms.css b/backend/src/static/admin/css/forms.css similarity index 100% rename from src/static/admin/css/forms.css rename to backend/src/static/admin/css/forms.css diff --git a/src/static/admin/css/login.css b/backend/src/static/admin/css/login.css similarity index 100% rename from src/static/admin/css/login.css rename to backend/src/static/admin/css/login.css diff --git a/src/static/admin/css/responsive.css b/backend/src/static/admin/css/responsive.css similarity index 100% rename from src/static/admin/css/responsive.css rename to backend/src/static/admin/css/responsive.css diff --git a/src/static/admin/css/responsive_rtl.css b/backend/src/static/admin/css/responsive_rtl.css similarity index 100% rename from src/static/admin/css/responsive_rtl.css rename to backend/src/static/admin/css/responsive_rtl.css diff --git a/src/static/admin/css/rtl.css b/backend/src/static/admin/css/rtl.css similarity index 100% rename from src/static/admin/css/rtl.css rename to backend/src/static/admin/css/rtl.css diff --git a/src/static/admin/css/vendor/select2/LICENSE-SELECT2.md b/backend/src/static/admin/css/vendor/select2/LICENSE-SELECT2.md similarity index 100% rename from src/static/admin/css/vendor/select2/LICENSE-SELECT2.md rename to backend/src/static/admin/css/vendor/select2/LICENSE-SELECT2.md diff --git a/src/static/admin/css/vendor/select2/select2.css b/backend/src/static/admin/css/vendor/select2/select2.css similarity index 100% rename from src/static/admin/css/vendor/select2/select2.css rename to backend/src/static/admin/css/vendor/select2/select2.css diff --git a/src/static/admin/css/vendor/select2/select2.min.css b/backend/src/static/admin/css/vendor/select2/select2.min.css similarity index 100% rename from src/static/admin/css/vendor/select2/select2.min.css rename to backend/src/static/admin/css/vendor/select2/select2.min.css diff --git a/src/static/admin/css/widgets.css b/backend/src/static/admin/css/widgets.css similarity index 100% rename from src/static/admin/css/widgets.css rename to backend/src/static/admin/css/widgets.css diff --git a/src/static/admin/fonts/LICENSE.txt b/backend/src/static/admin/fonts/LICENSE.txt similarity index 98% rename from src/static/admin/fonts/LICENSE.txt rename to backend/src/static/admin/fonts/LICENSE.txt index 75b5248..d645695 100644 --- a/src/static/admin/fonts/LICENSE.txt +++ b/backend/src/static/admin/fonts/LICENSE.txt @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/static/admin/fonts/README.txt b/backend/src/static/admin/fonts/README.txt similarity index 100% rename from src/static/admin/fonts/README.txt rename to backend/src/static/admin/fonts/README.txt diff --git a/src/static/admin/fonts/Roboto-Bold-webfont.woff b/backend/src/static/admin/fonts/Roboto-Bold-webfont.woff similarity index 100% rename from src/static/admin/fonts/Roboto-Bold-webfont.woff rename to backend/src/static/admin/fonts/Roboto-Bold-webfont.woff diff --git a/src/static/admin/fonts/Roboto-Light-webfont.woff b/backend/src/static/admin/fonts/Roboto-Light-webfont.woff similarity index 100% rename from src/static/admin/fonts/Roboto-Light-webfont.woff rename to backend/src/static/admin/fonts/Roboto-Light-webfont.woff diff --git a/src/static/admin/fonts/Roboto-Regular-webfont.woff b/backend/src/static/admin/fonts/Roboto-Regular-webfont.woff similarity index 100% rename from src/static/admin/fonts/Roboto-Regular-webfont.woff rename to backend/src/static/admin/fonts/Roboto-Regular-webfont.woff diff --git a/src/static/admin/img/LICENSE b/backend/src/static/admin/img/LICENSE similarity index 100% rename from src/static/admin/img/LICENSE rename to backend/src/static/admin/img/LICENSE diff --git a/src/static/admin/img/README.txt b/backend/src/static/admin/img/README.txt similarity index 100% rename from src/static/admin/img/README.txt rename to backend/src/static/admin/img/README.txt diff --git a/src/static/admin/img/calendar-icons.svg b/backend/src/static/admin/img/calendar-icons.svg similarity index 100% rename from src/static/admin/img/calendar-icons.svg rename to backend/src/static/admin/img/calendar-icons.svg diff --git a/src/static/admin/img/gis/move_vertex_off.svg b/backend/src/static/admin/img/gis/move_vertex_off.svg similarity index 100% rename from src/static/admin/img/gis/move_vertex_off.svg rename to backend/src/static/admin/img/gis/move_vertex_off.svg diff --git a/src/static/admin/img/gis/move_vertex_on.svg b/backend/src/static/admin/img/gis/move_vertex_on.svg similarity index 100% rename from src/static/admin/img/gis/move_vertex_on.svg rename to backend/src/static/admin/img/gis/move_vertex_on.svg diff --git a/src/static/admin/img/icon-addlink.svg b/backend/src/static/admin/img/icon-addlink.svg similarity index 100% rename from src/static/admin/img/icon-addlink.svg rename to backend/src/static/admin/img/icon-addlink.svg diff --git a/src/static/admin/img/icon-alert.svg b/backend/src/static/admin/img/icon-alert.svg similarity index 100% rename from src/static/admin/img/icon-alert.svg rename to backend/src/static/admin/img/icon-alert.svg diff --git a/src/static/admin/img/icon-calendar.svg b/backend/src/static/admin/img/icon-calendar.svg similarity index 100% rename from src/static/admin/img/icon-calendar.svg rename to backend/src/static/admin/img/icon-calendar.svg diff --git a/src/static/admin/img/icon-changelink.svg b/backend/src/static/admin/img/icon-changelink.svg similarity index 100% rename from src/static/admin/img/icon-changelink.svg rename to backend/src/static/admin/img/icon-changelink.svg diff --git a/src/static/admin/img/icon-clock.svg b/backend/src/static/admin/img/icon-clock.svg similarity index 100% rename from src/static/admin/img/icon-clock.svg rename to backend/src/static/admin/img/icon-clock.svg diff --git a/src/static/admin/img/icon-deletelink.svg b/backend/src/static/admin/img/icon-deletelink.svg similarity index 100% rename from src/static/admin/img/icon-deletelink.svg rename to backend/src/static/admin/img/icon-deletelink.svg diff --git a/src/static/admin/img/icon-no.svg b/backend/src/static/admin/img/icon-no.svg similarity index 100% rename from src/static/admin/img/icon-no.svg rename to backend/src/static/admin/img/icon-no.svg diff --git a/src/static/admin/img/icon-unknown-alt.svg b/backend/src/static/admin/img/icon-unknown-alt.svg similarity index 100% rename from src/static/admin/img/icon-unknown-alt.svg rename to backend/src/static/admin/img/icon-unknown-alt.svg diff --git a/src/static/admin/img/icon-unknown.svg b/backend/src/static/admin/img/icon-unknown.svg similarity index 100% rename from src/static/admin/img/icon-unknown.svg rename to backend/src/static/admin/img/icon-unknown.svg diff --git a/src/static/admin/img/icon-viewlink.svg b/backend/src/static/admin/img/icon-viewlink.svg similarity index 100% rename from src/static/admin/img/icon-viewlink.svg rename to backend/src/static/admin/img/icon-viewlink.svg diff --git a/src/static/admin/img/icon-yes.svg b/backend/src/static/admin/img/icon-yes.svg similarity index 100% rename from src/static/admin/img/icon-yes.svg rename to backend/src/static/admin/img/icon-yes.svg diff --git a/src/static/admin/img/inline-delete.svg b/backend/src/static/admin/img/inline-delete.svg similarity index 100% rename from src/static/admin/img/inline-delete.svg rename to backend/src/static/admin/img/inline-delete.svg diff --git a/src/static/admin/img/search.svg b/backend/src/static/admin/img/search.svg similarity index 100% rename from src/static/admin/img/search.svg rename to backend/src/static/admin/img/search.svg diff --git a/src/static/admin/img/selector-icons.svg b/backend/src/static/admin/img/selector-icons.svg similarity index 100% rename from src/static/admin/img/selector-icons.svg rename to backend/src/static/admin/img/selector-icons.svg diff --git a/src/static/admin/img/sorting-icons.svg b/backend/src/static/admin/img/sorting-icons.svg similarity index 100% rename from src/static/admin/img/sorting-icons.svg rename to backend/src/static/admin/img/sorting-icons.svg diff --git a/src/static/admin/img/tooltag-add.svg b/backend/src/static/admin/img/tooltag-add.svg similarity index 100% rename from src/static/admin/img/tooltag-add.svg rename to backend/src/static/admin/img/tooltag-add.svg diff --git a/src/static/admin/img/tooltag-arrowright.svg b/backend/src/static/admin/img/tooltag-arrowright.svg similarity index 100% rename from src/static/admin/img/tooltag-arrowright.svg rename to backend/src/static/admin/img/tooltag-arrowright.svg diff --git a/src/static/admin/js/SelectBox.js b/backend/src/static/admin/js/SelectBox.js similarity index 100% rename from src/static/admin/js/SelectBox.js rename to backend/src/static/admin/js/SelectBox.js diff --git a/src/static/admin/js/SelectFilter2.js b/backend/src/static/admin/js/SelectFilter2.js similarity index 100% rename from src/static/admin/js/SelectFilter2.js rename to backend/src/static/admin/js/SelectFilter2.js diff --git a/src/static/admin/js/actions.js b/backend/src/static/admin/js/actions.js similarity index 100% rename from src/static/admin/js/actions.js rename to backend/src/static/admin/js/actions.js diff --git a/src/static/admin/js/actions.min.js b/backend/src/static/admin/js/actions.min.js similarity index 100% rename from src/static/admin/js/actions.min.js rename to backend/src/static/admin/js/actions.min.js diff --git a/src/static/admin/js/admin/DateTimeShortcuts.js b/backend/src/static/admin/js/admin/DateTimeShortcuts.js similarity index 100% rename from src/static/admin/js/admin/DateTimeShortcuts.js rename to backend/src/static/admin/js/admin/DateTimeShortcuts.js diff --git a/src/static/admin/js/admin/RelatedObjectLookups.js b/backend/src/static/admin/js/admin/RelatedObjectLookups.js similarity index 100% rename from src/static/admin/js/admin/RelatedObjectLookups.js rename to backend/src/static/admin/js/admin/RelatedObjectLookups.js diff --git a/src/static/admin/js/autocomplete.js b/backend/src/static/admin/js/autocomplete.js similarity index 100% rename from src/static/admin/js/autocomplete.js rename to backend/src/static/admin/js/autocomplete.js diff --git a/src/static/admin/js/calendar.js b/backend/src/static/admin/js/calendar.js similarity index 100% rename from src/static/admin/js/calendar.js rename to backend/src/static/admin/js/calendar.js diff --git a/src/static/admin/js/cancel.js b/backend/src/static/admin/js/cancel.js similarity index 100% rename from src/static/admin/js/cancel.js rename to backend/src/static/admin/js/cancel.js diff --git a/src/static/admin/js/change_form.js b/backend/src/static/admin/js/change_form.js similarity index 100% rename from src/static/admin/js/change_form.js rename to backend/src/static/admin/js/change_form.js diff --git a/src/static/admin/js/collapse.js b/backend/src/static/admin/js/collapse.js similarity index 100% rename from src/static/admin/js/collapse.js rename to backend/src/static/admin/js/collapse.js diff --git a/src/static/admin/js/collapse.min.js b/backend/src/static/admin/js/collapse.min.js similarity index 100% rename from src/static/admin/js/collapse.min.js rename to backend/src/static/admin/js/collapse.min.js diff --git a/src/static/admin/js/core.js b/backend/src/static/admin/js/core.js similarity index 100% rename from src/static/admin/js/core.js rename to backend/src/static/admin/js/core.js diff --git a/src/static/admin/js/inlines.js b/backend/src/static/admin/js/inlines.js similarity index 100% rename from src/static/admin/js/inlines.js rename to backend/src/static/admin/js/inlines.js diff --git a/src/static/admin/js/inlines.min.js b/backend/src/static/admin/js/inlines.min.js similarity index 100% rename from src/static/admin/js/inlines.min.js rename to backend/src/static/admin/js/inlines.min.js diff --git a/src/static/admin/js/jquery.init.js b/backend/src/static/admin/js/jquery.init.js similarity index 100% rename from src/static/admin/js/jquery.init.js rename to backend/src/static/admin/js/jquery.init.js diff --git a/src/static/admin/js/popup_response.js b/backend/src/static/admin/js/popup_response.js similarity index 100% rename from src/static/admin/js/popup_response.js rename to backend/src/static/admin/js/popup_response.js diff --git a/src/static/admin/js/prepopulate.js b/backend/src/static/admin/js/prepopulate.js similarity index 100% rename from src/static/admin/js/prepopulate.js rename to backend/src/static/admin/js/prepopulate.js diff --git a/src/static/admin/js/prepopulate.min.js b/backend/src/static/admin/js/prepopulate.min.js similarity index 100% rename from src/static/admin/js/prepopulate.min.js rename to backend/src/static/admin/js/prepopulate.min.js diff --git a/src/static/admin/js/prepopulate_init.js b/backend/src/static/admin/js/prepopulate_init.js similarity index 100% rename from src/static/admin/js/prepopulate_init.js rename to backend/src/static/admin/js/prepopulate_init.js diff --git a/src/static/admin/js/timeparse.js b/backend/src/static/admin/js/timeparse.js similarity index 100% rename from src/static/admin/js/timeparse.js rename to backend/src/static/admin/js/timeparse.js diff --git a/src/static/admin/js/urlify.js b/backend/src/static/admin/js/urlify.js similarity index 100% rename from src/static/admin/js/urlify.js rename to backend/src/static/admin/js/urlify.js diff --git a/src/static/admin/js/vendor/jquery/LICENSE.txt b/backend/src/static/admin/js/vendor/jquery/LICENSE.txt similarity index 100% rename from src/static/admin/js/vendor/jquery/LICENSE.txt rename to backend/src/static/admin/js/vendor/jquery/LICENSE.txt diff --git a/src/static/admin/js/vendor/jquery/jquery.js b/backend/src/static/admin/js/vendor/jquery/jquery.js similarity index 100% rename from src/static/admin/js/vendor/jquery/jquery.js rename to backend/src/static/admin/js/vendor/jquery/jquery.js diff --git a/src/static/admin/js/vendor/jquery/jquery.min.js b/backend/src/static/admin/js/vendor/jquery/jquery.min.js similarity index 100% rename from src/static/admin/js/vendor/jquery/jquery.min.js rename to backend/src/static/admin/js/vendor/jquery/jquery.min.js diff --git a/src/static/admin/js/vendor/select2/LICENSE.md b/backend/src/static/admin/js/vendor/select2/LICENSE.md similarity index 100% rename from src/static/admin/js/vendor/select2/LICENSE.md rename to backend/src/static/admin/js/vendor/select2/LICENSE.md diff --git a/src/static/admin/js/vendor/select2/i18n/ar.js b/backend/src/static/admin/js/vendor/select2/i18n/ar.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ar.js rename to backend/src/static/admin/js/vendor/select2/i18n/ar.js diff --git a/src/static/admin/js/vendor/select2/i18n/az.js b/backend/src/static/admin/js/vendor/select2/i18n/az.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/az.js rename to backend/src/static/admin/js/vendor/select2/i18n/az.js diff --git a/src/static/admin/js/vendor/select2/i18n/bg.js b/backend/src/static/admin/js/vendor/select2/i18n/bg.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/bg.js rename to backend/src/static/admin/js/vendor/select2/i18n/bg.js diff --git a/src/static/admin/js/vendor/select2/i18n/ca.js b/backend/src/static/admin/js/vendor/select2/i18n/ca.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ca.js rename to backend/src/static/admin/js/vendor/select2/i18n/ca.js diff --git a/src/static/admin/js/vendor/select2/i18n/cs.js b/backend/src/static/admin/js/vendor/select2/i18n/cs.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/cs.js rename to backend/src/static/admin/js/vendor/select2/i18n/cs.js diff --git a/src/static/admin/js/vendor/select2/i18n/da.js b/backend/src/static/admin/js/vendor/select2/i18n/da.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/da.js rename to backend/src/static/admin/js/vendor/select2/i18n/da.js diff --git a/src/static/admin/js/vendor/select2/i18n/de.js b/backend/src/static/admin/js/vendor/select2/i18n/de.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/de.js rename to backend/src/static/admin/js/vendor/select2/i18n/de.js diff --git a/src/static/admin/js/vendor/select2/i18n/el.js b/backend/src/static/admin/js/vendor/select2/i18n/el.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/el.js rename to backend/src/static/admin/js/vendor/select2/i18n/el.js diff --git a/src/static/admin/js/vendor/select2/i18n/en.js b/backend/src/static/admin/js/vendor/select2/i18n/en.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/en.js rename to backend/src/static/admin/js/vendor/select2/i18n/en.js diff --git a/src/static/admin/js/vendor/select2/i18n/es.js b/backend/src/static/admin/js/vendor/select2/i18n/es.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/es.js rename to backend/src/static/admin/js/vendor/select2/i18n/es.js diff --git a/src/static/admin/js/vendor/select2/i18n/et.js b/backend/src/static/admin/js/vendor/select2/i18n/et.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/et.js rename to backend/src/static/admin/js/vendor/select2/i18n/et.js diff --git a/src/static/admin/js/vendor/select2/i18n/eu.js b/backend/src/static/admin/js/vendor/select2/i18n/eu.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/eu.js rename to backend/src/static/admin/js/vendor/select2/i18n/eu.js diff --git a/src/static/admin/js/vendor/select2/i18n/fa.js b/backend/src/static/admin/js/vendor/select2/i18n/fa.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/fa.js rename to backend/src/static/admin/js/vendor/select2/i18n/fa.js diff --git a/src/static/admin/js/vendor/select2/i18n/fi.js b/backend/src/static/admin/js/vendor/select2/i18n/fi.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/fi.js rename to backend/src/static/admin/js/vendor/select2/i18n/fi.js diff --git a/src/static/admin/js/vendor/select2/i18n/fr.js b/backend/src/static/admin/js/vendor/select2/i18n/fr.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/fr.js rename to backend/src/static/admin/js/vendor/select2/i18n/fr.js diff --git a/src/static/admin/js/vendor/select2/i18n/gl.js b/backend/src/static/admin/js/vendor/select2/i18n/gl.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/gl.js rename to backend/src/static/admin/js/vendor/select2/i18n/gl.js diff --git a/src/static/admin/js/vendor/select2/i18n/he.js b/backend/src/static/admin/js/vendor/select2/i18n/he.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/he.js rename to backend/src/static/admin/js/vendor/select2/i18n/he.js diff --git a/src/static/admin/js/vendor/select2/i18n/hi.js b/backend/src/static/admin/js/vendor/select2/i18n/hi.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/hi.js rename to backend/src/static/admin/js/vendor/select2/i18n/hi.js diff --git a/src/static/admin/js/vendor/select2/i18n/hr.js b/backend/src/static/admin/js/vendor/select2/i18n/hr.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/hr.js rename to backend/src/static/admin/js/vendor/select2/i18n/hr.js diff --git a/src/static/admin/js/vendor/select2/i18n/hu.js b/backend/src/static/admin/js/vendor/select2/i18n/hu.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/hu.js rename to backend/src/static/admin/js/vendor/select2/i18n/hu.js diff --git a/src/static/admin/js/vendor/select2/i18n/id.js b/backend/src/static/admin/js/vendor/select2/i18n/id.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/id.js rename to backend/src/static/admin/js/vendor/select2/i18n/id.js diff --git a/src/static/admin/js/vendor/select2/i18n/is.js b/backend/src/static/admin/js/vendor/select2/i18n/is.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/is.js rename to backend/src/static/admin/js/vendor/select2/i18n/is.js diff --git a/src/static/admin/js/vendor/select2/i18n/it.js b/backend/src/static/admin/js/vendor/select2/i18n/it.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/it.js rename to backend/src/static/admin/js/vendor/select2/i18n/it.js diff --git a/src/static/admin/js/vendor/select2/i18n/ja.js b/backend/src/static/admin/js/vendor/select2/i18n/ja.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ja.js rename to backend/src/static/admin/js/vendor/select2/i18n/ja.js diff --git a/src/static/admin/js/vendor/select2/i18n/km.js b/backend/src/static/admin/js/vendor/select2/i18n/km.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/km.js rename to backend/src/static/admin/js/vendor/select2/i18n/km.js diff --git a/src/static/admin/js/vendor/select2/i18n/ko.js b/backend/src/static/admin/js/vendor/select2/i18n/ko.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ko.js rename to backend/src/static/admin/js/vendor/select2/i18n/ko.js diff --git a/src/static/admin/js/vendor/select2/i18n/lt.js b/backend/src/static/admin/js/vendor/select2/i18n/lt.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/lt.js rename to backend/src/static/admin/js/vendor/select2/i18n/lt.js diff --git a/src/static/admin/js/vendor/select2/i18n/lv.js b/backend/src/static/admin/js/vendor/select2/i18n/lv.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/lv.js rename to backend/src/static/admin/js/vendor/select2/i18n/lv.js diff --git a/src/static/admin/js/vendor/select2/i18n/mk.js b/backend/src/static/admin/js/vendor/select2/i18n/mk.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/mk.js rename to backend/src/static/admin/js/vendor/select2/i18n/mk.js diff --git a/src/static/admin/js/vendor/select2/i18n/ms.js b/backend/src/static/admin/js/vendor/select2/i18n/ms.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ms.js rename to backend/src/static/admin/js/vendor/select2/i18n/ms.js diff --git a/src/static/admin/js/vendor/select2/i18n/nb.js b/backend/src/static/admin/js/vendor/select2/i18n/nb.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/nb.js rename to backend/src/static/admin/js/vendor/select2/i18n/nb.js diff --git a/src/static/admin/js/vendor/select2/i18n/nl.js b/backend/src/static/admin/js/vendor/select2/i18n/nl.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/nl.js rename to backend/src/static/admin/js/vendor/select2/i18n/nl.js diff --git a/src/static/admin/js/vendor/select2/i18n/pl.js b/backend/src/static/admin/js/vendor/select2/i18n/pl.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/pl.js rename to backend/src/static/admin/js/vendor/select2/i18n/pl.js diff --git a/src/static/admin/js/vendor/select2/i18n/pt-BR.js b/backend/src/static/admin/js/vendor/select2/i18n/pt-BR.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/pt-BR.js rename to backend/src/static/admin/js/vendor/select2/i18n/pt-BR.js diff --git a/src/static/admin/js/vendor/select2/i18n/pt.js b/backend/src/static/admin/js/vendor/select2/i18n/pt.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/pt.js rename to backend/src/static/admin/js/vendor/select2/i18n/pt.js diff --git a/src/static/admin/js/vendor/select2/i18n/ro.js b/backend/src/static/admin/js/vendor/select2/i18n/ro.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ro.js rename to backend/src/static/admin/js/vendor/select2/i18n/ro.js diff --git a/src/static/admin/js/vendor/select2/i18n/ru.js b/backend/src/static/admin/js/vendor/select2/i18n/ru.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/ru.js rename to backend/src/static/admin/js/vendor/select2/i18n/ru.js diff --git a/src/static/admin/js/vendor/select2/i18n/sk.js b/backend/src/static/admin/js/vendor/select2/i18n/sk.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/sk.js rename to backend/src/static/admin/js/vendor/select2/i18n/sk.js diff --git a/src/static/admin/js/vendor/select2/i18n/sr-Cyrl.js b/backend/src/static/admin/js/vendor/select2/i18n/sr-Cyrl.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/sr-Cyrl.js rename to backend/src/static/admin/js/vendor/select2/i18n/sr-Cyrl.js diff --git a/src/static/admin/js/vendor/select2/i18n/sr.js b/backend/src/static/admin/js/vendor/select2/i18n/sr.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/sr.js rename to backend/src/static/admin/js/vendor/select2/i18n/sr.js diff --git a/src/static/admin/js/vendor/select2/i18n/sv.js b/backend/src/static/admin/js/vendor/select2/i18n/sv.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/sv.js rename to backend/src/static/admin/js/vendor/select2/i18n/sv.js diff --git a/src/static/admin/js/vendor/select2/i18n/th.js b/backend/src/static/admin/js/vendor/select2/i18n/th.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/th.js rename to backend/src/static/admin/js/vendor/select2/i18n/th.js diff --git a/src/static/admin/js/vendor/select2/i18n/tr.js b/backend/src/static/admin/js/vendor/select2/i18n/tr.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/tr.js rename to backend/src/static/admin/js/vendor/select2/i18n/tr.js diff --git a/src/static/admin/js/vendor/select2/i18n/uk.js b/backend/src/static/admin/js/vendor/select2/i18n/uk.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/uk.js rename to backend/src/static/admin/js/vendor/select2/i18n/uk.js diff --git a/src/static/admin/js/vendor/select2/i18n/vi.js b/backend/src/static/admin/js/vendor/select2/i18n/vi.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/vi.js rename to backend/src/static/admin/js/vendor/select2/i18n/vi.js diff --git a/src/static/admin/js/vendor/select2/i18n/zh-CN.js b/backend/src/static/admin/js/vendor/select2/i18n/zh-CN.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/zh-CN.js rename to backend/src/static/admin/js/vendor/select2/i18n/zh-CN.js diff --git a/src/static/admin/js/vendor/select2/i18n/zh-TW.js b/backend/src/static/admin/js/vendor/select2/i18n/zh-TW.js similarity index 100% rename from src/static/admin/js/vendor/select2/i18n/zh-TW.js rename to backend/src/static/admin/js/vendor/select2/i18n/zh-TW.js diff --git a/src/static/admin/js/vendor/select2/select2.full.js b/backend/src/static/admin/js/vendor/select2/select2.full.js similarity index 100% rename from src/static/admin/js/vendor/select2/select2.full.js rename to backend/src/static/admin/js/vendor/select2/select2.full.js diff --git a/src/static/admin/js/vendor/select2/select2.full.min.js b/backend/src/static/admin/js/vendor/select2/select2.full.min.js similarity index 100% rename from src/static/admin/js/vendor/select2/select2.full.min.js rename to backend/src/static/admin/js/vendor/select2/select2.full.min.js diff --git a/src/static/admin/js/vendor/xregexp/LICENSE.txt b/backend/src/static/admin/js/vendor/xregexp/LICENSE.txt similarity index 100% rename from src/static/admin/js/vendor/xregexp/LICENSE.txt rename to backend/src/static/admin/js/vendor/xregexp/LICENSE.txt diff --git a/src/static/admin/js/vendor/xregexp/xregexp.js b/backend/src/static/admin/js/vendor/xregexp/xregexp.js similarity index 100% rename from src/static/admin/js/vendor/xregexp/xregexp.js rename to backend/src/static/admin/js/vendor/xregexp/xregexp.js diff --git a/src/static/admin/js/vendor/xregexp/xregexp.min.js b/backend/src/static/admin/js/vendor/xregexp/xregexp.min.js similarity index 100% rename from src/static/admin/js/vendor/xregexp/xregexp.min.js rename to backend/src/static/admin/js/vendor/xregexp/xregexp.min.js diff --git a/src/static/css/floating_labels.css b/backend/src/static/css/floating_labels.css similarity index 100% rename from src/static/css/floating_labels.css rename to backend/src/static/css/floating_labels.css diff --git a/src/static/images/gitea-192.png b/backend/src/static/images/gitea-192.png similarity index 100% rename from src/static/images/gitea-192.png rename to backend/src/static/images/gitea-192.png diff --git a/src/static/images/lama.svg b/backend/src/static/images/lama.svg similarity index 97% rename from src/static/images/lama.svg rename to backend/src/static/images/lama.svg index 91ab52c..a64296c 100644 --- a/src/static/images/lama.svg +++ b/backend/src/static/images/lama.svg @@ -1,68 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/static/js/main.js b/backend/src/static/js/main.js similarity index 100% rename from src/static/js/main.js rename to backend/src/static/js/main.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.bootstrap4.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.foundation.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.jqueryui.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/dataTables.semanticui.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.min.css b/backend/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.min.css similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.min.css rename to backend/src/static/libs/DataTables/DataTables-1.10.18/css/jquery.dataTables.min.css diff --git a/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc.png b/backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc.png similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc.png rename to backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc.png diff --git a/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc_disabled.png b/backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc_disabled.png similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc_disabled.png rename to backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_asc_disabled.png diff --git a/src/static/libs/DataTables/DataTables-1.10.18/images/sort_both.png b/backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_both.png similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/images/sort_both.png rename to backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_both.png diff --git a/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc.png b/backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc.png similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc.png rename to backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc.png diff --git a/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc_disabled.png b/backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc_disabled.png similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc_disabled.png rename to backend/src/static/libs/DataTables/DataTables-1.10.18/images/sort_desc_disabled.png diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap.min.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.bootstrap4.min.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.foundation.min.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.jqueryui.min.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/dataTables.semanticui.min.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.js diff --git a/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.min.js b/backend/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.min.js similarity index 100% rename from src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.min.js rename to backend/src/static/libs/DataTables/DataTables-1.10.18/js/jquery.dataTables.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.bootstrap4.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.dataTables.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.foundation.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.jqueryui.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.min.css b/backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.min.css similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.min.css rename to backend/src/static/libs/DataTables/Responsive-2.2.2/css/responsive.semanticui.min.css diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/dataTables.responsive.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.bootstrap4.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.foundation.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.jqueryui.min.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.js diff --git a/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.min.js b/backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.min.js similarity index 100% rename from src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.min.js rename to backend/src/static/libs/DataTables/Responsive-2.2.2/js/responsive.semanticui.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.bootstrap4.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.dataTables.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.foundation.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.jqueryui.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.min.css b/backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.min.css similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.min.css rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/css/rowReorder.semanticui.min.css diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/dataTables.rowReorder.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.bootstrap4.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.dataTables.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.dataTables.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.dataTables.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.dataTables.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.foundation.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.jqueryui.min.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.js diff --git a/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.min.js b/backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.min.js similarity index 100% rename from src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.min.js rename to backend/src/static/libs/DataTables/RowReorder-1.2.4/js/rowReorder.semanticui.min.js diff --git a/src/static/libs/DataTables/datatables.css b/backend/src/static/libs/DataTables/datatables.css similarity index 100% rename from src/static/libs/DataTables/datatables.css rename to backend/src/static/libs/DataTables/datatables.css diff --git a/src/static/libs/DataTables/datatables.js b/backend/src/static/libs/DataTables/datatables.js similarity index 100% rename from src/static/libs/DataTables/datatables.js rename to backend/src/static/libs/DataTables/datatables.js diff --git a/src/static/libs/DataTables/datatables.min.css b/backend/src/static/libs/DataTables/datatables.min.css similarity index 100% rename from src/static/libs/DataTables/datatables.min.css rename to backend/src/static/libs/DataTables/datatables.min.css diff --git a/src/static/libs/DataTables/datatables.min.js b/backend/src/static/libs/DataTables/datatables.min.js similarity index 100% rename from src/static/libs/DataTables/datatables.min.js rename to backend/src/static/libs/DataTables/datatables.min.js diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css diff --git a/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css.map b/backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/css/bootstrap.min.css.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js.map b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.js.map diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js diff --git a/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js.map b/backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js.map similarity index 100% rename from src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js.map rename to backend/src/static/libs/bootstrap-4.3.1-dist/js/bootstrap.min.js.map diff --git a/src/static/libs/fontawesome-free-5.8.2-web/LICENSE.txt b/backend/src/static/libs/fontawesome-free-5.8.2-web/LICENSE.txt similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/LICENSE.txt rename to backend/src/static/libs/fontawesome-free-5.8.2-web/LICENSE.txt diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/all.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/all.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/all.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/all.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/all.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/all.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/all.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/all.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/brands.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/brands.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/brands.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/brands.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/brands.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/brands.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/brands.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/brands.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/fontawesome.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/regular.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/regular.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/regular.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/regular.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/regular.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/regular.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/regular.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/regular.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/solid.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/solid.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/solid.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/solid.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/solid.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/solid.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/solid.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/solid.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/svg-with-js.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.min.css b/backend/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.min.css similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.min.css rename to backend/src/static/libs/fontawesome-free-5.8.2-web/css/v4-shims.min.css diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/all.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/all.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/all.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/all.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/all.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/all.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/all.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/all.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/brands.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/brands.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/brands.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/brands.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/brands.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/brands.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/brands.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/brands.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/fontawesome.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/regular.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/regular.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/regular.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/regular.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/regular.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/regular.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/regular.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/regular.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/solid.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/solid.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/solid.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/solid.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/solid.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/solid.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/solid.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/solid.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.min.js b/backend/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.min.js similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.min.js rename to backend/src/static/libs/fontawesome-free-5.8.2-web/js/v4-shims.min.js diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_animated.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_animated.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_animated.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_animated.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_bordered-pulled.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_bordered-pulled.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_bordered-pulled.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_bordered-pulled.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_core.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_core.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_core.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_core.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_fixed-width.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_fixed-width.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_fixed-width.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_fixed-width.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_icons.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_icons.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_icons.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_icons.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_larger.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_larger.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_larger.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_larger.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_list.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_list.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_list.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_list.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_mixins.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_mixins.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_mixins.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_mixins.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_rotated-flipped.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_rotated-flipped.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_rotated-flipped.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_rotated-flipped.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_screen-reader.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_screen-reader.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_screen-reader.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_screen-reader.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_shims.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_shims.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_shims.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_shims.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_stacked.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_stacked.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_stacked.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_stacked.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/_variables.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/_variables.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/_variables.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/_variables.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/brands.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/brands.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/brands.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/brands.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/fontawesome.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/fontawesome.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/fontawesome.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/fontawesome.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/regular.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/regular.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/regular.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/regular.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/solid.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/solid.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/solid.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/solid.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/less/v4-shims.less b/backend/src/static/libs/fontawesome-free-5.8.2-web/less/v4-shims.less similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/less/v4-shims.less rename to backend/src/static/libs/fontawesome-free-5.8.2-web/less/v4-shims.less diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/categories.yml b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/categories.yml similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/categories.yml rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/categories.yml diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.json b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.json similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.json rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.json diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.yml b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.yml similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.yml rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/icons.yml diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.json b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.json similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.json rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.json diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.yml b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.yml similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.yml rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/shims.yml diff --git a/src/static/libs/fontawesome-free-5.8.2-web/metadata/sponsors.yml b/backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/sponsors.yml similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/metadata/sponsors.yml rename to backend/src/static/libs/fontawesome-free-5.8.2-web/metadata/sponsors.yml diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_animated.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_animated.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_animated.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_animated.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_bordered-pulled.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_bordered-pulled.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_bordered-pulled.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_bordered-pulled.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_core.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_core.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_core.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_core.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_fixed-width.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_fixed-width.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_fixed-width.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_fixed-width.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_icons.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_icons.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_icons.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_icons.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_larger.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_larger.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_larger.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_larger.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_list.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_list.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_list.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_list.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_mixins.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_mixins.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_mixins.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_mixins.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_rotated-flipped.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_rotated-flipped.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_rotated-flipped.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_rotated-flipped.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_screen-reader.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_screen-reader.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_screen-reader.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_screen-reader.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_shims.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_shims.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_shims.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_shims.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_stacked.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_stacked.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_stacked.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_stacked.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/_variables.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_variables.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/_variables.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/_variables.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/brands.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/brands.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/brands.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/brands.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/fontawesome.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/fontawesome.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/fontawesome.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/fontawesome.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/regular.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/regular.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/regular.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/regular.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/solid.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/solid.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/solid.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/solid.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/scss/v4-shims.scss b/backend/src/static/libs/fontawesome-free-5.8.2-web/scss/v4-shims.scss similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/scss/v4-shims.scss rename to backend/src/static/libs/fontawesome-free-5.8.2-web/scss/v4-shims.scss diff --git a/src/static/libs/fontawesome-free-5.8.2-web/sprites/brands.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/brands.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/sprites/brands.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/brands.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/sprites/regular.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/regular.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/sprites/regular.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/regular.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/sprites/solid.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/solid.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/sprites/solid.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/sprites/solid.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/500px.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/500px.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/500px.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/500px.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accessible-icon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accessible-icon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accessible-icon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accessible-icon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accusoft.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accusoft.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accusoft.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/accusoft.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/acquisitions-incorporated.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/acquisitions-incorporated.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/acquisitions-incorporated.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/acquisitions-incorporated.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adobe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adobe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adobe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adobe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adversal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adversal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adversal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/adversal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/affiliatetheme.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/affiliatetheme.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/affiliatetheme.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/affiliatetheme.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/airbnb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/airbnb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/airbnb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/airbnb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/algolia.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/algolia.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/algolia.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/algolia.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/alipay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/alipay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/alipay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/alipay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon-pay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon-pay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon-pay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon-pay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amazon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amilia.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amilia.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amilia.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/amilia.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/android.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/android.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/android.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/android.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angellist.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angellist.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angellist.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angellist.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angrycreative.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angrycreative.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angrycreative.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angrycreative.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angular.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angular.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angular.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/angular.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store-ios.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store-ios.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store-ios.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store-ios.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/app-store.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple-pay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple-pay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple-pay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple-pay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/apple.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/artstation.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/artstation.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/artstation.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/artstation.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/asymmetrik.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/asymmetrik.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/asymmetrik.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/asymmetrik.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/atlassian.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/atlassian.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/atlassian.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/atlassian.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/audible.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/audible.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/audible.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/audible.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/autoprefixer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/autoprefixer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/autoprefixer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/autoprefixer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/avianex.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/avianex.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/avianex.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/avianex.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aviato.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aviato.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aviato.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aviato.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aws.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aws.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aws.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/aws.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bandcamp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bandcamp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bandcamp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bandcamp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/battle-net.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/battle-net.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/battle-net.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/battle-net.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/behance.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bimobject.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bimobject.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bimobject.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bimobject.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitbucket.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitbucket.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitbucket.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitbucket.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitcoin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitcoin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitcoin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bitcoin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bity.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bity.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bity.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bity.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/black-tie.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/black-tie.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/black-tie.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/black-tie.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blackberry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blackberry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blackberry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blackberry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger-b.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger-b.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger-b.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger-b.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/blogger.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth-b.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth-b.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth-b.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth-b.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bluetooth.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bootstrap.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bootstrap.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bootstrap.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/bootstrap.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/btc.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/btc.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/btc.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/btc.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buffer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buffer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buffer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buffer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buromobelexperte.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buromobelexperte.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buromobelexperte.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buromobelexperte.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buysellads.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buysellads.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buysellads.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/buysellads.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/canadian-maple-leaf.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/canadian-maple-leaf.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/canadian-maple-leaf.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/canadian-maple-leaf.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amazon-pay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amazon-pay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amazon-pay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amazon-pay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amex.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amex.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amex.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-amex.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-apple-pay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-apple-pay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-apple-pay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-apple-pay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-diners-club.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-diners-club.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-diners-club.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-diners-club.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-discover.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-discover.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-discover.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-discover.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-jcb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-jcb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-jcb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-jcb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-mastercard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-mastercard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-mastercard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-mastercard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-paypal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-paypal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-paypal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-paypal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-stripe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-stripe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-stripe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-stripe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-visa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-visa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-visa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cc-visa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centercode.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centercode.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centercode.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centercode.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centos.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centos.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centos.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/centos.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chrome.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chrome.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chrome.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chrome.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chromecast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chromecast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chromecast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/chromecast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudscale.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudscale.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudscale.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudscale.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudsmith.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudsmith.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudsmith.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudsmith.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudversify.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudversify.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudversify.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cloudversify.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codepen.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codepen.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codepen.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codepen.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codiepie.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codiepie.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codiepie.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/codiepie.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/confluence.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/confluence.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/confluence.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/confluence.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/connectdevelop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/connectdevelop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/connectdevelop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/connectdevelop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/contao.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/contao.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/contao.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/contao.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cpanel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cpanel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cpanel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cpanel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-by.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-by.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-by.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-by.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-eu.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-eu.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-eu.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-eu.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-jp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-jp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-jp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc-jp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nc.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-nd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-pd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-remix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-remix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-remix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-remix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-sampling.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-share.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-share.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-share.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-share.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-zero.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-zero.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-zero.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons-zero.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/creative-commons.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/critical-role.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/critical-role.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/critical-role.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/critical-role.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/css3.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cuttlefish.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cuttlefish.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cuttlefish.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/cuttlefish.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d-beyond.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d-beyond.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d-beyond.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d-beyond.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/d-and-d.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dashcube.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dashcube.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dashcube.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dashcube.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/delicious.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/delicious.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/delicious.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/delicious.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deploydog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deploydog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deploydog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deploydog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deskpro.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deskpro.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deskpro.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deskpro.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dev.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dev.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dev.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dev.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deviantart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deviantart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deviantart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/deviantart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dhl.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dhl.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dhl.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dhl.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/diaspora.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/diaspora.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/diaspora.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/diaspora.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digg.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digg.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digg.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digg.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digital-ocean.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digital-ocean.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digital-ocean.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/digital-ocean.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discord.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discord.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discord.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discord.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discourse.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discourse.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discourse.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/discourse.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dochub.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dochub.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dochub.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dochub.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/docker.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/docker.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/docker.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/docker.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/draft2digital.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/draft2digital.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/draft2digital.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/draft2digital.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dribbble.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dropbox.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dropbox.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dropbox.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dropbox.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/drupal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/drupal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/drupal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/drupal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dyalog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dyalog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dyalog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/dyalog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/earlybirds.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/earlybirds.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/earlybirds.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/earlybirds.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ebay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ebay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ebay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ebay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/edge.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/edge.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/edge.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/edge.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/elementor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/elementor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/elementor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/elementor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ello.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ello.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ello.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ello.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ember.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ember.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ember.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ember.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/empire.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/empire.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/empire.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/empire.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/envira.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/envira.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/envira.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/envira.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/erlang.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/erlang.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/erlang.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/erlang.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ethereum.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ethereum.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ethereum.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ethereum.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/etsy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/etsy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/etsy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/etsy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/evernote.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/evernote.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/evernote.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/evernote.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/expeditedssl.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/expeditedssl.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/expeditedssl.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/expeditedssl.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-f.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-f.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-f.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-f.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-messenger.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-messenger.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-messenger.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-messenger.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/facebook.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fantasy-flight-games.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fantasy-flight-games.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fantasy-flight-games.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fantasy-flight-games.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedex.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedex.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedex.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedex.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedora.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedora.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedora.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fedora.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/figma.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/figma.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/figma.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/figma.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firefox.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firefox.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firefox.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firefox.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/first-order.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firstdraft.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firstdraft.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firstdraft.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/firstdraft.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flickr.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flickr.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flickr.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flickr.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flipboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flipboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flipboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/flipboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fly.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fly.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fly.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fly.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-flag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-flag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-flag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-flag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-logo-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-logo-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-logo-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome-logo-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/font-awesome.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons-fi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons-fi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons-fi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons-fi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fonticons.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fort-awesome.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/forumbee.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/forumbee.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/forumbee.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/forumbee.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/foursquare.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/foursquare.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/foursquare.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/foursquare.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/free-code-camp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/free-code-camp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/free-code-camp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/free-code-camp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/freebsd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/freebsd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/freebsd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/freebsd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fulcrum.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fulcrum.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fulcrum.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/fulcrum.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-republic.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-republic.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-republic.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-republic.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-senate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-senate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-senate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/galactic-senate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/get-pocket.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/get-pocket.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/get-pocket.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/get-pocket.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gg.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/git.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/github.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitkraken.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitkraken.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitkraken.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitkraken.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitlab.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitlab.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitlab.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitlab.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gitter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide-g.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide-g.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide-g.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide-g.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/glide.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gofore.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gofore.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gofore.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gofore.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads-g.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads-g.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads-g.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads-g.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/goodreads.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-drive.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-drive.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-drive.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-drive.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-play.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-play.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-play.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-play.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-g.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-g.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-g.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-g.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-wallet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-wallet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-wallet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google-wallet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/google.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gratipay.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gratipay.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gratipay.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gratipay.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grav.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grav.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grav.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grav.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gripfire.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gripfire.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gripfire.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gripfire.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grunt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grunt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grunt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/grunt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gulp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gulp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gulp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/gulp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hacker-news.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hackerrank.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hackerrank.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hackerrank.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hackerrank.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hips.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hips.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hips.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hips.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hire-a-helper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hire-a-helper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hire-a-helper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hire-a-helper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hooli.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hooli.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hooli.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hooli.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hornbill.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hornbill.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hornbill.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hornbill.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hotjar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hotjar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hotjar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hotjar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/houzz.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/houzz.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/houzz.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/houzz.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/html5.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/html5.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/html5.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/html5.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hubspot.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hubspot.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hubspot.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/hubspot.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/imdb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/imdb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/imdb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/imdb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/instagram.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/instagram.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/instagram.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/instagram.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/intercom.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/intercom.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/intercom.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/intercom.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/internet-explorer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/internet-explorer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/internet-explorer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/internet-explorer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/invision.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/invision.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/invision.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/invision.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ioxhost.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ioxhost.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ioxhost.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ioxhost.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itch-io.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itch-io.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itch-io.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itch-io.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes-note.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes-note.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes-note.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes-note.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/itunes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/java.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/java.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/java.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/java.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jedi-order.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jedi-order.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jedi-order.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jedi-order.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jenkins.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jenkins.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jenkins.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jenkins.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jira.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jira.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jira.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jira.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joget.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joget.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joget.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joget.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joomla.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joomla.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joomla.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/joomla.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/js.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jsfiddle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jsfiddle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jsfiddle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/jsfiddle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kaggle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kaggle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kaggle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kaggle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keybase.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keybase.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keybase.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keybase.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keycdn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keycdn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keycdn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/keycdn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter-k.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter-k.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter-k.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter-k.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/kickstarter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/korvue.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/korvue.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/korvue.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/korvue.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/laravel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/laravel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/laravel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/laravel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lastfm.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/leanpub.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/leanpub.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/leanpub.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/leanpub.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/less.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/less.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/less.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/less.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/line.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/line.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/line.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/line.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin-in.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin-in.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin-in.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin-in.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linkedin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linode.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linode.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linode.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linode.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linux.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linux.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linux.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/linux.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lyft.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lyft.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lyft.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/lyft.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/magento.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/magento.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/magento.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/magento.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mailchimp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mailchimp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mailchimp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mailchimp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mandalorian.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mandalorian.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mandalorian.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mandalorian.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/markdown.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/markdown.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/markdown.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/markdown.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mastodon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mastodon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mastodon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mastodon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/maxcdn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/maxcdn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/maxcdn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/maxcdn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medapps.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medapps.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medapps.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medapps.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium-m.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium-m.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium-m.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium-m.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medium.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medrt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medrt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medrt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/medrt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/meetup.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/meetup.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/meetup.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/meetup.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/megaport.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/megaport.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/megaport.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/megaport.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mendeley.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mendeley.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mendeley.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mendeley.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/microsoft.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/microsoft.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/microsoft.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/microsoft.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mixcloud.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mixcloud.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mixcloud.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mixcloud.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mizuni.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mizuni.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mizuni.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/mizuni.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/modx.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/modx.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/modx.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/modx.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/monero.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/monero.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/monero.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/monero.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/napster.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/napster.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/napster.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/napster.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/neos.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/neos.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/neos.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/neos.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nimblr.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nimblr.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nimblr.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nimblr.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nintendo-switch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nintendo-switch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nintendo-switch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nintendo-switch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node-js.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node-js.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node-js.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node-js.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/node.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/npm.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/npm.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/npm.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/npm.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ns8.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ns8.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ns8.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ns8.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nutritionix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nutritionix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nutritionix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/nutritionix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/odnoklassniki.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/old-republic.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/old-republic.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/old-republic.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/old-republic.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opencart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opencart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opencart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opencart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/openid.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/openid.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/openid.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/openid.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opera.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opera.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opera.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/opera.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/optin-monster.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/optin-monster.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/optin-monster.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/optin-monster.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/osi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/osi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/osi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/osi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/page4.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/page4.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/page4.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/page4.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pagelines.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pagelines.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pagelines.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pagelines.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/palfed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/palfed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/palfed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/palfed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/patreon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/patreon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/patreon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/patreon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/paypal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/paypal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/paypal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/paypal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/penny-arcade.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/penny-arcade.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/penny-arcade.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/penny-arcade.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/periscope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/periscope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/periscope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/periscope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phabricator.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phabricator.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phabricator.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phabricator.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-framework.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-framework.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-framework.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-framework.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-squadron.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-squadron.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-squadron.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/phoenix-squadron.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/php.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/php.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/php.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/php.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-hat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-hat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-hat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-hat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-pp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-pp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-pp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper-pp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pied-piper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-p.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-p.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-p.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-p.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pinterest.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/playstation.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/playstation.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/playstation.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/playstation.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/product-hunt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/product-hunt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/product-hunt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/product-hunt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pushed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pushed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pushed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/pushed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/python.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/python.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/python.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/python.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/qq.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/qq.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/qq.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/qq.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quinscape.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quinscape.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quinscape.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quinscape.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quora.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quora.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quora.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/quora.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/r-project.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/r-project.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/r-project.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/r-project.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/raspberry-pi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/raspberry-pi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/raspberry-pi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/raspberry-pi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ravelry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ravelry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ravelry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ravelry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/react.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/react.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/react.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/react.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reacteurope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reacteurope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reacteurope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reacteurope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/readme.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/readme.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/readme.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/readme.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rebel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rebel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rebel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rebel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/red-river.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/red-river.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/red-river.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/red-river.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-alien.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-alien.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-alien.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-alien.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/reddit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/redhat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/redhat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/redhat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/redhat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/renren.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/renren.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/renren.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/renren.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/replyd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/replyd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/replyd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/replyd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/researchgate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/researchgate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/researchgate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/researchgate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/resolving.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/resolving.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/resolving.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/resolving.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rev.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rev.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rev.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rev.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rocketchat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rocketchat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rocketchat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rocketchat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rockrms.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rockrms.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rockrms.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/rockrms.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/safari.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/safari.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/safari.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/safari.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/salesforce.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/salesforce.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/salesforce.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/salesforce.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/schlix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/schlix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/schlix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/schlix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/scribd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/scribd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/scribd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/scribd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/searchengin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/searchengin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/searchengin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/searchengin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellcast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellcast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellcast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellcast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellsy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellsy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellsy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sellsy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/servicestack.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/servicestack.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/servicestack.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/servicestack.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shirtsinbulk.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shirtsinbulk.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shirtsinbulk.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shirtsinbulk.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shopware.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shopware.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shopware.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/shopware.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/simplybuilt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/simplybuilt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/simplybuilt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/simplybuilt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sistrix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sistrix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sistrix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sistrix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sith.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sith.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sith.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sith.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sketch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sketch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sketch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sketch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skyatlas.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skyatlas.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skyatlas.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skyatlas.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skype.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skype.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skype.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/skype.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack-hash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack-hash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack-hash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack-hash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slack.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slideshare.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slideshare.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slideshare.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/slideshare.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-ghost.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-ghost.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-ghost.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-ghost.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/snapchat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/soundcloud.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/soundcloud.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/soundcloud.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/soundcloud.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sourcetree.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sourcetree.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sourcetree.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sourcetree.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speakap.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speakap.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speakap.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speakap.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speaker-deck.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speaker-deck.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speaker-deck.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/speaker-deck.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/spotify.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/spotify.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/spotify.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/spotify.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/squarespace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/squarespace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/squarespace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/squarespace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-exchange.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-exchange.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-exchange.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-exchange.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-overflow.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-overflow.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-overflow.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stack-overflow.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stackpath.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stackpath.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stackpath.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stackpath.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/staylinked.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/staylinked.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/staylinked.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/staylinked.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-symbol.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-symbol.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-symbol.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam-symbol.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/steam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sticker-mule.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sticker-mule.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sticker-mule.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/sticker-mule.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/strava.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/strava.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/strava.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/strava.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe-s.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe-s.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe-s.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe-s.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stripe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/studiovinari.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/studiovinari.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/studiovinari.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/studiovinari.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/stumbleupon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/superpowers.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/superpowers.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/superpowers.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/superpowers.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/supple.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/supple.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/supple.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/supple.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/suse.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/suse.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/suse.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/suse.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/symfony.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/symfony.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/symfony.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/symfony.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/teamspeak.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/teamspeak.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/teamspeak.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/teamspeak.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram-plane.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram-plane.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram-plane.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram-plane.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/telegram.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tencent-weibo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tencent-weibo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tencent-weibo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tencent-weibo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/the-red-yeti.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/the-red-yeti.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/the-red-yeti.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/the-red-yeti.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeco.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeco.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeco.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeco.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeisle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeisle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeisle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/themeisle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/think-peaks.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/think-peaks.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/think-peaks.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/think-peaks.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trade-federation.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trade-federation.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trade-federation.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trade-federation.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trello.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trello.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trello.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/trello.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tripadvisor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tripadvisor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tripadvisor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tripadvisor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/tumblr.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/twitter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/typo3.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/typo3.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/typo3.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/typo3.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uber.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uber.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uber.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uber.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ubuntu.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ubuntu.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ubuntu.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ubuntu.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uikit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uikit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uikit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uikit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uniregistry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uniregistry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uniregistry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/uniregistry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/untappd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/untappd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/untappd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/untappd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ups.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ups.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ups.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ups.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usps.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usps.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usps.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/usps.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ussunnah.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ussunnah.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ussunnah.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/ussunnah.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vaadin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vaadin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vaadin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vaadin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viacoin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viacoin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viacoin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viacoin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viadeo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viber.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viber.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viber.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/viber.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-v.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-v.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-v.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo-v.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vimeo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vine.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vine.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vine.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vine.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vk.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vk.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vk.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vk.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vnv.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vnv.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vnv.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vnv.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vuejs.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vuejs.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vuejs.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/vuejs.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/waze.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/waze.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/waze.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/waze.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weebly.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weebly.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weebly.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weebly.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weibo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weibo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weibo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weibo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weixin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weixin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weixin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/weixin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whatsapp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whmcs.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whmcs.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whmcs.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/whmcs.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wikipedia-w.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wikipedia-w.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wikipedia-w.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wikipedia-w.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/windows.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/windows.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/windows.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/windows.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wix.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wix.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wix.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wix.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wizards-of-the-coast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wizards-of-the-coast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wizards-of-the-coast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wizards-of-the-coast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wolf-pack-battalion.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wolf-pack-battalion.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wolf-pack-battalion.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wolf-pack-battalion.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress-simple.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress-simple.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress-simple.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress-simple.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wordpress.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpbeginner.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpbeginner.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpbeginner.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpbeginner.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpexplorer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpexplorer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpexplorer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpexplorer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpforms.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpforms.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpforms.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpforms.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpressr.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpressr.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpressr.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/wpressr.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xbox.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xbox.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xbox.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xbox.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/xing.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/y-combinator.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/y-combinator.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/y-combinator.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/y-combinator.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yahoo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yahoo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yahoo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yahoo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yammer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yammer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yammer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yammer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex-international.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex-international.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex-international.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex-international.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yandex.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yarn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yarn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yarn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yarn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yelp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yelp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yelp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yelp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yoast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yoast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yoast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/yoast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/youtube.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/zhihu.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/zhihu.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/zhihu.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/brands/zhihu.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-book.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-book.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-book.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-book.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/address-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/angry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/angry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/angry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/angry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/arrow-alt-circle-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bell.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bookmark.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bookmark.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bookmark.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/bookmark.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/building.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/building.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/building.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/building.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-times.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-times.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-times.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar-times.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/calendar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/caret-square-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/chart-bar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/chart-bar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/chart-bar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/chart-bar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/check-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clipboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clipboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clipboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clipboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/clone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/closed-captioning.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/closed-captioning.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/closed-captioning.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/closed-captioning.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-dots.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-dots.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-dots.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment-dots.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comment.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comments.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comments.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comments.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/comments.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/compass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/compass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/compass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/compass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copyright.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copyright.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copyright.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/copyright.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/credit-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/credit-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/credit-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/credit-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dizzy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dizzy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dizzy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dizzy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dot-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dot-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dot-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/dot-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/edit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/edit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/edit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/edit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/envelope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/eye.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-archive.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-archive.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-archive.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-archive.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-audio.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-audio.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-audio.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-audio.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-code.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-code.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-code.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-code.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-excel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-excel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-excel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-excel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-image.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-image.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-image.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-image.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-pdf.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-pdf.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-pdf.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-pdf.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-powerpoint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-powerpoint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-powerpoint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-powerpoint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-video.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-video.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-video.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-video.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-word.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-word.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-word.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file-word.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/file.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flushed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flushed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flushed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/flushed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/folder.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/font-awesome-logo-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/font-awesome-logo-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/font-awesome-logo-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/font-awesome-logo-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/frown.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/futbol.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/futbol.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/futbol.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/futbol.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/gem.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/gem.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/gem.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/gem.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grimace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grimace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grimace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grimace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam-sweat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam-sweat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam-sweat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam-sweat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-hearts.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-hearts.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-hearts.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-hearts.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint-tears.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint-tears.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint-tears.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint-tears.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-stars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-stars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-stars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-stars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tears.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tears.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tears.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tears.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-tongue.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/grin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-lizard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-lizard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-lizard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-lizard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-paper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-paper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-paper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-paper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-peace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-peace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-peace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-peace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-point-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-pointer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-pointer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-pointer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-pointer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-rock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-rock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-rock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-rock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-scissors.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-scissors.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-scissors.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-scissors.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-spock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-spock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-spock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hand-spock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/handshake.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/handshake.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/handshake.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/handshake.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hdd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hdd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hdd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hdd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/heart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/heart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/heart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/heart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hospital.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hospital.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hospital.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hospital.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hourglass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hourglass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hourglass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/hourglass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-badge.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-badge.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-badge.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-badge.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/id-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/image.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/image.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/image.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/image.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/images.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/images.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/images.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/images.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/keyboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/keyboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/keyboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/keyboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-wink-heart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-wink-heart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-wink-heart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss-wink-heart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/kiss.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/laugh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lemon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lemon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lemon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lemon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/life-ring.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/life-ring.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/life-ring.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/life-ring.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lightbulb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lightbulb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lightbulb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/lightbulb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/list-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/list-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/list-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/list-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/map.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/map.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/map.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/map.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-blank.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-blank.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-blank.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-blank.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-rolling-eyes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-rolling-eyes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-rolling-eyes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh-rolling-eyes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/meh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/minus-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/minus-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/minus-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/minus-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/money-bill-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/money-bill-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/money-bill-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/money-bill-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/moon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/moon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/moon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/moon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/newspaper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/newspaper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/newspaper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/newspaper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-group.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-group.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-group.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-group.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-ungroup.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-ungroup.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-ungroup.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/object-ungroup.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/paper-plane.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/paper-plane.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/paper-plane.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/paper-plane.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/pause-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/pause-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/pause-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/pause-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/play-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/play-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/play-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/play-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/plus-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/plus-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/plus-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/plus-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/question-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/question-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/question-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/question-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/registered.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/registered.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/registered.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/registered.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-cry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-cry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-cry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-cry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-tear.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-tear.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-tear.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sad-tear.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/save.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/save.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/save.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/save.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/share-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/share-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/share-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/share-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/smile.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/snowflake.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/snowflake.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/snowflake.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/snowflake.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star-half.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star-half.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star-half.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star-half.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/star.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sticky-note.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sticky-note.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sticky-note.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sticky-note.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/stop-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/stop-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/stop-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/stop-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sun.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sun.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sun.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/sun.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/surprise.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/surprise.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/surprise.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/surprise.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/thumbs-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/times-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/times-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/times-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/times-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/tired.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/tired.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/tired.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/tired.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/trash-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/trash-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/trash-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/trash-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/user.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-close.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-close.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-close.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-close.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-maximize.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-maximize.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-maximize.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-maximize.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-minimize.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-minimize.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-minimize.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-minimize.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-restore.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-restore.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-restore.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/regular/window-restore.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ad.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ad.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ad.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ad.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-book.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-book.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-book.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-book.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/address-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/adjust.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/adjust.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/adjust.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/adjust.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/air-freshener.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/air-freshener.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/air-freshener.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/air-freshener.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-center.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-center.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-center.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-center.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-justify.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-justify.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-justify.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-justify.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/align-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/allergies.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/allergies.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/allergies.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/allergies.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ambulance.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ambulance.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ambulance.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ambulance.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/american-sign-language-interpreting.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/american-sign-language-interpreting.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/american-sign-language-interpreting.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/american-sign-language-interpreting.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/anchor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/anchor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/anchor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/anchor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-double-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angle-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/angry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ankh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ankh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ankh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ankh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/apple-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/apple-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/apple-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/apple-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archive.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archive.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archive.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archive.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archway.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archway.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archway.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/archway.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-alt-circle-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-circle-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrow-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-h.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-h.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-h.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-h.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-v.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-v.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-v.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt-v.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/arrows-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/assistive-listening-systems.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/assistive-listening-systems.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/assistive-listening-systems.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/assistive-listening-systems.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/asterisk.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/asterisk.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/asterisk.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/asterisk.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/at.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/at.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/at.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/at.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atlas.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atlas.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atlas.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atlas.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atom.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atom.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atom.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/atom.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/audio-description.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/audio-description.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/audio-description.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/audio-description.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/award.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/award.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/award.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/award.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby-carriage.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby-carriage.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby-carriage.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby-carriage.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baby.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backspace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backspace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backspace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backspace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/backward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bacon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bacon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bacon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bacon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/balance-scale.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/balance-scale.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/balance-scale.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/balance-scale.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ban.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ban.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ban.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ban.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/band-aid.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/band-aid.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/band-aid.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/band-aid.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/barcode.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/barcode.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/barcode.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/barcode.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baseball-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baseball-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baseball-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/baseball-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/basketball-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/basketball-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/basketball-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/basketball-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bath.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bath.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bath.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bath.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-empty.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-empty.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-empty.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-empty.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-half.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-half.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-half.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-half.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-quarter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-quarter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-quarter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-quarter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-three-quarters.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-three-quarters.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-three-quarters.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/battery-three-quarters.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/beer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/beer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/beer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/beer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bell.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bezier-curve.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bezier-curve.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bezier-curve.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bezier-curve.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bible.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bible.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bible.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bible.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bicycle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bicycle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bicycle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bicycle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/binoculars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/binoculars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/binoculars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/binoculars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/biohazard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/biohazard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/biohazard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/biohazard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/birthday-cake.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/birthday-cake.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/birthday-cake.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/birthday-cake.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender-phone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender-phone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender-phone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender-phone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blender.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blind.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blind.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blind.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blind.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/blog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bold.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bold.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bold.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bold.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bolt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bolt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bolt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bolt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bomb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bomb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bomb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bomb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bong.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bong.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bong.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bong.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-dead.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-dead.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-dead.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-dead.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-reader.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-reader.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-reader.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book-reader.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/book.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bookmark.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bookmark.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bookmark.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bookmark.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bowling-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bowling-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bowling-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bowling-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/box.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/boxes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/boxes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/boxes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/boxes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/braille.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/braille.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/braille.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/braille.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brain.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brain.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brain.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brain.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bread-slice.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bread-slice.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bread-slice.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bread-slice.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/briefcase.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broadcast-tower.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broadcast-tower.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broadcast-tower.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broadcast-tower.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broom.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broom.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broom.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/broom.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brush.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brush.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brush.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/brush.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bug.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bug.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bug.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bug.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/building.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/building.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/building.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/building.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullhorn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullhorn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullhorn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullhorn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullseye.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullseye.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullseye.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bullseye.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/burn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/burn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/burn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/burn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/bus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/business-time.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/business-time.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/business-time.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/business-time.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calculator.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calculator.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calculator.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calculator.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-day.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-day.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-day.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-day.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-times.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-times.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-times.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-times.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-week.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-week.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-week.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar-week.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/calendar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera-retro.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera-retro.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera-retro.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera-retro.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/camera.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/campground.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/campground.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/campground.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/campground.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/candy-cane.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/candy-cane.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/candy-cane.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/candy-cane.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cannabis.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cannabis.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cannabis.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cannabis.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/capsules.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/capsules.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/capsules.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/capsules.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-battery.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-battery.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-battery.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-battery.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-crash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-crash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-crash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-crash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-side.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-side.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-side.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car-side.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/car.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-square-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/caret-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/carrot.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/carrot.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/carrot.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/carrot.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-arrow-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-arrow-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-arrow-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-arrow-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cart-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cash-register.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cash-register.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cash-register.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cash-register.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/certificate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/certificate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/certificate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/certificate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chair.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chair.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chair.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chair.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard-teacher.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard-teacher.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard-teacher.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard-teacher.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chalkboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/charging-station.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/charging-station.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/charging-station.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/charging-station.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-area.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-area.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-area.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-area.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-bar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-bar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-bar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-bar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-line.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-line.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-line.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-line.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-pie.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-pie.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-pie.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chart-pie.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-double.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-double.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-double.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-double.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cheese.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cheese.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cheese.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cheese.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-bishop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-bishop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-bishop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-bishop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-board.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-board.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-board.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-board.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-king.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-king.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-king.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-king.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-knight.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-knight.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-knight.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-knight.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-pawn.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-pawn.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-pawn.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-pawn.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-queen.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-queen.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-queen.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-queen.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-rook.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-rook.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-rook.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess-rook.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chess.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-circle-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/chevron-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/child.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/child.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/child.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/child.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/church.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/church.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/church.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/church.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle-notch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle-notch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle-notch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle-notch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/city.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/city.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/city.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/city.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clinic-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clinic-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clinic-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clinic-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-list.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-list.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-list.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard-list.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clipboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/clone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/closed-captioning.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/closed-captioning.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/closed-captioning.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/closed-captioning.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-download-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-download-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-download-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-download-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-meatball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-meatball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-meatball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-meatball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon-rain.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon-rain.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon-rain.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon-rain.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-moon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-rain.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-rain.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-rain.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-rain.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-showers-heavy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-showers-heavy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-showers-heavy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-showers-heavy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun-rain.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun-rain.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun-rain.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun-rain.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-sun.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-upload-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-upload-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-upload-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud-upload-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cloud.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cocktail.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cocktail.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cocktail.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cocktail.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code-branch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code-branch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code-branch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code-branch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/code.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coffee.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coffee.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coffee.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coffee.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cogs.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cogs.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cogs.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cogs.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coins.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coins.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coins.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/coins.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/columns.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/columns.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/columns.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/columns.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dollar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dollar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dollar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dollar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dots.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dots.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dots.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-dots.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comment.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments-dollar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments-dollar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments-dollar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments-dollar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/comments.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compact-disc.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compact-disc.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compact-disc.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compact-disc.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress-arrows-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress-arrows-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress-arrows-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress-arrows-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/compress.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/concierge-bell.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/concierge-bell.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/concierge-bell.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/concierge-bell.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie-bite.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie-bite.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie-bite.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie-bite.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cookie.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copyright.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copyright.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copyright.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/copyright.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/couch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/couch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/couch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/couch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/credit-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/credit-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/credit-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/credit-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cross.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cross.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cross.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cross.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crosshairs.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crosshairs.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crosshairs.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crosshairs.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crow.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crow.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crow.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crow.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crown.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crown.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crown.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crown.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crutch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crutch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crutch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/crutch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cube.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cube.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cube.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cube.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cubes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cubes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cubes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cubes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cut.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cut.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cut.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/cut.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/database.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/database.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/database.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/database.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/deaf.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/deaf.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/deaf.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/deaf.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/democrat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/democrat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/democrat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/democrat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/desktop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/desktop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/desktop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/desktop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dharmachakra.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dharmachakra.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dharmachakra.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dharmachakra.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/diagnoses.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/diagnoses.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/diagnoses.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/diagnoses.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d20.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d20.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d20.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d20.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d6.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d6.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d6.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-d6.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-five.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-five.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-five.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-five.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-four.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-four.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-four.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-four.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-one.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-one.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-one.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-one.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-six.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-six.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-six.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-six.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-three.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-three.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-three.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-three.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-two.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-two.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-two.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice-two.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dice.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/digital-tachograph.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/digital-tachograph.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/digital-tachograph.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/digital-tachograph.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/directions.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/directions.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/directions.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/directions.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/divide.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/divide.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/divide.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/divide.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dizzy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dizzy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dizzy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dizzy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dna.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dna.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dna.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dna.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dollar-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dollar-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dollar-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dollar-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly-flatbed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly-flatbed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly-flatbed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly-flatbed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dolly.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/donate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/donate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/donate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/donate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-closed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-closed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-closed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-closed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/door-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dot-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dot-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dot-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dot-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dove.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dove.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dove.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dove.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/download.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/download.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/download.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/download.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drafting-compass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drafting-compass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drafting-compass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drafting-compass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dragon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dragon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dragon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dragon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/draw-polygon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/draw-polygon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/draw-polygon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/draw-polygon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum-steelpan.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum-steelpan.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum-steelpan.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum-steelpan.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drum.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drumstick-bite.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drumstick-bite.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drumstick-bite.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/drumstick-bite.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumbbell.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumbbell.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumbbell.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumbbell.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster-fire.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster-fire.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster-fire.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster-fire.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dumpster.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dungeon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dungeon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dungeon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/dungeon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/edit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/edit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/edit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/edit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/egg.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/egg.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/egg.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/egg.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eject.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eject.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eject.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eject.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-h.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-h.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-h.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-h.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-v.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-v.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-v.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ellipsis-v.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open-text.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open-text.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open-text.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open-text.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/envelope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/equals.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/equals.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/equals.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/equals.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eraser.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eraser.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eraser.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eraser.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ethernet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ethernet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ethernet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ethernet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/euro-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/euro-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/euro-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/euro-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exchange-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exchange-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exchange-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exchange-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-triangle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-triangle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-triangle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation-triangle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/exclamation.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand-arrows-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand-arrows-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand-arrows-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand-arrows-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/expand.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-square-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-square-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-square-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/external-link-square-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-dropper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-dropper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-dropper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-dropper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/eye.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-backward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-backward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-backward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-backward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-forward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-forward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-forward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fast-forward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fax.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fax.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fax.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fax.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/feather.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/female.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/female.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/female.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/female.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fighter-jet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fighter-jet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fighter-jet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fighter-jet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-archive.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-archive.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-archive.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-archive.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-audio.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-audio.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-audio.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-audio.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-code.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-code.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-code.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-code.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-contract.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-contract.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-contract.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-contract.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-csv.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-csv.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-csv.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-csv.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-download.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-download.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-download.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-download.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-excel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-excel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-excel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-excel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-export.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-export.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-export.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-export.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-image.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-image.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-image.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-image.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-import.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-import.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-import.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-import.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice-dollar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice-dollar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice-dollar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice-dollar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-invoice.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-pdf.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-pdf.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-pdf.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-pdf.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-powerpoint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-powerpoint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-powerpoint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-powerpoint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-prescription.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-prescription.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-prescription.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-prescription.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-signature.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-signature.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-signature.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-signature.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-upload.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-upload.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-upload.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-upload.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-video.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-video.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-video.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-video.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-word.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-word.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-word.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file-word.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/file.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill-drip.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill-drip.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill-drip.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill-drip.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fill.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/film.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/film.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/film.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/film.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/filter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/filter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/filter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/filter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fingerprint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fingerprint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fingerprint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fingerprint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-extinguisher.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-extinguisher.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-extinguisher.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire-extinguisher.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fire.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/first-aid.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/first-aid.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/first-aid.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/first-aid.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fish.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fish.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fish.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fish.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fist-raised.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fist-raised.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fist-raised.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/fist-raised.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-checkered.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-checkered.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-checkered.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-checkered.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-usa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-usa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-usa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag-usa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flask.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flask.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flask.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flask.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flushed.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flushed.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flushed.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/flushed.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/folder.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font-awesome-logo-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font-awesome-logo-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font-awesome-logo-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font-awesome-logo-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/font.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/football-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/football-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/football-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/football-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/forward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/forward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/forward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/forward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/frown.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/funnel-dollar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/funnel-dollar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/funnel-dollar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/funnel-dollar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/futbol.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/futbol.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/futbol.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/futbol.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gamepad.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gamepad.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gamepad.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gamepad.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gas-pump.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gas-pump.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gas-pump.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gas-pump.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gavel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gavel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gavel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gavel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gem.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gem.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gem.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gem.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/genderless.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/genderless.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/genderless.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/genderless.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ghost.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ghost.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ghost.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ghost.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gift.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gift.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gift.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gift.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gifts.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gifts.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gifts.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gifts.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-cheers.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-cheers.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-cheers.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-cheers.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-martini.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-whiskey.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-whiskey.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-whiskey.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glass-whiskey.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glasses.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glasses.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glasses.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/glasses.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-africa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-africa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-africa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-africa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-americas.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-americas.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-americas.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-americas.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-asia.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-asia.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-asia.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-asia.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-europe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-europe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-europe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe-europe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/globe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/golf-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/golf-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/golf-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/golf-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gopuram.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gopuram.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gopuram.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/gopuram.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/graduation-cap.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/graduation-cap.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/graduation-cap.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/graduation-cap.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than-equal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than-equal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than-equal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than-equal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/greater-than.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grimace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grimace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grimace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grimace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam-sweat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam-sweat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam-sweat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam-sweat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-hearts.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-hearts.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-hearts.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-hearts.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint-tears.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint-tears.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint-tears.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint-tears.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-stars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-stars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-stars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-stars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tears.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tears.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tears.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tears.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-tongue.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-horizontal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-horizontal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-horizontal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-horizontal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines-vertical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines-vertical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines-vertical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines-vertical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-lines.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-vertical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-vertical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-vertical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/grip-vertical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/guitar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/guitar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/guitar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/guitar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/h-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/h-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/h-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/h-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamburger.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamburger.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamburger.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamburger.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hammer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hammer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hammer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hammer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamsa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamsa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamsa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hamsa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-heart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-heart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-heart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-heart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-usd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-usd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-usd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding-usd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-holding.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-lizard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-lizard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-lizard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-lizard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-middle-finger.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-middle-finger.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-middle-finger.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-middle-finger.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-paper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-paper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-paper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-paper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-peace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-peace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-peace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-peace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-point-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-pointer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-pointer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-pointer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-pointer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-rock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-rock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-rock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-rock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-scissors.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-scissors.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-scissors.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-scissors.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-spock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-spock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-spock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hand-spock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands-helping.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands-helping.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands-helping.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands-helping.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hands.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/handshake.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/handshake.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/handshake.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/handshake.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hanukiah.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hanukiah.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hanukiah.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hanukiah.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hard-hat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hard-hat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hard-hat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hard-hat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hashtag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hashtag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hashtag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hashtag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hat-wizard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hat-wizard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hat-wizard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hat-wizard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/haykal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/haykal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/haykal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/haykal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hdd.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hdd.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hdd.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hdd.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heading.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heading.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heading.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heading.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headphones.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headset.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headset.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headset.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/headset.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart-broken.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart-broken.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart-broken.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart-broken.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heartbeat.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heartbeat.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heartbeat.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/heartbeat.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/helicopter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/helicopter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/helicopter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/helicopter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/highlighter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/highlighter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/highlighter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/highlighter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hiking.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hiking.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hiking.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hiking.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hippo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hippo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hippo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hippo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/history.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/history.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/history.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/history.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hockey-puck.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hockey-puck.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hockey-puck.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hockey-puck.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/holly-berry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/holly-berry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/holly-berry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/holly-berry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/home.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/home.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/home.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/home.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse-head.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse-head.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse-head.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse-head.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/horse.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-symbol.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-symbol.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-symbol.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital-symbol.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hospital.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hot-tub.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hot-tub.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hot-tub.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hot-tub.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotdog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotdog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotdog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotdog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hotel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-end.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-end.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-end.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-end.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-half.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-half.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-half.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-half.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-start.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-start.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-start.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass-start.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hourglass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/house-damage.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/house-damage.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/house-damage.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/house-damage.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hryvnia.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hryvnia.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hryvnia.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/hryvnia.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/i-cursor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/i-cursor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/i-cursor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/i-cursor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ice-cream.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ice-cream.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ice-cream.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ice-cream.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/icicles.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/icicles.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/icicles.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/icicles.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-badge.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-badge.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-badge.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-badge.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/id-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/igloo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/igloo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/igloo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/igloo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/image.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/image.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/image.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/image.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/images.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/images.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/images.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/images.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/inbox.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/inbox.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/inbox.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/inbox.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/indent.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/indent.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/indent.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/indent.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/industry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/industry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/industry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/industry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/infinity.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/infinity.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/infinity.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/infinity.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/info.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/italic.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/italic.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/italic.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/italic.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/jedi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/jedi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/jedi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/jedi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/joint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/joint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/joint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/joint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/journal-whills.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/journal-whills.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/journal-whills.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/journal-whills.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kaaba.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kaaba.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kaaba.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kaaba.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/key.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/key.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/key.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/key.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/keyboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/keyboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/keyboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/keyboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/khanda.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/khanda.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/khanda.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/khanda.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-wink-heart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-wink-heart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-wink-heart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss-wink-heart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiss.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiwi-bird.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiwi-bird.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiwi-bird.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/kiwi-bird.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/landmark.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/landmark.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/landmark.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/landmark.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/language.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/language.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/language.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/language.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-code.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-code.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-code.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-code.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laptop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-squint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-squint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-squint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-squint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/laugh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/layer-group.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/layer-group.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/layer-group.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/layer-group.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/leaf.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/leaf.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/leaf.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/leaf.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lemon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lemon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lemon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lemon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than-equal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than-equal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than-equal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than-equal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/less-than.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-down-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-down-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-down-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-down-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-up-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-up-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-up-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/level-up-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/life-ring.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/life-ring.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/life-ring.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/life-ring.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lightbulb.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lightbulb.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lightbulb.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lightbulb.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/link.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/link.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/link.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/link.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lira-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lira-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lira-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lira-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ol.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ol.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ol.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ol.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ul.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ul.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ul.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list-ul.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/list.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/location-arrow.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/location-arrow.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/location-arrow.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/location-arrow.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/lock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/long-arrow-alt-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/low-vision.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/low-vision.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/low-vision.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/low-vision.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/luggage-cart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/luggage-cart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/luggage-cart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/luggage-cart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magic.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magic.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magic.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magic.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magnet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magnet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magnet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/magnet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mail-bulk.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mail-bulk.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mail-bulk.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mail-bulk.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/male.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/male.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/male.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/male.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marked.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-marker.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-pin.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-pin.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-pin.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-pin.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-signs.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-signs.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-signs.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map-signs.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/map.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/marker.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/marker.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/marker.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/marker.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-double.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-double.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-double.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-double.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-h.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-h.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-h.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-h.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-v.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-v.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-v.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke-v.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars-stroke.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mask.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mask.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mask.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mask.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medkit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medkit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medkit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/medkit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-blank.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-blank.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-blank.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-blank.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-rolling-eyes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-rolling-eyes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-rolling-eyes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh-rolling-eyes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/memory.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/memory.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/memory.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/memory.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/menorah.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/menorah.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/menorah.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/menorah.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mercury.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mercury.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mercury.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mercury.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meteor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meteor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meteor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/meteor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microchip.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microchip.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microchip.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microchip.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microphone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microscope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microscope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microscope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/microscope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mitten.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mitten.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mitten.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mitten.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mobile.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill-wave.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-bill.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/money-check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/monument.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/monument.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/monument.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/monument.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/moon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/moon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/moon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/moon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mortar-pestle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mortar-pestle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mortar-pestle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mortar-pestle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mosque.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mosque.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mosque.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mosque.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/motorcycle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/motorcycle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/motorcycle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/motorcycle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mountain.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mountain.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mountain.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mountain.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mouse-pointer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mouse-pointer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mouse-pointer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mouse-pointer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mug-hot.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mug-hot.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mug-hot.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/mug-hot.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/music.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/music.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/music.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/music.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/network-wired.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/network-wired.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/network-wired.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/network-wired.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/neuter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/neuter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/neuter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/neuter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/newspaper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/newspaper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/newspaper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/newspaper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/not-equal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/not-equal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/not-equal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/not-equal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/notes-medical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/notes-medical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/notes-medical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/notes-medical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-group.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-group.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-group.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-group.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-ungroup.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-ungroup.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-ungroup.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/object-ungroup.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/oil-can.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/oil-can.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/oil-can.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/oil-can.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/om.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/om.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/om.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/om.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/otter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/otter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/otter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/otter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/outdent.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/outdent.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/outdent.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/outdent.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pager.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pager.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pager.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pager.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-brush.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-brush.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-brush.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-brush.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-roller.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-roller.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-roller.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paint-roller.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/palette.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/palette.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/palette.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/palette.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pallet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pallet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pallet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pallet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paper-plane.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paper-plane.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paper-plane.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paper-plane.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paperclip.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paperclip.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paperclip.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paperclip.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parachute-box.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parachute-box.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parachute-box.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parachute-box.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paragraph.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paragraph.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paragraph.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paragraph.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parking.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parking.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parking.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/parking.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/passport.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/passport.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/passport.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/passport.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pastafarianism.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pastafarianism.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pastafarianism.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pastafarianism.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paste.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paste.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paste.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paste.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pause.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paw.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paw.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paw.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/paw.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/peace.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/peace.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/peace.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/peace.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-fancy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-fancy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-fancy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-fancy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-nib.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-nib.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-nib.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-nib.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pen.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-ruler.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-ruler.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-ruler.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pencil-ruler.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/people-carry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/people-carry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/people-carry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/people-carry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pepper-hot.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pepper-hot.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pepper-hot.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pepper-hot.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percent.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percent.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percent.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percent.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percentage.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percentage.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percentage.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/percentage.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/person-booth.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/person-booth.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/person-booth.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/person-booth.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-volume.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-volume.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-volume.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone-volume.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/phone.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/piggy-bank.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/piggy-bank.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/piggy-bank.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/piggy-bank.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pills.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pills.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pills.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pills.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pizza-slice.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pizza-slice.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pizza-slice.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pizza-slice.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/place-of-worship.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/place-of-worship.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/place-of-worship.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/place-of-worship.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-arrival.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-arrival.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-arrival.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-arrival.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-departure.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-departure.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-departure.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane-departure.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plane.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/play.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plug.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plug.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plug.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plug.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/podcast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/podcast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/podcast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/podcast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll-h.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll-h.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll-h.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll-h.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poll.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo-storm.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo-storm.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo-storm.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo-storm.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/poop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/portrait.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/portrait.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/portrait.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/portrait.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pound-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pound-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pound-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pound-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/power-off.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/power-off.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/power-off.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/power-off.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pray.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pray.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pray.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/pray.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/praying-hands.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/praying-hands.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/praying-hands.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/praying-hands.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription-bottle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/prescription.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/print.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/print.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/print.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/print.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/procedures.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/procedures.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/procedures.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/procedures.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/project-diagram.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/project-diagram.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/project-diagram.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/project-diagram.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/puzzle-piece.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/puzzle-piece.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/puzzle-piece.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/puzzle-piece.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/qrcode.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/qrcode.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/qrcode.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/qrcode.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/question.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quidditch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quidditch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quidditch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quidditch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-left.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-left.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-left.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-left.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-right.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-right.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-right.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quote-right.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quran.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quran.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quran.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/quran.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/radiation.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rainbow.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rainbow.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rainbow.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rainbow.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/random.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/random.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/random.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/random.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/receipt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/receipt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/receipt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/receipt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/recycle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/recycle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/recycle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/recycle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/redo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/registered.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/registered.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/registered.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/registered.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply-all.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply-all.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply-all.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply-all.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/reply.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/republican.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/republican.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/republican.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/republican.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/restroom.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/restroom.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/restroom.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/restroom.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/retweet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/retweet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/retweet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/retweet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ribbon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ribbon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ribbon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ribbon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ring.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ring.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ring.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ring.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/road.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/road.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/road.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/road.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/robot.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/robot.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/robot.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/robot.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rocket.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rocket.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rocket.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rocket.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/route.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/route.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/route.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/route.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rss.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruble-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruble-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruble-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruble-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-combined.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-combined.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-combined.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-combined.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-horizontal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-horizontal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-horizontal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-horizontal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-vertical.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-vertical.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-vertical.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler-vertical.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ruler.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/running.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/running.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/running.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/running.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rupee-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rupee-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rupee-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/rupee-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-cry.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-cry.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-cry.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-cry.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-tear.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-tear.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-tear.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sad-tear.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite-dish.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite-dish.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite-dish.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite-dish.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/satellite.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/save.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/save.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/save.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/save.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/school.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/school.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/school.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/school.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/screwdriver.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/screwdriver.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/screwdriver.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/screwdriver.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/scroll.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/scroll.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/scroll.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/scroll.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sd-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sd-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sd-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sd-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-dollar.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-dollar.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-dollar.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-dollar.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-location.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-location.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-location.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-location.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/search.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/seedling.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/seedling.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/seedling.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/seedling.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/server.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/server.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/server.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/server.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shapes.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shapes.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shapes.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shapes.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/share.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shekel-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shekel-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shekel-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shekel-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shield-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shield-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shield-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shield-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ship.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ship.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ship.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ship.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shipping-fast.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shipping-fast.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shipping-fast.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shipping-fast.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shoe-prints.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shoe-prints.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shoe-prints.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shoe-prints.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-bag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-bag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-bag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-bag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-basket.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-basket.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-basket.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-basket.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-cart.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-cart.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-cart.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shopping-cart.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shower.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shower.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shower.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shower.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shuttle-van.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shuttle-van.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shuttle-van.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/shuttle-van.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-in-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-in-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-in-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-in-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-language.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-language.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-language.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-language.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-out-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-out-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-out-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign-out-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signature.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signature.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signature.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/signature.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sim-card.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sim-card.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sim-card.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sim-card.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sitemap.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sitemap.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sitemap.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sitemap.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skating.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skating.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skating.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skating.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing-nordic.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing-nordic.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing-nordic.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing-nordic.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skiing.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull-crossbones.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull-crossbones.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull-crossbones.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull-crossbones.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/skull.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sleigh.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sleigh.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sleigh.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sleigh.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sliders-h.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sliders-h.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sliders-h.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sliders-h.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-beam.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-beam.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-beam.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-beam.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-wink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-wink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-wink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile-wink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smile.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking-ban.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking-ban.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking-ban.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking-ban.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/smoking.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sms.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sms.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sms.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sms.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowboarding.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowboarding.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowboarding.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowboarding.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowflake.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowflake.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowflake.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowflake.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowman.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowman.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowman.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowman.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowplow.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowplow.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowplow.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/snowplow.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/socks.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/socks.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/socks.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/socks.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/solar-panel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/solar-panel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/solar-panel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/solar-panel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-alpha-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-amount-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-numeric-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sort.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spa.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spa.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spa.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spa.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/space-shuttle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/space-shuttle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/space-shuttle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/space-shuttle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spider.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spider.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spider.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spider.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spinner.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spinner.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spinner.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spinner.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/splotch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/splotch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/splotch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/splotch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spray-can.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spray-can.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spray-can.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/spray-can.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-root-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-root-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-root-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square-root-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stamp.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stamp.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stamp.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stamp.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-and-crescent.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-and-crescent.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-and-crescent.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-and-crescent.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-half.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-david.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-david.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-david.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-david.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-life.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-life.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-life.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star-of-life.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/star.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-backward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-backward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-backward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-backward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-forward.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-forward.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-forward.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/step-forward.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stethoscope.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stethoscope.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stethoscope.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stethoscope.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sticky-note.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sticky-note.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sticky-note.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sticky-note.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stop.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stopwatch.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stopwatch.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stopwatch.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stopwatch.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/store.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stream.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stream.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stream.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stream.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/street-view.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/street-view.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/street-view.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/street-view.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/strikethrough.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/strikethrough.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/strikethrough.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/strikethrough.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stroopwafel.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stroopwafel.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stroopwafel.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/stroopwafel.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subscript.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subscript.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subscript.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subscript.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subway.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subway.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subway.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/subway.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase-rolling.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase-rolling.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase-rolling.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase-rolling.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/suitcase.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sun.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sun.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sun.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sun.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/superscript.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/superscript.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/superscript.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/superscript.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/surprise.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/surprise.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/surprise.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/surprise.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swatchbook.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swatchbook.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swatchbook.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swatchbook.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimmer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimmer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimmer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimmer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimming-pool.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimming-pool.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimming-pool.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/swimming-pool.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/synagogue.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/synagogue.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/synagogue.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/synagogue.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/sync.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/syringe.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/syringe.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/syringe.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/syringe.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table-tennis.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table-tennis.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table-tennis.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table-tennis.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/table.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablets.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablets.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablets.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tablets.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tachometer-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tachometer-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tachometer-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tachometer-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tags.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tags.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tags.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tags.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tape.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tape.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tape.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tape.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tasks.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tasks.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tasks.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tasks.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/taxi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/taxi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/taxi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/taxi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth-open.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth-open.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth-open.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth-open.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/teeth.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-high.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-high.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-high.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-high.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-low.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-low.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-low.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/temperature-low.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tenge.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tenge.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tenge.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tenge.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/terminal.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/terminal.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/terminal.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/terminal.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-height.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-height.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-height.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-height.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-width.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-width.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-width.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/text-width.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-large.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-large.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-large.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-large.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-list.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-list.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-list.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th-list.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/th.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/theater-masks.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/theater-masks.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/theater-masks.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/theater-masks.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-empty.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-empty.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-empty.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-empty.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-full.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-full.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-full.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-full.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-half.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-half.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-half.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-half.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-quarter.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-quarter.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-quarter.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-quarter.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-three-quarters.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-three-quarters.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-three-quarters.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer-three-quarters.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thermometer.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbs-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbtack.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbtack.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbtack.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/thumbtack.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ticket-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ticket-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ticket-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/ticket-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/times.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tint.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tired.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tired.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tired.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tired.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-off.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-off.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-off.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-off.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-on.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-on.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-on.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toggle-on.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet-paper.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet-paper.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet-paper.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet-paper.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toilet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toolbox.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toolbox.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toolbox.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/toolbox.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tools.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tools.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tools.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tools.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tooth.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tooth.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tooth.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tooth.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torah.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torah.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torah.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torah.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torii-gate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torii-gate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torii-gate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/torii-gate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tractor.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tractor.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tractor.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tractor.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trademark.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trademark.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trademark.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trademark.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/traffic-light.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/traffic-light.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/traffic-light.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/traffic-light.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/train.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/train.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/train.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/train.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tram.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tram.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tram.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tram.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/transgender.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash-restore.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tree.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tree.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tree.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tree.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trophy.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trophy.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trophy.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/trophy.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-loading.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-loading.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-loading.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-loading.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-monster.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-monster.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-monster.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-monster.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-moving.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-moving.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-moving.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-moving.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-pickup.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-pickup.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-pickup.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck-pickup.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/truck.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tshirt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tshirt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tshirt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tshirt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tty.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tty.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tty.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tty.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tv.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tv.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tv.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/tv.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella-beach.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella-beach.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella-beach.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella-beach.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/umbrella.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/underline.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/underline.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/underline.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/underline.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/undo.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/universal-access.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/universal-access.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/universal-access.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/universal-access.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/university.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/university.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/university.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/university.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlink.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlink.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlink.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlink.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/unlock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/upload.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/upload.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/upload.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/upload.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-astronaut.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-astronaut.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-astronaut.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-astronaut.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-check.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-check.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-check.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-check.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-circle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-circle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-circle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-circle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-clock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-clock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-clock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-clock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-cog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-cog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-cog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-cog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-edit.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-edit.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-edit.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-edit.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-friends.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-friends.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-friends.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-friends.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-graduate.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-graduate.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-graduate.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-graduate.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-injured.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-injured.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-injured.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-injured.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-lock.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-lock.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-lock.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-lock.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-md.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-md.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-md.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-md.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-minus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-minus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-minus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-minus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-ninja.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-ninja.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-ninja.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-ninja.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-nurse.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-nurse.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-nurse.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-nurse.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-plus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-plus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-plus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-plus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-secret.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-secret.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-secret.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-secret.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-shield.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-shield.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-shield.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-shield.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tag.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tag.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tag.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tag.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tie.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tie.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tie.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-tie.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-times.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-times.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-times.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user-times.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/user.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users-cog.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users-cog.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users-cog.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users-cog.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/users.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensil-spoon.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensil-spoon.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensil-spoon.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensil-spoon.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensils.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensils.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensils.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/utensils.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vector-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vector-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vector-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vector-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-double.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-double.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-double.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-double.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-mars.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-mars.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-mars.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus-mars.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/venus.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vial.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vial.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vial.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vial.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vials.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vials.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vials.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vials.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video-slash.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video-slash.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video-slash.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video-slash.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/video.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vihara.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vihara.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vihara.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vihara.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volleyball-ball.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volleyball-ball.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volleyball-ball.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volleyball-ball.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-down.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-down.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-down.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-down.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-mute.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-mute.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-mute.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-mute.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-off.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-off.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-off.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-off.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-up.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-up.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-up.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/volume-up.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vote-yea.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vote-yea.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vote-yea.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vote-yea.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vr-cardboard.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vr-cardboard.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vr-cardboard.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/vr-cardboard.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/walking.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/walking.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/walking.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/walking.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wallet.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wallet.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wallet.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wallet.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/warehouse.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/warehouse.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/warehouse.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/warehouse.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/water.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/water.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/water.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/water.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wave-square.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wave-square.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wave-square.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wave-square.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight-hanging.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight-hanging.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight-hanging.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight-hanging.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/weight.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wheelchair.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wheelchair.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wheelchair.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wheelchair.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wifi.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wifi.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wifi.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wifi.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wind.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wind.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wind.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wind.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-close.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-close.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-close.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-close.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-maximize.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-maximize.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-maximize.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-maximize.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-minimize.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-minimize.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-minimize.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-minimize.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-restore.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-restore.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-restore.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/window-restore.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-bottle.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-bottle.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-bottle.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-bottle.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass-alt.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass-alt.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass-alt.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass-alt.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wine-glass.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/won-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/won-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/won-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/won-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wrench.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wrench.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wrench.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/wrench.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/x-ray.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/x-ray.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/x-ray.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/x-ray.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yen-sign.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yen-sign.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yen-sign.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yen-sign.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yin-yang.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yin-yang.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yin-yang.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/svgs/solid/yin-yang.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.eot b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.eot similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.eot rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.eot diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.ttf b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.ttf similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.ttf rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.ttf diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff2 b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff2 similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff2 rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-brands-400.woff2 diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.eot b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.eot similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.eot rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.eot diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.ttf b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.ttf similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.ttf rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.ttf diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff2 b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff2 similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff2 rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-regular-400.woff2 diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.eot b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.eot similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.eot rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.eot diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.svg b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.svg similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.svg rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.svg diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.ttf b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.ttf similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.ttf rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.ttf diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff diff --git a/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff2 b/backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff2 similarity index 100% rename from src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff2 rename to backend/src/static/libs/fontawesome-free-5.8.2-web/webfonts/fa-solid-900.woff2 diff --git a/src/static/libs/jquery-3.4.1.js b/backend/src/static/libs/jquery-3.4.1.js similarity index 100% rename from src/static/libs/jquery-3.4.1.js rename to backend/src/static/libs/jquery-3.4.1.js diff --git a/src/templates/mails/deletion_information_email.jinja2 b/backend/src/templates/mails/deletion_information_email.jinja2 similarity index 98% rename from src/templates/mails/deletion_information_email.jinja2 rename to backend/src/templates/mails/deletion_information_email.jinja2 index cffbfcd..49aded9 100644 --- a/src/templates/mails/deletion_information_email.jinja2 +++ b/backend/src/templates/mails/deletion_information_email.jinja2 @@ -1,10 +1,10 @@ -

LAMa Accountlöschung

-

Ihr Account mit dem Nutzernamen {{ user.username }} wurde als gelöscht markiert. - Ihre Nutzerdaten werden in {{ deletion_wait_days }} Tagen gelöscht. - Falls Sie noch wichtige Daten in den %Firmenname% Services gespeichert haben, kopieren Sie diese bitte noch vor der - Löschung. - Danach werden diese nicht mehr zugänglich sein.

-

Wenn Sie weiter Teil der %Firmenname% Services sein wollen, kontaktieren Sie Ihren Administrator.

-

Wir wünschen Ihnen noch eine schöne Zeit.

-

Das Admin Team

+

LAMa Accountlöschung

+

Ihr Account mit dem Nutzernamen {{ user.username }} wurde als gelöscht markiert. + Ihre Nutzerdaten werden in {{ deletion_wait_days }} Tagen gelöscht. + Falls Sie noch wichtige Daten in den %Firmenname% Services gespeichert haben, kopieren Sie diese bitte noch vor der + Löschung. + Danach werden diese nicht mehr zugänglich sein.

+

Wenn Sie weiter Teil der %Firmenname% Services sein wollen, kontaktieren Sie Ihren Administrator.

+

Wir wünschen Ihnen noch eine schöne Zeit.

+

Das Admin Team

Kontakt: %mailadresse% \ No newline at end of file diff --git a/src/templates/mails/welcome_email.jinja2 b/backend/src/templates/mails/welcome_email.jinja2 similarity index 98% rename from src/templates/mails/welcome_email.jinja2 rename to backend/src/templates/mails/welcome_email.jinja2 index 46c958d..01bb019 100644 --- a/src/templates/mails/welcome_email.jinja2 +++ b/backend/src/templates/mails/welcome_email.jinja2 @@ -1,12 +1,12 @@ -

Willkommen bei den %Firmenname% Services, {{ user.username }}!

-

Es wurde ein Account für Sie angelegt.

-

Ihr Nutzername lautet: {{ user.username }}

-

Uns ist folgende E-Mail bekannt: {{ email }}

-

Über den folgenden Link können Sie Ihren Account aktivieren: - - {{ protocol }}://{{ domain }}{{ url('ldap_password_reset_confirm', kwargs={'uidb64':uid, 'token':token}) }}# - -

-

Der Link ist nur {{ expiration_days }} Tage gültig!

+

Willkommen bei den %Firmenname% Services, {{ user.username }}!

+

Es wurde ein Account für Sie angelegt.

+

Ihr Nutzername lautet: {{ user.username }}

+

Uns ist folgende E-Mail bekannt: {{ email }}

+

Über den folgenden Link können Sie Ihren Account aktivieren: + + {{ protocol }}://{{ domain }}{{ url('ldap_password_reset_confirm', kwargs={'uidb64':uid, 'token':token}) }}# + +

+

Der Link ist nur {{ expiration_days }} Tage gültig!

Und so geht's zum Login

\ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f9d1ed0..e8cd00f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,59 +1,55 @@ -# DEV SETUP! -version: "3" - -networks: - pg_db: - external: false - ldap_net: - external: false +version: '3.7' services: - lama: - image: lama:0.1 + web: + build: + context: frontend + target: 'develop-stage' + command: /bin/sh -c "npm run serve" + volumes: + - ./frontend/lama:/app + ports: + - 8080:8080 + depends_on: + - api + + api: build: - context: docker/lama + context: ./backend/docker/lama dockerfile: Dockerfile.dev - networks: - - ldap_net - - pg_db - env_file: - - docker/lama/dev.env volumes: - - ./src:/lama + - ./backend/src:/lama + ports: + - 8000:80 + env_file: + - ./backend/docker/lama/dev.env depends_on: - - dblama + - db - ldap - ports: - - 0.0.0.0:8888:80 - - dblama: - image: postgres:11.2-alpine - networks: - - pg_db - volumes: - - ./db/pgdata/:/var/lib/postgresql/data/ + + db: + image: postgres:12.0-alpine env_file: - - docker/lama/dev.env + - ./backend/docker/lama/dev.env + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 ldap: image: docker.clkl.de/ldap/ldap:0.3-lama build: - context: docker/ldap + context: backend/docker/ldap dockerfile: Dockerfile.ldap - env_file: docker/ldap/ldap.env - volumes: - - ./docker/ldap/data/var/:/var/lib/openldap/ - networks: - - ldap_net + env_file: ./backend/docker/ldap/ldap.env ldap_admin: image: docker.clkl.de/ldap/admin:0.1-lama build: - context: docker/ldap + context: backend/docker/ldap dockerfile: Dockerfile.admin - networks: - - ldap_net depends_on: - ldap ports: - - 0.0.0.0:8080:80 + - 0.0.0.0:8888:80 diff --git a/docker/lama/requirements.txt b/docker/lama/requirements.txt deleted file mode 100644 index 5c43381..0000000 --- a/docker/lama/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -Django==3.0.3 -python-ldap==3.2.0 -django-auth-ldap==2.1.0 -django-ldapdb==1.4.0 -Jinja2==2.10.3 \ No newline at end of file diff --git a/docker/ldap/data/etc/DB_CONFIG.example b/docker/ldap/data/etc/DB_CONFIG.example deleted file mode 100644 index d0f2c68..0000000 --- a/docker/ldap/data/etc/DB_CONFIG.example +++ /dev/null @@ -1,28 +0,0 @@ -# $OpenLDAP$ -# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. -# -# See the Oracle Berkeley DB documentation -# -# for detail description of DB_CONFIG syntax and semantics. -# -# Hints can also be found in the OpenLDAP Software FAQ -# -# in particular: -# - -# Note: most DB_CONFIG settings will take effect only upon rebuilding -# the DB environment. - -# one 0.25 GB cache -set_cachesize 0 268435456 1 - -# Data Directory -#set_data_dir db - -# Transaction Log settings -set_lg_regionmax 262144 -set_lg_bsize 2097152 -#set_lg_dir logs - -# Note: special DB_CONFIG flags are no longer needed for "quick" -# slapadd(8) or slapindex(8) access (see their -q option). diff --git a/docker/ldap/data/etc/ldap.conf b/docker/ldap/data/etc/ldap.conf deleted file mode 100644 index a94cfaa..0000000 --- a/docker/ldap/data/etc/ldap.conf +++ /dev/null @@ -1,13 +0,0 @@ -# -# LDAP Defaults -# - -# See ldap.conf(5) for details -# This file should be world readable but not world writable. - -#BASE dc=example,dc=com -#URI ldap://ldap.example.com ldap://ldap-master.example.com:666 - -#SIZELIMIT 12 -#TIMELIMIT 15 -#DEREF never diff --git a/docker/ldap/data/etc/schema/README b/docker/ldap/data/etc/schema/README deleted file mode 100644 index 31255ad..0000000 --- a/docker/ldap/data/etc/schema/README +++ /dev/null @@ -1,80 +0,0 @@ -This directory contains user application schema definitions for use -with slapd(8). - -File Description ----- ----------- -collective.schema Collective attributes (experimental) -corba.schema Corba Object -core.schema OpenLDAP "core" -cosine.schema COSINE Pilot -duaconf.schema Client Configuration (work in progress) -dyngroup.schema Dynamic Group (experimental) -inetorgperson.schema InetOrgPerson -java.schema Java Object -misc.schema Miscellaneous Schema (experimental) -nadf.schema North American Directory Forum (obsolete) -nis.schema Network Information Service (experimental) -openldap.schema OpenLDAP Project (FYI) -ppolicy.schema Password Policy Schema (work in progress) - -Additional "generally useful" schema definitions can be submitted -using the OpenLDAP Issue Tracking System . -Submissions should include a stable reference to a mature, open -technical specification (e.g., an RFC) for the schema. - -The core.ldif and openldap.ldif files are equivalent to their -corresponding .schema files. They have been provided as examples -for use with the dynamic configuration backend. These example files -are not actually necessary since slapd will automatically convert any -included *.schema files into LDIF when converting a slapd.conf file -to a configuration database, but they serve as a model of how to -convert schema files in general. - ---- - -This notice applies to all files in this directory. - -Copyright 1998-2017 The OpenLDAP Foundation, Redwood City, California, USA -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted only as authorized by the OpenLDAP -Public License. A copy of this license is available at -http://www.OpenLDAP.org/license.html or in file LICENSE in the -top-level directory of the distribution. - ---- - -This notice applies to all schema in this directory which are derived -from RFCs and other IETF documents. - -Portions Copyright 1991-2004, The Internet Society. All Rights Reserved. - -This document and translations of it may be copied and furnished -to others, and derivative works that comment on or otherwise explain -it or assist in its implementation may be prepared, copied, published -and distributed, in whole or in part, without restriction of any -kind, provided that the above copyright notice and this paragraph -are included on all such copies and derivative works. However, -this document itself may not be modified in any way, such as by -removing the copyright notice or references to the Internet Society -or other Internet organizations, except as needed for the purpose -of developing Internet standards in which case the procedures for -copyrights defined in the Internet Standards process must be -followed, or as required to translate it into languages other than -English. - -The limited permissions granted above are perpetual and will not -be revoked by the Internet Society or its successors or assigns. - -This document and the information contained herein is provided on -an "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE -INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE -OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY -IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR -PURPOSE. - - ---- -$OpenLDAP$ diff --git a/docker/ldap/data/etc/schema/collective.ldif b/docker/ldap/data/etc/schema/collective.ldif deleted file mode 100644 index 3d23f04..0000000 --- a/docker/ldap/data/etc/schema/collective.ldif +++ /dev/null @@ -1,48 +0,0 @@ -# collective.ldif -- Collective attribute schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (2003). -## Please see full copyright statement below. -# -# From RFC 3671 [portions trimmed]: -# Collective Attributes in LDAP -# -# This file was automatically generated from collective.schema; see that file -# for complete references. -# -dn: cn=collective,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: collective -olcAttributeTypes: {0}( 2.5.4.7.1 NAME 'c-l' SUP l COLLECTIVE ) -olcAttributeTypes: {1}( 2.5.4.8.1 NAME 'c-st' SUP st COLLECTIVE ) -olcAttributeTypes: {2}( 2.5.4.9.1 NAME 'c-street' SUP street COLLECTIVE ) -olcAttributeTypes: {3}( 2.5.4.10.1 NAME 'c-o' SUP o COLLECTIVE ) -olcAttributeTypes: {4}( 2.5.4.11.1 NAME 'c-ou' SUP ou COLLECTIVE ) -olcAttributeTypes: {5}( 2.5.4.16.1 NAME 'c-PostalAddress' SUP postalAddress CO - LLECTIVE ) -olcAttributeTypes: {6}( 2.5.4.17.1 NAME 'c-PostalCode' SUP postalCode COLLECTI - VE ) -olcAttributeTypes: {7}( 2.5.4.18.1 NAME 'c-PostOfficeBox' SUP postOfficeBox CO - LLECTIVE ) -olcAttributeTypes: {8}( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName' SUP phy - sicalDeliveryOfficeName COLLECTIVE ) -olcAttributeTypes: {9}( 2.5.4.20.1 NAME 'c-TelephoneNumber' SUP telephoneNumbe - r COLLECTIVE ) -olcAttributeTypes: {10}( 2.5.4.21.1 NAME 'c-TelexNumber' SUP telexNumber COLLE - CTIVE ) -olcAttributeTypes: {11}( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber' SUP facs - imileTelephoneNumber COLLECTIVE ) -olcAttributeTypes: {12}( 2.5.4.25.1 NAME 'c-InternationalISDNNumber' SUP inter - nationalISDNNumber COLLECTIVE ) diff --git a/docker/ldap/data/etc/schema/collective.schema b/docker/ldap/data/etc/schema/collective.schema deleted file mode 100644 index c63c0cd..0000000 --- a/docker/ldap/data/etc/schema/collective.schema +++ /dev/null @@ -1,190 +0,0 @@ -# collective.schema -- Collective attribute schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (2003). -## Please see full copyright statement below. - -# From RFC 3671 [portions trimmed]: -# Collective Attributes in LDAP - -#Abstract -# -# X.500 collective attributes allow common characteristics to be shared -# between collections of entries. This document summarizes the X.500 -# information model for collective attributes and describes use of -# collective attributes in LDAP (Lightweight Directory Access Protocol). -# This document provides schema definitions for collective attributes -# for use in LDAP. - -#3. Collective Attribute Types -# -# A userApplications attribute type can be defined to be COLLECTIVE -# [RFC2252]. This indicates that the same attribute values will appear -# in the entries of an entry collection subject to the use of the -# collectiveExclusions attribute and other administrative controls. -# -# Collective attribute types are commonly defined as subtypes of non- -# collective attribute types. By convention, collective attributes are -# named by prefixing the name of their non-collective supertype with -# "c-". For example, the collective telephone attribute is named -# c-TelephoneNumber after its non-collective supertype telephoneNumber. -# -# Non-collective attributes types SHALL NOT subtype collective -# attributes. -# -# Collective attributes SHALL NOT be SINGLE-VALUED. Collective -# attribute types SHALL NOT appear in the attribute types of an object -# class definition. -# -# Operational attributes SHALL NOT be defined to be collective. -# -# The remainder of section provides a summary of collective attributes -# derived from those defined in [X.520]. Implementations of this -# specification SHOULD support the following collective attributes and -# MAY support additional collective attributes. -# -# -#3.1. Collective Locality Name -# -# The c-l attribute type specifies a locality name for a collection of -# entries. -# -attributeType ( 2.5.4.7.1 NAME 'c-l' - SUP l COLLECTIVE ) -# -# -#3.2. Collective State or Province Name -# -# The c-st attribute type specifies a state or province name for a -# collection of entries. -# -attributeType ( 2.5.4.8.1 NAME 'c-st' - SUP st COLLECTIVE ) -# -# -#3.3. Collective Street Address -# -# The c-street attribute type specifies a street address for a -# collection of entries. -# -attributeType ( 2.5.4.9.1 NAME 'c-street' - SUP street COLLECTIVE ) -# -# -#3.4. Collective Organization Name -# -# The c-o attribute type specifies an organization name for a collection -# of entries. -# -attributeType ( 2.5.4.10.1 NAME 'c-o' - SUP o COLLECTIVE ) -# -# -#3.5. Collective Organizational Unit Name -# -# The c-ou attribute type specifies an organizational unit name for a -# collection of entries. -# -attributeType ( 2.5.4.11.1 NAME 'c-ou' - SUP ou COLLECTIVE ) -# -# -#3.6. Collective Postal Address -# -# The c-PostalAddress attribute type specifies a postal address for a -# collection of entries. -# -attributeType ( 2.5.4.16.1 NAME 'c-PostalAddress' - SUP postalAddress COLLECTIVE ) -# -# -#3.7. Collective Postal Code -# -# The c-PostalCode attribute type specifies a postal code for a -# collection of entries. -# -attributeType ( 2.5.4.17.1 NAME 'c-PostalCode' - SUP postalCode COLLECTIVE ) -# -# -#3.8. Collective Post Office Box -# -# The c-PostOfficeBox attribute type specifies a post office box for a -# collection of entries. -# -attributeType ( 2.5.4.18.1 NAME 'c-PostOfficeBox' - SUP postOfficeBox COLLECTIVE ) -# -# -#3.9. Collective Physical Delivery Office Name -# -# The c-PhysicalDeliveryOfficeName attribute type specifies a physical -# delivery office name for a collection of entries. -# -attributeType ( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName' - SUP physicalDeliveryOfficeName COLLECTIVE ) -# -# -#3.10. Collective Telephone Number -# -# The c-TelephoneNumber attribute type specifies a telephone number for -# a collection of entries. -# -attributeType ( 2.5.4.20.1 NAME 'c-TelephoneNumber' - SUP telephoneNumber COLLECTIVE ) -# -# -#3.11. Collective Telex Number -# -# The c-TelexNumber attribute type specifies a telex number for a -# collection of entries. -# -attributeType ( 2.5.4.21.1 NAME 'c-TelexNumber' - SUP telexNumber COLLECTIVE ) -# -# -#3.13. Collective Facsimile Telephone Number -# -# The c-FacsimileTelephoneNumber attribute type specifies a facsimile -# telephone number for a collection of entries. -# -attributeType ( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber' - SUP facsimileTelephoneNumber COLLECTIVE ) -# -# -#3.14. Collective International ISDN Number -# -# The c-InternationalISDNNumber attribute type specifies an -# international ISDN number for a collection of entries. -# -attributeType ( 2.5.4.25.1 NAME 'c-InternationalISDNNumber' - SUP internationalISDNNumber COLLECTIVE ) - -# Full Copyright -# -# Copyright (C) The Internet Society (2003). All Rights Reserved. -# -# This document and translations of it may be copied and furnished -# to others, and derivative works that comment on or otherwise explain -# it or assist in its implmentation may be prepared, copied, published -# and distributed, in whole or in part, without restriction of any -# kind, provided that the above copyright notice and this paragraph -# are included on all such copies and derivative works. However, -# this document itself may not be modified in any way, such as by -# removing the copyright notice or references to the Internet Society -# or other Internet organizations, except as needed for the purpose -# of developing Internet standards in which case the procedures for -# copyrights defined in the Internet Standards process must be followed, -# or as required to translate it into languages other than English. diff --git a/docker/ldap/data/etc/schema/corba.ldif b/docker/ldap/data/etc/schema/corba.ldif deleted file mode 100644 index b558aab..0000000 --- a/docker/ldap/data/etc/schema/corba.ldif +++ /dev/null @@ -1,42 +0,0 @@ -# corba.ldif -- Corba Object Schema -# depends upon core.ldif -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1999). -## Please see full copyright statement below. -# -# From RFC 2714 [portions trimmed]: -# Schema for Representing CORBA Object References in an LDAP Directory -# -# This file was automatically generated from corba.schema; see that file -# for complete references. -# -dn: cn=corba,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: corba -olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.4.1.14 NAME 'corbaIor' DESC 'Strin - gified interoperable object reference of a CORBA object' EQUALITY caseIgnoreI - A5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.4.1.15 NAME 'corbaRepositoryId' DE - SC 'Repository ids of interfaces implemented by a CORBA object' EQUALITY case - ExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.10 NAME 'corbaContainer' DESC ' - Container for a CORBA object' SUP top STRUCTURAL MUST cn ) -olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.4.2.9 NAME 'corbaObject' DESC 'CORB - A object representation' SUP top ABSTRACT MAY ( corbaRepositoryId $ descripti - on ) ) -olcObjectClasses: {2}( 1.3.6.1.4.1.42.2.27.4.2.11 NAME 'corbaObjectReference' - DESC 'CORBA interoperable object reference' SUP corbaObject AUXILIARY MUST co - rbaIor ) diff --git a/docker/ldap/data/etc/schema/corba.schema b/docker/ldap/data/etc/schema/corba.schema deleted file mode 100644 index 5f836c3..0000000 --- a/docker/ldap/data/etc/schema/corba.schema +++ /dev/null @@ -1,239 +0,0 @@ -# corba.schema -- Corba Object Schema -# depends upon core.schema -# $OpenLDAP$ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1999). -## Please see full copyright statement below. - - -# Network Working Group V. Ryan -# Request for Comments: 2714 R. Lee -# Category: Informational S. Seligman -# Sun Microsystems, Inc. -# October 1999 -# -# -# Schema for Representing CORBA Object References in an LDAP Directory -# -# Status of this Memo -# -# This memo provides information for the Internet community. It does -# not specify an Internet standard of any kind. Distribution of this -# memo is unlimited. -# -# Copyright Notice -# -# Copyright (C) The Internet Society (1999). All Rights Reserved. -# -# Abstract -# -# CORBA [CORBA] is the Common Object Request Broker Architecture -# defined by the Object Management Group. This document defines the -# schema for representing CORBA object references in an LDAP directory -# [LDAPv3]. -# -# [trimmed] - -# 3. Attribute Type Definitions -# -# The following attribute types are defined in this document: -# -# corbaIor -# corbaRepositoryId -# -# 3.1 corbaIor -# -# This attribute stores the string representation of the interoperable -# object reference (IOR) for a CORBA object. An IOR is an opaque handle -# for the object which contains the information necessary to locate the -# object, even if the object is in another ORB. -# -# This attribute's syntax is 'IA5 String' and its case is -# insignificant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.14 -# NAME 'corbaIor' -# DESC 'Stringified interoperable object reference of a CORBA object' -# EQUALITY caseIgnoreIA5Match -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 -# SINGLE-VALUE -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.14 - NAME 'corbaIor' - DESC 'Stringified interoperable object reference of a CORBA object' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 - SINGLE-VALUE ) - -# 3.2 corbaRepositoryId -# -# Each CORBA interface has a unique "repository id" (also called "type -# id") that identifies the interface. A CORBA object has one or more -# repository ids, one for each interface that it implements. -# -# The format of a repository id can be any string, but the OMG -# specifies four standard formats: -# -# a. IDL-style -# -# IDL:Prefix/ModuleName/InterfaceName:VersionNumber -# -# For example, the repository id for the "NamingContext" in OMG's COS -# Naming module is: "IDL:omg.org/CosNaming/NamingContext:1.0". -# -# b. RMI-style -# -# RMI:ClassName:HashCode[:SUID] -# -# This format is used by RMI-IIOP remote objects [RMI-IIOP]. -# "ClassName" is the fully qualified name of the class (for example, -# "java.lang.String"). "HashCode" is the object's hash code (that is, -# that obtained by invoking the "hashCode()" method). "SUID" is the -# "stream unique identifier", which is a 64-bit number that uniquely -# identifies the serialization version of the class; SUID is optional -# in the repository id. -# -# c. DCE-style -# -# DCE:UUID -# -# This format is used for DCE/CORBA interoperability [CORBA-DCE]. -# "UUID" represents a DCE UUID. -# -# d. "local" -# -# This format is defined by the local Object Request Broker (ORB). -# -# The corbaRepositoryId attribute is a multivalued attribute; each -# value records a single repository id of an interface implemented by -# the CORBA object. This attribute need not contain a complete list of -# the interfaces implemented by the CORBA object. -# -# This attribute's syntax is 'Directory String' and its case is -# significant. The values of this attribute are encoded using UTF-8. -# Some values may require translation from their native representation -# in order to be correctly encoded using UTF-8. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.15 -# NAME 'corbaRepositoryId' -# DESC 'Repository ids of interfaces implemented by a CORBA object' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 -# ) -# -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.15 - NAME 'corbaRepositoryId' - DESC 'Repository ids of interfaces implemented by a CORBA object' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# 4. Object Class Definitions -# -# The following object classes are defined in this document: -# -# corbaContainer -# corbaObject -# corbaObjectReference -# -# 4.1 corbaContainer -# -# This structural object class represents a container for a CORBA -# object. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.10 -# NAME 'corbaContainer' -# DESC 'Container for a CORBA object' -# SUP top -# STRUCTURAL -# MUST ( cn ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.10 - NAME 'corbaContainer' - DESC 'Container for a CORBA object' - SUP top - STRUCTURAL - MUST cn ) - -# 4.2 corbaObject -# -# This abstract object class is the root class for representing a CORBA -# object. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.9 -# NAME 'corbaObject' -# DESC 'CORBA object representation' -# SUP top -# ABSTRACT -# MAY ( corbaRepositoryId $ description ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.9 - NAME 'corbaObject' - DESC 'CORBA object representation' - SUP top - ABSTRACT - MAY ( corbaRepositoryId $ description ) ) - -# 4.3 corbaObjectReference -# -# This auxiliary object class represents a CORBA object reference. It -# must be mixed in with a structural object class. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.11 -# NAME 'corbaObjectReference' -# DESC 'CORBA interoperable object reference' -# SUP corbaObject -# AUXILIARY -# MUST ( corbaIor ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.11 - NAME 'corbaObjectReference' - DESC 'CORBA interoperable object reference' - SUP corbaObject - AUXILIARY - MUST corbaIor ) - -# 10. Full Copyright Statement -# -# Copyright (C) The Internet Society (1999). All Rights Reserved. -# -# This document and translations of it may be copied and furnished to -# others, and derivative works that comment on or otherwise explain it -# or assist in its implementation may be prepared, copied, published -# and distributed, in whole or in part, without restriction of any -# kind, provided that the above copyright notice and this paragraph are -# included on all such copies and derivative works. However, this -# document itself may not be modified in any way, such as by removing -# the copyright notice or references to the Internet Society or other -# Internet organizations, except as needed for the purpose of -# developing Internet standards in which case the procedures for -# copyrights defined in the Internet Standards process must be -# followed, or as required to translate it into languages other than -# English. -# -# The limited permissions granted above are perpetual and will not be -# revoked by the Internet Society or its successors or assigns. -# -# This document and the information contained herein is provided on an -# "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -# TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -# BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -# HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. diff --git a/docker/ldap/data/etc/schema/core.ldif b/docker/ldap/data/etc/schema/core.ldif deleted file mode 100644 index 545a6fb..0000000 --- a/docker/ldap/data/etc/schema/core.ldif +++ /dev/null @@ -1,591 +0,0 @@ -# OpenLDAP Core schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1997-2003). -## All Rights Reserved. -## -## This document and translations of it may be copied and furnished to -## others, and derivative works that comment on or otherwise explain it -## or assist in its implementation may be prepared, copied, published -## and distributed, in whole or in part, without restriction of any -## kind, provided that the above copyright notice and this paragraph are -## included on all such copies and derivative works. However, this -## document itself may not be modified in any way, such as by removing -## the copyright notice or references to the Internet Society or other -## Internet organizations, except as needed for the purpose of -## developing Internet standards in which case the procedures for -## copyrights defined in the Internet Standards process must be -## followed, or as required to translate it into languages other than -## English. -## -## The limited permissions granted above are perpetual and will not be -## revoked by the Internet Society or its successors or assigns. -## -## This document and the information contained herein is provided on an -## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -# -# -# -# Includes LDAPv3 schema items from: -# RFC 2252/2256 (LDAPv3) -# -# Select standard track schema items: -# RFC 1274 (uid/dc) -# RFC 2079 (URI) -# RFC 2247 (dc/dcObject) -# RFC 2587 (PKI) -# RFC 2589 (Dynamic Directory Services) -# -# Select informational schema items: -# RFC 2377 (uidObject) -# -# -# Standard attribute types from RFC 2256 -# -dn: cn=core,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: core -# -# system schema -#olcAttributeTypes: ( 2.5.4.0 NAME 'objectClass' -# DESC 'RFC2256: object classes of the entity' -# EQUALITY objectIdentifierMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) -# -# system schema -#olcAttributeTypes: ( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' ) -# DESC 'RFC2256: name of aliased object' -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE ) -# -olcAttributeTypes: ( 2.5.4.2 NAME 'knowledgeInformation' - DESC 'RFC2256: knowledge information' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) -# -# system schema -#olcAttributeTypes: ( 2.5.4.3 NAME ( 'cn' 'commonName' ) -# DESC 'RFC2256: common name(s) for which the entity is known by' -# SUP name ) -# -olcAttributeTypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) - DESC 'RFC2256: last (family) name(s) for which the entity is known by' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.5 NAME 'serialNumber' - DESC 'RFC2256: serial number of the entity' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} ) -# -# RFC 4519 definition ('countryName' in X.500 and RFC2256) -olcAttributeTypes: ( 2.5.4.6 NAME ( 'c' 'countryName' ) - DESC 'RFC4519: two-letter ISO-3166 country code' - SUP name - SYNTAX 1.3.6.1.4.1.1466.115.121.1.11 - SINGLE-VALUE ) -# -olcAttributeTypes: ( 2.5.4.7 NAME ( 'l' 'localityName' ) - DESC 'RFC2256: locality which this object resides in' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' ) - DESC 'RFC2256: state or province which this object resides in' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.9 NAME ( 'street' 'streetAddress' ) - DESC 'RFC2256: street address of this object' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) -# -olcAttributeTypes: ( 2.5.4.10 NAME ( 'o' 'organizationName' ) - DESC 'RFC2256: organization this object belongs to' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) - DESC 'RFC2256: organizational unit this object belongs to' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.12 NAME 'title' - DESC 'RFC2256: title associated with the entity' - SUP name ) -# -# system schema -#olcAttributeTypes: ( 2.5.4.13 NAME 'description' -# DESC 'RFC2256: descriptive information' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) -# -# Deprecated by enhancedSearchGuide -olcAttributeTypes: ( 2.5.4.14 NAME 'searchGuide' - DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 ) -# -olcAttributeTypes: ( 2.5.4.15 NAME 'businessCategory' - DESC 'RFC2256: business category' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) -# -olcAttributeTypes: ( 2.5.4.16 NAME 'postalAddress' - DESC 'RFC2256: postal address' - EQUALITY caseIgnoreListMatch - SUBSTR caseIgnoreListSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) -# -olcAttributeTypes: ( 2.5.4.17 NAME 'postalCode' - DESC 'RFC2256: postal code' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} ) -# -olcAttributeTypes: ( 2.5.4.18 NAME 'postOfficeBox' - DESC 'RFC2256: Post Office Box' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} ) -# -olcAttributeTypes: ( 2.5.4.19 NAME 'physicalDeliveryOfficeName' - DESC 'RFC2256: Physical Delivery Office Name' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) -# -olcAttributeTypes: ( 2.5.4.20 NAME 'telephoneNumber' - DESC 'RFC2256: Telephone Number' - EQUALITY telephoneNumberMatch - SUBSTR telephoneNumberSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) -# -olcAttributeTypes: ( 2.5.4.21 NAME 'telexNumber' - DESC 'RFC2256: Telex Number' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 ) -# -olcAttributeTypes: ( 2.5.4.22 NAME 'teletexTerminalIdentifier' - DESC 'RFC2256: Teletex Terminal Identifier' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 ) -# -olcAttributeTypes: ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' ) - DESC 'RFC2256: Facsimile (Fax) Telephone Number' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 ) -# -olcAttributeTypes: ( 2.5.4.24 NAME 'x121Address' - DESC 'RFC2256: X.121 Address' - EQUALITY numericStringMatch - SUBSTR numericStringSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} ) -# -olcAttributeTypes: ( 2.5.4.25 NAME 'internationaliSDNNumber' - DESC 'RFC2256: international ISDN number' - EQUALITY numericStringMatch - SUBSTR numericStringSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} ) -# -olcAttributeTypes: ( 2.5.4.26 NAME 'registeredAddress' - DESC 'RFC2256: registered postal address' - SUP postalAddress - SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) -# -olcAttributeTypes: ( 2.5.4.27 NAME 'destinationIndicator' - DESC 'RFC2256: destination indicator' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} ) -# -olcAttributeTypes: ( 2.5.4.28 NAME 'preferredDeliveryMethod' - DESC 'RFC2256: preferred delivery method' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.14 - SINGLE-VALUE ) -# -olcAttributeTypes: ( 2.5.4.29 NAME 'presentationAddress' - DESC 'RFC2256: presentation address' - EQUALITY presentationAddressMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.43 - SINGLE-VALUE ) -# -olcAttributeTypes: ( 2.5.4.30 NAME 'supportedApplicationContext' - DESC 'RFC2256: supported application context' - EQUALITY objectIdentifierMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) -# -olcAttributeTypes: ( 2.5.4.31 NAME 'member' - DESC 'RFC2256: member of a group' - SUP distinguishedName ) -# -olcAttributeTypes: ( 2.5.4.32 NAME 'owner' - DESC 'RFC2256: owner (of the object)' - SUP distinguishedName ) -# -olcAttributeTypes: ( 2.5.4.33 NAME 'roleOccupant' - DESC 'RFC2256: occupant of role' - SUP distinguishedName ) -# -# system schema -#olcAttributeTypes: ( 2.5.4.34 NAME 'seeAlso' -# DESC 'RFC2256: DN of related object' -# SUP distinguishedName ) -# -# system schema -#olcAttributeTypes: ( 2.5.4.35 NAME 'userPassword' -# DESC 'RFC2256/2307: password of user' -# EQUALITY octetStringMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) -# -# Must be transferred using ;binary -# with certificateExactMatch rule (per X.509) -olcAttributeTypes: ( 2.5.4.36 NAME 'userCertificate' - DESC 'RFC2256: X.509 user certificate, use ;binary' - EQUALITY certificateExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 ) -# -# Must be transferred using ;binary -# with certificateExactMatch rule (per X.509) -olcAttributeTypes: ( 2.5.4.37 NAME 'cACertificate' - DESC 'RFC2256: X.509 CA certificate, use ;binary' - EQUALITY certificateExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 ) -# -# Must be transferred using ;binary -olcAttributeTypes: ( 2.5.4.38 NAME 'authorityRevocationList' - DESC 'RFC2256: X.509 authority revocation list, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) -# -# Must be transferred using ;binary -olcAttributeTypes: ( 2.5.4.39 NAME 'certificateRevocationList' - DESC 'RFC2256: X.509 certificate revocation list, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) -# -# Must be stored and requested in the binary form -olcAttributeTypes: ( 2.5.4.40 NAME 'crossCertificatePair' - DESC 'RFC2256: X.509 cross certificate pair, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 ) -# -# 2.5.4.41 is defined above as it's used for subtyping -#olcAttributeTypes: ( 2.5.4.41 NAME 'name' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) -# -olcAttributeTypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' ) - DESC 'RFC2256: first name(s) for which the entity is known by' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.43 NAME 'initials' - DESC 'RFC2256: initials of some or all of names, but not the surname(s).' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.44 NAME 'generationQualifier' - DESC 'RFC2256: name qualifier indicating a generation' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.45 NAME 'x500UniqueIdentifier' - DESC 'RFC2256: X.500 unique identifier' - EQUALITY bitStringMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 ) -# -olcAttributeTypes: ( 2.5.4.46 NAME 'dnQualifier' - DESC 'RFC2256: DN qualifier' - EQUALITY caseIgnoreMatch - ORDERING caseIgnoreOrderingMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 ) -# -olcAttributeTypes: ( 2.5.4.47 NAME 'enhancedSearchGuide' - DESC 'RFC2256: enhanced search guide' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 ) -# -olcAttributeTypes: ( 2.5.4.48 NAME 'protocolInformation' - DESC 'RFC2256: protocol information' - EQUALITY protocolInformationMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 ) -# -# 2.5.4.49 is defined above as it's used for subtyping -#olcAttributeTypes: ( 2.5.4.49 NAME 'distinguishedName' -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) -# -olcAttributeTypes: ( 2.5.4.50 NAME 'uniqueMember' - DESC 'RFC2256: unique member of a group' - EQUALITY uniqueMemberMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 ) -# -olcAttributeTypes: ( 2.5.4.51 NAME 'houseIdentifier' - DESC 'RFC2256: house identifier' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) -# -# Must be transferred using ;binary -olcAttributeTypes: ( 2.5.4.52 NAME 'supportedAlgorithms' - DESC 'RFC2256: supported algorithms' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 ) -# -# Must be transferred using ;binary -olcAttributeTypes: ( 2.5.4.53 NAME 'deltaRevocationList' - DESC 'RFC2256: delta revocation list; use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) -# -olcAttributeTypes: ( 2.5.4.54 NAME 'dmdName' - DESC 'RFC2256: name of DMD' - SUP name ) -# -olcAttributeTypes: ( 2.5.4.65 NAME 'pseudonym' - DESC 'X.520(4th): pseudonym for the object' - SUP name ) -# -# Standard object classes from RFC2256 -# -# system schema -#olcObjectClasses: ( 2.5.6.1 NAME 'alias' -# DESC 'RFC2256: an alias' -# SUP top STRUCTURAL -# MUST aliasedObjectName ) -# -olcObjectClasses: ( 2.5.6.2 NAME 'country' - DESC 'RFC2256: a country' - SUP top STRUCTURAL - MUST c - MAY ( searchGuide $ description ) ) -# -olcObjectClasses: ( 2.5.6.3 NAME 'locality' - DESC 'RFC2256: a locality' - SUP top STRUCTURAL - MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.4 NAME 'organization' - DESC 'RFC2256: an organization' - SUP top STRUCTURAL - MUST o - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.5 NAME 'organizationalUnit' - DESC 'RFC2256: an organizational unit' - SUP top STRUCTURAL - MUST ou - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.6 NAME 'person' - DESC 'RFC2256: a person' - SUP top STRUCTURAL - MUST ( sn $ cn ) - MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) -# -olcObjectClasses: ( 2.5.6.7 NAME 'organizationalPerson' - DESC 'RFC2256: an organizational person' - SUP person STRUCTURAL - MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) ) -# -olcObjectClasses: ( 2.5.6.8 NAME 'organizationalRole' - DESC 'RFC2256: an organizational role' - SUP top STRUCTURAL - MUST cn - MAY ( x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ - seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $ - postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ ou $ st $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.9 NAME 'groupOfNames' - DESC 'RFC2256: a group of names (DNs)' - SUP top STRUCTURAL - MUST ( member $ cn ) - MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) -# -olcObjectClasses: ( 2.5.6.10 NAME 'residentialPerson' - DESC 'RFC2256: an residential person' - SUP person STRUCTURAL - MUST l - MAY ( businessCategory $ x121Address $ registeredAddress $ - destinationIndicator $ preferredDeliveryMethod $ telexNumber $ - teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ preferredDeliveryMethod $ street $ - postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ st $ l ) ) -# -olcObjectClasses: ( 2.5.6.11 NAME 'applicationProcess' - DESC 'RFC2256: an application process' - SUP top STRUCTURAL - MUST cn - MAY ( seeAlso $ ou $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.12 NAME 'applicationEntity' - DESC 'RFC2256: an application entity' - SUP top STRUCTURAL - MUST ( presentationAddress $ cn ) - MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $ - description ) ) -# -olcObjectClasses: ( 2.5.6.13 NAME 'dSA' - DESC 'RFC2256: a directory system agent (a server)' - SUP applicationEntity STRUCTURAL - MAY knowledgeInformation ) -# -olcObjectClasses: ( 2.5.6.14 NAME 'device' - DESC 'RFC2256: a device' - SUP top STRUCTURAL - MUST cn - MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) ) -# -olcObjectClasses: ( 2.5.6.15 NAME 'strongAuthenticationUser' - DESC 'RFC2256: a strong authentication user' - SUP top AUXILIARY - MUST userCertificate ) -# -olcObjectClasses: ( 2.5.6.16 NAME 'certificationAuthority' - DESC 'RFC2256: a certificate authority' - SUP top AUXILIARY - MUST ( authorityRevocationList $ certificateRevocationList $ - cACertificate ) MAY crossCertificatePair ) -# -olcObjectClasses: ( 2.5.6.17 NAME 'groupOfUniqueNames' - DESC 'RFC2256: a group of unique names (DN and Unique Identifier)' - SUP top STRUCTURAL - MUST ( uniqueMember $ cn ) - MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) -# -olcObjectClasses: ( 2.5.6.18 NAME 'userSecurityInformation' - DESC 'RFC2256: a user security information' - SUP top AUXILIARY - MAY ( supportedAlgorithms ) ) -# -olcObjectClasses: ( 2.5.6.16.2 NAME 'certificationAuthority-V2' - SUP certificationAuthority - AUXILIARY MAY ( deltaRevocationList ) ) -# -olcObjectClasses: ( 2.5.6.19 NAME 'cRLDistributionPoint' - SUP top STRUCTURAL - MUST ( cn ) - MAY ( certificateRevocationList $ authorityRevocationList $ - deltaRevocationList ) ) -# -olcObjectClasses: ( 2.5.6.20 NAME 'dmd' - SUP top STRUCTURAL - MUST ( dmdName ) - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ - street $ postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ st $ l $ description ) ) -# -# -# Object Classes from RFC 2587 -# -olcObjectClasses: ( 2.5.6.21 NAME 'pkiUser' - DESC 'RFC2587: a PKI user' - SUP top AUXILIARY - MAY userCertificate ) -# -olcObjectClasses: ( 2.5.6.22 NAME 'pkiCA' - DESC 'RFC2587: PKI certificate authority' - SUP top AUXILIARY - MAY ( authorityRevocationList $ certificateRevocationList $ - cACertificate $ crossCertificatePair ) ) -# -olcObjectClasses: ( 2.5.6.23 NAME 'deltaCRL' - DESC 'RFC2587: PKI user' - SUP top AUXILIARY - MAY deltaRevocationList ) -# -# -# Standard Track URI label schema from RFC 2079 -# system schema -#olcAttributeTypes: ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI' -# DESC 'RFC2079: Uniform Resource Identifier with optional label' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -# -olcObjectClasses: ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject' - DESC 'RFC2079: object that contains the URI attribute type' - MAY ( labeledURI ) - SUP top AUXILIARY ) -# -# -# Derived from RFC 1274, but with new "short names" -# -#olcAttributeTypes: ( 0.9.2342.19200300.100.1.1 -# NAME ( 'uid' 'userid' ) -# DESC 'RFC1274: user identifier' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -# -olcAttributeTypes: ( 0.9.2342.19200300.100.1.3 - NAME ( 'mail' 'rfc822Mailbox' ) - DESC 'RFC1274: RFC822 Mailbox' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) -# -olcObjectClasses: ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' - DESC 'RFC1274: simple security object' - SUP top AUXILIARY - MUST userPassword ) -# -# RFC 1274 + RFC 2247 -olcAttributeTypes: ( 0.9.2342.19200300.100.1.25 - NAME ( 'dc' 'domainComponent' ) - DESC 'RFC1274/2247: domain component' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -# -# RFC 2247 -olcObjectClasses: ( 1.3.6.1.4.1.1466.344 NAME 'dcObject' - DESC 'RFC2247: domain component object' - SUP top AUXILIARY MUST dc ) -# -# RFC 2377 -olcObjectClasses: ( 1.3.6.1.1.3.1 NAME 'uidObject' - DESC 'RFC2377: uid object' - SUP top AUXILIARY MUST uid ) -# -# From COSINE Pilot -olcAttributeTypes: ( 0.9.2342.19200300.100.1.37 - NAME 'associatedDomain' - DESC 'RFC1274: domain associated with object' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -# -# RFC 2459 -- deprecated in favor of 'mail' (in cosine.schema) -olcAttributeTypes: ( 1.2.840.113549.1.9.1 - NAME ( 'email' 'emailAddress' 'pkcs9email' ) - DESC 'RFC3280: legacy attribute for email addresses in DNs' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) -# diff --git a/docker/ldap/data/etc/schema/core.schema b/docker/ldap/data/etc/schema/core.schema deleted file mode 100644 index ccffc7a..0000000 --- a/docker/ldap/data/etc/schema/core.schema +++ /dev/null @@ -1,610 +0,0 @@ -# OpenLDAP Core schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1997-2006). -## All Rights Reserved. -## -## This document and translations of it may be copied and furnished to -## others, and derivative works that comment on or otherwise explain it -## or assist in its implementation may be prepared, copied, published -## and distributed, in whole or in part, without restriction of any -## kind, provided that the above copyright notice and this paragraph are -## included on all such copies and derivative works. However, this -## document itself may not be modified in any way, such as by removing -## the copyright notice or references to the Internet Society or other -## Internet organizations, except as needed for the purpose of -## developing Internet standards in which case the procedures for -## copyrights defined in the Internet Standards process must be -## followed, or as required to translate it into languages other than -## English. -## -## The limited permissions granted above are perpetual and will not be -## revoked by the Internet Society or its successors or assigns. -## -## This document and the information contained herein is provided on an -## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -# -# -# Includes LDAPv3 schema items from: -# RFC 2252/2256 (LDAPv3) -# -# Select standard track schema items: -# RFC 1274 (uid/dc) -# RFC 2079 (URI) -# RFC 2247 (dc/dcObject) -# RFC 2587 (PKI) -# RFC 2589 (Dynamic Directory Services) -# RFC 4524 (associatedDomain) -# -# Select informational schema items: -# RFC 2377 (uidObject) - -# -# Standard attribute types from RFC 2256 -# - -# system schema -#attributetype ( 2.5.4.0 NAME 'objectClass' -# DESC 'RFC2256: object classes of the entity' -# EQUALITY objectIdentifierMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) - -# system schema -#attributetype ( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' ) -# DESC 'RFC2256: name of aliased object' -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE ) - -attributetype ( 2.5.4.2 NAME 'knowledgeInformation' - DESC 'RFC2256: knowledge information' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) - -# system schema -#attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' ) -# DESC 'RFC2256: common name(s) for which the entity is known by' -# SUP name ) - -attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' ) - DESC 'RFC2256: last (family) name(s) for which the entity is known by' - SUP name ) - -attributetype ( 2.5.4.5 NAME 'serialNumber' - DESC 'RFC2256: serial number of the entity' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} ) - -# RFC 4519 definition ('countryName' in X.500 and RFC2256) -attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' ) - DESC 'RFC4519: two-letter ISO-3166 country code' - SUP name - SYNTAX 1.3.6.1.4.1.1466.115.121.1.11 - SINGLE-VALUE ) - -#attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' ) -# DESC 'RFC2256: ISO-3166 country 2-letter code' -# SUP name SINGLE-VALUE ) - -attributetype ( 2.5.4.7 NAME ( 'l' 'localityName' ) - DESC 'RFC2256: locality which this object resides in' - SUP name ) - -attributetype ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' ) - DESC 'RFC2256: state or province which this object resides in' - SUP name ) - -attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' ) - DESC 'RFC2256: street address of this object' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) - -attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' ) - DESC 'RFC2256: organization this object belongs to' - SUP name ) - -attributetype ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) - DESC 'RFC2256: organizational unit this object belongs to' - SUP name ) - -attributetype ( 2.5.4.12 NAME 'title' - DESC 'RFC2256: title associated with the entity' - SUP name ) - -# system schema -#attributetype ( 2.5.4.13 NAME 'description' -# DESC 'RFC2256: descriptive information' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) - -# Deprecated by enhancedSearchGuide -attributetype ( 2.5.4.14 NAME 'searchGuide' - DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 ) - -attributetype ( 2.5.4.15 NAME 'businessCategory' - DESC 'RFC2256: business category' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) - -attributetype ( 2.5.4.16 NAME 'postalAddress' - DESC 'RFC2256: postal address' - EQUALITY caseIgnoreListMatch - SUBSTR caseIgnoreListSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) - -attributetype ( 2.5.4.17 NAME 'postalCode' - DESC 'RFC2256: postal code' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} ) - -attributetype ( 2.5.4.18 NAME 'postOfficeBox' - DESC 'RFC2256: Post Office Box' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} ) - -attributetype ( 2.5.4.19 NAME 'physicalDeliveryOfficeName' - DESC 'RFC2256: Physical Delivery Office Name' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) - -attributetype ( 2.5.4.20 NAME 'telephoneNumber' - DESC 'RFC2256: Telephone Number' - EQUALITY telephoneNumberMatch - SUBSTR telephoneNumberSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) - -attributetype ( 2.5.4.21 NAME 'telexNumber' - DESC 'RFC2256: Telex Number' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 ) - -attributetype ( 2.5.4.22 NAME 'teletexTerminalIdentifier' - DESC 'RFC2256: Teletex Terminal Identifier' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 ) - -attributetype ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' ) - DESC 'RFC2256: Facsimile (Fax) Telephone Number' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 ) - -attributetype ( 2.5.4.24 NAME 'x121Address' - DESC 'RFC2256: X.121 Address' - EQUALITY numericStringMatch - SUBSTR numericStringSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} ) - -attributetype ( 2.5.4.25 NAME 'internationaliSDNNumber' - DESC 'RFC2256: international ISDN number' - EQUALITY numericStringMatch - SUBSTR numericStringSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} ) - -attributetype ( 2.5.4.26 NAME 'registeredAddress' - DESC 'RFC2256: registered postal address' - SUP postalAddress - SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) - -attributetype ( 2.5.4.27 NAME 'destinationIndicator' - DESC 'RFC2256: destination indicator' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} ) - -attributetype ( 2.5.4.28 NAME 'preferredDeliveryMethod' - DESC 'RFC2256: preferred delivery method' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.14 - SINGLE-VALUE ) - -attributetype ( 2.5.4.29 NAME 'presentationAddress' - DESC 'RFC2256: presentation address' - EQUALITY presentationAddressMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.43 - SINGLE-VALUE ) - -attributetype ( 2.5.4.30 NAME 'supportedApplicationContext' - DESC 'RFC2256: supported application context' - EQUALITY objectIdentifierMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) - -attributetype ( 2.5.4.31 NAME 'member' - DESC 'RFC2256: member of a group' - SUP distinguishedName ) - -attributetype ( 2.5.4.32 NAME 'owner' - DESC 'RFC2256: owner (of the object)' - SUP distinguishedName ) - -attributetype ( 2.5.4.33 NAME 'roleOccupant' - DESC 'RFC2256: occupant of role' - SUP distinguishedName ) - -# system schema -#attributetype ( 2.5.4.34 NAME 'seeAlso' -# DESC 'RFC2256: DN of related object' -# SUP distinguishedName ) - -# system schema -#attributetype ( 2.5.4.35 NAME 'userPassword' -# DESC 'RFC2256/2307: password of user' -# EQUALITY octetStringMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) - -# Must be transferred using ;binary -# with certificateExactMatch rule (per X.509) -attributetype ( 2.5.4.36 NAME 'userCertificate' - DESC 'RFC2256: X.509 user certificate, use ;binary' - EQUALITY certificateExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 ) - -# Must be transferred using ;binary -# with certificateExactMatch rule (per X.509) -attributetype ( 2.5.4.37 NAME 'cACertificate' - DESC 'RFC2256: X.509 CA certificate, use ;binary' - EQUALITY certificateExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 ) - -# Must be transferred using ;binary -attributetype ( 2.5.4.38 NAME 'authorityRevocationList' - DESC 'RFC2256: X.509 authority revocation list, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) - -# Must be transferred using ;binary -attributetype ( 2.5.4.39 NAME 'certificateRevocationList' - DESC 'RFC2256: X.509 certificate revocation list, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) - -# Must be stored and requested in the binary form -attributetype ( 2.5.4.40 NAME 'crossCertificatePair' - DESC 'RFC2256: X.509 cross certificate pair, use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 ) - -# system schema -#attributetype ( 2.5.4.41 NAME 'name' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) - -attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' ) - DESC 'RFC2256: first name(s) for which the entity is known by' - SUP name ) - -attributetype ( 2.5.4.43 NAME 'initials' - DESC 'RFC2256: initials of some or all of names, but not the surname(s).' - SUP name ) - -attributetype ( 2.5.4.44 NAME 'generationQualifier' - DESC 'RFC2256: name qualifier indicating a generation' - SUP name ) - -attributetype ( 2.5.4.45 NAME 'x500UniqueIdentifier' - DESC 'RFC2256: X.500 unique identifier' - EQUALITY bitStringMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 ) - -attributetype ( 2.5.4.46 NAME 'dnQualifier' - DESC 'RFC2256: DN qualifier' - EQUALITY caseIgnoreMatch - ORDERING caseIgnoreOrderingMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 ) - -attributetype ( 2.5.4.47 NAME 'enhancedSearchGuide' - DESC 'RFC2256: enhanced search guide' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 ) - -attributetype ( 2.5.4.48 NAME 'protocolInformation' - DESC 'RFC2256: protocol information' - EQUALITY protocolInformationMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 ) - -# system schema -#attributetype ( 2.5.4.49 NAME 'distinguishedName' -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -attributetype ( 2.5.4.50 NAME 'uniqueMember' - DESC 'RFC2256: unique member of a group' - EQUALITY uniqueMemberMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 ) - -attributetype ( 2.5.4.51 NAME 'houseIdentifier' - DESC 'RFC2256: house identifier' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) - -# Must be transferred using ;binary -attributetype ( 2.5.4.52 NAME 'supportedAlgorithms' - DESC 'RFC2256: supported algorithms' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 ) - -# Must be transferred using ;binary -attributetype ( 2.5.4.53 NAME 'deltaRevocationList' - DESC 'RFC2256: delta revocation list; use ;binary' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 ) - -attributetype ( 2.5.4.54 NAME 'dmdName' - DESC 'RFC2256: name of DMD' - SUP name ) - -attributetype ( 2.5.4.65 NAME 'pseudonym' - DESC 'X.520(4th): pseudonym for the object' - SUP name ) - -# Standard object classes from RFC2256 - -# system schema -#objectclass ( 2.5.6.0 NAME 'top' -# DESC 'RFC2256: top of the superclass chain' -# ABSTRACT -# MUST objectClass ) - -# system schema -#objectclass ( 2.5.6.1 NAME 'alias' -# DESC 'RFC2256: an alias' -# SUP top STRUCTURAL -# MUST aliasedObjectName ) - -objectclass ( 2.5.6.2 NAME 'country' - DESC 'RFC2256: a country' - SUP top STRUCTURAL - MUST c - MAY ( searchGuide $ description ) ) - -objectclass ( 2.5.6.3 NAME 'locality' - DESC 'RFC2256: a locality' - SUP top STRUCTURAL - MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) ) - -objectclass ( 2.5.6.4 NAME 'organization' - DESC 'RFC2256: an organization' - SUP top STRUCTURAL - MUST o - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) ) - -objectclass ( 2.5.6.5 NAME 'organizationalUnit' - DESC 'RFC2256: an organizational unit' - SUP top STRUCTURAL - MUST ou - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) ) - -objectclass ( 2.5.6.6 NAME 'person' - DESC 'RFC2256: a person' - SUP top STRUCTURAL - MUST ( sn $ cn ) - MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) - -objectclass ( 2.5.6.7 NAME 'organizationalPerson' - DESC 'RFC2256: an organizational person' - SUP person STRUCTURAL - MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ - postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) ) - -objectclass ( 2.5.6.8 NAME 'organizationalRole' - DESC 'RFC2256: an organizational role' - SUP top STRUCTURAL - MUST cn - MAY ( x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ - seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $ - postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ ou $ st $ l $ description ) ) - -objectclass ( 2.5.6.9 NAME 'groupOfNames' - DESC 'RFC2256: a group of names (DNs)' - SUP top STRUCTURAL - MUST ( member $ cn ) - MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) - -objectclass ( 2.5.6.10 NAME 'residentialPerson' - DESC 'RFC2256: an residential person' - SUP person STRUCTURAL - MUST l - MAY ( businessCategory $ x121Address $ registeredAddress $ - destinationIndicator $ preferredDeliveryMethod $ telexNumber $ - teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ - facsimileTelephoneNumber $ preferredDeliveryMethod $ street $ - postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ st $ l ) ) - -objectclass ( 2.5.6.11 NAME 'applicationProcess' - DESC 'RFC2256: an application process' - SUP top STRUCTURAL - MUST cn - MAY ( seeAlso $ ou $ l $ description ) ) - -objectclass ( 2.5.6.12 NAME 'applicationEntity' - DESC 'RFC2256: an application entity' - SUP top STRUCTURAL - MUST ( presentationAddress $ cn ) - MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $ - description ) ) - -objectclass ( 2.5.6.13 NAME 'dSA' - DESC 'RFC2256: a directory system agent (a server)' - SUP applicationEntity STRUCTURAL - MAY knowledgeInformation ) - -objectclass ( 2.5.6.14 NAME 'device' - DESC 'RFC2256: a device' - SUP top STRUCTURAL - MUST cn - MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) ) - -objectclass ( 2.5.6.15 NAME 'strongAuthenticationUser' - DESC 'RFC2256: a strong authentication user' - SUP top AUXILIARY - MUST userCertificate ) - -objectclass ( 2.5.6.16 NAME 'certificationAuthority' - DESC 'RFC2256: a certificate authority' - SUP top AUXILIARY - MUST ( authorityRevocationList $ certificateRevocationList $ - cACertificate ) MAY crossCertificatePair ) - -objectclass ( 2.5.6.17 NAME 'groupOfUniqueNames' - DESC 'RFC2256: a group of unique names (DN and Unique Identifier)' - SUP top STRUCTURAL - MUST ( uniqueMember $ cn ) - MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) - -objectclass ( 2.5.6.18 NAME 'userSecurityInformation' - DESC 'RFC2256: a user security information' - SUP top AUXILIARY - MAY ( supportedAlgorithms ) ) - -objectclass ( 2.5.6.16.2 NAME 'certificationAuthority-V2' - SUP certificationAuthority - AUXILIARY MAY ( deltaRevocationList ) ) - -objectclass ( 2.5.6.19 NAME 'cRLDistributionPoint' - SUP top STRUCTURAL - MUST ( cn ) - MAY ( certificateRevocationList $ authorityRevocationList $ - deltaRevocationList ) ) - -objectclass ( 2.5.6.20 NAME 'dmd' - SUP top STRUCTURAL - MUST ( dmdName ) - MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ - x121Address $ registeredAddress $ destinationIndicator $ - preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ - telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ - street $ postOfficeBox $ postalCode $ postalAddress $ - physicalDeliveryOfficeName $ st $ l $ description ) ) - -# -# Object Classes from RFC 2587 -# -objectclass ( 2.5.6.21 NAME 'pkiUser' - DESC 'RFC2587: a PKI user' - SUP top AUXILIARY - MAY userCertificate ) - -objectclass ( 2.5.6.22 NAME 'pkiCA' - DESC 'RFC2587: PKI certificate authority' - SUP top AUXILIARY - MAY ( authorityRevocationList $ certificateRevocationList $ - cACertificate $ crossCertificatePair ) ) - -objectclass ( 2.5.6.23 NAME 'deltaCRL' - DESC 'RFC2587: PKI user' - SUP top AUXILIARY - MAY deltaRevocationList ) - -# -# Standard Track URI label schema from RFC 2079 -# system schema -#attributetype ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI' -# DESC 'RFC2079: Uniform Resource Identifier with optional label' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -objectclass ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject' - DESC 'RFC2079: object that contains the URI attribute type' - SUP top AUXILIARY - MAY ( labeledURI ) ) - -# -# Derived from RFC 1274, but with new "short names" -# -#attributetype ( 0.9.2342.19200300.100.1.1 -# NAME ( 'uid' 'userid' ) -# DESC 'RFC1274: user identifier' -# EQUALITY caseIgnoreMatch -# SUBSTR caseIgnoreSubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -attributetype ( 0.9.2342.19200300.100.1.3 - NAME ( 'mail' 'rfc822Mailbox' ) - DESC 'RFC1274: RFC822 Mailbox' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' - DESC 'RFC1274: simple security object' - SUP top AUXILIARY - MUST userPassword ) - -# RFC 1274 + RFC 2247 -attributetype ( 0.9.2342.19200300.100.1.25 - NAME ( 'dc' 'domainComponent' ) - DESC 'RFC1274/2247: domain component' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) - -# RFC 2247 -objectclass ( 1.3.6.1.4.1.1466.344 NAME 'dcObject' - DESC 'RFC2247: domain component object' - SUP top AUXILIARY MUST dc ) - -# RFC 2377 -objectclass ( 1.3.6.1.1.3.1 NAME 'uidObject' - DESC 'RFC2377: uid object' - SUP top AUXILIARY MUST uid ) - -# RFC 4524 -# The 'associatedDomain' attribute specifies DNS [RFC1034][RFC2181] -# host names [RFC1123] that are associated with an object. That is, -# values of this attribute should conform to the following ABNF: -# -# domain = root / label *( DOT label ) -# root = SPACE -# label = LETDIG [ *61( LETDIG / HYPHEN ) LETDIG ] -# LETDIG = %x30-39 / %x41-5A / %x61-7A ; "0" - "9" / "A"-"Z" / "a"-"z" -# SPACE = %x20 ; space (" ") -# HYPHEN = %x2D ; hyphen ("-") -# DOT = %x2E ; period (".") -attributetype ( 0.9.2342.19200300.100.1.37 - NAME 'associatedDomain' - DESC 'RFC1274: domain associated with object' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# RFC 2459 -- deprecated in favor of 'mail' (in cosine.schema) -attributetype ( 1.2.840.113549.1.9.1 - NAME ( 'email' 'emailAddress' 'pkcs9email' ) - DESC 'RFC3280: legacy attribute for email addresses in DNs' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) - diff --git a/docker/ldap/data/etc/schema/cosine.ldif b/docker/ldap/data/etc/schema/cosine.ldif deleted file mode 100644 index f8661f6..0000000 --- a/docker/ldap/data/etc/schema/cosine.ldif +++ /dev/null @@ -1,200 +0,0 @@ -# RFC1274: Cosine and Internet X.500 schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# RFC1274: Cosine and Internet X.500 schema -# -# This file contains LDAPv3 schema derived from X.500 COSINE "pilot" -# schema. As this schema was defined for X.500(89), some -# oddities were introduced in the mapping to LDAPv3. The -# mappings were based upon: draft-ietf-asid-ldapv3-attributes-03.txt -# (a work in progress) -# -# Note: It seems that the pilot schema evolved beyond what was -# described in RFC1274. However, this document attempts to describes -# RFC1274 as published. -# -# Depends on core.ldif -# -# This file was automatically generated from cosine.schema; see that -# file for complete background. -# -dn: cn=cosine,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: cosine -olcAttributeTypes: ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress' - EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1. - 1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.4 NAME 'info' DESC 'RFC1274: g - eneral information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.5 NAME ( 'drink' 'favouriteDri - nk' ) DESC 'RFC1274: favorite drink' EQUALITY caseIgnoreMatch SUBSTR caseIgno - reSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' DESC 'RFC1 - 274: room number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch S - YNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.7 NAME 'photo' DESC 'RFC1274: - photo (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.8 NAME 'userClass' DESC 'RFC12 - 74: category of user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat - ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.9 NAME 'host' DESC 'RFC1274: h - ost computer' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTA - X 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC127 - 4: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115 - .121.1.12 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' D - ESC 'RFC1274: unique identifier of document' EQUALITY caseIgnoreMatch SUBSTR - caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' DESC ' - RFC1274: title of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstri - ngsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' DES - C 'RFC1274: version of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSu - bstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' DESC - 'RFC1274: DN of author of document' EQUALITY distinguishedNameMatch SYNTAX 1 - .3.6.1.4.1.1466.115.121.1.12 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' DE - SC 'RFC1274: location of document original' EQUALITY caseIgnoreMatch SUBSTR c - aseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.20 NAME ( 'homePhone' 'homeTe - lephoneNumber' ) DESC 'RFC1274: home telephone number' EQUALITY telephoneNumb - erMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121 - .1.50 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.21 NAME 'secretary' DESC 'RFC - 1274: DN of secretary' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.146 - 6.115.121.1.12 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox' SYNTAX - 1.3.6.1.4.1.1466.115.121.1.39 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.26 NAME 'aRecord' EQUALITY ca - seIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord' EQUALITY c - aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord' EQUALITY c - aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord' EQUALITY c - aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord' EQUALITY - caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord' EQUALIT - Y caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.38 NAME 'associatedName' DESC - 'RFC1274: DN of entry associated with domain' EQUALITY distinguishedNameMatc - h SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress' D - ESC 'RFC1274: home postal address' EQUALITY caseIgnoreListMatch SUBSTR caseIg - noreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle' DESC - 'RFC1274: personal title' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstring - sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.41 NAME ( 'mobile' 'mobileTel - ephoneNumber' ) DESC 'RFC1274: mobile telephone number' EQUALITY telephoneNum - berMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.12 - 1.1.50 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.42 NAME ( 'pager' 'pagerTelep - honeNumber' ) DESC 'RFC1274: pager telephone number' EQUALITY telephoneNumber - Match SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1 - .50 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.43 NAME ( 'co' 'friendlyCount - ryName' ) DESC 'RFC1274: friendly country name' EQUALITY caseIgnoreMatch SUBS - TR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' DE - SC 'RFC1274: unique identifer' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.14 - 66.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus - ' DESC 'RFC1274: organizational status' EQUALITY caseIgnoreMatch SUBSTR caseI - gnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox' DESC ' - RFC1274: Janet mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Subst - ringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.47 NAME 'mailPreferenceOption - ' DESC 'RFC1274: mail preference option' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.48 NAME 'buildingName' DESC ' - RFC1274: name of building' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstrin - gsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality' DESC 'RF - C1274: DSA Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality' - DESC 'RFC1274: Single Level Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SIN - GLE-VALUE ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQualit - y' DESC 'RFC1274: Subtree Mininum Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1. - 13 SINGLE-VALUE ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQualit - y' DESC 'RFC1274: Subtree Maximun Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1. - 13 SINGLE-VALUE ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature' D - ESC 'RFC1274: Personal Signature (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1. - 23 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect' DESC 'R - FC1274: DIT Redirect' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466 - .115.121.1.12 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.55 NAME 'audio' DESC 'RFC1274 - : audio (u-law)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' D - ESC 'RFC1274: publisher of document' EQUALITY caseIgnoreMatch SUBSTR caseIgno - reSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.4 NAME ( 'pilotPerson' 'newPilo - tPerson' ) SUP person STRUCTURAL MAY ( userid $ textEncodedORAddress $ rfc822 - Mailbox $ favouriteDrink $ roomNumber $ userClass $ homeTelephoneNumber $ hom - ePostalAddress $ secretary $ personalTitle $ preferredDeliveryMethod $ busine - ssCategory $ janetMailbox $ otherMailbox $ mobileTelephoneNumber $ pagerTelep - honeNumber $ organizationalStatus $ mailPreferenceOption $ personalSignature - ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCT - URAL MUST userid MAY ( description $ seeAlso $ localityName $ organizationNam - e $ organizationalUnitName $ host ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.6 NAME 'document' SUP top STRUC - TURAL MUST documentIdentifier MAY ( commonName $ description $ seeAlso $ loca - lityName $ organizationName $ organizationalUnitName $ documentTitle $ docume - ntVersion $ documentAuthor $ documentLocation $ documentPublisher ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.7 NAME 'room' SUP top STRUCTURA - L MUST commonName MAY ( roomNumber $ description $ seeAlso $ telephoneNumber - ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' SUP top - STRUCTURAL MUST commonName MAY ( description $ seeAlso $ telephonenumber $ l - ocalityName $ organizationName $ organizationalUnitName ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.13 NAME 'domain' SUP top STRUCT - URAL MUST domainComponent MAY ( associatedName $ organizationName $ descripti - on $ businessCategory $ seeAlso $ searchGuide $ userPassword $ localityName $ - stateOrProvinceName $ streetAddress $ physicalDeliveryOfficeName $ postalAdd - ress $ postalCode $ postOfficeBox $ streetAddress $ facsimileTelephoneNumber - $ internationalISDNNumber $ telephoneNumber $ teletexTerminalIdentifier $ tel - exNumber $ preferredDeliveryMethod $ destinationIndicator $ registeredAddress - $ x121Address ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart' SUP d - omain STRUCTURAL MAY ( commonName $ surname $ description $ seeAlso $ telepho - neNumber $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ postOffi - ceBox $ streetAddress $ facsimileTelephoneNumber $ internationalISDNNumber $ - telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ preferredDelivery - Method $ destinationIndicator $ registeredAddress $ x121Address ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain' SUP domain - STRUCTURAL MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAME - Record ) ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject' D - ESC 'RFC1274: an object related to an domain' SUP top AUXILIARY MUST associat - edDomain ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP c - ountry STRUCTURAL MUST friendlyCountryName ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization' SU - P ( organization $ organizationalUnit ) STRUCTURAL MAY buildingName ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA' SUP dsa STR - UCTURAL MAY dSAQuality ) -olcObjectClasses: ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData' - SUP top AUXILIARY MUST dsaQuality MAY ( subtreeMinimumQuality $ subtreeMaximu - mQuality ) ) diff --git a/docker/ldap/data/etc/schema/cosine.schema b/docker/ldap/data/etc/schema/cosine.schema deleted file mode 100644 index 3b0bba1..0000000 --- a/docker/ldap/data/etc/schema/cosine.schema +++ /dev/null @@ -1,2571 +0,0 @@ -# RFC1274: Cosine and Internet X.500 schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# RFC1274: Cosine and Internet X.500 schema -# -# This file contains LDAPv3 schema derived from X.500 COSINE "pilot" -# schema. As this schema was defined for X.500(89), some -# oddities were introduced in the mapping to LDAPv3. The -# mappings were based upon: draft-ietf-asid-ldapv3-attributes-03.txt -# (a work in progress) -# -# Note: It seems that the pilot schema evolved beyond what was -# described in RFC1274. However, this document attempts to describes -# RFC1274 as published. -# -# Depends on core.schema - - -# Network Working Group P. Barker -# Request for Comments: 1274 S. Kille -# University College London -# November 1991 -# -# The COSINE and Internet X.500 Schema -# -# [trimmed] -# -# Abstract -# -# This document suggests an X.500 Directory Schema, or Naming -# Architecture, for use in the COSINE and Internet X.500 pilots. The -# schema is independent of any specific implementation. As well as -# indicating support for the standard object classes and attributes, a -# large number of generally useful object classes and attributes are -# also defined. An appendix to this document includes a machine -# processable version of the schema. -# -# [trimmed] - -# 7. Object Identifiers -# -# Some additional object identifiers are defined for this schema. -# These are also reproduced in Appendix C. -# -# data OBJECT IDENTIFIER ::= {ccitt 9} -# pss OBJECT IDENTIFIER ::= {data 2342} -# ucl OBJECT IDENTIFIER ::= {pss 19200300} -# pilot OBJECT IDENTIFIER ::= {ucl 100} -# -# pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1} -# pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3} -# pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4} -# pilotGroups OBJECT IDENTIFIER ::= {pilot 10} -# -# iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4} -# caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::= -# {pilotAttributeSyntax 5} -# -# 8. Object Classes -# [relocated after 9] - -# -# 9. Attribute Types -# -# 9.1. X.500 standard attribute types -# -# A number of generally useful attribute types are defined in X.520, -# and these are supported. Refer to that document for descriptions of -# the suggested usage of these attribute types. The ASN.1 for these -# attribute types is reproduced for completeness in Appendix C. -# -# 9.2. X.400 standard attribute types -# -# The standard X.400 attribute types are supported. See X.402 for full -# details. The ASN.1 for these attribute types is reproduced in -# Appendix C. -# -# 9.3. COSINE/Internet attribute types -# -# This section describes all the attribute types defined for use in the -# COSINE and Internet pilots. Descriptions are given as to the -# suggested usage of these attribute types. The ASN.1 for these -# attribute types is reproduced in Appendix C. -# -# 9.3.1. Userid -# -# The Userid attribute type specifies a computer system login name. -# -# userid ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-user-identifier)) -# ::= {pilotAttributeType 1} -# -#(in core.schema) -##attributetype ( 0.9.2342.19200300.100.1.1 NAME ( 'uid' 'userid' ) -## EQUALITY caseIgnoreMatch -## SUBSTR caseIgnoreSubstringsMatch -## SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.2. Text Encoded O/R Address -# -# The Text Encoded O/R Address attribute type specifies a text encoding -# of an X.400 O/R address, as specified in RFC 987. The use of this -# attribute is deprecated as the attribute is intended for interim use -# only. This attribute will be the first candidate for the attribute -# expiry mechanisms! -# -# textEncodedORAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-text-encoded-or-address)) -# ::= {pilotAttributeType 2} -# -attributetype ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.3. RFC 822 Mailbox -# -# The RFC822 Mailbox attribute type specifies an electronic mailbox -# attribute following the syntax specified in RFC 822. Note that this -# attribute should not be used for greybook or other non-Internet order -# mailboxes. -# -# rfc822Mailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# (SIZE (1 .. ub-rfc822-mailbox)) -# ::= {pilotAttributeType 3} -# -#(in core.schema) -##attributetype ( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mailbox' ) -## EQUALITY caseIgnoreIA5Match -## SUBSTR caseIgnoreIA5SubstringsMatch -## SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -# 9.3.4. Information -# -# The Information attribute type specifies any general information -# pertinent to an object. It is recommended that specific usage of -# this attribute type is avoided, and that specific requirements are -# met by other (possibly additional) attribute types. -# -# info ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-information)) -# ::= {pilotAttributeType 4} -# -attributetype ( 0.9.2342.19200300.100.1.4 NAME 'info' - DESC 'RFC1274: general information' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} ) - - -# 9.3.5. Favourite Drink -# -# The Favourite Drink attribute type specifies the favourite drink of -# an object (or person). -# -# favouriteDrink ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-favourite-drink)) -# ::= {pilotAttributeType 5} -# -attributetype ( 0.9.2342.19200300.100.1.5 - NAME ( 'drink' 'favouriteDrink' ) - DESC 'RFC1274: favorite drink' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.6. Room Number -# -# The Room Number attribute type specifies the room number of an -# object. Note that the commonName attribute should be used for naming -# room objects. -# -# roomNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-room-number)) -# ::= {pilotAttributeType 6} -# -attributetype ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' - DESC 'RFC1274: room number' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.7. Photo -# -# The Photo attribute type specifies a "photograph" for an object. -# This should be encoded in G3 fax as explained in recommendation T.4, -# with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as -# defined in X.420. -# -# IMPORT G3FacsimileBodyPart FROM { mhs-motis ipms modules -# information-objects } -# -# photo ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# CHOICE { -# g3-facsimile [3] G3FacsimileBodyPart -# } -# (SIZE (1 .. ub-photo)) -# ::= {pilotAttributeType 7} -# -attributetype ( 0.9.2342.19200300.100.1.7 NAME 'photo' - DESC 'RFC1274: photo (G3 fax)' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} ) - -# 9.3.8. User Class -# -# The User Class attribute type specifies a category of computer user. -# The semantics placed on this attribute are for local interpretation. -# Examples of current usage od this attribute in academia are -# undergraduate student, researcher, lecturer, etc. Note that the -# organizationalStatus attribute may now often be preferred as it makes -# no distinction between computer users and others. -# -# userClass ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-user-class)) -# ::= {pilotAttributeType 8} -# -attributetype ( 0.9.2342.19200300.100.1.8 NAME 'userClass' - DESC 'RFC1274: category of user' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.9. Host -# -# The Host attribute type specifies a host computer. -# -# host ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-host)) -# ::= {pilotAttributeType 9} -# -attributetype ( 0.9.2342.19200300.100.1.9 NAME 'host' - DESC 'RFC1274: host computer' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.10. Manager -# -# The Manager attribute type specifies the manager of an object -# represented by an entry. -# -# manager ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 10} -# -attributetype ( 0.9.2342.19200300.100.1.10 NAME 'manager' - DESC 'RFC1274: DN of manager' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -# 9.3.11. Document Identifier -# -# The Document Identifier attribute type specifies a unique identifier -# for a document. -# -# documentIdentifier ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-identifier)) -# ::= {pilotAttributeType 11} -# -attributetype ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' - DESC 'RFC1274: unique identifier of document' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.12. Document Title -# -# The Document Title attribute type specifies the title of a document. -# -# documentTitle ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-title)) -# ::= {pilotAttributeType 12} -# -attributetype ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' - DESC 'RFC1274: title of document' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.13. Document Version -# -# The Document Version attribute type specifies the version number of a -# document. -# -# documentVersion ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-version)) -# ::= {pilotAttributeType 13} -# -attributetype ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' - DESC 'RFC1274: version of document' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.14. Document Author -# -# The Document Author attribute type specifies the distinguished name -# of the author of a document. -# -# documentAuthor ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 14} -# -attributetype ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' - DESC 'RFC1274: DN of author of document' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -# 9.3.15. Document Location -# -# The Document Location attribute type specifies the location of the -# document original. -# -# documentLocation ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-location)) -# ::= {pilotAttributeType 15} -# -attributetype ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' - DESC 'RFC1274: location of document original' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.16. Home Telephone Number -# -# The Home Telephone Number attribute type specifies a home telephone -# number associated with a person. Attribute values should follow the -# agreed format for international telephone numbers: i.e., "+44 71 123 -# 4567". -# -# homeTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 20} -# -attributetype ( 0.9.2342.19200300.100.1.20 - NAME ( 'homePhone' 'homeTelephoneNumber' ) - DESC 'RFC1274: home telephone number' - EQUALITY telephoneNumberMatch - SUBSTR telephoneNumberSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) - -# 9.3.17. Secretary -# -# The Secretary attribute type specifies the secretary of a person. -# The attribute value for Secretary is a distinguished name. -# -# secretary ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 21} -# -attributetype ( 0.9.2342.19200300.100.1.21 NAME 'secretary' - DESC 'RFC1274: DN of secretary' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -# 9.3.18. Other Mailbox -# -# The Other Mailbox attribute type specifies values for electronic -# mailbox types other than X.400 and rfc822. -# -# otherMailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# SEQUENCE { -# mailboxType PrintableString, -- e.g. Telemail -# mailbox IA5String -- e.g. X378:Joe -# } -# ::= {pilotAttributeType 22} -# -attributetype ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 ) - -# 9.3.19. Last Modified Time -# -# The Last Modified Time attribute type specifies the last time, in UTC -# time, that an entry was modified. Ideally, this attribute should be -# maintained by the DSA. -# -# lastModifiedTime ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# uTCTimeSyntax -# ::= {pilotAttributeType 23} -# -## Deprecated in favor of modifyTimeStamp -#attributetype ( 0.9.2342.19200300.100.1.23 NAME 'lastModifiedTime' -# DESC 'RFC1274: time of last modify, replaced by modifyTimestamp' -# OBSOLETE -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.53 -# USAGE directoryOperation ) - -# 9.3.20. Last Modified By -# -# The Last Modified By attribute specifies the distinguished name of -# the last user to modify the associated entry. Ideally, this -# attribute should be maintained by the DSA. -# -# lastModifiedBy ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 24} -# -## Deprecated in favor of modifiersName -#attributetype ( 0.9.2342.19200300.100.1.24 NAME 'lastModifiedBy' -# DESC 'RFC1274: last modifier, replaced by modifiersName' -# OBSOLETE -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 -# USAGE directoryOperation ) - -# 9.3.21. Domain Component -# -# The Domain Component attribute type specifies a DNS/NRS domain. For -# example, "uk" or "ac". -# -# domainComponent ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# SINGLE VALUE -# ::= {pilotAttributeType 25} -# -##(in core.schema) -##attributetype ( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' ) -## EQUALITY caseIgnoreIA5Match -## SUBSTR caseIgnoreIA5SubstringsMatch -## SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) - -# 9.3.22. DNS ARecord -# -# The A Record attribute type specifies a type A (Address) DNS resource -# record [6] [7]. -# -# aRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 26} -# -## incorrect syntax? -attributetype ( 0.9.2342.19200300.100.1.26 NAME 'aRecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -## missing from RFC1274 -## incorrect syntax? -attributetype ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.23. MX Record -# -# The MX Record attribute type specifies a type MX (Mail Exchange) DNS -# resource record [6] [7]. -# -# mXRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 28} -# -## incorrect syntax!! -attributetype ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.24. NS Record -# -# The NS Record attribute type specifies an NS (Name Server) DNS -# resource record [6] [7]. -# -# nSRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 29} -# -## incorrect syntax!! -attributetype ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.25. SOA Record -# -# The SOA Record attribute type specifies a type SOA (Start of -# Authority) DNS resorce record [6] [7]. -# -# sOARecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 30} -# -## incorrect syntax!! -attributetype ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.26. CNAME Record -# -# The CNAME Record attribute type specifies a type CNAME (Canonical -# Name) DNS resource record [6] [7]. -# -# cNAMERecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# iA5StringSyntax -# ::= {pilotAttributeType 31} -# -## incorrect syntax!! -attributetype ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.27. Associated Domain -# -# The Associated Domain attribute type specifies a DNS or NRS domain -# which is associated with an object in the DIT. For example, the entry -# in the DIT with a distinguished name "C=GB, O=University College -# London" would have an associated domain of "UCL.AC.UK. Note that all -# domains should be represented in rfc822 order. See [3] for more -# details of usage of this attribute. -# -# associatedDomain ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# ::= {pilotAttributeType 37} -# -#attributetype ( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain' -# EQUALITY caseIgnoreIA5Match -# SUBSTR caseIgnoreIA5SubstringsMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 9.3.28. Associated Name -# -# The Associated Name attribute type specifies an entry in the -# organisational DIT associated with a DNS/NRS domain. See [3] for -# more details of usage of this attribute. -# -# associatedName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 38} -# -attributetype ( 0.9.2342.19200300.100.1.38 NAME 'associatedName' - DESC 'RFC1274: DN of entry associated with domain' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -# 9.3.29. Home postal address -# -# The Home postal address attribute type specifies a home postal -# address for an object. This should be limited to up to 6 lines of 30 -# characters each. -# -# homePostalAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# postalAddress -# MATCHES FOR EQUALITY -# ::= {pilotAttributeType 39} -# -attributetype ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress' - DESC 'RFC1274: home postal address' - EQUALITY caseIgnoreListMatch - SUBSTR caseIgnoreListSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) - -# 9.3.30. Personal Title -# -# The Personal Title attribute type specifies a personal title for a -# person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev". -# -# personalTitle ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-personal-title)) -# ::= {pilotAttributeType 40} -# -attributetype ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle' - DESC 'RFC1274: personal title' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.31. Mobile Telephone Number -# -# The Mobile Telephone Number attribute type specifies a mobile -# telephone number associated with a person. Attribute values should -# follow the agreed format for international telephone numbers: i.e., -# "+44 71 123 4567". -# -# mobileTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 41} -# -attributetype ( 0.9.2342.19200300.100.1.41 - NAME ( 'mobile' 'mobileTelephoneNumber' ) - DESC 'RFC1274: mobile telephone number' - EQUALITY telephoneNumberMatch - SUBSTR telephoneNumberSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) - -# 9.3.32. Pager Telephone Number -# -# The Pager Telephone Number attribute type specifies a pager telephone -# number for an object. Attribute values should follow the agreed -# format for international telephone numbers: i.e., "+44 71 123 4567". -# -# pagerTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 42} -# -attributetype ( 0.9.2342.19200300.100.1.42 - NAME ( 'pager' 'pagerTelephoneNumber' ) - DESC 'RFC1274: pager telephone number' - EQUALITY telephoneNumberMatch - SUBSTR telephoneNumberSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) - -# 9.3.33. Friendly Country Name -# -# The Friendly Country Name attribute type specifies names of countries -# in human readable format. The standard attribute country name must -# be one of the two-letter codes defined in ISO 3166. -# -# friendlyCountryName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# ::= {pilotAttributeType 43} -# -attributetype ( 0.9.2342.19200300.100.1.43 - NAME ( 'co' 'friendlyCountryName' ) - DESC 'RFC1274: friendly country name' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# 9.3.34. Unique Identifier -# -# The Unique Identifier attribute type specifies a "unique identifier" -# for an object represented in the Directory. The domain within which -# the identifier is unique, and the exact semantics of the identifier, -# are for local definition. For a person, this might be an -# institution-wide payroll number. For an organisational unit, it -# might be a department code. -# -# uniqueIdentifier ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-unique-identifier)) -# ::= {pilotAttributeType 44} -# -attributetype ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' - DESC 'RFC1274: unique identifer' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.35. Organisational Status -# -# The Organisational Status attribute type specifies a category by -# which a person is often referred to in an organisation. Examples of -# usage in academia might include undergraduate student, researcher, -# lecturer, etc. -# -# A Directory administrator should probably consider carefully the -# distinctions between this and the title and userClass attributes. -# -# organizationalStatus ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-organizational-status)) -# ::= {pilotAttributeType 45} -# -attributetype ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus' - DESC 'RFC1274: organizational status' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.36. Janet Mailbox -# -# The Janet Mailbox attribute type specifies an electronic mailbox -# attribute following the syntax specified in the Grey Book of the -# Coloured Book series. This attribute is intended for the convenience -# of U.K users unfamiliar with rfc822 and little-endian mail addresses. -# Entries using this attribute MUST also include an rfc822Mailbox -# attribute. -# -# janetMailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# (SIZE (1 .. ub-janet-mailbox)) -# ::= {pilotAttributeType 46} -# -attributetype ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox' - DESC 'RFC1274: Janet mailbox' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -# 9.3.37. Mail Preference Option -# -# An attribute to allow users to indicate a preference for inclusion of -# their names on mailing lists (electronic or physical). The absence -# of such an attribute should be interpreted as if the attribute was -# present with value "no-list-inclusion". This attribute should be -# interpreted by anyone using the directory to derive mailing lists, -# and its value respected. -# -# mailPreferenceOption ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX ENUMERATED { -# no-list-inclusion(0), -# any-list-inclusion(1), -- may be added to any lists -# professional-list-inclusion(2) -# -- may be added to lists -# -- which the list provider -# -- views as related to the -# -- users professional inter- -# -- ests, perhaps evaluated -# -- from the business of the -# -- organisation or keywords -# -- in the entry. -# } -# ::= {pilotAttributeType 47} -# -attributetype ( 0.9.2342.19200300.100.1.47 - NAME 'mailPreferenceOption' - DESC 'RFC1274: mail preference option' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) - -# 9.3.38. Building Name -# -# The Building Name attribute type specifies the name of the building -# where an organisation or organisational unit is based. -# -# buildingName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-building-name)) -# ::= {pilotAttributeType 48} -# -attributetype ( 0.9.2342.19200300.100.1.48 NAME 'buildingName' - DESC 'RFC1274: name of building' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) - -# 9.3.39. DSA Quality -# -# The DSA Quality attribute type specifies the purported quality of a -# DSA. It allows a DSA manager to indicate the expected level of -# availability of the DSA. See [8] for details of the syntax. -# -# dSAQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DSAQualitySyntax -# SINGLE VALUE -# ::= {pilotAttributeType 49} -# -attributetype ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality' - DESC 'RFC1274: DSA Quality' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE ) - -# 9.3.40. Single Level Quality -# -# The Single Level Quality attribute type specifies the purported data -# quality at the level immediately below in the DIT. See [8] for -# details of the syntax. -# -# singleLevelQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# ::= {pilotAttributeType 50} -# -attributetype ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality' - DESC 'RFC1274: Single Level Quality' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE ) - -# 9.3.41. Subtree Minimum Quality -# -# The Subtree Minimum Quality attribute type specifies the purported -# minimum data quality for a DIT subtree. See [8] for more discussion -# and details of the syntax. -# -# subtreeMinimumQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# -- Defaults to singleLevelQuality -# ::= {pilotAttributeType 51} -# -attributetype ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQuality' - DESC 'RFC1274: Subtree Mininum Quality' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE ) - -# 9.3.42. Subtree Maximum Quality -# -# The Subtree Maximum Quality attribute type specifies the purported -# maximum data quality for a DIT subtree. See [8] for more discussion -# and details of the syntax. -# -# subtreeMaximumQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# -- Defaults to singleLevelQuality -# ::= {pilotAttributeType 52} -# -attributetype ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQuality' - DESC 'RFC1274: Subtree Maximun Quality' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE ) - -# 9.3.43. Personal Signature -# -# The Personal Signature attribute type allows for a representation of -# a person's signature. This should be encoded in G3 fax as explained -# in recommendation T.4, with an ASN.1 wrapper to make it compatible -# with an X.400 BodyPart as defined in X.420. -# -# IMPORT G3FacsimileBodyPart FROM { mhs-motis ipms modules -# information-objects } -# -# personalSignature ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# CHOICE { -# g3-facsimile [3] G3FacsimileBodyPart -# } -# (SIZE (1 .. ub-personal-signature)) -# ::= {pilotAttributeType 53} -# -attributetype ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature' - DESC 'RFC1274: Personal Signature (G3 fax)' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.23 ) - -# 9.3.44. DIT Redirect -# -# The DIT Redirect attribute type is used to indicate that the object -# described by one entry now has a newer entry in the DIT. The entry -# containing the redirection attribute should be expired after a -# suitable grace period. This attribute may be used when an individual -# changes his/her place of work, and thus acquires a new organisational -# DN. -# -# dITRedirect ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 54} -# -attributetype ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect' - DESC 'RFC1274: DIT Redirect' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) - -# 9.3.45. Audio -# -# The Audio attribute type allows the storing of sounds in the -# Directory. The attribute uses a u-law encoded sound file as used by -# the "play" utility on a Sun 4. This is an interim format. -# -# audio ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# Audio -# (SIZE (1 .. ub-audio)) -# ::= {pilotAttributeType 55} -# -attributetype ( 0.9.2342.19200300.100.1.55 NAME 'audio' - DESC 'RFC1274: audio (u-law)' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} ) - -# 9.3.46. Publisher of Document -# -# -# The Publisher of Document attribute is the person and/or organization -# that published a document. -# -# documentPublisher ATTRIBUTE -# WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax -# ::= {pilotAttributeType 56} -# -attributetype ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' - DESC 'RFC1274: publisher of document' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# 9.4. Generally useful syntaxes -# -# caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY SUBSTRINGS -# -# iA5StringSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY SUBSTRINGS -# -# -# -- Syntaxes to support the DNS attributes -# -# DNSRecordSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY -# -# -# NRSInformationSyntax ATTRIBUTE-SYNTAX -# NRSInformation -# MATCHES FOR EQUALITY -# -# -# NRSInformation ::= SET { -# [0] Context, -# [1] Address-space-id, -# routes [2] SEQUENCE OF SEQUENCE { -# Route-cost, -# Addressing-info } -# } -# -# -# 9.5. Upper bounds on length of attribute values -# -# -# ub-document-identifier INTEGER ::= 256 -# -# ub-document-location INTEGER ::= 256 -# -# ub-document-title INTEGER ::= 256 -# -# ub-document-version INTEGER ::= 256 -# -# ub-favourite-drink INTEGER ::= 256 -# -# ub-host INTEGER ::= 256 -# -# ub-information INTEGER ::= 2048 -# -# ub-unique-identifier INTEGER ::= 256 -# -# ub-personal-title INTEGER ::= 256 -# -# ub-photo INTEGER ::= 250000 -# -# ub-rfc822-mailbox INTEGER ::= 256 -# -# ub-room-number INTEGER ::= 256 -# -# ub-text-or-address INTEGER ::= 256 -# -# ub-user-class INTEGER ::= 256 -# -# ub-user-identifier INTEGER ::= 256 -# -# ub-organizational-status INTEGER ::= 256 -# -# ub-janet-mailbox INTEGER ::= 256 -# -# ub-building-name INTEGER ::= 256 -# -# ub-personal-signature ::= 50000 -# -# ub-audio INTEGER ::= 250000 -# - -# [back to 8] -# 8. Object Classes -# -# 8.1. X.500 standard object classes -# -# A number of generally useful object classes are defined in X.521, and -# these are supported. Refer to that document for descriptions of the -# suggested usage of these object classes. The ASN.1 for these object -# classes is reproduced for completeness in Appendix C. -# -# 8.2. X.400 standard object classes -# -# A number of object classes defined in X.400 are supported. Refer to -# X.402 for descriptions of the usage of these object classes. The -# ASN.1 for these object classes is reproduced for completeness in -# Appendix C. -# -# 8.3. COSINE/Internet object classes -# -# This section attempts to fuse together the object classes designed -# for use in the COSINE and Internet pilot activities. Descriptions -# are given of the suggested usage of these object classes. The ASN.1 -# for these object classes is also reproduced in Appendix C. -# -# 8.3.1. Pilot Object -# -# The PilotObject object class is used as a sub-class to allow some -# common, useful attributes to be assigned to entries of all other -# object classes. -# -# pilotObject OBJECT-CLASS -# SUBCLASS OF top -# MAY CONTAIN { -# info, -# photo, -# manager, -# uniqueIdentifier, -# lastModifiedTime, -# lastModifiedBy, -# dITRedirect, -# audio} -# ::= {pilotObjectClass 3} -# -#objectclass ( 0.9.2342.19200300.100.4.3 NAME 'pilotObject' -# DESC 'RFC1274: pilot object' -# SUP top AUXILIARY -# MAY ( info $ photo $ manager $ uniqueIdentifier $ -# lastModifiedTime $ lastModifiedBy $ dITRedirect $ audio ) -# ) - -# 8.3.2. Pilot Person -# -# The PilotPerson object class is used as a sub-class of person, to -# allow the use of a number of additional attributes to be assigned to -# entries of object class person. -# -# pilotPerson OBJECT-CLASS -# SUBCLASS OF person -# MAY CONTAIN { -# userid, -# textEncodedORAddress, -# rfc822Mailbox, -# favouriteDrink, -# roomNumber, -# userClass, -# homeTelephoneNumber, -# homePostalAddress, -# secretary, -# personalTitle, -# preferredDeliveryMethod, -# businessCategory, -# janetMailbox, -# otherMailbox, -# mobileTelephoneNumber, -# pagerTelephoneNumber, -# organizationalStatus, -# mailPreferenceOption, -# personalSignature} -# ::= {pilotObjectClass 4} -# -objectclass ( 0.9.2342.19200300.100.4.4 - NAME ( 'pilotPerson' 'newPilotPerson' ) - SUP person STRUCTURAL - MAY ( userid $ textEncodedORAddress $ rfc822Mailbox $ - favouriteDrink $ roomNumber $ userClass $ - homeTelephoneNumber $ homePostalAddress $ secretary $ - personalTitle $ preferredDeliveryMethod $ businessCategory $ - janetMailbox $ otherMailbox $ mobileTelephoneNumber $ - pagerTelephoneNumber $ organizationalStatus $ - mailPreferenceOption $ personalSignature ) - ) - -# 8.3.3. Account -# -# The Account object class is used to define entries representing -# computer accounts. The userid attribute should be used for naming -# entries of this object class. -# -# account OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# userid} -# MAY CONTAIN { -# description, -# seeAlso, -# localityName, -# organizationName, -# organizationalUnitName, -# host} -# ::= {pilotObjectClass 5} -# -objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account' - SUP top STRUCTURAL - MUST userid - MAY ( description $ seeAlso $ localityName $ - organizationName $ organizationalUnitName $ host ) - ) - -# 8.3.4. Document -# -# The Document object class is used to define entries which represent -# documents. -# -# document OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# documentIdentifier} -# MAY CONTAIN { -# commonName, -# description, -# seeAlso, -# localityName, -# organizationName, -# organizationalUnitName, -# documentTitle, -# documentVersion, -# documentAuthor, -# documentLocation, -# documentPublisher} -# ::= {pilotObjectClass 6} -# -objectclass ( 0.9.2342.19200300.100.4.6 NAME 'document' - SUP top STRUCTURAL - MUST documentIdentifier - MAY ( commonName $ description $ seeAlso $ localityName $ - organizationName $ organizationalUnitName $ - documentTitle $ documentVersion $ documentAuthor $ - documentLocation $ documentPublisher ) - ) - -# 8.3.5. Room -# -# The Room object class is used to define entries representing rooms. -# The commonName attribute should be used for naming pentries of this -# object class. -# -# room OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# roomNumber, -# description, -# seeAlso, -# telephoneNumber} -# ::= {pilotObjectClass 7} -# -objectclass ( 0.9.2342.19200300.100.4.7 NAME 'room' - SUP top STRUCTURAL - MUST commonName - MAY ( roomNumber $ description $ seeAlso $ telephoneNumber ) - ) - -# 8.3.6. Document Series -# -# The Document Series object class is used to define an entry which -# represents a series of documents (e.g., The Request For Comments -# papers). -# -# documentSeries OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# description, -# seeAlso, -# telephoneNumber, -# localityName, -# organizationName, -# organizationalUnitName} -# ::= {pilotObjectClass 9} -# -objectclass ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' - SUP top STRUCTURAL - MUST commonName - MAY ( description $ seeAlso $ telephonenumber $ - localityName $ organizationName $ organizationalUnitName ) - ) - -# 8.3.7. Domain -# -# The Domain object class is used to define entries which represent DNS -# or NRS domains. The domainComponent attribute should be used for -# naming entries of this object class. The usage of this object class -# is described in more detail in [3]. -# -# domain OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# domainComponent} -# MAY CONTAIN { -# associatedName, -# organizationName, -# organizationalAttributeSet} -# ::= {pilotObjectClass 13} -# -objectclass ( 0.9.2342.19200300.100.4.13 NAME 'domain' - SUP top STRUCTURAL - MUST domainComponent - MAY ( associatedName $ organizationName $ description $ - businessCategory $ seeAlso $ searchGuide $ userPassword $ - localityName $ stateOrProvinceName $ streetAddress $ - physicalDeliveryOfficeName $ postalAddress $ postalCode $ - postOfficeBox $ streetAddress $ - facsimileTelephoneNumber $ internationalISDNNumber $ - telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ - preferredDeliveryMethod $ destinationIndicator $ - registeredAddress $ x121Address ) - ) - -# 8.3.8. RFC822 Local Part -# -# The RFC822 Local Part object class is used to define entries which -# represent the local part of RFC822 mail addresses. This treats this -# part of an RFC822 address as a domain. The usage of this object -# class is described in more detail in [3]. -# -# rFC822localPart OBJECT-CLASS -# SUBCLASS OF domain -# MAY CONTAIN { -# commonName, -# surname, -# description, -# seeAlso, -# telephoneNumber, -# postalAttributeSet, -# telecommunicationAttributeSet} -# ::= {pilotObjectClass 14} -# -objectclass ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart' - SUP domain STRUCTURAL - MAY ( commonName $ surname $ description $ seeAlso $ telephoneNumber $ - physicalDeliveryOfficeName $ postalAddress $ postalCode $ - postOfficeBox $ streetAddress $ - facsimileTelephoneNumber $ internationalISDNNumber $ - telephoneNumber $ teletexTerminalIdentifier $ - telexNumber $ preferredDeliveryMethod $ destinationIndicator $ - registeredAddress $ x121Address ) - ) - -# 8.3.9. DNS Domain -# -# The DNS Domain (Domain NameServer) object class is used to define -# entries for DNS domains. The usage of this object class is described -# in more detail in [3]. -# -# dNSDomain OBJECT-CLASS -# SUBCLASS OF domain -# MAY CONTAIN { -# ARecord, -# MDRecord, -# MXRecord, -# NSRecord, -# SOARecord, -# CNAMERecord} -# ::= {pilotObjectClass 15} -# -objectclass ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain' - SUP domain STRUCTURAL - MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ - SOARecord $ CNAMERecord ) - ) - -# 8.3.10. Domain Related Object -# -# The Domain Related Object object class is used to define entries -# which represent DNS/NRS domains which are "equivalent" to an X.500 -# domain: e.g., an organisation or organisational unit. The usage of -# this object class is described in more detail in [3]. -# -# domainRelatedObject OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# associatedDomain} -# ::= {pilotObjectClass 17} -# -objectclass ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject' - DESC 'RFC1274: an object related to an domain' - SUP top AUXILIARY - MUST associatedDomain ) - -# 8.3.11. Friendly Country -# -# The Friendly Country object class is used to define country entries -# in the DIT. The object class is used to allow friendlier naming of -# countries than that allowed by the object class country. The naming -# attribute of object class country, countryName, has to be a 2 letter -# string defined in ISO 3166. -# -# friendlyCountry OBJECT-CLASS -# SUBCLASS OF country -# MUST CONTAIN { -# friendlyCountryName} -# ::= {pilotObjectClass 18} -# -objectclass ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' - SUP country STRUCTURAL - MUST friendlyCountryName ) - -# 8.3.12. Simple Security Object -# -# The Simple Security Object object class is used to allow an entry to -# have a userPassword attribute when an entry's principal object -# classes do not allow userPassword as an attribute type. -# -# simpleSecurityObject OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# userPassword } -# ::= {pilotObjectClass 19} -# -## (in core.schema) -## objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' -## SUP top AUXILIARY -## MUST userPassword ) - -# 8.3.13. Pilot Organization -# -# The PilotOrganization object class is used as a sub-class of -# organization and organizationalUnit to allow a number of additional -# attributes to be assigned to entries of object classes organization -# and organizationalUnit. -# -# pilotOrganization OBJECT-CLASS -# SUBCLASS OF organization, organizationalUnit -# MAY CONTAIN { -# buildingName} -# ::= {pilotObjectClass 20} -# -objectclass ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization' - SUP ( organization $ organizationalUnit ) STRUCTURAL - MAY buildingName ) - -# 8.3.14. Pilot DSA -# -# The PilotDSA object class is used as a sub-class of the dsa object -# class to allow additional attributes to be assigned to entries for -# DSAs. -# -# pilotDSA OBJECT-CLASS -# SUBCLASS OF dsa -# MUST CONTAIN { -# dSAQuality} -# ::= {pilotObjectClass 21} -# -objectclass ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA' - SUP dsa STRUCTURAL - MAY dSAQuality ) - -# 8.3.15. Quality Labelled Data -# -# The Quality Labelled Data object class is used to allow the -# assignment of the data quality attributes to subtrees in the DIT. -# -# See [8] for more details. -# -# qualityLabelledData OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# dSAQuality} -# MAY CONTAIN { -# subtreeMinimumQuality, -# subtreeMaximumQuality} -# ::= {pilotObjectClass 22} -objectclass ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData' - SUP top AUXILIARY - MUST dsaQuality - MAY ( subtreeMinimumQuality $ subtreeMaximumQuality ) - ) - - -# References -# -# [1] CCITT/ISO, "X.500, The Directory - overview of concepts, -# models and services, CCITT /ISO IS 9594. -# -# [2] Kille, S., "The THORN and RARE X.500 Naming Architecture, in -# University College London, Department of Computer Science -# Research Note 89/48, May 1989. -# -# [3] Kille, S., "X.500 and Domains", RFC 1279, University College -# London, November 1991. -# -# [4] Rose, M., "PSI/NYSERNet White Pages Pilot Project: Status -# Report", Technical Report 90-09-10-1, published by NYSERNet -# Inc, 1990. -# -# [5] Craigie, J., "UK Academic Community Directory Service Pilot -# Project, pp. 305-310 in Computer Networks and ISDN Systems -# 17 (1989), published by North Holland. -# -# [6] Mockapetris, P., "Domain Names - Concepts and Facilities", -# RFC 1034, USC/Information Sciences Institute, November 1987. -# -# [7] Mockapetris, P., "Domain Names - Implementation and -# Specification, RFC 1035, USC/Information Sciences Institute, -# November 1987. -# -# [8] Kille, S., "Handling QOS (Quality of service) in the -# Directory," publication in process, March 1991. -# -# -# APPENDIX C - Summary of all Object Classes and Attribute Types -# -# -- Some Important Object Identifiers -# -# data OBJECT IDENTIFIER ::= {ccitt 9} -# pss OBJECT IDENTIFIER ::= {data 2342} -# ucl OBJECT IDENTIFIER ::= {pss 19200300} -# pilot OBJECT IDENTIFIER ::= {ucl 100} -# -# pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1} -# pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3} -# pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4} -# pilotGroups OBJECT IDENTIFIER ::= {pilot 10} -# -# iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4} -# caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::= -# {pilotAttributeSyntax 5} -# -# -- Standard Object Classes -# -# top OBJECT-CLASS -# MUST CONTAIN { -# objectClass} -# ::= {objectClass 0} -# -# -# alias OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# aliasedObjectName} -# ::= {objectClass 1} -# -# -# country OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# countryName} -# MAY CONTAIN { -# description, -# searchGuide} -# ::= {objectClass 2} -# -# -# locality OBJECT-CLASS -# SUBCLASS OF top -# MAY CONTAIN { -# description, -# localityName, -# stateOrProvinceName, -# searchGuide, -# seeAlso, -# streetAddress} -# ::= {objectClass 3} -# -# -# organization OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# organizationName} -# MAY CONTAIN { -# organizationalAttributeSet} -# ::= {objectClass 4} -# -# -# organizationalUnit OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# organizationalUnitName} -# MAY CONTAIN { -# organizationalAttributeSet} -# ::= {objectClass 5} -# -# -# person OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName, -# surname} -# MAY CONTAIN { -# description, -# seeAlso, -# telephoneNumber, -# userPassword} -# ::= {objectClass 6} -# -# -# organizationalPerson OBJECT-CLASS -# SUBCLASS OF person -# MAY CONTAIN { -# localeAttributeSet, -# organizationalUnitName, -# postalAttributeSet, -# telecommunicationAttributeSet, -# title} -# ::= {objectClass 7} -# -# -# organizationalRole OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# description, -# localeAttributeSet, -# organizationalUnitName, -# postalAttributeSet, -# preferredDeliveryMethod, -# roleOccupant, -# seeAlso, -# telecommunicationAttributeSet} -# ::= {objectClass 8} -# -# -# groupOfNames OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName, -# member} -# MAY CONTAIN { -# description, -# organizationName, -# organizationalUnitName, -# owner, -# seeAlso, -# businessCategory} -# ::= {objectClass 9} -# -# -# residentialPerson OBJECT-CLASS -# SUBCLASS OF person -# MUST CONTAIN { -# localityName} -# MAY CONTAIN { -# localeAttributeSet, -# postalAttributeSet, -# preferredDeliveryMethod, -# telecommunicationAttributeSet, -# businessCategory} -# ::= {objectClass 10} -# -# -# applicationProcess OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# description, -# localityName, -# organizationalUnitName, -# seeAlso} -# ::= {objectClass 11} -# -# -# applicationEntity OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName, -# presentationAddress} -# MAY CONTAIN { -# description, -# localityName, -# organizationName, -# organizationalUnitName, -# seeAlso, -# supportedApplicationContext} -# ::= {objectClass 12} -# -# -# dSA OBJECT-CLASS -# SUBCLASS OF applicationEntity -# MAY CONTAIN { -# knowledgeInformation} -# ::= {objectClass 13} -# -# -# device OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# description, -# localityName, -# organizationName, -# organizationalUnitName, -# owner, -# seeAlso, -# serialNumber} -# ::= {objectClass 14} -# -# -# strongAuthenticationUser OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# userCertificate} -# ::= {objectClass 15} -# -# -# certificationAuthority OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# cACertificate, -# certificateRevocationList, -# authorityRevocationList} -# MAY CONTAIN { -# crossCertificatePair} -# ::= {objectClass 16} -# -# -- Standard MHS Object Classes -# -# mhsDistributionList OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName, -# mhsDLSubmitPermissions, -# mhsORAddresses} -# MAY CONTAIN { -# description, -# organizationName, -# organizationalUnitName, -# owner, -# seeAlso, -# mhsDeliverableContentTypes, -# mhsdeliverableEits, -# mhsDLMembers, -# mhsPreferredDeliveryMethods} -# ::= {mhsObjectClass 0} -# -# -# mhsMessageStore OBJECT-CLASS -# SUBCLASS OF applicationEntity -# MAY CONTAIN { -# description, -# owner, -# mhsSupportedOptionalAttributes, -# mhsSupportedAutomaticActions, -# mhsSupportedContentTypes} -# ::= {mhsObjectClass 1} -# -# -# mhsMessageTransferAgent OBJECT-CLASS -# SUBCLASS OF applicationEntity -# MAY CONTAIN { -# description, -# owner, -# mhsDeliverableContentLength} -# ::= {mhsObjectClass 2} -# -# -# mhsOrganizationalUser OBJECT-CLASS -# SUBCLASS OF organizationalPerson -# MUST CONTAIN { -# mhsORAddresses} -# MAY CONTAIN { -# mhsDeliverableContentLength, -# mhsDeliverableContentTypes, -# mhsDeliverableEits, -# mhsMessageStoreName, -# mhsPreferredDeliveryMethods } -# ::= {mhsObjectClass 3} -# -# -# mhsResidentialUser OBJECT-CLASS -# SUBCLASS OF residentialPerson -# MUST CONTAIN { -# mhsORAddresses} -# MAY CONTAIN { -# mhsDeliverableContentLength, -# mhsDeliverableContentTypes, -# mhsDeliverableEits, -# mhsMessageStoreName, -# mhsPreferredDeliveryMethods } -# ::= {mhsObjectClass 4} -# -# -# mhsUserAgent OBJECT-CLASS -# SUBCLASS OF applicationEntity -# MAY CONTAIN { -# mhsDeliverableContentLength, -# mhsDeliverableContentTypes, -# mhsDeliverableEits, -# mhsORAddresses, -# owner} -# ::= {mhsObjectClass 5} -# -# -# -# -# -- Pilot Object Classes -# -# pilotObject OBJECT-CLASS -# SUBCLASS OF top -# MAY CONTAIN { -# info, -# photo, -# manager, -# uniqueIdentifier, -# lastModifiedTime, -# lastModifiedBy, -# dITRedirect, -# audio} -# ::= {pilotObjectClass 3} -# pilotPerson OBJECT-CLASS -# SUBCLASS OF person -# MAY CONTAIN { -# userid, -# textEncodedORAddress, -# rfc822Mailbox, -# favouriteDrink, -# roomNumber, -# userClass, -# homeTelephoneNumber, -# homePostalAddress, -# secretary, -# personalTitle, -# preferredDeliveryMethod, -# businessCategory, -# janetMailbox, -# otherMailbox, -# mobileTelephoneNumber, -# pagerTelephoneNumber, -# organizationalStatus, -# mailPreferenceOption, -# personalSignature} -# ::= {pilotObjectClass 4} -# -# -# account OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# userid} -# MAY CONTAIN { -# description, -# seeAlso, -# localityName, -# organizationName, -# organizationalUnitName, -# host} -# ::= {pilotObjectClass 5} -# -# -# document OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# documentIdentifier} -# MAY CONTAIN { -# commonName, -# description, -# seeAlso, -# localityName, -# organizationName, -# organizationalUnitName, -# documentTitle, -# documentVersion, -# documentAuthor, -# documentLocation, -# documentPublisher} -# ::= {pilotObjectClass 6} -# -# -# room OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# roomNumber, -# description, -# seeAlso, -# telephoneNumber} -# ::= {pilotObjectClass 7} -# -# -# documentSeries OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# commonName} -# MAY CONTAIN { -# description, -# seeAlso, -# telephoneNumber, -# localityName, -# organizationName, -# organizationalUnitName} -# ::= {pilotObjectClass 9} -# -# -# domain OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# domainComponent} -# MAY CONTAIN { -# associatedName, -# organizationName, -# organizationalAttributeSet} -# ::= {pilotObjectClass 13} -# -# -# rFC822localPart OBJECT-CLASS -# SUBCLASS OF domain -# MAY CONTAIN { -# commonName, -# surname, -# description, -# seeAlso, -# telephoneNumber, -# postalAttributeSet, -# telecommunicationAttributeSet} -# ::= {pilotObjectClass 14} -# -# -# dNSDomain OBJECT-CLASS -# SUBCLASS OF domain -# MAY CONTAIN { -# ARecord, -# MDRecord, -# MXRecord, -# NSRecord, -# SOARecord, -# CNAMERecord} -# ::= {pilotObjectClass 15} -# -# -# domainRelatedObject OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# associatedDomain} -# ::= {pilotObjectClass 17} -# -# -# friendlyCountry OBJECT-CLASS -# SUBCLASS OF country -# MUST CONTAIN { -# friendlyCountryName} -# ::= {pilotObjectClass 18} -# -# -# simpleSecurityObject OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# userPassword } -# ::= {pilotObjectClass 19} -# -# -# pilotOrganization OBJECT-CLASS -# SUBCLASS OF organization, organizationalUnit -# MAY CONTAIN { -# buildingName} -# ::= {pilotObjectClass 20} -# -# -# pilotDSA OBJECT-CLASS -# SUBCLASS OF dsa -# MUST CONTAIN { -# dSAQuality} -# ::= {pilotObjectClass 21} -# -# -# qualityLabelledData OBJECT-CLASS -# SUBCLASS OF top -# MUST CONTAIN { -# dSAQuality} -# MAY CONTAIN { -# subtreeMinimumQuality, -# subtreeMaximumQuality} -# ::= {pilotObjectClass 22} -# -# -# -# -# -- Standard Attribute Types -# -# objectClass ObjectClass -# ::= {attributeType 0} -# -# -# aliasedObjectName AliasedObjectName -# ::= {attributeType 1} -# -# -# knowledgeInformation ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreString -# ::= {attributeType 2} -# -# -# commonName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-common-name)) -# ::= {attributeType 3} -# -# -# surname ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-surname)) -# ::= {attributeType 4} -# -# -# serialNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX printableStringSyntax -# (SIZE (1..ub-serial-number)) -# ::= {attributeType 5} -# -# -# countryName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX PrintableString -# (SIZE (1..ub-country-code)) -# SINGLE VALUE -# ::= {attributeType 6} -# -# -# localityName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-locality-name)) -# ::= {attributeType 7} -# -# -# stateOrProvinceName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-state-name)) -# ::= {attributeType 8} -# -# -# streetAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-street-address)) -# ::= {attributeType 9} -# -# -# organizationName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-organization-name)) -# ::= {attributeType 10} -# -# -# organizationalUnitName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-organizational-unit-name)) -# ::= {attributeType 11} -# -# -# title ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-title)) -# ::= {attributeType 12} -# -# -# description ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-description)) -# ::= {attributeType 13} -# -# -# searchGuide ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX Guide -# ::= {attributeType 14} -# -# -# businessCategory ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-business-category)) -# ::= {attributeType 15} -# -# -# postalAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX PostalAddress -# MATCHES FOR EQUALITY -# ::= {attributeType 16} -# -# -# postalCode ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-postal-code)) -# ::= {attributeType 17} -# -# -# postOfficeBox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-post-office-box)) -# ::= {attributeType 18} -# -# -# physicalDeliveryOfficeName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax -# (SIZE (1..ub-physical-office-name)) -# ::= {attributeType 19} -# -# -# telephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX telephoneNumberSyntax -# (SIZE (1..ub-telephone-number)) -# ::= {attributeType 20} -# -# -# telexNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX TelexNumber -# (SIZE (1..ub-telex)) -# ::= {attributeType 21} -# -# -# teletexTerminalIdentifier ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX TeletexTerminalIdentifier -# (SIZE (1..ub-teletex-terminal-id)) -# ::= {attributeType 22} -# -# -# facsimileTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX FacsimileTelephoneNumber -# ::= {attributeType 23} -# -# -# x121Address ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX NumericString -# (SIZE (1..ub-x121-address)) -# ::= {attributeType 24} -# -# -# internationaliSDNNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX NumericString -# (SIZE (1..ub-isdn-address)) -# ::= {attributeType 25} -# -# -# registeredAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX PostalAddress -# ::= {attributeType 26} -# -# -# destinationIndicator ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX PrintableString -# (SIZE (1..ub-destination-indicator)) -# MATCHES FOR EQUALITY SUBSTRINGS -# ::= {attributeType 27} -# -# -# preferredDeliveryMethod ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX deliveryMethod -# ::= {attributeType 28} -# -# -# presentationAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX PresentationAddress -# MATCHES FOR EQUALITY -# ::= {attributeType 29} -# -# -# supportedApplicationContext ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX objectIdentifierSyntax -# ::= {attributeType 30} -# -# -# member ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax -# ::= {attributeType 31} -# -# -# owner ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax -# ::= {attributeType 32} -# -# -# roleOccupant ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax -# ::= {attributeType 33} -# -# -# seeAlso ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax -# ::= {attributeType 34} -# -# -# userPassword ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX Userpassword -# ::= {attributeType 35} -# -# -# userCertificate ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX UserCertificate -# ::= {attributeType 36} -# -# -# cACertificate ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX cACertificate -# ::= {attributeType 37} -# -# -# authorityRevocationList ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX AuthorityRevocationList -# ::= {attributeType 38} -# -# -# certificateRevocationList ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX CertificateRevocationList -# ::= {attributeType 39} -# -# -# crossCertificatePair ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX CrossCertificatePair -# ::= {attributeType 40} -# -# -# -# -# -- Standard MHS Attribute Types -# -# mhsDeliverableContentLength ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX integer -# ::= {mhsAttributeType 0} -# -# -# mhsDeliverableContentTypes ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oID -# ::= {mhsAttributeType 1} -# -# -# mhsDeliverableEits ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oID -# ::= {mhsAttributeType 2} -# -# -# mhsDLMembers ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oRName -# ::= {mhsAttributeType 3} -# -# -# mhsDLSubmitPermissions ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX dLSubmitPermission -# ::= {mhsAttributeType 4} -# -# -# mhsMessageStoreName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX dN -# ::= {mhsAttributeType 5} -# -# -# mhsORAddresses ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oRAddress -# ::= {mhsAttributeType 6} -# -# -# mhsPreferredDeliveryMethods ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX deliveryMethod -# ::= {mhsAttributeType 7} -# -# -# mhsSupportedAutomaticActions ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oID -# ::= {mhsAttributeType 8} -# -# -# mhsSupportedContentTypes ATTRIBUTE -# -# WITH ATTRIBUTE-SYNTAX oID -# ::= {mhsAttributeType 9} -# -# -# mhsSupportedOptionalAttributes ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX oID -# ::= {mhsAttributeType 10} -# -# -# -# -# -- Pilot Attribute Types -# -# userid ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-user-identifier)) -# ::= {pilotAttributeType 1} -# -# -# textEncodedORAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-text-encoded-or-address)) -# ::= {pilotAttributeType 2} -# -# -# rfc822Mailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# (SIZE (1 .. ub-rfc822-mailbox)) -# ::= {pilotAttributeType 3} -# -# -# info ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-information)) -# ::= {pilotAttributeType 4} -# -# -# favouriteDrink ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-favourite-drink)) -# ::= {pilotAttributeType 5} -# -# -# roomNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-room-number)) -# ::= {pilotAttributeType 6} -# -# -# photo ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# CHOICE { -# g3-facsimile [3] G3FacsimileBodyPart -# } -# (SIZE (1 .. ub-photo)) -# ::= {pilotAttributeType 7} -# -# -# userClass ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-user-class)) -# ::= {pilotAttributeType 8} -# -# -# host ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-host)) -# ::= {pilotAttributeType 9} -# -# -# manager ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 10} -# -# -# documentIdentifier ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-identifier)) -# ::= {pilotAttributeType 11} -# -# -# documentTitle ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-title)) -# ::= {pilotAttributeType 12} -# -# -# documentVersion ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-version)) -# ::= {pilotAttributeType 13} -# -# -# documentAuthor ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 14} -# -# -# documentLocation ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-document-location)) -# ::= {pilotAttributeType 15} -# -# -# homeTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 20} -# -# -# secretary ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 21} -# -# -# otherMailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# SEQUENCE { -# mailboxType PrintableString, -- e.g. Telemail -# mailbox IA5String -- e.g. X378:Joe -# } -# ::= {pilotAttributeType 22} -# -# -# lastModifiedTime ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# uTCTimeSyntax -# ::= {pilotAttributeType 23} -# -# -# lastModifiedBy ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 24} -# -# -# domainComponent ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# SINGLE VALUE -# ::= {pilotAttributeType 25} -# -# -# aRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 26} -# -# -# mXRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 28} -# -# -# nSRecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 29} -# -# sOARecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# DNSRecordSyntax -# ::= {pilotAttributeType 30} -# -# -# cNAMERecord ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# iA5StringSyntax -# ::= {pilotAttributeType 31} -# -# -# associatedDomain ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# ::= {pilotAttributeType 37} -# -# -# associatedName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 38} -# -# -# homePostalAddress ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# postalAddress -# MATCHES FOR EQUALITY -# ::= {pilotAttributeType 39} -# -# -# personalTitle ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-personal-title)) -# ::= {pilotAttributeType 40} -# -# -# mobileTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 41} -# -# -# pagerTelephoneNumber ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# telephoneNumberSyntax -# ::= {pilotAttributeType 42} -# -# -# friendlyCountryName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# ::= {pilotAttributeType 43} -# -# -# uniqueIdentifier ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-unique-identifier)) -# ::= {pilotAttributeType 44} -# -# -# organizationalStatus ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-organizational-status)) -# ::= {pilotAttributeType 45} -# -# -# janetMailbox ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreIA5StringSyntax -# (SIZE (1 .. ub-janet-mailbox)) -# ::= {pilotAttributeType 46} -# -# -# mailPreferenceOption ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX ENUMERATED { -# no-list-inclusion(0), -# any-list-inclusion(1), -- may be added to any lists -# professional-list-inclusion(2) -# -- may be added to lists -# -- which the list provider -# -- views as related to the -# -- users professional inter- -# -- ests, perhaps evaluated -# -- from the business of the -# -- organisation or keywords -# -- in the entry. -# } -# ::= {pilotAttributeType 47} -# -# -# buildingName ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# caseIgnoreStringSyntax -# (SIZE (1 .. ub-building-name)) -# ::= {pilotAttributeType 48} -# -# -# dSAQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DSAQualitySyntax -# SINGLE VALUE -# ::= {pilotAttributeType 49} -# -# -# singleLevelQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# -# -# subtreeMinimumQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# -- Defaults to singleLevelQuality -# ::= {pilotAttributeType 51} -# -# -# subtreeMaximumQuality ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX DataQualitySyntax -# SINGLE VALUE -# -- Defaults to singleLevelQuality -# ::= {pilotAttributeType 52} -# -# -# personalSignature ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# CHOICE { -# g3-facsimile [3] G3FacsimileBodyPart -# } -# (SIZE (1 .. ub-personal-signature)) -# ::= {pilotAttributeType 53} -# -# -# dITRedirect ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# distinguishedNameSyntax -# ::= {pilotAttributeType 54} -# -# -# audio ATTRIBUTE -# WITH ATTRIBUTE-SYNTAX -# Audio -# (SIZE (1 .. ub-audio)) -# ::= {pilotAttributeType 55} -# -# documentPublisher ATTRIBUTE -# WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax -# ::= {pilotAttributeType 56} -# -# -# -# -- Generally useful syntaxes -# -# -# caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY SUBSTRINGS -# -# -# iA5StringSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY SUBSTRINGS -# -# -# -- Syntaxes to support the DNS attributes -# -# DNSRecordSyntax ATTRIBUTE-SYNTAX -# IA5String -# MATCHES FOR EQUALITY -# -# -# NRSInformationSyntax ATTRIBUTE-SYNTAX -# NRSInformation -# MATCHES FOR EQUALITY -# -# -# NRSInformation ::= SET { -# [0] Context, -# [1] Address-space-id, -# routes [2] SEQUENCE OF SEQUENCE { -# Route-cost, -# Addressing-info } -# } -# -# -# -- Upper bounds on length of attribute values -# -# -# ub-document-identifier INTEGER ::= 256 -# -# ub-document-location INTEGER ::= 256 -# -# ub-document-title INTEGER ::= 256 -# -# ub-document-version INTEGER ::= 256 -# -# ub-favourite-drink INTEGER ::= 256 -# -# ub-host INTEGER ::= 256 -# -# ub-information INTEGER ::= 2048 -# -# ub-unique-identifier INTEGER ::= 256 -# -# ub-personal-title INTEGER ::= 256 -# -# ub-photo INTEGER ::= 250000 -# -# ub-rfc822-mailbox INTEGER ::= 256 -# -# ub-room-number INTEGER ::= 256 -# -# ub-text-or-address INTEGER ::= 256 -# -# ub-user-class INTEGER ::= 256 -# -# ub-user-identifier INTEGER ::= 256 -# -# ub-organizational-status INTEGER ::= 256 -# -# ub-janet-mailbox INTEGER ::= 256 -# -# ub-building-name INTEGER ::= 256 -# -# ub-personal-signature ::= 50000 -# -# ub-audio INTEGER ::= 250000 -# -# [remainder of memo trimmed] - diff --git a/docker/ldap/data/etc/schema/duaconf.ldif b/docker/ldap/data/etc/schema/duaconf.ldif deleted file mode 100644 index feb7a9b..0000000 --- a/docker/ldap/data/etc/schema/duaconf.ldif +++ /dev/null @@ -1,83 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# DUA schema from draft-joslin-config-schema (a work in progress) -# -# This file was automatically generated from duaconf.schema; see that file -# for complete references. -# -dn: cn=duaconf,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: duaconf -olcObjectIdentifier: {0}DUAConfSchemaOID 1.3.6.1.4.1.11.1.3.1 -olcAttributeTypes: {0}( DUAConfSchemaOID:1.0 NAME 'defaultServerList' DESC 'De - fault LDAP server host address used by a DUA' EQUALITY caseIgnoreMatch SYNTAX - 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) -olcAttributeTypes: {1}( DUAConfSchemaOID:1.1 NAME 'defaultSearchBase' DESC 'De - fault LDAP base DN used by a DUA' EQUALITY distinguishedNameMatch SYNTAX 1.3. - 6.1.4.1.1466.115.121.1.12 SINGLE-VALUE ) -olcAttributeTypes: {2}( DUAConfSchemaOID:1.2 NAME 'preferredServerList' DESC ' - Preferred LDAP server host addresses to be used by a DUA' EQUALITY - caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) -olcAttributeTypes: {3}( DUAConfSchemaOID:1.3 NAME 'searchTimeLimit' DESC 'Maxi - mum time in seconds a DUA should allow for a search to complete' E - QUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: {4}( DUAConfSchemaOID:1.4 NAME 'bindTimeLimit' DESC 'Maximu - m time in seconds a DUA should allow for the bind operation to com - plete' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALU - E ) -olcAttributeTypes: {5}( DUAConfSchemaOID:1.5 NAME 'followReferrals' DESC 'Tell - s DUA if it should follow referrals returned by a DSA search resul - t' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {6}( DUAConfSchemaOID:1.16 NAME 'dereferenceAliases' DESC ' - Tells DUA if it should dereference aliases' EQUALITY booleanMatch SYNTAX 1.3. - 6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {7}( DUAConfSchemaOID:1.6 NAME 'authenticationMethod' DESC - 'A keystring which identifies the type of authentication method us - ed to contact the DSA' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.1 - 21.1.15 SINGLE-VALUE ) -olcAttributeTypes: {8}( DUAConfSchemaOID:1.7 NAME 'profileTTL' DESC 'Time to l - ive, in seconds, before a client DUA should re-read this configura - tion profile' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SING - LE-VALUE ) -olcAttributeTypes: {9}( DUAConfSchemaOID:1.14 NAME 'serviceSearchDescriptor' D - ESC 'LDAP search descriptor list used by a DUA' EQUALITY caseExactMatch SYNTA - X 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: {10}( DUAConfSchemaOID:1.9 NAME 'attributeMap' DESC 'Attrib - ute mappings used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.14 - 66.115.121.1.26 ) -olcAttributeTypes: {11}( DUAConfSchemaOID:1.10 NAME 'credentialLevel' DESC 'Id - entifies type of credentials a DUA should use when binding to the - LDAP server' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 - SINGLE-VALUE ) -olcAttributeTypes: {12}( DUAConfSchemaOID:1.11 NAME 'objectclassMap' DESC 'Obj - ectclass mappings used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4 - .1.1466.115.121.1.26 ) -olcAttributeTypes: {13}( DUAConfSchemaOID:1.12 NAME 'defaultSearchScope' DESC - 'Default search scope used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6 - .1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -olcAttributeTypes: {14}( DUAConfSchemaOID:1.13 NAME 'serviceCredentialLevel' D - ESC 'Identifies type of credentials a DUA should use when binding - to the LDAP server for a specific service' EQUALITY caseIgnoreIA5M - atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: {15}( DUAConfSchemaOID:1.15 NAME 'serviceAuthenticationMeth - od' DESC 'Authentication method used by a service of the DUA' EQUALITY caseIg - noreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcObjectClasses: {0}( DUAConfSchemaOID:2.5 NAME 'DUAConfigProfile' DESC 'Abst - raction of a base configuration for a DUA' SUP top STRUCTURAL MUST cn MAY ( d - efaultServerList $ preferredServerList $ defaultSearchBase $ defaultSearchSco - pe $ searchTimeLimit $ bindTimeLimit $ credentialLevel $ authenticationMethod - $ followReferrals $ dereferenceAliases $ serviceSearchDescriptor $ serviceCr - edentialLevel $ serviceAuthenticationMethod $ objectclassMap $ attributeMap $ - profileTTL ) ) diff --git a/docker/ldap/data/etc/schema/duaconf.schema b/docker/ldap/data/etc/schema/duaconf.schema deleted file mode 100644 index ed1750b..0000000 --- a/docker/ldap/data/etc/schema/duaconf.schema +++ /dev/null @@ -1,261 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . - -# DUA schema from draft-joslin-config-schema (a work in progress) - -# Contents of this file are subject to change (including deletion) -# without notice. -# -# Not recommended for production use! -# Use with extreme caution! - -## Notes: -## - The matching rule for attributes followReferrals and dereferenceAliases -## has been changed to booleanMatch since their syntax is boolean -## - There was a typo in the name of the dereferenceAliases attributeType -## in the DUAConfigProfile objectClass definition -## - Credit goes to the original Authors - -# -# Application Working Group M. Ansari -# INTERNET-DRAFT Sun Microsystems, Inc. -# Expires Febuary 2003 L. Howard -# PADL Software Pty. Ltd. -# B. Joslin [ed.] -# Hewlett-Packard Company -# -# September 15th, 2003 -# Intended Category: Informational -# -# -# A Configuration Schema for LDAP Based -# Directory User Agents -# -# -#Status of this Memo -# -# This memo provides information for the Internet community. This -# memo does not specify an Internet standard of any kind. Distribu- -# tion of this memo is unlimited. -# -# This document is an Internet-Draft and is in full conformance with -# all provisions of Section 10 of RFC2026. -# -# This document is an Internet-Draft. Internet-Drafts are working -# documents of the Internet Engineering Task Force (IETF), its areas, -# and its working groups. Note that other groups may also distribute -# working documents as Internet-Drafts. -# -# Internet-Drafts are draft documents valid for a maximum of six -# months. Internet-Drafts may be updated, replaced, or made obsolete -# by other documents at any time. It is not appropriate to use -# Internet-Drafts as reference material or to cite them other than as -# a "working draft" or "work in progress". -# -# To learn the current status of any Internet-Draft, please check the -# 1id-abstracts.txt listing contained in the Internet-Drafts Shadow -# Directories on ds.internic.net (US East Coast), nic.nordu.net -# (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific -# Rim). -# -# Distribution of this document is unlimited. -# -# -# Abstract -# -# This document describes a mechanism for global configuration of -# similar directory user agents. This document defines a schema for -# configuration of these DUAs that may be discovered using the Light- -# weight Directory Access Protocol in RFC 2251[17]. A set of attri- -# bute types and an objectclass are proposed, along with specific -# guidelines for interpreting them. A significant feature of the -# global configuration policy for DUAs is a mechanism that allows -# DUAs to re-configure their schema to that of the end user's -# environment. This configuration is achieved through attribute and -# objectclass mapping. This document is intended to be a skeleton -# for future documents that describe configuration of specific DUA -# services. -# -# -# [trimmed] -# -# -# 2. General Issues -# -# The schema defined by this document is defined under the "DUA Con- -# figuration Schema." This schema is derived from the OID: iso (1) -# org (3) dod (6) internet (1) private (4) enterprises (1) Hewlett- -# Packard Company (11) directory (1) LDAP-UX Integration Project (3) -# DUA Configuration Schema (1). This OID is represented in this -# document by the keystring "DUAConfSchemaOID" -# (1.3.6.1.4.1.11.1.3.1). -objectidentifier DUAConfSchemaOID 1.3.6.1.4.1.11.1.3.1 -# -# 2.2 Attributes -# -# The attributes and classes defined in this document are summarized -# below. -# -# The following attributes are defined in this document: -# -# preferredServerList -# defaultServerList -# defaultSearchBase -# defaultSearchScope -# authenticationMethod -# credentialLevel -# serviceSearchDescriptor -# -# -# -# Joslin [Page 3] -# Internet-Draft DUA Configuration Schema October 2002 -# -# -# serviceCredentialLevel -# serviceAuthenticationMethod -# attributeMap -# objectclassMap -# searchTimeLimit -# bindTimeLimit -# followReferrals -# dereferenceAliases -# profileTTL -# -# 2.3 Object Classes -# -# The following object class is defined in this document: -# -# DUAConfigProfile -# -# -attributeType ( DUAConfSchemaOID:1.0 NAME 'defaultServerList' - DESC 'Default LDAP server host address used by a DUA' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.1 NAME 'defaultSearchBase' - DESC 'Default LDAP base DN used by a DUA' - EQUALITY distinguishedNameMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.2 NAME 'preferredServerList' - DESC 'Preferred LDAP server host addresses to be used by a - DUA' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.3 NAME 'searchTimeLimit' - DESC 'Maximum time in seconds a DUA should allow for a - search to complete' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.4 NAME 'bindTimeLimit' - DESC 'Maximum time in seconds a DUA should allow for the - bind operation to complete' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.5 NAME 'followReferrals' - DESC 'Tells DUA if it should follow referrals - returned by a DSA search result' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.16 NAME 'dereferenceAliases' - DESC 'Tells DUA if it should dereference aliases' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.6 NAME 'authenticationMethod' - DESC 'A keystring which identifies the type of - authentication method used to contact the DSA' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.7 NAME 'profileTTL' - DESC 'Time to live, in seconds, before a client DUA - should re-read this configuration profile' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.14 NAME 'serviceSearchDescriptor' - DESC 'LDAP search descriptor list used by a DUA' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -attributeType ( DUAConfSchemaOID:1.9 NAME 'attributeMap' - DESC 'Attribute mappings used by a DUA' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributeType ( DUAConfSchemaOID:1.10 NAME 'credentialLevel' - DESC 'Identifies type of credentials a DUA should - use when binding to the LDAP server' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.11 NAME 'objectclassMap' - DESC 'Objectclass mappings used by a DUA' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributeType ( DUAConfSchemaOID:1.12 NAME 'defaultSearchScope' - DESC 'Default search scope used by a DUA' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 - SINGLE-VALUE ) - -attributeType ( DUAConfSchemaOID:1.13 NAME 'serviceCredentialLevel' - DESC 'Identifies type of credentials a DUA - should use when binding to the LDAP server for a - specific service' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributeType ( DUAConfSchemaOID:1.15 NAME 'serviceAuthenticationMethod' - DESC 'Authentication method used by a service of the DUA' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -# -# 4. Class Definition -# -# The objectclass below is constructed from the attributes defined in -# 3, with the exception of the cn attribute, which is defined in RFC -# 2256 [8]. cn is used to represent the name of the DUA configura- -# tion profile. -# -objectClass ( DUAConfSchemaOID:2.5 NAME 'DUAConfigProfile' - SUP top STRUCTURAL - DESC 'Abstraction of a base configuration for a DUA' - MUST ( cn ) - MAY ( defaultServerList $ preferredServerList $ - defaultSearchBase $ defaultSearchScope $ - searchTimeLimit $ bindTimeLimit $ - credentialLevel $ authenticationMethod $ - followReferrals $ dereferenceAliases $ - serviceSearchDescriptor $ serviceCredentialLevel $ - serviceAuthenticationMethod $ objectclassMap $ - attributeMap $ profileTTL ) ) diff --git a/docker/ldap/data/etc/schema/dyngroup.ldif b/docker/ldap/data/etc/schema/dyngroup.ldif deleted file mode 100644 index a466303..0000000 --- a/docker/ldap/data/etc/schema/dyngroup.ldif +++ /dev/null @@ -1,71 +0,0 @@ -# dyngroup.schema -- Dynamic Group schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Dynamic Group schema (experimental), as defined by Netscape. See -# http://www.redhat.com/docs/manuals/ent-server/pdf/esadmin611.pdf -# page 70 for details on how these groups were used. -# -# A description of the objectclass definition is available here: -# http://www.redhat.com/docs/manuals/dir-server/schema/7.1/oc_dir.html#1303745 -# -# depends upon: -# core.schema -# -# These definitions are considered experimental due to the lack of -# a formal specification (e.g., RFC). -# -# NOT RECOMMENDED FOR PRODUCTION USE! USE WITH CAUTION! -# -# The Netscape documentation describes this as an auxiliary objectclass -# but their implementations have always defined it as a structural class. -# The sloppiness here is because Netscape-derived servers don't actually -# implement the X.500 data model, and they don't honor the distinction -# between structural and auxiliary classes. This fact is noted here: -# http://forum.java.sun.com/thread.jspa?threadID=5016864&messageID=9034636 -# -# In accordance with other existing implementations, we define it as a -# structural class. -# -# Our definition of memberURL also does not match theirs but again -# their published definition and what works in practice do not agree. -# In other words, the Netscape definitions are broken and interoperability -# is not guaranteed. -# -# Also see the new DynGroup proposed spec at -# http://tools.ietf.org/html/draft-haripriya-dynamicgroup-02 -dn: cn=dyngroup,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: dyngroup -olcObjectIdentifier: {0}NetscapeRoot 2.16.840.1.113730 -olcObjectIdentifier: {1}NetscapeLDAP NetscapeRoot:3 -olcObjectIdentifier: {2}NetscapeLDAPattributeType NetscapeLDAP:1 -olcObjectIdentifier: {3}NetscapeLDAPobjectClass NetscapeLDAP:2 -olcObjectIdentifier: {4}OpenLDAPExp11 1.3.6.1.4.1.4203.666.11 -olcObjectIdentifier: {5}DynGroupBase OpenLDAPExp11:8 -olcObjectIdentifier: {6}DynGroupAttr DynGroupBase:1 -olcObjectIdentifier: {7}DynGroupOC DynGroupBase:2 -olcAttributeTypes: {0}( NetscapeLDAPattributeType:198 NAME 'memberURL' DESC 'I - dentifies an URL associated with each member of a group. Any type of labeled - URL can be used.' SUP labeledURI ) -olcAttributeTypes: {1}( DynGroupAttr:1 NAME 'dgIdentity' DESC 'Identity to use - when processing the memberURL' SUP distinguishedName SINGLE-VALUE ) -olcAttributeTypes: {2}( DynGroupAttr:2 NAME 'dgAuthz' DESC 'Optional authoriza - tion rules that determine who is allowed to assume the dgIdentity' EQUALITY a - uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED 'VALUES' ) -olcObjectClasses: {0}( NetscapeLDAPobjectClass:33 NAME 'groupOfURLs' SUP top S - TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $ - owner $ seeAlso ) ) -olcObjectClasses: {1}( DynGroupOC:1 NAME 'dgIdentityAux' SUP top AUXILIARY MAY - ( dgIdentity $ dgAuthz ) ) diff --git a/docker/ldap/data/etc/schema/dyngroup.schema b/docker/ldap/data/etc/schema/dyngroup.schema deleted file mode 100644 index bb64ab1..0000000 --- a/docker/ldap/data/etc/schema/dyngroup.schema +++ /dev/null @@ -1,91 +0,0 @@ -# dyngroup.schema -- Dynamic Group schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Dynamic Group schema (experimental), as defined by Netscape. See -# http://www.redhat.com/docs/manuals/ent-server/pdf/esadmin611.pdf -# page 70 for details on how these groups were used. -# -# A description of the objectclass definition is available here: -# http://www.redhat.com/docs/manuals/dir-server/schema/7.1/oc_dir.html#1303745 -# -# depends upon: -# core.schema -# -# These definitions are considered experimental due to the lack of -# a formal specification (e.g., RFC). -# -# NOT RECOMMENDED FOR PRODUCTION USE! USE WITH CAUTION! -# -# The Netscape documentation describes this as an auxiliary objectclass -# but their implementations have always defined it as a structural class. -# The sloppiness here is because Netscape-derived servers don't actually -# implement the X.500 data model, and they don't honor the distinction -# between structural and auxiliary classes. This fact is noted here: -# http://forum.java.sun.com/thread.jspa?threadID=5016864&messageID=9034636 -# -# In accordance with other existing implementations, we define it as a -# structural class. -# -# Our definition of memberURL also does not match theirs but again -# their published definition and what works in practice do not agree. -# In other words, the Netscape definitions are broken and interoperability -# is not guaranteed. -# -# Also see the new DynGroup proposed spec at -# http://tools.ietf.org/html/draft-haripriya-dynamicgroup-02 - -objectIdentifier NetscapeRoot 2.16.840.1.113730 - -objectIdentifier NetscapeLDAP NetscapeRoot:3 -objectIdentifier NetscapeLDAPattributeType NetscapeLDAP:1 -objectIdentifier NetscapeLDAPobjectClass NetscapeLDAP:2 - -objectIdentifier OpenLDAPExp11 1.3.6.1.4.1.4203.666.11 -objectIdentifier DynGroupBase OpenLDAPExp11:8 -objectIdentifier DynGroupAttr DynGroupBase:1 -objectIdentifier DynGroupOC DynGroupBase:2 - -attributetype ( NetscapeLDAPattributeType:198 - NAME 'memberURL' - DESC 'Identifies an URL associated with each member of a group. Any type of labeled URL can be used.' - SUP labeledURI ) - -attributetype ( DynGroupAttr:1 - NAME 'dgIdentity' - DESC 'Identity to use when processing the memberURL' - SUP distinguishedName SINGLE-VALUE ) - -attributeType ( DynGroupAttr:2 - NAME 'dgAuthz' - DESC 'Optional authorization rules that determine who is allowed to assume the dgIdentity' - EQUALITY authzMatch - SYNTAX 1.3.6.1.4.1.4203.666.2.7 - X-ORDERED 'VALUES' ) - -objectClass ( NetscapeLDAPobjectClass:33 - NAME 'groupOfURLs' - SUP top STRUCTURAL - MUST cn - MAY ( memberURL $ businessCategory $ description $ o $ ou $ - owner $ seeAlso ) ) - -# The Haripriya dyngroup schema still needs a lot of work. -# We're just adding support for the dgIdentity attribute for now... -objectClass ( DynGroupOC:1 - NAME 'dgIdentityAux' - SUP top AUXILIARY - MAY ( dgIdentity $ dgAuthz ) ) - - diff --git a/docker/ldap/data/etc/schema/inetorgperson.ldif b/docker/ldap/data/etc/schema/inetorgperson.ldif deleted file mode 100644 index 3425667..0000000 --- a/docker/ldap/data/etc/schema/inetorgperson.ldif +++ /dev/null @@ -1,69 +0,0 @@ -# InetOrgPerson (RFC2798) -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# InetOrgPerson (RFC2798) -# -# Depends upon -# Definition of an X.500 Attribute Type and an Object Class to Hold -# Uniform Resource Identifiers (URIs) [RFC2079] -# (core.ldif) -# -# A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256] -# (core.ldif) -# -# The COSINE and Internet X.500 Schema [RFC1274] (cosine.ldif) -# -# This file was automatically generated from inetorgperson.schema; see -# that file for complete references. -# -dn: cn=inetorgperson,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: inetorgperson -olcAttributeTypes: ( 2.16.840.1.113730.3.1.1 NAME 'carLicense' DESC 'RFC279 - 8: vehicle license or registration plate' EQUALITY caseIgnoreMatch SUBSTR cas - eIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.2 NAME 'departmentNumber' DESC ' - RFC2798: identifies a department within an organization' EQUALITY caseIgnoreM - atch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.241 NAME 'displayName' DESC 'RFC - 2798: preferred name to be used when displaying entries' EQUALITY caseIgnoreM - atch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SI - NGLE-VALUE ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.3 NAME 'employeeNumber' DESC 'RF - C2798: numerically identifies an employee within an organization' EQUALITY ca - seIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.12 - 1.1.15 SINGLE-VALUE ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.4 NAME 'employeeType' DESC 'RFC2 - 798: type of employment for a person' EQUALITY caseIgnoreMatch SUBSTR caseIgn - oreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: ( 0.9.2342.19200300.100.1.60 NAME 'jpegPhoto' DESC 'RFC2 - 798: a JPEG image' SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.39 NAME 'preferredLanguage' DESC - 'RFC2798: preferred written or spoken language for a person' EQUALITY caseIg - noreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1. - 15 SINGLE-VALUE ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.40 NAME 'userSMIMECertificate' D - ESC 'RFC2798: PKCS#7 SignedData used to support S/MIME' SYNTAX 1.3.6.1.4.1.14 - 66.115.121.1.5 ) -olcAttributeTypes: ( 2.16.840.1.113730.3.1.216 NAME 'userPKCS12' DESC 'RFC2 - 798: personal identity information, a PKCS #12 PFX' SYNTAX 1.3.6.1.4.1.1466.1 - 15.121.1.5 ) -olcObjectClasses: ( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC 'RFC2 - 798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL MAY - ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ em - ployeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ ini - tials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo - $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ pre - ferredLanguage $ userSMIMECertificate $ userPKCS12 ) ) diff --git a/docker/ldap/data/etc/schema/inetorgperson.schema b/docker/ldap/data/etc/schema/inetorgperson.schema deleted file mode 100644 index f27a590..0000000 --- a/docker/ldap/data/etc/schema/inetorgperson.schema +++ /dev/null @@ -1,155 +0,0 @@ -# inetorgperson.schema -- InetOrgPerson (RFC2798) -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# InetOrgPerson (RFC2798) -# -# Depends upon -# Definition of an X.500 Attribute Type and an Object Class to Hold -# Uniform Resource Identifiers (URIs) [RFC2079] -# (core.schema) -# -# A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256] -# (core.schema) -# -# The COSINE and Internet X.500 Schema [RFC1274] (cosine.schema) - -# carLicense -# This multivalued field is used to record the values of the license or -# registration plate associated with an individual. -attributetype ( 2.16.840.1.113730.3.1.1 - NAME 'carLicense' - DESC 'RFC2798: vehicle license or registration plate' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# departmentNumber -# Code for department to which a person belongs. This can also be -# strictly numeric (e.g., 1234) or alphanumeric (e.g., ABC/123). -attributetype ( 2.16.840.1.113730.3.1.2 - NAME 'departmentNumber' - DESC 'RFC2798: identifies a department within an organization' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# displayName -# When displaying an entry, especially within a one-line summary list, it -# is useful to be able to identify a name to be used. Since other attri- -# bute types such as 'cn' are multivalued, an additional attribute type is -# needed. Display name is defined for this purpose. -attributetype ( 2.16.840.1.113730.3.1.241 - NAME 'displayName' - DESC 'RFC2798: preferred name to be used when displaying entries' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -# employeeNumber -# Numeric or alphanumeric identifier assigned to a person, typically based -# on order of hire or association with an organization. Single valued. -attributetype ( 2.16.840.1.113730.3.1.3 - NAME 'employeeNumber' - DESC 'RFC2798: numerically identifies an employee within an organization' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -# employeeType -# Used to identify the employer to employee relationship. Typical values -# used will be "Contractor", "Employee", "Intern", "Temp", "External", and -# "Unknown" but any value may be used. -attributetype ( 2.16.840.1.113730.3.1.4 - NAME 'employeeType' - DESC 'RFC2798: type of employment for a person' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# jpegPhoto -# Used to store one or more images of a person using the JPEG File -# Interchange Format [JFIF]. -# Note that the jpegPhoto attribute type was defined for use in the -# Internet X.500 pilots but no referencable definition for it could be -# located. -attributetype ( 0.9.2342.19200300.100.1.60 - NAME 'jpegPhoto' - DESC 'RFC2798: a JPEG image' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 ) - -# preferredLanguage -# Used to indicate an individual's preferred written or spoken -# language. This is useful for international correspondence or human- -# computer interaction. Values for this attribute type MUST conform to -# the definition of the Accept-Language header field defined in -# [RFC2068] with one exception: the sequence "Accept-Language" ":" -# should be omitted. This is a single valued attribute type. -attributetype ( 2.16.840.1.113730.3.1.39 - NAME 'preferredLanguage' - DESC 'RFC2798: preferred written or spoken language for a person' - EQUALITY caseIgnoreMatch - SUBSTR caseIgnoreSubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -# userSMIMECertificate -# A PKCS#7 [RFC2315] SignedData, where the content that is signed is -# ignored by consumers of userSMIMECertificate values. It is -# recommended that values have a `contentType' of data with an absent -# `content' field. Values of this attribute contain a person's entire -# certificate chain and an smimeCapabilities field [RFC2633] that at a -# minimum describes their SMIME algorithm capabilities. Values for -# this attribute are to be stored and requested in binary form, as -# 'userSMIMECertificate;binary'. If available, this attribute is -# preferred over the userCertificate attribute for S/MIME applications. -## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary -attributetype ( 2.16.840.1.113730.3.1.40 - NAME 'userSMIMECertificate' - DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) - -# userPKCS12 -# PKCS #12 [PKCS12] provides a format for exchange of personal identity -# information. When such information is stored in a directory service, -# the userPKCS12 attribute should be used. This attribute is to be stored -# and requested in binary form, as 'userPKCS12;binary'. The attribute -# values are PFX PDUs stored as binary data. -## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary -attributetype ( 2.16.840.1.113730.3.1.216 - NAME 'userPKCS12' - DESC 'RFC2798: personal identity information, a PKCS #12 PFX' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) - - -# inetOrgPerson -# The inetOrgPerson represents people who are associated with an -# organization in some way. It is a structural class and is derived -# from the organizationalPerson which is defined in X.521 [X521]. -objectclass ( 2.16.840.1.113730.3.2.2 - NAME 'inetOrgPerson' - DESC 'RFC2798: Internet Organizational Person' - SUP organizationalPerson - STRUCTURAL - MAY ( - audio $ businessCategory $ carLicense $ departmentNumber $ - displayName $ employeeNumber $ employeeType $ givenName $ - homePhone $ homePostalAddress $ initials $ jpegPhoto $ - labeledURI $ mail $ manager $ mobile $ o $ pager $ - photo $ roomNumber $ secretary $ uid $ userCertificate $ - x500uniqueIdentifier $ preferredLanguage $ - userSMIMECertificate $ userPKCS12 ) - ) diff --git a/docker/ldap/data/etc/schema/java.ldif b/docker/ldap/data/etc/schema/java.ldif deleted file mode 100644 index 5abdf85..0000000 --- a/docker/ldap/data/etc/schema/java.ldif +++ /dev/null @@ -1,59 +0,0 @@ -# java.ldif -- Java Object Schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Java Object Schema (defined in RFC 2713) -# depends upon core.ldif -# -# This file was automatically generated from java.schema; see that file -# for complete references. -# -dn: cn=java,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: java -olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.4.1.6 NAME 'javaClassName' DESC 'F - ully qualified name of distinguished Java class or interface' EQUALITY caseEx - actMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) -olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.4.1.7 NAME 'javaCodebase' DESC 'UR - L(s) specifying the location of class definition' EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: {2}( 1.3.6.1.4.1.42.2.27.4.1.13 NAME 'javaClassNames' DESC - 'Fully qualified Java class or interface name' EQUALITY caseExactMatch SYNTAX - 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.4.1.8 NAME 'javaSerializedData' DE - SC 'Serialized form of a Java object' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SI - NGLE-VALUE ) -olcAttributeTypes: {4}( 1.3.6.1.4.1.42.2.27.4.1.10 NAME 'javaFactory' DESC 'Fu - lly qualified Java class name of a JNDI object factory' EQUALITY caseExactMat - ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) -olcAttributeTypes: {5}( 1.3.6.1.4.1.42.2.27.4.1.11 NAME 'javaReferenceAddress' - DESC 'Addresses associated with a JNDI Reference' EQUALITY caseExactMatch SY - NTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -olcAttributeTypes: {6}( 1.3.6.1.4.1.42.2.27.4.1.12 NAME 'javaDoc' DESC 'The Ja - va documentation for the class' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1 - .1466.115.121.1.26 ) -olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.1 NAME 'javaContainer' DESC 'Co - ntainer for a Java object' SUP top STRUCTURAL MUST cn ) -olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.4.2.4 NAME 'javaObject' DESC 'Java - object representation' SUP top ABSTRACT MUST javaClassName MAY ( javaClassNam - es $ javaCodebase $ javaDoc $ description ) ) -olcObjectClasses: {2}( 1.3.6.1.4.1.42.2.27.4.2.5 NAME 'javaSerializedObject' D - ESC 'Java serialized object' SUP javaObject AUXILIARY MUST javaSerializedData - ) -olcObjectClasses: {3}( 1.3.6.1.4.1.42.2.27.4.2.8 NAME 'javaMarshalledObject' D - ESC 'Java marshalled object' SUP javaObject AUXILIARY MUST javaSerializedData - ) -olcObjectClasses: {4}( 1.3.6.1.4.1.42.2.27.4.2.7 NAME 'javaNamingReference' DE - SC 'JNDI reference' SUP javaObject AUXILIARY MAY ( javaReferenceAddress $ jav - aFactory ) ) diff --git a/docker/ldap/data/etc/schema/java.schema b/docker/ldap/data/etc/schema/java.schema deleted file mode 100644 index 72496f6..0000000 --- a/docker/ldap/data/etc/schema/java.schema +++ /dev/null @@ -1,403 +0,0 @@ -# java.schema -- Java Object Schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Java Object Schema (defined in RFC 2713) -# depends upon core.schema -# - -# Network Working Group V. Ryan -# Request for Comments: 2713 S. Seligman -# Category: Informational R. Lee -# Sun Microsystems, Inc. -# October 1999 -# -# -# Schema for Representing Java(tm) Objects in an LDAP Directory -# -# Status of this Memo -# -# This memo provides information for the Internet community. It does -# not specify an Internet standard of any kind. Distribution of this -# memo is unlimited. -# -# Copyright Notice -# -# Copyright (C) The Internet Society (1999). All Rights Reserved. -# -# Abstract -# -# This document defines the schema for representing Java(tm) objects in -# an LDAP directory [LDAPv3]. It defines schema elements to represent -# a Java serialized object [Serial], a Java marshalled object [RMI], a -# Java remote object [RMI], and a JNDI reference [JNDI]. -# - -# [trimmed] - -# 3 Attribute Type Definitions -# -# The following attribute types are defined in this document: -# -# javaClassName -# javaClassNames -# javaCodebase -# javaSerializedData -# javaFactory -# javaReferenceAddress -# javaDoc -# -# 3.1 javaClassName -# -# This attribute stores the fully qualified name of the Java object's -# "distinguished" class or interface (for example, "java.lang.String"). -# It is a single-valued attribute. This attribute's syntax is ' -# Directory String' and its case is significant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.6 -# NAME 'javaClassName' -# DESC 'Fully qualified name of distinguished Java class or -# interface' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 -# SINGLE-VALUE -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6 - NAME 'javaClassName' - DESC 'Fully qualified name of distinguished Java class or interface' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -# 3.2 javaCodebase -# -# This attribute stores the Java class definition's locations. It -# specifies the locations from which to load the class definition for -# the class specified by the javaClassName attribute. Each value of -# the attribute contains an ordered list of URLs, separated by spaces. -# For example, a value of "url1 url2 url3" means that the three -# (possibly interdependent) URLs (url1, url2, and url3) form the -# codebase for loading in the Java class definition. -# -# If the javaCodebase attribute contains more than one value, each -# value is an independent codebase. That is, there is no relationship -# between the URLs in one value and those in another; each value can be -# viewed as an alternate source for loading the Java class definition. -# See [Java] for information regarding class loading. -# -# This attribute's syntax is 'IA5 String' and its case is significant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.7 -# NAME 'javaCodebase' -# DESC 'URL(s) specifying the location of class definition' -# EQUALITY caseExactIA5Match -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.7 - NAME 'javaCodebase' - DESC 'URL(s) specifying the location of class definition' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 3.3 javaClassNames -# -# This attribute stores the Java object's fully qualified class or -# interface names (for example, "java.lang.String"). It is a -# multivalued attribute. When more than one value is present, each is -# the name of a class or interface, or ancestor class or interface, of -# this object. -# -# This attribute's syntax is 'Directory String' and its case is -# significant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.13 -# NAME 'javaClassNames' -# DESC 'Fully qualified Java class or interface name' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 -# ) -# -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.13 - NAME 'javaClassNames' - DESC 'Fully qualified Java class or interface name' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# 3.4 javaSerializedData -# -# This attribute stores the serialized form of a Java object. The -# serialized form is described in [Serial]. -# -# This attribute's syntax is 'Octet String'. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.8 -# NAME 'javaSerializedData -# DESC 'Serialized form of a Java object' -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 -# SINGLE-VALUE -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.8 - NAME 'javaSerializedData' - DESC 'Serialized form of a Java object' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 - SINGLE-VALUE ) - -# 3.5 javaFactory -# -# This attribute stores the fully qualified class name of the object -# factory (for example, "com.wiz.jndi.WizObjectFactory") that can be -# used to create an instance of the object identified by the -# javaClassName attribute. -# -# This attribute's syntax is 'Directory String' and its case is -# significant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.10 -# NAME 'javaFactory' -# DESC 'Fully qualified Java class name of a JNDI object factory' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 -# SINGLE-VALUE -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.10 - NAME 'javaFactory' - DESC 'Fully qualified Java class name of a JNDI object factory' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 - SINGLE-VALUE ) - -# 3.6 javaReferenceAddress -# -# This attribute represents the sequence of addresses of a JNDI -# reference. Each of its values represents one address, a Java object -# of type javax.naming.RefAddr. Its value is a concatenation of the -# address type and address contents, preceded by a sequence number (the -# order of addresses in a JNDI reference is significant). For example: -# -# #0#TypeA#ValA -# #1#TypeB#ValB -# #2#TypeC##rO0ABXNyABpq... -# -# In more detail, the value is encoded as follows: -# -# The delimiter is the first character of the value. For readability -# the character '#' is recommended when it is not otherwise used -# anywhere in the value, but any character may be used subject to -# restrictions given below. -# -# The first delimiter is followed by the sequence number. The sequence -# number of an address is its position in the JNDI reference, with the -# first address being numbered 0. It is represented by its shortest -# string form, in decimal notation. -# -# The sequence number is followed by a delimiter, then by the address -# type, and then by another delimiter. If the address is of Java class -# javax.naming.StringRefAddr, then this delimiter is followed by the -# value of the address contents (which is a string). Otherwise, this -# delimiter is followed immediately by another delimiter, and then by -# the Base64 encoding of the serialized form of the entire address. -# -# The delimiter may be any character other than a digit or a character -# contained in the address type. In addition, if the address contents -# is a string, the delimiter may not be the first character of that -# string. -# -# This attribute's syntax is 'Directory String' and its case is -# significant. It can contain multiple values. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.11 -# NAME 'javaReferenceAddress' -# DESC 'Addresses associated with a JNDI Reference' -# EQUALITY caseExactMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.11 - NAME 'javaReferenceAddress' - DESC 'Addresses associated with a JNDI Reference' - EQUALITY caseExactMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) - -# 3.7 javaDoc -# -# This attribute stores a pointer to the Java documentation for the -# class. It's value is a URL. For example, the following URL points to -# the specification of the java.lang.String class: -# http://java.sun.com/products/jdk/1.2/docs/api/java/lang/String.html -# -# This attribute's syntax is 'IA5 String' and its case is significant. -# -# ( 1.3.6.1.4.1.42.2.27.4.1.12 -# NAME 'javaDoc' -# DESC 'The Java documentation for the class' -# EQUALITY caseExactIA5Match -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 -# ) -# -attributetype ( 1.3.6.1.4.1.42.2.27.4.1.12 - NAME 'javaDoc' - DESC 'The Java documentation for the class' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -# 4 Object Class Definitions -# -# The following object classes are defined in this document: -# -# javaContainer -# javaObject -# javaSerializedObject -# javaMarshalledObject -# javaNamingReference -# -# 4.1 javaContainer -# -# This structural object class represents a container for a Java -# object. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.1 -# NAME 'javaContainer' -# DESC 'Container for a Java object' -# SUP top -# STRUCTURAL -# MUST ( cn ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1 - NAME 'javaContainer' - DESC 'Container for a Java object' - SUP top - STRUCTURAL - MUST cn ) - -# 4.2 javaObject -# -# This abstract object class represents a Java object. A javaObject -# cannot exist in the directory; only auxiliary or structural -# subclasses of it can exist in the directory. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.4 -# NAME 'javaObject' -# DESC 'Java object representation' -# SUP top -# ABSTRACT -# MUST ( javaClassName ) -# MAY ( javaClassNames $ -# javaCodebase $ -# javaDoc $ -# description ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.4 - NAME 'javaObject' - DESC 'Java object representation' - SUP top - ABSTRACT - MUST javaClassName - MAY ( javaClassNames $ javaCodebase $ - javaDoc $ description ) ) - -# 4.3 javaSerializedObject -# -# This auxiliary object class represents a Java serialized object. It -# must be mixed in with a structural object class. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.5 -# NAME 'javaSerializedObject' -# DESC 'Java serialized object' -# SUP javaObject -# AUXILIARY -# MUST ( javaSerializedData ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.5 - NAME 'javaSerializedObject' - DESC 'Java serialized object' - SUP javaObject - AUXILIARY - MUST javaSerializedData ) - -# 4.4 javaMarshalledObject -# -# This auxiliary object class represents a Java marshalled object. It -# must be mixed in with a structural object class. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.8 -# NAME 'javaMarshalledObject' -# DESC 'Java marshalled object' -# SUP javaObject -# AUXILIARY -# MUST ( javaSerializedData ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.8 - NAME 'javaMarshalledObject' - DESC 'Java marshalled object' - SUP javaObject - AUXILIARY - MUST javaSerializedData ) - -# 4.5 javaNamingReference -# -# This auxiliary object class represents a JNDI reference. It must be -# mixed in with a structural object class. -# -# ( 1.3.6.1.4.1.42.2.27.4.2.7 -# NAME 'javaNamingReference' -# DESC 'JNDI reference' -# SUP javaObject -# AUXILIARY -# MAY ( javaReferenceAddress $ -# javaFactory ) -# ) -# -objectclass ( 1.3.6.1.4.1.42.2.27.4.2.7 - NAME 'javaNamingReference' - DESC 'JNDI reference' - SUP javaObject - AUXILIARY - MAY ( javaReferenceAddress $ javaFactory ) ) - -# Full Copyright Statement -# -# Copyright (C) The Internet Society (1999). All Rights Reserved. -# -# This document and translations of it may be copied and furnished to -# others, and derivative works that comment on or otherwise explain it -# or assist in its implementation may be prepared, copied, published -# and distributed, in whole or in part, without restriction of any -# kind, provided that the above copyright notice and this paragraph are -# included on all such copies and derivative works. However, this -# document itself may not be modified in any way, such as by removing -# the copyright notice or references to the Internet Society or other -# Internet organizations, except as needed for the purpose of -# developing Internet standards in which case the procedures for -# copyrights defined in the Internet Standards process must be -# followed, or as required to translate it into languages other than -# English. -# -# The limited permissions granted above are perpetual and will not be -# revoked by the Internet Society or its successors or assigns. -# -# This document and the information contained herein is provided on an -# "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -# TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -# BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -# HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. diff --git a/docker/ldap/data/etc/schema/misc.ldif b/docker/ldap/data/etc/schema/misc.ldif deleted file mode 100644 index ffff541..0000000 --- a/docker/ldap/data/etc/schema/misc.ldif +++ /dev/null @@ -1,45 +0,0 @@ -# misc.ldif -- assorted schema definitions -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Assorted definitions from several sources, including -# ''works in progress''. Contents of this file are -# subject to change (including deletion) without notice. -# -# Not recommended for production use! -# Use with extreme caution! -# -# This file was automatically generated from misc.schema; see that file -# for complete references. -# -dn: cn=misc,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: misc -olcAttributeTypes: {0}( 2.16.840.1.113730.3.1.13 NAME 'mailLocalAddress' DESC - 'RFC822 email address of this recipient' EQUALITY caseIgnoreIA5Match SYNTAX 1 - .3.6.1.4.1.1466.115.121.1.26{256} ) -olcAttributeTypes: {1}( 2.16.840.1.113730.3.1.18 NAME 'mailHost' DESC 'FQDN of - the SMTP/MTA of this recipient' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4 - .1.1466.115.121.1.26{256} SINGLE-VALUE ) -olcAttributeTypes: {2}( 2.16.840.1.113730.3.1.47 NAME 'mailRoutingAddress' DES - C 'RFC822 routing address of this recipient' EQUALITY caseIgnoreIA5Match SYNT - AX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE ) -olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.2.1.15 NAME 'rfc822MailMember' DES - C 'rfc822 mail address of group member(s)' EQUALITY caseIgnoreIA5Match SYNTAX - 1.3.6.1.4.1.1466.115.121.1.26 ) -olcObjectClasses: {0}( 2.16.840.1.113730.3.2.147 NAME 'inetLocalMailRecipient' - DESC 'Internet local mail recipient' SUP top AUXILIARY MAY ( mailLocalAddres - s $ mailHost $ mailRoutingAddress ) ) -olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.1.2.5 NAME 'nisMailAlias' DESC 'NIS - mail alias' SUP top STRUCTURAL MUST cn MAY rfc822MailMember ) diff --git a/docker/ldap/data/etc/schema/misc.schema b/docker/ldap/data/etc/schema/misc.schema deleted file mode 100644 index 970511c..0000000 --- a/docker/ldap/data/etc/schema/misc.schema +++ /dev/null @@ -1,75 +0,0 @@ -# misc.schema -- assorted schema definitions -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Assorted definitions from several sources, including -# ''works in progress''. Contents of this file are -# subject to change (including deletion) without notice. -# -# Not recommended for production use! -# Use with extreme caution! - -#----------------------------------------------------------- -# draft-lachman-laser-ldap-mail-routing-02.txt !!!EXPIRED!!! -# (a work in progress) -# -attributetype ( 2.16.840.1.113730.3.1.13 - NAME 'mailLocalAddress' - DESC 'RFC822 email address of this recipient' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) - -attributetype ( 2.16.840.1.113730.3.1.18 - NAME 'mailHost' - DESC 'FQDN of the SMTP/MTA of this recipient' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} - SINGLE-VALUE ) - -attributetype ( 2.16.840.1.113730.3.1.47 - NAME 'mailRoutingAddress' - DESC 'RFC822 routing address of this recipient' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} - SINGLE-VALUE ) - -# I-D leaves this OID TBD. -# iPlanet uses 2.16.840.1.113.730.3.2.147 but that is an -# improperly delegated OID. A typo is likely. -objectclass ( 2.16.840.1.113730.3.2.147 - NAME 'inetLocalMailRecipient' - DESC 'Internet local mail recipient' - SUP top AUXILIARY - MAY ( mailLocalAddress $ mailHost $ mailRoutingAddress ) ) - -#----------------------------------------------------------- -# draft-srivastava-ldap-mail-00.txt !!!EXPIRED!!! -# (a work in progress) -# -attributetype ( 1.3.6.1.4.1.42.2.27.2.1.15 - NAME 'rfc822MailMember' - DESC 'rfc822 mail address of group member(s)' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -#----------------------------------------------------------- -# !!!no I-D!!! -# (a work in progress) -# -objectclass ( 1.3.6.1.4.1.42.2.27.1.2.5 - NAME 'nisMailAlias' - DESC 'NIS mail alias' - SUP top STRUCTURAL - MUST cn - MAY rfc822MailMember ) diff --git a/docker/ldap/data/etc/schema/nis.ldif b/docker/ldap/data/etc/schema/nis.ldif deleted file mode 100644 index 0badd93..0000000 --- a/docker/ldap/data/etc/schema/nis.ldif +++ /dev/null @@ -1,120 +0,0 @@ -# NIS (RFC2307) -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# Definitions from RFC2307 (Experimental) -# An Approach for Using LDAP as a Network Information Service -# -# Depends upon core.ldif and cosine.ldif -# -# This file was automatically generated from nis.schema; see that file -# for complete references. -# -dn: cn=nis,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: nis -olcAttributeTypes: ( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; th - e common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatc - h SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' DESC 'The absolut - e path to the home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1 - 466.115.121.1.26 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.4 NAME 'loginShell' DESC 'The path to th - e login shell' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.2 - 6 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' EQUALITY integ - erMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.6 NAME 'shadowMin' EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.7 NAME 'shadowMax' EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' EQUALITY integerM - atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' EQUALITY integer - Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' EQUALITY integerM - atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' EQUALITY integerMat - ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.12 NAME 'memberUid' EQUALITY caseExactI - A5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1. - 26 ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' EQUALITY ca - seExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.11 - 5.121.1.26 ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' DESC 'Netgr - oup triple' SYNTAX 1.3.6.1.1.1.0.0 ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' EQUALITY intege - rMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' SUP name ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' EQUALITY int - egerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' EQUALITY integer - Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' DESC 'IP address - ' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' DESC 'IP netw - ork' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SI - NGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' DESC 'IP netm - ask' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SI - NGLE-VALUE ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.22 NAME 'macAddress' DESC 'MAC address' - EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.23 NAME 'bootParameter' DESC 'rpc.bootp - aramd parameter' SYNTAX 1.3.6.1.1.1.0.1 ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.24 NAME 'bootFile' DESC 'Boot image nam - e' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.26 NAME 'nisMapName' SUP name ) -olcAttributeTypes: ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' EQUALITY caseExac - tIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121. - 1.26{1024} SINGLE-VALUE ) -olcObjectClasses: ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction o - f an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ uidNu - mber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ - description ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' DESC 'Additional a - ttributes for shadow passwords' SUP top AUXILIARY MUST uid MAY ( userPassword - $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive - $ shadowExpire $ shadowFlag $ description ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction of - a group of accounts' SUP top STRUCTURAL MUST ( cn $ gidNumber ) MAY ( userPas - sword $ memberUid $ description ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.3 NAME 'ipService' DESC 'Abstraction an I - nternet Protocol service' SUP top STRUCTURAL MUST ( cn $ ipServicePort $ ipSe - rviceProtocol ) MAY description ) -olcObjectClasses: ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' DESC 'Abstraction of - an IP protocol' SUP top STRUCTURAL MUST ( cn $ ipProtocolNumber $ description - ) MAY description ) -olcObjectClasses: ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' DESC 'Abstraction of an O - NC/RPC binding' SUP top STRUCTURAL MUST ( cn $ oncRpcNumber $ description ) M - AY description ) -olcObjectClasses: ( 1.3.6.1.1.1.2.6 NAME 'ipHost' DESC 'Abstraction of a ho - st, an IP device' SUP top AUXILIARY MUST ( cn $ ipHostNumber ) MAY ( l $ desc - ription $ manager ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' DESC 'Abstraction of a - n IP network' SUP top STRUCTURAL MUST ( cn $ ipNetworkNumber ) MAY ( ipNetmas - kNumber $ l $ description $ manager ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' DESC 'Abstraction of - a netgroup' SUP top STRUCTURAL MUST cn MAY ( nisNetgroupTriple $ memberNisNe - tgroup $ description ) ) -olcObjectClasses: ( 1.3.6.1.1.1.2.9 NAME 'nisMap' DESC 'A generic abstracti - on of a NIS map' SUP top STRUCTURAL MUST nisMapName MAY description ) -olcObjectClasses: ( 1.3.6.1.1.1.2.10 NAME 'nisObject' DESC 'An entry in a - NIS map' SUP top STRUCTURAL MUST ( cn $ nisMapEntry $ nisMapName ) MAY descri - ption ) -olcObjectClasses: ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' DESC 'A device w - ith a MAC address' SUP top AUXILIARY MAY macAddress ) -olcObjectClasses: ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' DESC 'A device - with boot parameters' SUP top AUXILIARY MAY ( bootFile $ bootParameter ) ) diff --git a/docker/ldap/data/etc/schema/nis.schema b/docker/ldap/data/etc/schema/nis.schema deleted file mode 100644 index 53f9700..0000000 --- a/docker/ldap/data/etc/schema/nis.schema +++ /dev/null @@ -1,237 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . - -# Definitions from RFC2307 (Experimental) -# An Approach for Using LDAP as a Network Information Service - -# Depends upon core.schema and cosine.schema - -# Note: The definitions in RFC2307 are given in syntaxes closely related -# to those in RFC2252, however, some liberties are taken that are not -# supported by RFC2252. This file has been written following RFC2252 -# strictly. - -# OID Base is iso(1) org(3) dod(6) internet(1) directory(1) nisSchema(1). -# i.e. nisSchema in RFC2307 is 1.3.6.1.1.1 -# -# Syntaxes are under 1.3.6.1.1.1.0 (two new syntaxes are defined) -# validaters for these syntaxes are incomplete, they only -# implement printable string validation (which is good as the -# common use of these syntaxes violates the specification). -# Attribute types are under 1.3.6.1.1.1.1 -# Object classes are under 1.3.6.1.1.1.2 - -# Attribute Type Definitions - -# builtin -#attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber' -# DESC 'An integer uniquely identifying a user in an administrative domain' -# EQUALITY integerMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -# builtin -#attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber' -# DESC 'An integer uniquely identifying a group in an administrative domain' -# EQUALITY integerMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos' - DESC 'The GECOS field; the common name' - EQUALITY caseIgnoreIA5Match - SUBSTR caseIgnoreIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' - DESC 'The absolute path to the home directory' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.4 NAME 'loginShell' - DESC 'The path to the login shell' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.6 NAME 'shadowMin' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.7 NAME 'shadowMax' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.12 NAME 'memberUid' - EQUALITY caseExactIA5Match - SUBSTR caseExactIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributetype ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' - EQUALITY caseExactIA5Match - SUBSTR caseExactIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' - DESC 'Netgroup triple' - SYNTAX 1.3.6.1.1.1.0.0 ) - -attributetype ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' - SUP name ) - -attributetype ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' - EQUALITY integerMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' - DESC 'IP address' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) - -attributetype ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' - DESC 'IP network' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' - DESC 'IP netmask' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE ) - -attributetype ( 1.3.6.1.1.1.1.22 NAME 'macAddress' - DESC 'MAC address' - EQUALITY caseIgnoreIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) - -attributetype ( 1.3.6.1.1.1.1.23 NAME 'bootParameter' - DESC 'rpc.bootparamd parameter' - SYNTAX 1.3.6.1.1.1.0.1 ) - -attributetype ( 1.3.6.1.1.1.1.24 NAME 'bootFile' - DESC 'Boot image name' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) - -attributetype ( 1.3.6.1.1.1.1.26 NAME 'nisMapName' - SUP name ) - -attributetype ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' - EQUALITY caseExactIA5Match - SUBSTR caseExactIA5SubstringsMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} SINGLE-VALUE ) - -# Object Class Definitions - -objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' - DESC 'Abstraction of an account with POSIX attributes' - SUP top AUXILIARY - MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) - MAY ( userPassword $ loginShell $ gecos $ description ) ) - -objectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' - DESC 'Additional attributes for shadow passwords' - SUP top AUXILIARY - MUST uid - MAY ( userPassword $ shadowLastChange $ shadowMin $ - shadowMax $ shadowWarning $ shadowInactive $ - shadowExpire $ shadowFlag $ description ) ) - -objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' - DESC 'Abstraction of a group of accounts' - SUP top STRUCTURAL - MUST ( cn $ gidNumber ) - MAY ( userPassword $ memberUid $ description ) ) - -objectclass ( 1.3.6.1.1.1.2.3 NAME 'ipService' - DESC 'Abstraction an Internet Protocol service' - SUP top STRUCTURAL - MUST ( cn $ ipServicePort $ ipServiceProtocol ) - MAY ( description ) ) - -objectclass ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' - DESC 'Abstraction of an IP protocol' - SUP top STRUCTURAL - MUST ( cn $ ipProtocolNumber $ description ) - MAY description ) - -objectclass ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' - DESC 'Abstraction of an ONC/RPC binding' - SUP top STRUCTURAL - MUST ( cn $ oncRpcNumber $ description ) - MAY description ) - -objectclass ( 1.3.6.1.1.1.2.6 NAME 'ipHost' - DESC 'Abstraction of a host, an IP device' - SUP top AUXILIARY - MUST ( cn $ ipHostNumber ) - MAY ( l $ description $ manager ) ) - -objectclass ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' - DESC 'Abstraction of an IP network' - SUP top STRUCTURAL - MUST ( cn $ ipNetworkNumber ) - MAY ( ipNetmaskNumber $ l $ description $ manager ) ) - -objectclass ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' - DESC 'Abstraction of a netgroup' - SUP top STRUCTURAL - MUST cn - MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) ) - -objectclass ( 1.3.6.1.1.1.2.9 NAME 'nisMap' - DESC 'A generic abstraction of a NIS map' - SUP top STRUCTURAL - MUST nisMapName - MAY description ) - -objectclass ( 1.3.6.1.1.1.2.10 NAME 'nisObject' - DESC 'An entry in a NIS map' - SUP top STRUCTURAL - MUST ( cn $ nisMapEntry $ nisMapName ) - MAY description ) - -objectclass ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' - DESC 'A device with a MAC address' - SUP top AUXILIARY - MAY macAddress ) - -objectclass ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' - DESC 'A device with boot parameters' - SUP top AUXILIARY - MAY ( bootFile $ bootParameter ) ) diff --git a/docker/ldap/data/etc/schema/openldap.ldif b/docker/ldap/data/etc/schema/openldap.ldif deleted file mode 100644 index c6777f8..0000000 --- a/docker/ldap/data/etc/schema/openldap.ldif +++ /dev/null @@ -1,88 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -# -# OpenLDAP Project's directory schema items -# -# depends upon: -# core.schema -# cosine.schema -# inetorgperson.schema -# -# These are provided for informational purposes only. -# -# This openldap.ldif file is provided as a demonstration of how to -# convert a *.schema file into *.ldif format. The key points: -# In LDIF, a blank line terminates an entry. Blank lines in a *.schema -# file should be replaced with a single '#' to turn them into -# comments, or they should just be removed. -# In addition to the actual schema directives, the file needs a small -# header to make it a valid LDAP entry. This header must provide the -# dn of the entry, the objectClass, and the cn, as shown here: -# -dn: cn=openldap,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: openldap -# -# The schema directives need to be changed to LDAP Attributes. -# First a basic string substitution can be done on each of the keywords: -# objectIdentifier -> olcObjectIdentifier: -# objectClass -> olcObjectClasses: -# attributeType -> olcAttributeTypes: -# Then leading whitespace must be fixed. The slapd.conf format allows -# tabs or spaces to denote line continuation, while LDIF only allows -# the space character. -# Also slapd.conf preserves the continuation character, while LDIF strips -# it out. So a single TAB/SPACE in slapd.conf must be replaced with -# two SPACEs in LDIF, otherwise the continued text may get joined as -# a single word. -# The directives must be listed in a proper sequence: -# All olcObjectIdentifiers must be first, so they may be referenced by -# any following definitions. -# All olcAttributeTypes must be next, so they may be referenced by any -# following objectClass definitions. -# All olcObjectClasses must be after the olcAttributeTypes. -# And of course, any superior must occur before anything that inherits -# from it. -# -olcObjectIdentifier: OpenLDAProot 1.3.6.1.4.1.4203 -# -olcObjectIdentifier: OpenLDAP OpenLDAProot:1 -olcObjectIdentifier: OpenLDAPattributeType OpenLDAP:3 -olcObjectIdentifier: OpenLDAPobjectClass OpenLDAP:4 -# -olcObjectClasses: ( OpenLDAPobjectClass:3 - NAME 'OpenLDAPorg' - DESC 'OpenLDAP Organizational Object' - SUP organization - MAY ( buildingName $ displayName $ labeledURI ) ) -# -olcObjectClasses: ( OpenLDAPobjectClass:4 - NAME 'OpenLDAPou' - DESC 'OpenLDAP Organizational Unit Object' - SUP organizationalUnit - MAY ( buildingName $ displayName $ labeledURI $ o ) ) -# -olcObjectClasses: ( OpenLDAPobjectClass:5 - NAME 'OpenLDAPperson' - DESC 'OpenLDAP Person' - SUP ( pilotPerson $ inetOrgPerson ) - MUST ( uid $ cn ) - MAY ( givenName $ labeledURI $ o ) ) -# -olcObjectClasses: ( OpenLDAPobjectClass:6 - NAME 'OpenLDAPdisplayableObject' - DESC 'OpenLDAP Displayable Object' - AUXILIARY - MAY displayName ) diff --git a/docker/ldap/data/etc/schema/openldap.schema b/docker/ldap/data/etc/schema/openldap.schema deleted file mode 100644 index d1dd2e7..0000000 --- a/docker/ldap/data/etc/schema/openldap.schema +++ /dev/null @@ -1,54 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . - -# -# OpenLDAP Project's directory schema items -# -# depends upon: -# core.schema -# cosine.schema -# inetorgperson.schema -# -# These are provided for informational purposes only. - -objectIdentifier OpenLDAProot 1.3.6.1.4.1.4203 - -objectIdentifier OpenLDAP OpenLDAProot:1 -objectIdentifier OpenLDAPattributeType OpenLDAP:3 -objectIdentifier OpenLDAPobjectClass OpenLDAP:4 - -objectClass ( OpenLDAPobjectClass:3 - NAME 'OpenLDAPorg' - DESC 'OpenLDAP Organizational Object' - SUP organization - MAY ( buildingName $ displayName $ labeledURI ) ) - -objectClass ( OpenLDAPobjectClass:4 - NAME 'OpenLDAPou' - DESC 'OpenLDAP Organizational Unit Object' - SUP organizationalUnit - MAY ( buildingName $ displayName $ labeledURI $ o ) ) - -objectClass ( OpenLDAPobjectClass:5 - NAME 'OpenLDAPperson' - DESC 'OpenLDAP Person' - SUP ( pilotPerson $ inetOrgPerson ) - MUST ( uid $ cn ) - MAY ( givenName $ labeledURI $ o ) ) - -objectClass ( OpenLDAPobjectClass:6 - NAME 'OpenLDAPdisplayableObject' - DESC 'OpenLDAP Displayable Object' - AUXILIARY - MAY displayName ) diff --git a/docker/ldap/data/etc/schema/pmi.ldif b/docker/ldap/data/etc/schema/pmi.ldif deleted file mode 100644 index a87e5fd..0000000 --- a/docker/ldap/data/etc/schema/pmi.ldif +++ /dev/null @@ -1,123 +0,0 @@ -# OpenLDAP X.509 PMI schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1997-2006). -## All Rights Reserved. -# -# Includes LDAPv3 schema items from: -# ITU X.509 (08/2005) -# -# This file was automatically generated from pmi.schema; see that file -# for complete references. -# -dn: cn=pmi,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: pmi -olcObjectIdentifier: {0}id-oc-pmiUser 2.5.6.24 -olcObjectIdentifier: {1}id-oc-pmiAA 2.5.6.25 -olcObjectIdentifier: {2}id-oc-pmiSOA 2.5.6.26 -olcObjectIdentifier: {3}id-oc-attCertCRLDistributionPts 2.5.6.27 -olcObjectIdentifier: {4}id-oc-privilegePolicy 2.5.6.32 -olcObjectIdentifier: {5}id-oc-pmiDelegationPath 2.5.6.33 -olcObjectIdentifier: {6}id-oc-protectedPrivilegePolicy 2.5.6.34 -olcObjectIdentifier: {7}id-at-attributeCertificate 2.5.4.58 -olcObjectIdentifier: {8}id-at-attributeCertificateRevocationList 2.5.4.59 -olcObjectIdentifier: {9}id-at-aACertificate 2.5.4.61 -olcObjectIdentifier: {10}id-at-attributeDescriptorCertificate 2.5.4.62 -olcObjectIdentifier: {11}id-at-attributeAuthorityRevocationList 2.5.4.63 -olcObjectIdentifier: {12}id-at-privPolicy 2.5.4.71 -olcObjectIdentifier: {13}id-at-role 2.5.4.72 -olcObjectIdentifier: {14}id-at-delegationPath 2.5.4.73 -olcObjectIdentifier: {15}id-at-protPrivPolicy 2.5.4.74 -olcObjectIdentifier: {16}id-at-xMLPrivilegeInfo 2.5.4.75 -olcObjectIdentifier: {17}id-at-xMLPprotPrivPolicy 2.5.4.76 -olcObjectIdentifier: {18}id-mr 2.5.13 -olcObjectIdentifier: {19}id-mr-attributeCertificateMatch id-mr:42 -olcObjectIdentifier: {20}id-mr-attributeCertificateExactMatch id-mr:45 -olcObjectIdentifier: {21}id-mr-holderIssuerMatch id-mr:46 -olcObjectIdentifier: {22}id-mr-authAttIdMatch id-mr:53 -olcObjectIdentifier: {23}id-mr-roleSpecCertIdMatch id-mr:54 -olcObjectIdentifier: {24}id-mr-basicAttConstraintsMatch id-mr:55 -olcObjectIdentifier: {25}id-mr-delegatedNameConstraintsMatch id-mr:56 -olcObjectIdentifier: {26}id-mr-timeSpecMatch id-mr:57 -olcObjectIdentifier: {27}id-mr-attDescriptorMatch id-mr:58 -olcObjectIdentifier: {28}id-mr-acceptableCertPoliciesMatch id-mr:59 -olcObjectIdentifier: {29}id-mr-delegationPathMatch id-mr:61 -olcObjectIdentifier: {30}id-mr-sOAIdentifierMatch id-mr:66 -olcObjectIdentifier: {31}id-mr-indirectIssuerMatch id-mr:67 -olcObjectIdentifier: {32}AttributeCertificate 1.3.6.1.4.1.4203.666.11.10.2.1 -olcObjectIdentifier: {33}CertificateList 1.3.6.1.4.1.1466.115.121.1.9 -olcObjectIdentifier: {34}AttCertPath 1.3.6.1.4.1.4203.666.11.10.2.4 -olcObjectIdentifier: {35}PolicySyntax 1.3.6.1.4.1.4203.666.11.10.2.5 -olcObjectIdentifier: {36}RoleSyntax 1.3.6.1.4.1.4203.666.11.10.2.6 -olcLdapSyntaxes: {0}( 1.3.6.1.4.1.4203.666.11.10.2.4 DESC 'X.509 PMI attribute - cartificate path: SEQUENCE OF AttributeCertificate' X-SUBST '1.3.6.1.4.1.146 - 6.115.121.1.15' ) -olcLdapSyntaxes: {1}( 1.3.6.1.4.1.4203.666.11.10.2.5 DESC 'X.509 PMI policy sy - ntax' X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' ) -olcLdapSyntaxes: {2}( 1.3.6.1.4.1.4203.666.11.10.2.6 DESC 'X.509 PMI role synt - ax' X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' ) -olcAttributeTypes: {0}( id-at-role NAME 'role' DESC 'X.509 Role attribute, use - ;binary' SYNTAX RoleSyntax ) -olcAttributeTypes: {1}( id-at-xMLPrivilegeInfo NAME 'xmlPrivilegeInfo' DESC 'X - .509 XML privilege information attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.1 - 5 ) -olcAttributeTypes: {2}( id-at-attributeCertificate NAME 'attributeCertificateA - ttribute' DESC 'X.509 Attribute certificate attribute, use ;binary' EQUALITY - attributeCertificateExactMatch SYNTAX AttributeCertificate ) -olcAttributeTypes: {3}( id-at-aACertificate NAME 'aACertificate' DESC 'X.509 A - A certificate attribute, use ;binary' EQUALITY attributeCertificateExactMatch - SYNTAX AttributeCertificate ) -olcAttributeTypes: {4}( id-at-attributeDescriptorCertificate NAME 'attributeDe - scriptorCertificate' DESC 'X.509 Attribute descriptor certificate attribute, - use ;binary' EQUALITY attributeCertificateExactMatch SYNTAX AttributeCertific - ate ) -olcAttributeTypes: {5}( id-at-attributeCertificateRevocationList NAME 'attribu - teCertificateRevocationList' DESC 'X.509 Attribute certificate revocation lis - t attribute, use ;binary' SYNTAX CertificateList X-EQUALITY 'certificateListE - xactMatch, not implemented yet' ) -olcAttributeTypes: {6}( id-at-attributeAuthorityRevocationList NAME 'attribute - AuthorityRevocationList' DESC 'X.509 AA certificate revocation list attribute - , use ;binary' SYNTAX CertificateList X-EQUALITY 'certificateListExactMatch, - not implemented yet' ) -olcAttributeTypes: {7}( id-at-delegationPath NAME 'delegationPath' DESC 'X.509 - Delegation path attribute, use ;binary' SYNTAX AttCertPath ) -olcAttributeTypes: {8}( id-at-privPolicy NAME 'privPolicy' DESC 'X.509 Privile - ge policy attribute, use ;binary' SYNTAX PolicySyntax ) -olcAttributeTypes: {9}( id-at-protPrivPolicy NAME 'protPrivPolicy' DESC 'X.509 - Protected privilege policy attribute, use ;binary' EQUALITY attributeCertifi - cateExactMatch SYNTAX AttributeCertificate ) -olcAttributeTypes: {10}( id-at-xMLPprotPrivPolicy NAME 'xmlPrivPolicy' DESC 'X - .509 XML Protected privilege policy attribute' SYNTAX 1.3.6.1.4.1.1466.115.12 - 1.1.15 ) -olcObjectClasses: {0}( id-oc-pmiUser NAME 'pmiUser' DESC 'X.509 PMI user objec - t class' SUP top AUXILIARY MAY attributeCertificateAttribute ) -olcObjectClasses: {1}( id-oc-pmiAA NAME 'pmiAA' DESC 'X.509 PMI AA object clas - s' SUP top AUXILIARY MAY ( aACertificate $ attributeCertificateRevocationList - $ attributeAuthorityRevocationList ) ) -olcObjectClasses: {2}( id-oc-pmiSOA NAME 'pmiSOA' DESC 'X.509 PMI SOA object c - lass' SUP top AUXILIARY MAY ( attributeCertificateRevocationList $ attributeA - uthorityRevocationList $ attributeDescriptorCertificate ) ) -olcObjectClasses: {3}( id-oc-attCertCRLDistributionPts NAME 'attCertCRLDistrib - utionPt' DESC 'X.509 Attribute certificate CRL distribution point object clas - s' SUP top AUXILIARY MAY ( attributeCertificateRevocationList $ attributeAuth - orityRevocationList ) ) -olcObjectClasses: {4}( id-oc-pmiDelegationPath NAME 'pmiDelegationPath' DESC ' - X.509 PMI delegation path' SUP top AUXILIARY MAY delegationPath ) -olcObjectClasses: {5}( id-oc-privilegePolicy NAME 'privilegePolicy' DESC 'X.50 - 9 Privilege policy object class' SUP top AUXILIARY MAY privPolicy ) -olcObjectClasses: {6}( id-oc-protectedPrivilegePolicy NAME 'protectedPrivilege - Policy' DESC 'X.509 Protected privilege policy object class' SUP top AUXILIAR - Y MAY protPrivPolicy ) diff --git a/docker/ldap/data/etc/schema/pmi.schema b/docker/ldap/data/etc/schema/pmi.schema deleted file mode 100644 index cc21a58..0000000 --- a/docker/ldap/data/etc/schema/pmi.schema +++ /dev/null @@ -1,464 +0,0 @@ -# OpenLDAP X.509 PMI schema -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 1998-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (1997-2006). -## All Rights Reserved. -## -## This document and translations of it may be copied and furnished to -## others, and derivative works that comment on or otherwise explain it -## or assist in its implementation may be prepared, copied, published -## and distributed, in whole or in part, without restriction of any -## kind, provided that the above copyright notice and this paragraph are -## included on all such copies and derivative works. However, this -## document itself may not be modified in any way, such as by removing -## the copyright notice or references to the Internet Society or other -## Internet organizations, except as needed for the purpose of -## developing Internet standards in which case the procedures for -## copyrights defined in the Internet Standards process must be -## followed, or as required to translate it into languages other than -## English. -## -## The limited permissions granted above are perpetual and will not be -## revoked by the Internet Society or its successors or assigns. -## -## This document and the information contained herein is provided on an -## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -# -# -# Includes LDAPv3 schema items from: -# ITU X.509 (08/2005) -# -## X.509 (08/2005) pp. 120-121 -## -## -- object identifier assignments -- -## -- object classes -- -## id-oc-pmiUser OBJECT IDENTIFIER ::= {id-oc 24} -## id-oc-pmiAA OBJECT IDENTIFIER ::= {id-oc 25} -## id-oc-pmiSOA OBJECT IDENTIFIER ::= {id-oc 26} -## id-oc-attCertCRLDistributionPts OBJECT IDENTIFIER ::= {id-oc 27} -## id-oc-privilegePolicy OBJECT IDENTIFIER ::= {id-oc 32} -## id-oc-pmiDelegationPath OBJECT IDENTIFIER ::= {id-oc 33} -## id-oc-protectedPrivilegePolicy OBJECT IDENTIFIER ::= {id-oc 34} -## -- directory attributes -- -## id-at-attributeCertificate OBJECT IDENTIFIER ::= {id-at 58} -## id-at-attributeCertificateRevocationList OBJECT IDENTIFIER ::= {id-at 59} -## id-at-aACertificate OBJECT IDENTIFIER ::= {id-at 61} -## id-at-attributeDescriptorCertificate OBJECT IDENTIFIER ::= {id-at 62} -## id-at-attributeAuthorityRevocationList OBJECT IDENTIFIER ::= {id-at 63} -## id-at-privPolicy OBJECT IDENTIFIER ::= {id-at 71} -## id-at-role OBJECT IDENTIFIER ::= {id-at 72} -## id-at-delegationPath OBJECT IDENTIFIER ::= {id-at 73} -## id-at-protPrivPolicy OBJECT IDENTIFIER ::= {id-at 74} -## id-at-xMLPrivilegeInfo OBJECT IDENTIFIER ::= {id-at 75} -## id-at-xMLPprotPrivPolicy OBJECT IDENTIFIER ::= {id-at 76} -## -- attribute certificate extensions -- -## id-ce-authorityAttributeIdentifier OBJECT IDENTIFIER ::= {id-ce 38} -## id-ce-roleSpecCertIdentifier OBJECT IDENTIFIER ::= {id-ce 39} -## id-ce-basicAttConstraints OBJECT IDENTIFIER ::= {id-ce 41} -## id-ce-delegatedNameConstraints OBJECT IDENTIFIER ::= {id-ce 42} -## id-ce-timeSpecification OBJECT IDENTIFIER ::= {id-ce 43} -## id-ce-attributeDescriptor OBJECT IDENTIFIER ::= {id-ce 48} -## id-ce-userNotice OBJECT IDENTIFIER ::= {id-ce 49} -## id-ce-sOAIdentifier OBJECT IDENTIFIER ::= {id-ce 50} -## id-ce-acceptableCertPolicies OBJECT IDENTIFIER ::= {id-ce 52} -## id-ce-targetInformation OBJECT IDENTIFIER ::= {id-ce 55} -## id-ce-noRevAvail OBJECT IDENTIFIER ::= {id-ce 56} -## id-ce-acceptablePrivilegePolicies OBJECT IDENTIFIER ::= {id-ce 57} -## id-ce-indirectIssuer OBJECT IDENTIFIER ::= {id-ce 61} -## id-ce-noAssertion OBJECT IDENTIFIER ::= {id-ce 62} -## id-ce-issuedOnBehalfOf OBJECT IDENTIFIER ::= {id-ce 64} -## -- PMI matching rules -- -## id-mr-attributeCertificateMatch OBJECT IDENTIFIER ::= {id-mr 42} -## id-mr-attributeCertificateExactMatch OBJECT IDENTIFIER ::= {id-mr 45} -## id-mr-holderIssuerMatch OBJECT IDENTIFIER ::= {id-mr 46} -## id-mr-authAttIdMatch OBJECT IDENTIFIER ::= {id-mr 53} -## id-mr-roleSpecCertIdMatch OBJECT IDENTIFIER ::= {id-mr 54} -## id-mr-basicAttConstraintsMatch OBJECT IDENTIFIER ::= {id-mr 55} -## id-mr-delegatedNameConstraintsMatch OBJECT IDENTIFIER ::= {id-mr 56} -## id-mr-timeSpecMatch OBJECT IDENTIFIER ::= {id-mr 57} -## id-mr-attDescriptorMatch OBJECT IDENTIFIER ::= {id-mr 58} -## id-mr-acceptableCertPoliciesMatch OBJECT IDENTIFIER ::= {id-mr 59} -## id-mr-delegationPathMatch OBJECT IDENTIFIER ::= {id-mr 61} -## id-mr-sOAIdentifierMatch OBJECT IDENTIFIER ::= {id-mr 66} -## id-mr-indirectIssuerMatch OBJECT IDENTIFIER ::= {id-mr 67} -## -## -## X.509 (08/2005) pp. 71, 86-89 -## -## 14.4.1 Role attribute -## role ATTRIBUTE ::= { -## WITH SYNTAX RoleSyntax -## ID id-at-role } -## RoleSyntax ::= SEQUENCE { -## roleAuthority [0] GeneralNames OPTIONAL, -## roleName [1] GeneralName } -## -## 14.5 XML privilege information attribute -## xmlPrivilegeInfo ATTRIBUTE ::= { -## WITH SYNTAX UTF8String -- contains XML-encoded privilege information -## ID id-at-xMLPrivilegeInfo } -## -## 17.1 PMI directory object classes -## -## 17.1.1 PMI user object class -## pmiUser OBJECT-CLASS ::= { -## -- a PMI user (i.e., a "holder") -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN {attributeCertificateAttribute} -## ID id-oc-pmiUser } -## -## 17.1.2 PMI AA object class -## pmiAA OBJECT-CLASS ::= { -## -- a PMI AA -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN {aACertificate | -## attributeCertificateRevocationList | -## attributeAuthorityRevocationList} -## ID id-oc-pmiAA } -## -## 17.1.3 PMI SOA object class -## pmiSOA OBJECT-CLASS ::= { -- a PMI Source of Authority -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN {attributeCertificateRevocationList | -## attributeAuthorityRevocationList | -## attributeDescriptorCertificate} -## ID id-oc-pmiSOA } -## -## 17.1.4 Attribute certificate CRL distribution point object class -## attCertCRLDistributionPt OBJECT-CLASS ::= { -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN { attributeCertificateRevocationList | -## attributeAuthorityRevocationList } -## ID id-oc-attCertCRLDistributionPts } -## -## 17.1.5 PMI delegation path -## pmiDelegationPath OBJECT-CLASS ::= { -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN { delegationPath } -## ID id-oc-pmiDelegationPath } -## -## 17.1.6 Privilege policy object class -## privilegePolicy OBJECT-CLASS ::= { -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN {privPolicy } -## ID id-oc-privilegePolicy } -## -## 17.1.7 Protected privilege policy object class -## protectedPrivilegePolicy OBJECT-CLASS ::= { -## SUBCLASS OF {top} -## KIND auxiliary -## MAY CONTAIN {protPrivPolicy } -## ID id-oc-protectedPrivilegePolicy } -## -## 17.2 PMI Directory attributes -## -## 17.2.1 Attribute certificate attribute -## attributeCertificateAttribute ATTRIBUTE ::= { -## WITH SYNTAX AttributeCertificate -## EQUALITY MATCHING RULE attributeCertificateExactMatch -## ID id-at-attributeCertificate } -## -## 17.2.2 AA certificate attribute -## aACertificate ATTRIBUTE ::= { -## WITH SYNTAX AttributeCertificate -## EQUALITY MATCHING RULE attributeCertificateExactMatch -## ID id-at-aACertificate } -## -## 17.2.3 Attribute descriptor certificate attribute -## attributeDescriptorCertificate ATTRIBUTE ::= { -## WITH SYNTAX AttributeCertificate -## EQUALITY MATCHING RULE attributeCertificateExactMatch -## ID id-at-attributeDescriptorCertificate } -## -## 17.2.4 Attribute certificate revocation list attribute -## attributeCertificateRevocationList ATTRIBUTE ::= { -## WITH SYNTAX CertificateList -## EQUALITY MATCHING RULE certificateListExactMatch -## ID id-at-attributeCertificateRevocationList} -## -## 17.2.5 AA certificate revocation list attribute -## attributeAuthorityRevocationList ATTRIBUTE ::= { -## WITH SYNTAX CertificateList -## EQUALITY MATCHING RULE certificateListExactMatch -## ID id-at-attributeAuthorityRevocationList } -## -## 17.2.6 Delegation path attribute -## delegationPath ATTRIBUTE ::= { -## WITH SYNTAX AttCertPath -## ID id-at-delegationPath } -## AttCertPath ::= SEQUENCE OF AttributeCertificate -## -## 17.2.7 Privilege policy attribute -## privPolicy ATTRIBUTE ::= { -## WITH SYNTAX PolicySyntax -## ID id-at-privPolicy } -## -## 17.2.8 Protected privilege policy attribute -## protPrivPolicy ATTRIBUTE ::= { -## WITH SYNTAX AttributeCertificate -## EQUALITY MATCHING RULE attributeCertificateExactMatch -## ID id-at-protPrivPolicy } -## -## 17.2.9 XML Protected privilege policy attribute -## xmlPrivPolicy ATTRIBUTE ::= { -## WITH SYNTAX UTF8String -- contains XML-encoded privilege policy information -## ID id-at-xMLPprotPrivPolicy } -## - -## -- object identifier assignments -- -## -- object classes -- -objectidentifier id-oc-pmiUser 2.5.6.24 -objectidentifier id-oc-pmiAA 2.5.6.25 -objectidentifier id-oc-pmiSOA 2.5.6.26 -objectidentifier id-oc-attCertCRLDistributionPts 2.5.6.27 -objectidentifier id-oc-privilegePolicy 2.5.6.32 -objectidentifier id-oc-pmiDelegationPath 2.5.6.33 -objectidentifier id-oc-protectedPrivilegePolicy 2.5.6.34 -## -- directory attributes -- -objectidentifier id-at-attributeCertificate 2.5.4.58 -objectidentifier id-at-attributeCertificateRevocationList 2.5.4.59 -objectidentifier id-at-aACertificate 2.5.4.61 -objectidentifier id-at-attributeDescriptorCertificate 2.5.4.62 -objectidentifier id-at-attributeAuthorityRevocationList 2.5.4.63 -objectidentifier id-at-privPolicy 2.5.4.71 -objectidentifier id-at-role 2.5.4.72 -objectidentifier id-at-delegationPath 2.5.4.73 -objectidentifier id-at-protPrivPolicy 2.5.4.74 -objectidentifier id-at-xMLPrivilegeInfo 2.5.4.75 -objectidentifier id-at-xMLPprotPrivPolicy 2.5.4.76 -## -- attribute certificate extensions -- -## id-ce-authorityAttributeIdentifier OBJECT IDENTIFIER ::= {id-ce 38} -## id-ce-roleSpecCertIdentifier OBJECT IDENTIFIER ::= {id-ce 39} -## id-ce-basicAttConstraints OBJECT IDENTIFIER ::= {id-ce 41} -## id-ce-delegatedNameConstraints OBJECT IDENTIFIER ::= {id-ce 42} -## id-ce-timeSpecification OBJECT IDENTIFIER ::= {id-ce 43} -## id-ce-attributeDescriptor OBJECT IDENTIFIER ::= {id-ce 48} -## id-ce-userNotice OBJECT IDENTIFIER ::= {id-ce 49} -## id-ce-sOAIdentifier OBJECT IDENTIFIER ::= {id-ce 50} -## id-ce-acceptableCertPolicies OBJECT IDENTIFIER ::= {id-ce 52} -## id-ce-targetInformation OBJECT IDENTIFIER ::= {id-ce 55} -## id-ce-noRevAvail OBJECT IDENTIFIER ::= {id-ce 56} -## id-ce-acceptablePrivilegePolicies OBJECT IDENTIFIER ::= {id-ce 57} -## id-ce-indirectIssuer OBJECT IDENTIFIER ::= {id-ce 61} -## id-ce-noAssertion OBJECT IDENTIFIER ::= {id-ce 62} -## id-ce-issuedOnBehalfOf OBJECT IDENTIFIER ::= {id-ce 64} -## -- PMI matching rules -- -objectidentifier id-mr 2.5.13 -objectidentifier id-mr-attributeCertificateMatch id-mr:42 -objectidentifier id-mr-attributeCertificateExactMatch id-mr:45 -objectidentifier id-mr-holderIssuerMatch id-mr:46 -objectidentifier id-mr-authAttIdMatch id-mr:53 -objectidentifier id-mr-roleSpecCertIdMatch id-mr:54 -objectidentifier id-mr-basicAttConstraintsMatch id-mr:55 -objectidentifier id-mr-delegatedNameConstraintsMatch id-mr:56 -objectidentifier id-mr-timeSpecMatch id-mr:57 -objectidentifier id-mr-attDescriptorMatch id-mr:58 -objectidentifier id-mr-acceptableCertPoliciesMatch id-mr:59 -objectidentifier id-mr-delegationPathMatch id-mr:61 -objectidentifier id-mr-sOAIdentifierMatch id-mr:66 -objectidentifier id-mr-indirectIssuerMatch id-mr:67 -## -- syntaxes -- -## NOTE: 1.3.6.1.4.1.4203.666.11.10 is the oid arc assigned by OpenLDAP -## to this work in progress -objectidentifier AttributeCertificate 1.3.6.1.4.1.4203.666.11.10.2.1 -objectidentifier CertificateList 1.3.6.1.4.1.1466.115.121.1.9 -objectidentifier AttCertPath 1.3.6.1.4.1.4203.666.11.10.2.4 -objectidentifier PolicySyntax 1.3.6.1.4.1.4203.666.11.10.2.5 -objectidentifier RoleSyntax 1.3.6.1.4.1.4203.666.11.10.2.6 -# NOTE: OIDs from (expired) -#objectidentifier AttributeCertificate 1.2.826.0.1.3344810.7.5 -#objectidentifier AttCertPath 1.2.826.0.1.3344810.7.10 -#objectidentifier PolicySyntax 1.2.826.0.1.3344810.7.17 -#objectidentifier RoleSyntax 1.2.826.0.1.3344810.7.13 -## -## Substitute syntaxes -## -## AttCertPath -ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.4 - NAME 'AttCertPath' - DESC 'X.509 PMI attribute cartificate path: SEQUENCE OF AttributeCertificate' - X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' ) -## -## PolicySyntax -ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.5 - NAME 'PolicySyntax' - DESC 'X.509 PMI policy syntax' - X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' ) -## -## RoleSyntax -ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.6 - NAME 'RoleSyntax' - DESC 'X.509 PMI role syntax' - X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' ) -## -## X.509 (08/2005) pp. 71, 86-89 -## -## 14.4.1 Role attribute -attributeType ( id-at-role - NAME 'role' - DESC 'X.509 Role attribute, use ;binary' - SYNTAX RoleSyntax ) -## -## 14.5 XML privilege information attribute -## -- contains XML-encoded privilege information -attributeType ( id-at-xMLPrivilegeInfo - NAME 'xmlPrivilegeInfo' - DESC 'X.509 XML privilege information attribute' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -## -## 17.2 PMI Directory attributes -## -## 17.2.1 Attribute certificate attribute -attributeType ( id-at-attributeCertificate - NAME 'attributeCertificateAttribute' - DESC 'X.509 Attribute certificate attribute, use ;binary' - SYNTAX AttributeCertificate - EQUALITY attributeCertificateExactMatch ) -## -## 17.2.2 AA certificate attribute -attributeType ( id-at-aACertificate - NAME 'aACertificate' - DESC 'X.509 AA certificate attribute, use ;binary' - SYNTAX AttributeCertificate - EQUALITY attributeCertificateExactMatch ) -## -## 17.2.3 Attribute descriptor certificate attribute -attributeType ( id-at-attributeDescriptorCertificate - NAME 'attributeDescriptorCertificate' - DESC 'X.509 Attribute descriptor certificate attribute, use ;binary' - SYNTAX AttributeCertificate - EQUALITY attributeCertificateExactMatch ) -## -## 17.2.4 Attribute certificate revocation list attribute -attributeType ( id-at-attributeCertificateRevocationList - NAME 'attributeCertificateRevocationList' - DESC 'X.509 Attribute certificate revocation list attribute, use ;binary' - SYNTAX CertificateList - X-EQUALITY 'certificateListExactMatch, not implemented yet' ) -## -## 17.2.5 AA certificate revocation list attribute -attributeType ( id-at-attributeAuthorityRevocationList - NAME 'attributeAuthorityRevocationList' - DESC 'X.509 AA certificate revocation list attribute, use ;binary' - SYNTAX CertificateList - X-EQUALITY 'certificateListExactMatch, not implemented yet' ) -## -## 17.2.6 Delegation path attribute -attributeType ( id-at-delegationPath - NAME 'delegationPath' - DESC 'X.509 Delegation path attribute, use ;binary' - SYNTAX AttCertPath ) -## AttCertPath ::= SEQUENCE OF AttributeCertificate -## -## 17.2.7 Privilege policy attribute -attributeType ( id-at-privPolicy - NAME 'privPolicy' - DESC 'X.509 Privilege policy attribute, use ;binary' - SYNTAX PolicySyntax ) -## -## 17.2.8 Protected privilege policy attribute -attributeType ( id-at-protPrivPolicy - NAME 'protPrivPolicy' - DESC 'X.509 Protected privilege policy attribute, use ;binary' - SYNTAX AttributeCertificate - EQUALITY attributeCertificateExactMatch ) -## -## 17.2.9 XML Protected privilege policy attribute -## -- contains XML-encoded privilege policy information -attributeType ( id-at-xMLPprotPrivPolicy - NAME 'xmlPrivPolicy' - DESC 'X.509 XML Protected privilege policy attribute' - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) -## -## 17.1 PMI directory object classes -## -## 17.1.1 PMI user object class -## -- a PMI user (i.e., a "holder") -objectClass ( id-oc-pmiUser - NAME 'pmiUser' - DESC 'X.509 PMI user object class' - SUP top - AUXILIARY - MAY ( attributeCertificateAttribute ) ) -## -## 17.1.2 PMI AA object class -## -- a PMI AA -objectClass ( id-oc-pmiAA - NAME 'pmiAA' - DESC 'X.509 PMI AA object class' - SUP top - AUXILIARY - MAY ( aACertificate $ - attributeCertificateRevocationList $ - attributeAuthorityRevocationList - ) ) -## -## 17.1.3 PMI SOA object class -## -- a PMI Source of Authority -objectClass ( id-oc-pmiSOA - NAME 'pmiSOA' - DESC 'X.509 PMI SOA object class' - SUP top - AUXILIARY - MAY ( attributeCertificateRevocationList $ - attributeAuthorityRevocationList $ - attributeDescriptorCertificate - ) ) -## -## 17.1.4 Attribute certificate CRL distribution point object class -objectClass ( id-oc-attCertCRLDistributionPts - NAME 'attCertCRLDistributionPt' - DESC 'X.509 Attribute certificate CRL distribution point object class' - SUP top - AUXILIARY - MAY ( attributeCertificateRevocationList $ - attributeAuthorityRevocationList - ) ) -## -## 17.1.5 PMI delegation path -objectClass ( id-oc-pmiDelegationPath - NAME 'pmiDelegationPath' - DESC 'X.509 PMI delegation path' - SUP top - AUXILIARY - MAY ( delegationPath ) ) -## -## 17.1.6 Privilege policy object class -objectClass ( id-oc-privilegePolicy - NAME 'privilegePolicy' - DESC 'X.509 Privilege policy object class' - SUP top - AUXILIARY - MAY ( privPolicy ) ) -## -## 17.1.7 Protected privilege policy object class -objectClass ( id-oc-protectedPrivilegePolicy - NAME 'protectedPrivilegePolicy' - DESC 'X.509 Protected privilege policy object class' - SUP top - AUXILIARY - MAY ( protPrivPolicy ) ) - diff --git a/docker/ldap/data/etc/schema/ppolicy.ldif b/docker/ldap/data/etc/schema/ppolicy.ldif deleted file mode 100644 index 64c5cda..0000000 --- a/docker/ldap/data/etc/schema/ppolicy.ldif +++ /dev/null @@ -1,87 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 2004-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (2004). -## Please see full copyright statement below. -# -# Definitions from Draft behera-ldap-password-policy-07 (a work in progress) -# Password Policy for LDAP Directories -# With extensions from Hewlett-Packard: -# pwdCheckModule etc. -# -# Contents of this file are subject to change (including deletion) -# without notice. -# -# Not recommended for production use! -# Use with extreme caution! -# -# This file was automatically generated from ppolicy.schema; see that file -# for complete references. -# -dn: cn=ppolicy,cn=schema,cn=config -objectClass: olcSchemaConfig -cn: ppolicy -olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.8.1.1 NAME 'pwdAttribute' EQUALITY - objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) -olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.8.1.2 NAME 'pwdMinAge' EQUALITY in - tegerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) -olcAttributeTypes: {2}( 1.3.6.1.4.1.42.2.27.8.1.3 NAME 'pwdMaxAge' EQUALITY in - tegerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) -olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.8.1.4 NAME 'pwdInHistory' EQUALITY - integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1 - .27 SINGLE-VALUE ) -olcAttributeTypes: {4}( 1.3.6.1.4.1.42.2.27.8.1.5 NAME 'pwdCheckQuality' EQUAL - ITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.12 - 1.1.27 SINGLE-VALUE ) -olcAttributeTypes: {5}( 1.3.6.1.4.1.42.2.27.8.1.6 NAME 'pwdMinLength' EQUALITY - integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121. - 1.27 SINGLE-VALUE ) -olcAttributeTypes: {6}( 1.3.6.1.4.1.42.2.27.8.1.7 NAME 'pwdExpireWarning' EQUA - LITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115. - 121.1.27 SINGLE-VALUE ) -olcAttributeTypes: {7}( 1.3.6.1.4.1.42.2.27.8.1.8 NAME 'pwdGraceAuthNLimit' EQ - UALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.11 - 5.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: {8}( 1.3.6.1.4.1.42.2.27.8.1.9 NAME 'pwdLockout' EQUALITY b - ooleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {9}( 1.3.6.1.4.1.42.2.27.8.1.10 NAME 'pwdLockoutDuration' E - QUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.1 - 15.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: {10}( 1.3.6.1.4.1.42.2.27.8.1.11 NAME 'pwdMaxFailure' EQUAL - ITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.1 - 21.1.27 SINGLE-VALUE ) -olcAttributeTypes: {11}( 1.3.6.1.4.1.42.2.27.8.1.12 NAME 'pwdFailureCountInter - val' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1. - 1466.115.121.1.27 SINGLE-VALUE ) -olcAttributeTypes: {12}( 1.3.6.1.4.1.42.2.27.8.1.13 NAME 'pwdMustChange' EQUAL - ITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {13}( 1.3.6.1.4.1.42.2.27.8.1.14 NAME 'pwdAllowUserChange' - EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {14}( 1.3.6.1.4.1.42.2.27.8.1.15 NAME 'pwdSafeModify' EQUAL - ITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) -olcAttributeTypes: {15}( 1.3.6.1.4.1.4754.1.99.1 NAME 'pwdCheckModule' DESC 'L - oadable module that instantiates "check_password() function' EQUALITY caseExa - ctIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) -olcAttributeTypes: {16}( 1.3.6.1.4.1.42.2.27.8.1.30 NAME 'pwdMaxRecordedFailur - e' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1. - 1466.115.121.1.27 SINGLE-VALUE ) -olcObjectClasses: {0}( 1.3.6.1.4.1.4754.2.99.1 NAME 'pwdPolicyChecker' SUP top - AUXILIARY MAY pwdCheckModule ) -olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.8.2.1 NAME 'pwdPolicy' SUP top AUXI - LIARY MUST pwdAttribute MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheck - Quality $ pwdMinLength $ pwdExpireWarning $ pwdGraceAuthNLimit $ pwdLockout $ - pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $ pwdMustChange - $ pwdAllowUserChange $ pwdSafeModify $ pwdMaxRecordedFailure ) ) diff --git a/docker/ldap/data/etc/schema/ppolicy.schema b/docker/ldap/data/etc/schema/ppolicy.schema deleted file mode 100644 index 49071ac..0000000 --- a/docker/ldap/data/etc/schema/ppolicy.schema +++ /dev/null @@ -1,556 +0,0 @@ -# $OpenLDAP$ -## This work is part of OpenLDAP Software . -## -## Copyright 2004-2017 The OpenLDAP Foundation. -## All rights reserved. -## -## Redistribution and use in source and binary forms, with or without -## modification, are permitted only as authorized by the OpenLDAP -## Public License. -## -## A copy of this license is available in the file LICENSE in the -## top-level directory of the distribution or, alternatively, at -## . -# -## Portions Copyright (C) The Internet Society (2004). -## Please see full copyright statement below. - -# Definitions from Draft behera-ldap-password-policy-07 (a work in progress) -# Password Policy for LDAP Directories -# With extensions from Hewlett-Packard: -# pwdCheckModule etc. - -# Contents of this file are subject to change (including deletion) -# without notice. -# -# Not recommended for production use! -# Use with extreme caution! - -#Network Working Group J. Sermersheim -#Internet-Draft Novell, Inc -#Expires: April 24, 2005 L. Poitou -# Sun Microsystems -# October 24, 2004 -# -# -# Password Policy for LDAP Directories -# draft-behera-ldap-password-policy-08.txt -# -#Status of this Memo -# -# This document is an Internet-Draft and is subject to all provisions -# of section 3 of RFC 3667. By submitting this Internet-Draft, each -# author represents that any applicable patent or other IPR claims of -# which he or she is aware have been or will be disclosed, and any of -# which he or she become aware will be disclosed, in accordance with -# RFC 3668. -# -# Internet-Drafts are working documents of the Internet Engineering -# Task Force (IETF), its areas, and its working groups. Note that -# other groups may also distribute working documents as -# Internet-Drafts. -# -# Internet-Drafts are draft documents valid for a maximum of six months -# and may be updated, replaced, or obsoleted by other documents at any -# time. It is inappropriate to use Internet-Drafts as reference -# material or to cite them other than as "work in progress." -# -# The list of current Internet-Drafts can be accessed at -# http://www.ietf.org/ietf/1id-abstracts.txt. -# -# The list of Internet-Draft Shadow Directories can be accessed at -# http://www.ietf.org/shadow.html. -# -# This Internet-Draft will expire on April 24, 2005. -# -#Copyright Notice -# -# Copyright (C) The Internet Society (2004). -# -#Abstract -# -# Password policy as described in this document is a set of rules that -# controls how passwords are used and administered in Lightweight -# Directory Access Protocol (LDAP) based directories. In order to -# improve the security of LDAP directories and make it difficult for -# password cracking programs to break into directories, it is desirable -# to enforce a set of rules on password usage. These rules are made to -# -# [trimmed] -# -#5. Schema used for Password Policy -# -# The schema elements defined here fall into two general categories. A -# password policy object class is defined which contains a set of -# administrative password policy attributes, and a set of operational -# attributes are defined that hold general password policy state -# information for each user. -# -#5.2 Attribute Types used in the pwdPolicy ObjectClass -# -# Following are the attribute types used by the pwdPolicy object class. -# -#5.2.1 pwdAttribute -# -# This holds the name of the attribute to which the password policy is -# applied. For example, the password policy may be applied to the -# userPassword attribute. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.1 - NAME 'pwdAttribute' - EQUALITY objectIdentifierMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) - -#5.2.2 pwdMinAge -# -# This attribute holds the number of seconds that must elapse between -# modifications to the password. If this attribute is not present, 0 -# seconds is assumed. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.2 - NAME 'pwdMinAge' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.3 pwdMaxAge -# -# This attribute holds the number of seconds after which a modified -# password will expire. -# -# If this attribute is not present, or if the value is 0 the password -# does not expire. If not 0, the value must be greater than or equal -# to the value of the pwdMinAge. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.3 - NAME 'pwdMaxAge' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.4 pwdInHistory -# -# This attribute specifies the maximum number of used passwords stored -# in the pwdHistory attribute. -# -# If this attribute is not present, or if the value is 0, used -# passwords are not stored in the pwdHistory attribute and thus may be -# reused. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.4 - NAME 'pwdInHistory' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.5 pwdCheckQuality -# -# {TODO: Consider changing the syntax to OID. Each OID will list a -# quality rule (like min len, # of special characters, etc). These -# rules can be specified outsid ethis document.} -# -# {TODO: Note that even though this is meant to be a check that happens -# during password modification, it may also be allowed to happen during -# authN. This is useful for situations where the password is encrypted -# when modified, but decrypted when used to authN.} -# -# This attribute indicates how the password quality will be verified -# while being modified or added. If this attribute is not present, or -# if the value is '0', quality checking will not be enforced. A value -# of '1' indicates that the server will check the quality, and if the -# server is unable to check it (due to a hashed password or other -# reasons) it will be accepted. A value of '2' indicates that the -# server will check the quality, and if the server is unable to verify -# it, it will return an error refusing the password. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.5 - NAME 'pwdCheckQuality' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.6 pwdMinLength -# -# When quality checking is enabled, this attribute holds the minimum -# number of characters that must be used in a password. If this -# attribute is not present, no minimum password length will be -# enforced. If the server is unable to check the length (due to a -# hashed password or otherwise), the server will, depending on the -# value of the pwdCheckQuality attribute, either accept the password -# without checking it ('0' or '1') or refuse it ('2'). - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.6 - NAME 'pwdMinLength' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.7 pwdExpireWarning -# -# This attribute specifies the maximum number of seconds before a -# password is due to expire that expiration warning messages will be -# returned to an authenticating user. -# -# If this attribute is not present, or if the value is 0 no warnings -# will be returned. If not 0, the value must be smaller than the value -# of the pwdMaxAge attribute. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.7 - NAME 'pwdExpireWarning' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.8 pwdGraceAuthNLimit -# -# This attribute specifies the number of times an expired password can -# be used to authenticate. If this attribute is not present or if the -# value is 0, authentication will fail. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.8 - NAME 'pwdGraceAuthNLimit' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.9 pwdLockout -# -# This attribute indicates, when its value is "TRUE", that the password -# may not be used to authenticate after a specified number of -# consecutive failed bind attempts. The maximum number of consecutive -# failed bind attempts is specified in pwdMaxFailure. -# -# If this attribute is not present, or if the value is "FALSE", the -# password may be used to authenticate when the number of failed bind -# attempts has been reached. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.9 - NAME 'pwdLockout' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -#5.2.10 pwdLockoutDuration -# -# This attribute holds the number of seconds that the password cannot -# be used to authenticate due to too many failed bind attempts. If -# this attribute is not present, or if the value is 0 the password -# cannot be used to authenticate until reset by a password -# administrator. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.10 - NAME 'pwdLockoutDuration' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.11 pwdMaxFailure -# -# This attribute specifies the number of consecutive failed bind -# attempts after which the password may not be used to authenticate. -# If this attribute is not present, or if the value is 0, this policy -# is not checked, and the value of pwdLockout will be ignored. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.11 - NAME 'pwdMaxFailure' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.12 pwdFailureCountInterval -# -# This attribute holds the number of seconds after which the password -# failures are purged from the failure counter, even though no -# successful authentication occurred. -# -# If this attribute is not present, or if its value is 0, the failure -# counter is only reset by a successful authentication. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.12 - NAME 'pwdFailureCountInterval' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -#5.2.13 pwdMustChange -# -# This attribute specifies with a value of "TRUE" that users must -# change their passwords when they first bind to the directory after a -# password is set or reset by a password administrator. If this -# attribute is not present, or if the value is "FALSE", users are not -# required to change their password upon binding after the password -# administrator sets or resets the password. This attribute is not set -# due to any actions specified by this document, it is typically set by -# a password administrator after resetting a user's password. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.13 - NAME 'pwdMustChange' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -#5.2.14 pwdAllowUserChange -# -# This attribute indicates whether users can change their own -# passwords, although the change operation is still subject to access -# control. If this attribute is not present, a value of "TRUE" is -# assumed. This attribute is intended to be used in the absense of an -# access control mechanism. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.14 - NAME 'pwdAllowUserChange' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -#5.2.15 pwdSafeModify -# -# This attribute specifies whether or not the existing password must be -# sent along with the new password when being changed. If this -# attribute is not present, a "FALSE" value is assumed. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.15 - NAME 'pwdSafeModify' - EQUALITY booleanMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 - SINGLE-VALUE ) - -#ITS#8185 pwdMaxRecordedFailure -# -# This attribute specifies the maximum number of consecutive failed bind -# attempts to record. If this attribute is not present, or if the value -# is 0, it defaults to the value of pwdMaxFailure. If that value is also -# 0, this value defaults to 5. - -attributetype ( 1.3.6.1.4.1.42.2.27.8.1.30 - NAME 'pwdMaxRecordedFailure' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE ) - -# HP extensions -# -# pwdCheckModule -# -# This attribute names a user-defined loadable module that provides -# a check_password() function. If pwdCheckQuality is set to '1' or '2' -# this function will be called after all of the internal password -# quality checks have been passed. The function has this prototype: -# -# int check_password( char *password, char **errormessage, void *arg ) -# -# The function should return LDAP_SUCCESS for a valid password. - -attributetype ( 1.3.6.1.4.1.4754.1.99.1 - NAME 'pwdCheckModule' - EQUALITY caseExactIA5Match - SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 - DESC 'Loadable module that instantiates check_password() function' - SINGLE-VALUE ) - -objectclass ( 1.3.6.1.4.1.4754.2.99.1 - NAME 'pwdPolicyChecker' - SUP top - AUXILIARY - MAY ( pwdCheckModule ) ) - -#5.1 The pwdPolicy Object Class -# -# This object class contains the attributes defining a password policy -# in effect for a set of users. Section 10 describes the -# administration of this object, and the relationship between it and -# particular objects. -# -objectclass ( 1.3.6.1.4.1.42.2.27.8.2.1 - NAME 'pwdPolicy' - SUP top - AUXILIARY - MUST ( pwdAttribute ) - MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheckQuality $ - pwdMinLength $ pwdExpireWarning $ pwdGraceAuthNLimit $ pwdLockout - $ pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $ - pwdMustChange $ pwdAllowUserChange $ pwdSafeModify $ - pwdMaxRecordedFailure ) ) - -#5.3 Attribute Types for Password Policy State Information -# -# Password policy state information must be maintained for each user. -# The information is located in each user entry as a set of operational -# attributes. These operational attributes are: pwdChangedTime, -# pwdAccountLockedTime, pwdFailureTime, pwdHistory, pwdGraceUseTime, -# pwdReset, pwdPolicySubEntry. -# -#5.3.1 Password Policy State Attribute Option -# -# Since the password policy could apply to several attributes used to -# store passwords, each of the above operational attributes must have -# an option to specify which pwdAttribute it applies to. The password -# policy option is defined as the following: -# -# pwd- -# -# where passwordAttribute a string following the OID syntax -# (1.3.6.1.4.1.1466.115.121.1.38). The attribute type descriptor -# (short name) MUST be used. -# -# For example, if the pwdPolicy object has for pwdAttribute -# "userPassword" then the pwdChangedTime operational attribute, in a -# user entry, will be: -# -# pwdChangedTime;pwd-userPassword: 20000103121520Z -# -# This attribute option follows sub-typing semantics. If a client -# requests a password policy state attribute to be returned in a search -# operation, and does not specify an option, all subtypes of that -# policy state attribute are returned. -# -#5.3.2 pwdChangedTime -# -# This attribute specifies the last time the entry's password was -# changed. This is used by the password expiration policy. If this -# attribute does not exist, the password will never expire. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.16 -# NAME 'pwdChangedTime' -# DESC 'The time the password was last changed' -# EQUALITY generalizedTimeMatch -# ORDERING generalizedTimeOrderingMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 -# SINGLE-VALUE -# USAGE directoryOperation ) -# -#5.3.3 pwdAccountLockedTime -# -# This attribute holds the time that the user's account was locked. A -# locked account means that the password may no longer be used to -# authenticate. A 000001010000Z value means that the account has been -# locked permanently, and that only a password administrator can unlock -# the account. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.17 -# NAME 'pwdAccountLockedTime' -# DESC 'The time an user account was locked' -# EQUALITY generalizedTimeMatch -# ORDERING generalizedTimeOrderingMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 -# SINGLE-VALUE -# USAGE directoryOperation ) -# -#5.3.4 pwdFailureTime -# -# This attribute holds the timestamps of the consecutive authentication -# failures. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.19 -# NAME 'pwdFailureTime' -# DESC 'The timestamps of the last consecutive authentication -# failures' -# EQUALITY generalizedTimeMatch -# ORDERING generalizedTimeOrderingMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 -# USAGE directoryOperation ) -# -#5.3.5 pwdHistory -# -# This attribute holds a history of previously used passwords. Values -# of this attribute are transmitted in string format as given by the -# following ABNF: -# -# pwdHistory = time "#" syntaxOID "#" length "#" data -# -# time = -# -# syntaxOID = numericoid ; the string representation of the -# ; dotted-decimal OID that defines the -# ; syntax used to store the password. -# ; numericoid is described in 4.1 -# ; of [RFC2252]. -# -# length = numericstring ; the number of octets in data. -# ; numericstring is described in 4.1 -# ; of [RFC2252]. -# -# data = . -# -# This format allows the server to store, and transmit a history of -# passwords that have been used. In order for equality matching to -# function properly, the time field needs to adhere to a consistent -# format. For this purpose, the time field MUST be in GMT format. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.20 -# NAME 'pwdHistory' -# DESC 'The history of user s passwords' -# EQUALITY octetStringMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 -# USAGE directoryOperation ) -# -#5.3.6 pwdGraceUseTime -# -# This attribute holds the timestamps of grace authentications after a -# password has expired. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.21 -# NAME 'pwdGraceUseTime' -# DESC 'The timestamps of the grace authentication after the -# password has expired' -# EQUALITY generalizedTimeMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 -# -#5.3.7 pwdReset -# -# This attribute holds a flag to indicate (when TRUE) that the password -# has been updated by the password administrator and must be changed by -# the user on first authentication. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.22 -# NAME 'pwdReset' -# DESC 'The indication that the password has been reset' -# EQUALITY booleanMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 -# SINGLE-VALUE -# USAGE directoryOperation ) -# -#5.3.8 pwdPolicySubentry -# -# This attribute points to the pwdPolicy subentry in effect for this -# object. -# -# ( 1.3.6.1.4.1.42.2.27.8.1.23 -# NAME 'pwdPolicySubentry' -# DESC 'The pwdPolicy subentry in effect for this object' -# EQUALITY distinguishedNameMatch -# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 -# SINGLE-VALUE -# USAGE directoryOperation ) -# -# -#Disclaimer of Validity -# -# This document and the information contained herein are provided on an -# "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS -# OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET -# ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, -# INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE -# INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED -# WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -# -# -#Copyright Statement -# -# Copyright (C) The Internet Society (2004). This document is subject -# to the rights, licenses and restrictions contained in BCP 78, and -# except as set forth therein, the authors retain all their rights. - diff --git a/docker/ldap/data/etc/slapd.conf b/docker/ldap/data/etc/slapd.conf deleted file mode 100644 index 7c591e6..0000000 --- a/docker/ldap/data/etc/slapd.conf +++ /dev/null @@ -1,71 +0,0 @@ -# -# See slapd.conf(5) for details on configuration options. -# This file should NOT be world readable. -# -include /etc/openldap/schema/core.schema - -# Define global ACLs to disable default read access. - -# Do not enable referrals until AFTER you have a working directory -# service AND an understanding of referrals. -#referral ldap://root.openldap.org - -# If you change this, adjust pidfile path also in runscript! -pidfile /tmp/slapd.pid -argsfile /tmp/slapd.args - -# Load dynamic backend modules: -modulepath /usr/lib/openldap -moduleload back_mdb.so -# moduleload back_hdb.so -# moduleload back_bbd.so -# moduleload back_ldap.so - -# Sample security restrictions -# Require integrity protection (prevent hijacking) -# Require 112-bit (3DES or better) encryption for updates -# Require 63-bit encryption for simple bind -# security ssf=1 update_ssf=112 simple_bind=64 - -# Sample access control policy: -# Root DSE: allow anyone to read it -# Subschema (sub)entry DSE: allow anyone to read it -# Other DSEs: -# Allow self write access -# Allow authenticated users read access -# Allow anonymous users to authenticate -# Directives needed to implement policy: -# access to dn.base="" by * read -# access to dn.base="cn=Subschema" by * read -# access to * -# by self write -# by users read -# by anonymous auth -# -# if no access controls are present, the default policy -# allows anyone and everyone to read anything but restricts -# updates to rootdn. (e.g., "access to * by * read") -# -# rootdn can always read and write EVERYTHING! - -####################################################################### -# MDB database definitions -####################################################################### - -database mdb -maxsize 1073741824 -suffix "dc=my-domain,dc=com" -rootdn "cn=Manager,dc=my-domain,dc=com" - -# Cleartext passwords, especially for the rootdn, should -# be avoid. See slappasswd(8) and slapd.conf(5) for details. -# Use of strong authentication encouraged. -rootpw secret - -# The database directory MUST exist prior to running slapd AND -# should only be accessible by the slapd and slap tools. -# Mode 700 recommended. -directory /var/lib/openldap/openldap-data - -# Indices to maintain -index objectClass eq diff --git a/docker/ldap/data/etc/slapd.ldif b/docker/ldap/data/etc/slapd.ldif deleted file mode 100644 index 9675efb..0000000 --- a/docker/ldap/data/etc/slapd.ldif +++ /dev/null @@ -1,100 +0,0 @@ -# -# See slapd-config(5) for details on configuration options. -# This file should NOT be world readable. -# -dn: cn=config -objectClass: olcGlobal -cn: config -# -# -# Define global ACLs to disable default read access. -# -# If you change this, set pidfile variable in /etc/conf.d/slapd! -olcPidFile: /run/openldap/slapd.pid -olcArgsFile: /run/openldap/slapd.args -# -# Do not enable referrals until AFTER you have a working directory -# service AND an understanding of referrals. -#olcReferral: ldap://root.openldap.org -# -# Sample security restrictions -# Require integrity protection (prevent hijacking) -# Require 112-bit (3DES or better) encryption for updates -# Require 64-bit encryption for simple bind -#olcSecurity: ssf=1 update_ssf=112 simple_bind=64 - - -# -# Load dynamic backend modules: -# -dn: cn=module,cn=config -objectClass: olcModuleList -cn: module -olcModulepath: /usr/lib/openldap -#olcModuleload: back_bdb.so -#olcModuleload: back_hdb.so -#olcModuleload: back_ldap.so -olcModuleload: back_mdb.so -#olcModuleload: back_passwd.so -#olcModuleload: back_shell.so - - -dn: cn=schema,cn=config -objectClass: olcSchemaConfig -cn: schema - -include: file:///etc/openldap/schema/core.ldif - -# Frontend settings -# -dn: olcDatabase=frontend,cn=config -objectClass: olcDatabaseConfig -objectClass: olcFrontendConfig -olcDatabase: frontend -# -# Sample global access control policy: -# Root DSE: allow anyone to read it -# Subschema (sub)entry DSE: allow anyone to read it -# Other DSEs: -# Allow self write access -# Allow authenticated users read access -# Allow anonymous users to authenticate -# -#olcAccess: to dn.base="" by * read -#olcAccess: to dn.base="cn=Subschema" by * read -#olcAccess: to * -# by self write -# by users read -# by anonymous auth -# -# if no access controls are present, the default policy -# allows anyone and everyone to read anything but restricts -# updates to rootdn. (e.g., "access to * by * read") -# -# rootdn can always read and write EVERYTHING! -# - - -####################################################################### -# LMDB database definitions -####################################################################### -# -dn: olcDatabase=mdb,cn=config -objectClass: olcDatabaseConfig -objectClass: olcMdbConfig -olcDatabase: mdb -olcSuffix: dc=my-domain,dc=com -olcRootDN: cn=Manager,dc=my-domain,dc=com - -# Cleartext passwords, especially for the rootdn, should -# be avoided. See slappasswd(8) and slapd-config(5) for details. -# Use of strong authentication encouraged. -olcRootPW: secret - -# The database directory MUST exist prior to running slapd AND -# should only be accessible by the slapd and slap tools. -# Mode 700 recommended. -olcDbDirectory: /var/lib/openldap/openldap-data - -# Indices to maintain -olcDbIndex: objectClass eq diff --git a/docker/ldap/data/var/openldap-data/DB_CONFIG.example b/docker/ldap/data/var/openldap-data/DB_CONFIG.example deleted file mode 100644 index d0f2c68..0000000 --- a/docker/ldap/data/var/openldap-data/DB_CONFIG.example +++ /dev/null @@ -1,28 +0,0 @@ -# $OpenLDAP$ -# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. -# -# See the Oracle Berkeley DB documentation -# -# for detail description of DB_CONFIG syntax and semantics. -# -# Hints can also be found in the OpenLDAP Software FAQ -# -# in particular: -# - -# Note: most DB_CONFIG settings will take effect only upon rebuilding -# the DB environment. - -# one 0.25 GB cache -set_cachesize 0 268435456 1 - -# Data Directory -#set_data_dir db - -# Transaction Log settings -set_lg_regionmax 262144 -set_lg_bsize 2097152 -#set_lg_dir logs - -# Note: special DB_CONFIG flags are no longer needed for "quick" -# slapadd(8) or slapindex(8) access (see their -q option). diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..569ce53 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,2 @@ +**/node_modules +**/dist \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..99e04e2 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,13 @@ +FROM node:latest as develop-stage +WORKDIR /app +COPY lama/package*.json ./ +RUN npm install + +FROM develop-stage as build-stage +COPY ./lama . +RUN npm run build + +FROM nginx as production-stage +WORKDIR /app +COPY --from=build-stage /app/dist /app +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/frontend/docker-compose.prod.yml b/frontend/docker-compose.prod.yml new file mode 100644 index 0000000..2085c3e --- /dev/null +++ b/frontend/docker-compose.prod.yml @@ -0,0 +1,10 @@ +version: '3' + +services: + lama: + image: lama:0.2.0 + build: . + volumes: + - ./lama/public/config/config.json:/usr/share/nginx/html/config/config.json + ports: + - 8080:80 diff --git a/frontend/docker-compose.yml b/frontend/docker-compose.yml new file mode 100644 index 0000000..26b079f --- /dev/null +++ b/frontend/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' + +services: + web: + build: + context: . + target: 'develop-stage' + command: /bin/sh -c "npm run serve" + volumes: + - ./lama:/app + ports: + - 8080:80 diff --git a/frontend/graphs/authenticationStructure.plantuml b/frontend/graphs/authenticationStructure.plantuml new file mode 100644 index 0000000..5712f34 --- /dev/null +++ b/frontend/graphs/authenticationStructure.plantuml @@ -0,0 +1,58 @@ +@startuml +actor User +participant AuthenticationStore +participant AuthenticationRepository +participant HttpClient +participant AuthenticationTokenClient +participant Backend + +alt login +User -> AuthenticationStore: login(username, password) +AuthenticationStore -> AuthenticationRepository: login(username, password) +AuthenticationRepository -> HttpClient: post({username, password}) +HttpClient -> Backend: POST /auth/token/ +Backend -> HttpClient: rawToken +HttpClient -> AuthenticationRepository: response +AuthenticationRepository -> AuthenticationTokenClient: saveToken(rawToken) +AuthenticationTokenClient -> AuthenticationRepository: Token +AuthenticationRepository -> HttpClient: setAuthorizationHeader(accessToken) +AuthenticationRepository -> AuthenticationStore: User +AuthenticationStore -> User: success +end +alt logout +User -> AuthenticationStore: logout() +AuthenticationStore -> AuthenticationRepository: logout() +AuthenticationRepository -> HttpClient: clearAuthorizationHeader() +AuthenticationRepository -> AuthenticationTokenClient: clearToken() +AuthenticationStore -> User: success +end +alt refreshTokenInvalid +User -> HttpClient: get(something) +HttpClient -> Backend: GET something +Backend -> HttpClient: Response 401 +HttpClient -> Backend: POST /auth/token/refresh/ +Backend -> HttpClient: Response 401 +HttpClient -> AuthenticationStore: logout() +AuthenticationStore -> AuthenticationRepository: logout() +AuthenticationRepository -> HttpClient: clearAuthorizationHeader() +AuthenticationRepository -> AuthenticationTokenClient: clearToken() +AuthenticationStore -> User: success +end +alt accessTokenInvalid +User -> HttpClient: get(something) +HttpClient -> Backend: GET something +Backend -> HttpClient: Response 401 +HttpClient -> Backend: POST /auth/token/refresh/ +Backend -> HttpClient: Response 201 +HttpClient -> AuthenticationStore: loginWithToken(token) +AuthenticationStore -> AuthenticationRepository: initializeAuthenticationComponents(...) +AuthenticationRepository -> AuthenticationTokenClient: saveToken(rawToken) +AuthenticationTokenClient -> AuthenticationRepository: Token +AuthenticationRepository -> HttpClient: setAuthorizationHeader(accessToken) +AuthenticationRepository -> AuthenticationStore: User +AuthenticationStore -> HttpClient: success +HttpClient -> Backend: GET something +Backend -> HttpClient: Response 200 +HttpClient -> User : response +end +@enduml diff --git a/frontend/graphs/authenticationStructureClassDiagramm.plantuml b/frontend/graphs/authenticationStructureClassDiagramm.plantuml new file mode 100644 index 0000000..d2d1213 --- /dev/null +++ b/frontend/graphs/authenticationStructureClassDiagramm.plantuml @@ -0,0 +1,81 @@ +@startuml +class AuthenticationStore { + -user: User + +user(): User + +isLoggedIn(): bool + -SET_USER(User): void + -INIT_USER(): void + +async login(username: String, password: String): void + +async loadUser(): void + +async loginWithToken(token: Token): void + +async logout(): void +} + +class VueRouter {} +class Ability {} + +class AuthenticationRepository { + -httpClient: HttpClient + -tokenClient: AuthenticationTokenClient + +async login(username: String, password: String): User + +async loadUser(): User + +async initializeAuthenticationComponents(RawToken): User + +async logout(): void + +async isLoggedIn(): bool + +async clearAuthenticationComponents(): void + +getAbility(): Ability +} + +class User { + +username: String + +email: String + +ability: Ability + +sessionExpirationTime: Date +} + +class HttpClient { + +client: Axios + -isAlreadyFetchingAccessToken: bool + -subscribers: List + +clearAuthenticationHeader(): void + +setAuthenticationHeader(accessToken: String): void + -setResponseInterceptor(): void + -isTokenExpiredError(errorResponse: Axios.Response): bool + -async resetTokenAndReattemptRequest(error: Axios.Error): void + -async onAccessTokenFetched(rawToken): void + -async onAccessTokenFetchedFailed: void + -addSubscriber(callback: Function): void +} + +class AuthenticationTokenClient { + -accessTokenKey: String + -refreshTokenKey: String + -token: Token + +async saveToken(accessToken, refreshToken): Token + +clearToken(): void + +async getToken(): Token + -async loadToken(): Token +} + +class Token { + +accessToken: String + +refreshToken: String + +user: Object + +sessionExpirationTime: Date + + +isEmpty(): bool + +isExpired(): bool +} + +AuthenticationStore o-- AuthenticationRepository +AuthenticationStore --> VueRouter +AuthenticationStore o-- User +AuthenticationRepository o-- User +User o-- Ability +AuthenticationRepository o-- HttpClient +AuthenticationRepository o-- AuthenticationTokenClient +HttpClient --> AuthenticationTokenClient +HttpClient --> AuthenticationStore +AuthenticationTokenClient o-- Token + +@enduml diff --git a/frontend/lama/.browserslistrc b/frontend/lama/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/frontend/lama/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/frontend/lama/.editorconfig b/frontend/lama/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/frontend/lama/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/frontend/lama/.eslintrc.js b/frontend/lama/.eslintrc.js new file mode 100644 index 0000000..fe80e47 --- /dev/null +++ b/frontend/lama/.eslintrc.js @@ -0,0 +1,34 @@ +module.exports = { + root: true, + + env: { + node: true + }, + + parserOptions: { + parser: '@typescript-eslint/parser' + }, + + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' + }, + + overrides: [ + { + files: [ + '**/__tests__/*.{j,t}s?(x)', + '**/tests/unit/**/*.spec.{j,t}s?(x)' + ], + env: { + jest: true + } + } + ], + + extends: [ + 'plugin:vue/recommended', + '@vue/standard', + '@vue/typescript' + ] +} diff --git a/frontend/lama/.gitignore b/frontend/lama/.gitignore new file mode 100644 index 0000000..a0dddc6 --- /dev/null +++ b/frontend/lama/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/lama/README.md b/frontend/lama/README.md new file mode 100644 index 0000000..58ed33e --- /dev/null +++ b/frontend/lama/README.md @@ -0,0 +1,24 @@ +# lama + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/frontend/lama/babel.config.js b/frontend/lama/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/frontend/lama/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/frontend/lama/cypress.json b/frontend/lama/cypress.json new file mode 100644 index 0000000..470c720 --- /dev/null +++ b/frontend/lama/cypress.json @@ -0,0 +1,3 @@ +{ + "pluginsFile": "tests/e2e/plugins/index.js" +} diff --git a/frontend/lama/jest.config.js b/frontend/lama/jest.config.js new file mode 100644 index 0000000..8b359f8 --- /dev/null +++ b/frontend/lama/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel' +} diff --git a/frontend/lama/package-lock.json b/frontend/lama/package-lock.json new file mode 100644 index 0000000..a5b91e4 --- /dev/null +++ b/frontend/lama/package-lock.json @@ -0,0 +1,23649 @@ +{ + "name": "lama", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz", + "integrity": "sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg==", + "dev": true + }, + "@babel/core": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.13.tgz", + "integrity": "sha512-BQKE9kXkPlXHPeqissfxo0lySWJcYdEP0hdtJOH/iJfDdhOCcgtNCjftCJg3qqauB4h+lz2N6ixM++b9DN1Tcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.13", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helpers": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.12.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.15.tgz", + "integrity": "sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.13.tgz", + "integrity": "sha512-dXof20y/6wB5HnLOGyLh/gobsMvDNoekcC+8MCV2iaTd5JemhFkPD73QB+tK3iFC9P0xJC73B6MvKkyUfS9cCw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-validator-option": "^7.12.11", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.13.tgz", + "integrity": "sha512-Vs/e9wv7rakKYeywsmEBSRC9KtmE7Px+YBlESekLeJOF0zbGUicGfXSNi3o+tfXSNS48U/7K9mIOOCR79Cl3+Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.13.tgz", + "integrity": "sha512-XC+kiA0J3at6E85dL5UnCYfVOcIZ834QcAY0TIpgUVnz0zDzg+0TtvZTnJ4g9L1dPRGe30Qi03XCIS4tYCLtqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz", + "integrity": "sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz", + "integrity": "sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.13.tgz", + "integrity": "sha512-B+7nN0gIL8FZ8SvMcF+EPyB21KnCcZHQZFczCxbiNGV/O0rsrSBlWGLzmtBJ3GMjSVMIm4lpFhR+VdVBuIsUcQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz", + "integrity": "sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz", + "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz", + "integrity": "sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", + "integrity": "sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz", + "integrity": "sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helpers": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz", + "integrity": "sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.15.tgz", + "integrity": "sha512-AQBOU2Z9kWwSZMd6lNjCX0GUgFonL1wAM1db8L8PMk9UDaGsRCArBkU4Sc+UCM3AE4hjbXx+h58Lb3QT4oRmrA==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz", + "integrity": "sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz", + "integrity": "sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.13.tgz", + "integrity": "sha512-x2aOr5w4ARJoYHFKoG2iEUL/Xe99JAJXjAasHijXp3/KgaetJXGE62SmHgsW3Tia/XUT5AxF2YC0F+JyhPY/0Q==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-decorators": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz", + "integrity": "sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz", + "integrity": "sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz", + "integrity": "sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz", + "integrity": "sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.13" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz", + "integrity": "sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.13.tgz", + "integrity": "sha512-0ZwjGfTcnZqyV3y9DSD1Yk3ebp+sIUpT2YDqP8hovzaNZnQq2Kd7PEqa6iOIUDBXBt7Jl3P7YAcEIL5Pz8u09Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz", + "integrity": "sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", + "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "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, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz", + "integrity": "sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz", + "integrity": "sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz", + "integrity": "sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz", + "integrity": "sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz", + "integrity": "sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz", + "integrity": "sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz", + "integrity": "sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz", + "integrity": "sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz", + "integrity": "sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.12.13", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz", + "integrity": "sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz", + "integrity": "sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.15.tgz", + "integrity": "sha512-OwptMSRnRWJo+tJ9v9wgAf72ydXWfYSXWhnQjZing8nGZSDFqU1MBleKM3+DriKkcbv7RagA8gVeB0A1PNlNow==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz", + "integrity": "sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz", + "integrity": "sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.13.tgz", + "integrity": "sha512-JUVlizG8SoFTz4LmVUL8++aVwzwxcvey3N0j1tRbMAXVEy95uQ/cnEkmEKHN00Bwq4voAV3imQGnQvpkLAxsrw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-compilation-targets": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.12.13", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.13", + "@babel/plugin-proposal-optional-chaining": "^7.12.13", + "@babel/plugin-proposal-private-methods": "^7.12.13", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.12.13", + "@babel/plugin-transform-async-to-generator": "^7.12.13", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.12.13", + "@babel/plugin-transform-computed-properties": "^7.12.13", + "@babel/plugin-transform-destructuring": "^7.12.13", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.12.13", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.12.13", + "@babel/plugin-transform-modules-commonjs": "^7.12.13", + "@babel/plugin-transform-modules-systemjs": "^7.12.13", + "@babel/plugin-transform-modules-umd": "^7.12.13", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.12.13", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.12.13", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.12.13", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.13", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz", + "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", + "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", + "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@casl/ability": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-5.2.2.tgz", + "integrity": "sha512-A0GTDWojP72Z4HSgS0pfbtGnhQWbquhn9luAr4Uc/HnqWWib0NvmpXC4//7gsiMUiVYCoFozQ+nG1oeZuhT7Jg==", + "requires": { + "@ucast/mongo2js": "^1.3.0" + } + }, + "@casl/vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@casl/vue/-/vue-2.0.2.tgz", + "integrity": "sha512-inj/cyaALWFo2y4wiu+WpTXTUqK2zf16e84OVnZj8ZSe18oRhPnCSBjoI6oYiXc/oD1GLIqOBpY4HDOfloFeWA==" + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "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 + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@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==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@nuxt/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-XG7rUdXG9fcafu9KTDIYjJSkRO38EwjlKYIb5TQ/0WDbiTUTtUtgncMscKOYzfsY86kGs05pAuMOR+3Fi0aN3A==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@sinonjs/commons": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz", + "integrity": "sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.18", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz", + "integrity": "sha512-m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", + "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy-middleware": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz", + "integrity": "sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/http-proxy": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.20", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz", + "integrity": "sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/node": { + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true, + "optional": true + }, + "@types/prettier": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.0.tgz", + "integrity": "sha512-O3SQC6+6AySHwrspYn2UvC6tjo6jCTMMmylxZUFhE1CulVu5l3AxU6ca9lrJDTQDVllF62LIxVSx5fuYL6LiZg==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/qs": { + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", + "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.12.0.tgz", + "integrity": "sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.26", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", + "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-rIb+LtUkKnh7+oIJm3WiMJONd71Q0lZuqGLcSqhZ5qjN9gV/CNmZe7Bai+brnBPZ/KVYOsr+4bFLiNZwjBicLw==", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/http-proxy-middleware": "*", + "@types/serve-static": "*", + "@types/webpack": "*" + } + }, + "@types/webpack-env": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.0.tgz", + "integrity": "sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw==", + "dev": true + }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.0.tgz", + "integrity": "sha512-DJgdGZW+8CFUTz5C/dnn4ONcUm2h2T0itWD85Ob5/V27Ndie8hUoX5HKyGssvR8sUMkAIlUc/AMK67Lqa3kBIQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.15.0", + "@typescript-eslint/scope-manager": "4.15.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.0.tgz", + "integrity": "sha512-V4vaDWvxA2zgesg4KPgEGiomWEBpJXvY4ZX34Y3qxK8LUm5I87L+qGIOTd9tHZOARXNRt9pLbblSKiYBlGMawg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.15.0", + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/typescript-estree": "4.15.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.0.tgz", + "integrity": "sha512-L6Dtbq8Bc7g2aZwnIBETpmUa9XDKCMzKVwAArnGp5Mn7PRNFjf3mUzq8UeBjL3K8t311hvevnyqXAMSmxO8Gpg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.15.0", + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/typescript-estree": "4.15.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.0.tgz", + "integrity": "sha512-CSNBZnCC2jEA/a+pR9Ljh8Y+5TY5qgbPz7ICEk9WCpSEgT6Pi7H2RIjxfrrbUXvotd6ta+i27sssKEH8Azm75g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/visitor-keys": "4.15.0" + } + }, + "@typescript-eslint/types": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.0.tgz", + "integrity": "sha512-su4RHkJhS+iFwyqyXHcS8EGPlUVoC+XREfy5daivjLur9JP8GhvTmDipuRpcujtGC4M+GYhUOJCPDE3rC5NJrg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.0.tgz", + "integrity": "sha512-jG6xTmcNbi6xzZq0SdWh7wQ9cMb2pqXaUp6bUZOMsIlu5aOlxGxgE/t6L/gPybybQGvdguajXGkZKSndZJpksA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/visitor-keys": "4.15.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.0.tgz", + "integrity": "sha512-RnDtJwOwFucWFAMjG3ghCG/ikImFJFEg20DI7mn4pHEx3vC48lIAoyjhffvfHmErRDboUPC7p9Z2il4CLb7qxA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.15.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@ucast/core": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@ucast/core/-/core-1.8.2.tgz", + "integrity": "sha512-pc+XGjJmZkfypJIIRo38el/FUDtBXBlGQbXafWwRwInocXVwNbJ56efECKLgAQSyI7OCJFSaEeqpf3SrR3D6cw==" + }, + "@ucast/js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ucast/js/-/js-3.0.1.tgz", + "integrity": "sha512-sabiuYsM5VUg4EaCwlDxnqcrHPFvbZcXvBu+P/o4pqK2q046RLTdo0bM7iVCn5Ro4HpCiRv3QzxtW8epcluY1g==", + "requires": { + "@ucast/core": "^1.0.0" + } + }, + "@ucast/mongo": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@ucast/mongo/-/mongo-2.4.1.tgz", + "integrity": "sha512-l/hc3TxjWO9inBrgM5iMCAcsIeV2DToppRlabQa5xB/6uHYtCXfm3TPaJgr8TU1OFxqPlaXEnNQhaV0sVHGsoQ==", + "requires": { + "@ucast/core": "^1.4.1" + } + }, + "@ucast/mongo2js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@ucast/mongo2js/-/mongo2js-1.3.2.tgz", + "integrity": "sha512-KNOEs61wxo4VJkVGqwP2a03TKuLx9fLMQgW5HD8Th/mrcuP1SspS4W+kUQD+wB1AA5pOn65hzlHUw5wZBwme0Q==", + "requires": { + "@ucast/core": "^1.6.1", + "@ucast/js": "^3.0.0", + "@ucast/mongo": "^2.4.0" + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.3.tgz", + "integrity": "sha512-+52ZQFmrM0yh61dQlgwQlfHZXmYbswbQEL25SOSt9QkjegAdfIGu87oELw0l8H6cuJYazZCiNjPR9eU++ZIbxg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.11.tgz", + "integrity": "sha512-9VoFlm/9vhynKNGM+HA7qBsoQSUEnuG5i5kcFI9vTLLrh8A0fxrwUyVLLppO6T1sAZ6vrKdQFnEkjL+RkRAwWQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.0-0", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.11.tgz", + "integrity": "sha512-aDQNw+oGk5+KR0vL9TocjfzyYHTJxR2lS8iPbcL4lRglCs2dudOE7QWXypj5dM4rQus0jJ5fxJTS55o9uy9fcQ==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.11.tgz", + "integrity": "sha512-ogUMeO2waDtghIWwmuAzMJAnnPdmqRdJlwJDca9u6BK9jX1bxNThBSFS/MN2VmlYzulOnqH4zAC87jTWNg/czg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.11", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-e2e-cypress": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.11.tgz", + "integrity": "sha512-0SjUlNpjXHyZRdBMrOSsSuWDIi4DyRVmJhkkBLUpGHJt1SSyWOY70NRfemhef2yJZVWyFA4GjN9Mn6xYAH6z/w==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.11", + "cypress": "^3.8.3", + "eslint-plugin-cypress": "^2.10.3" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.11.tgz", + "integrity": "sha512-6XrF3A3ryjtqoPMYL0ltZaP0631HS2a68Ye34KIkz111EKXtC5ip+gz6bSPWrH5SbhinU3R8cstA8xVASz9kwg==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.11", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@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==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@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" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@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" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "@vue/cli-plugin-pwa": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.11.tgz", + "integrity": "sha512-7wvNdR8EXRWaLlybPlk4B6+lE8y+sG2kXq69EyH4ILRmZnFYc22dY22eUhR1EIFTmRxHR0g8qDBrp1BvaNeaYA==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.11", + "webpack": "^4.0.0", + "workbox-webpack-plugin": "^4.3.1" + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.11.tgz", + "integrity": "sha512-09tzw3faOs48IUPwLutYaNC7eoyyL140fKruTwdFdXuBLDdSQVida57Brx0zj2UKXc5qF8hk4GoGrOshN0KfNg==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.11" + } + }, + "@vue/cli-plugin-typescript": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.11.tgz", + "integrity": "sha512-oVv4p/gec/xqFuJOUqBxVuThk7fj2QMfoDpe6QfkWIVQU+g8JLpZvOQo0wDMoiHtURQKtqGQCwC57jkKOCufqg==", + "dev": true, + "requires": { + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^4.5.11", + "cache-loader": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11", + "globby": "^9.2.0", + "thread-loader": "^2.1.3", + "ts-loader": "^6.2.2", + "tslint": "^5.20.1", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@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==", + "dev": true + }, + "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, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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, + "optional": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "optional": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "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, + "optional": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@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" + } + }, + "fork-ts-checker-webpack-plugin-v5": { + "version": "npm:fork-ts-checker-webpack-plugin@5.2.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.2.1.tgz", + "integrity": "sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw==", + "dev": true, + "optional": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "optional": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "optional": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "@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" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "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==", + "dev": true, + "optional": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "optional": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "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, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "optional": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "optional": true + } + } + }, + "@vue/cli-plugin-unit-jest": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.11.tgz", + "integrity": "sha512-PGpWz1RB9mfSJ5diTshFJUZsAschJBdLtJl7mmou/AVH2Yf8gTy3Zh9YZwkvhGt/wKXFbincmL6tyAQFGMa8Ow==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@types/jest": "^24.0.19", + "@vue/cli-shared-utils": "^4.5.11", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^24.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "deepmerge": "^4.2.2", + "jest": "^24.9.0", + "jest-environment-jsdom-fifteen": "^1.0.2", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-watch-typeahead": "^0.4.2", + "ts-jest": "^24.2.0", + "vue-jest": "^3.0.5" + }, + "dependencies": { + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "dev": true, + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "stack-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "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, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.11.tgz", + "integrity": "sha512-JBPeZLubiSHbRkEKDj0tnLiU43AJ3vt6JULn4IKWH1XWZ6MFC8vElaP5/AA4O3Zko5caamDDBq3TRyxdA2ncUQ==", + "dev": true + }, + "@vue/cli-service": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.11.tgz", + "integrity": "sha512-FXeJh2o6B8q/njv2Ebhe9EsLXt9sPMXGDY5zVvcV5jgj9wkoej9yLfnmwWCau5kegNClP6bcM+BEHuMYxJ+ubQ==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.11", + "@vue/cli-plugin-router": "^4.5.11", + "@vue/cli-plugin-vuex": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.11", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "@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==", + "dev": true + }, + "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, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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, + "optional": true + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@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" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "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, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader": { + "version": "15.9.6", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", + "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.1.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", + "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.11.tgz", + "integrity": "sha512-+aaQ+ThQG3+WMexfSWNl0y6f43edqVqRNbguE53F3TIH81I7saS5S750ayqXhZs2r6STJJyqorQnKtAWfHo29A==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "@vue/compiler-core": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.0.5.tgz", + "integrity": "sha512-iFXwk2gmU/GGwN4hpBwDWWMLvpkIejf/AybcFtlQ5V1ur+5jwfBaV0Y1RXoR6ePfBPJixtKZ3PmN+M+HgMAtfQ==", + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.0.5", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@vue/compiler-dom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.0.5.tgz", + "integrity": "sha512-HSOSe2XSPuCkp20h4+HXSiPH9qkhz6YbW9z9ZtL5vef2T2PMugH7/osIFVSrRZP/Ul5twFZ7MIRlp8tPX6e4/g==", + "requires": { + "@vue/compiler-core": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "@vue/compiler-sfc": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.0.5.tgz", + "integrity": "sha512-uOAC4X0Gx3SQ9YvDC7YMpbDvoCmPvP0afVhJoxRotDdJ+r8VO3q4hFf/2f7U62k4Vkdftp6DVni8QixrfYzs+w==", + "dev": true, + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/compiler-core": "3.0.5", + "@vue/compiler-dom": "3.0.5", + "@vue/compiler-ssr": "3.0.5", + "@vue/shared": "3.0.5", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.32", + "postcss-modules": "^3.2.2", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", + "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", + "dev": true, + "requires": { + "bluebird": "^3.7.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@vue/compiler-ssr": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.0.5.tgz", + "integrity": "sha512-Wm//Kuxa1DpgjE4P9W0coZr8wklOfJ35Jtq61CbU+t601CpPTK4+FL2QDBItaG7aoUUDCWL5nnxMkuaOgzTBKg==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", + "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/eslint-config-standard": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-6.0.0.tgz", + "integrity": "sha512-1hIkQDMkZBxqlVITckUpcBvRMiWC/Bupc1qh8JkMSgP5vvB7fpGXprblj3ivXrKK9TCpKpy5pqnBKEFKTNfoow==", + "dev": true, + "requires": { + "eslint-config-standard": "^16.0.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-import-resolver-webpack": "^0.13.0" + } + }, + "@vue/eslint-config-typescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-7.0.0.tgz", + "integrity": "sha512-UxUlvpSrFOoF8aQ+zX1leYiEBEm7CZmXYn/ZEM1zwSadUzpamx56RB4+Htdjisv1mX2tOjBegNUqH3kz2OL+Aw==", + "dev": true, + "requires": { + "vue-eslint-parser": "^7.0.0" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true + }, + "@vue/reactivity": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.0.5.tgz", + "integrity": "sha512-3xodUE3sEIJgS7ntwUbopIpzzvi7vDAOjVamfb2l+v1FUg0jpd3gf62N2wggJw3fxBMr+QvyxpD+dBoxLsmAjw==", + "requires": { + "@vue/shared": "3.0.5" + } + }, + "@vue/runtime-core": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.0.5.tgz", + "integrity": "sha512-Cnyi2NqREwOLcTEsIi1DQX1hHtkVj4eGm4hBG7HhokS05DqpK4/80jG6PCCnCH9rIJDB2FqtaODX397210plXg==", + "requires": { + "@vue/reactivity": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "@vue/runtime-dom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.0.5.tgz", + "integrity": "sha512-iilX1KySeIzHHtErT6Y44db1rhWK5tAI0CiJIPr+SJoZ2jbjoOSE6ff/jfIQakchbm1d6jq6VtRVnp5xYdOXKA==", + "requires": { + "@vue/runtime-core": "3.0.5", + "@vue/shared": "3.0.5", + "csstype": "^2.6.8" + } + }, + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.5.tgz", + "integrity": "sha512-gYsNoGkWejBxNO6SNRjOh/xKeZ0H0V+TFzaPzODfBjkAIb0aQgBuixC1brandC/CDJy1wYPwSoYrXpvul7m6yw==" + }, + "@vue/test-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.1.3.tgz", + "integrity": "sha512-BAY1Cwe9JpkJseimC295EW3YlAmgIJI9OPkg2FSP62+PHZooB0B+wceDi9TYyU57oqzL0yLbcP73JKFpKiLc9A==", + "dev": true, + "requires": { + "dom-event-types": "^1.0.0", + "lodash": "^4.17.15", + "pretty": "^2.0.0" + } + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", + "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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", + "@xtuc/long": "4.2.2" + } + }, + "@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==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@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==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "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==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + } + }, + "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 + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "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 + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "dev": true, + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "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 + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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 + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + }, + "bootstrap-vue": { + "version": "2.21.2", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.21.2.tgz", + "integrity": "sha512-0Exe+4MZysqhZNXIKf4TzkvXaupxh9EHsoCRez0o5Dc0J7rlafayOEwql63qXv74CgZO8E4U8ugRNJko1vMvNw==", + "requires": { + "@nuxt/opencollective": "^0.3.2", + "bootstrap": ">=4.5.3 <5.0.0", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "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, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "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, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "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, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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 + } + } + }, + "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, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "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, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "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 + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "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" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + } + }, + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001185", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001185.tgz", + "integrity": "sha512-Fpi4kVNtNvJ15H0F6vwmXtb3tukv3Zg3qhKkOGUq7KJ1J6b9kf4dnNgtEAFXhRsJo0gNj9W60+wBvn0JcTvdTg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "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, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-highlight": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.10.tgz", + "integrity": "sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "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, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "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==", + "dev": true + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==" + }, + "core-js-compat": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz", + "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==", + "dev": true, + "requires": { + "browserslist": "^4.16.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "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, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "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, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "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, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-browserify": { + "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, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "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, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "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, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "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==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "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.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "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": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "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": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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 + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "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 + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csstype": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.14.tgz", + "integrity": "sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "cypress": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.8.3.tgz", + "integrity": "sha512-I9L/d+ilTPPA4vq3NC1OPKmw7jJIpMKNdyfR8t1EXYzYCjyqbc59migOm1YSse/VRbISLJ+QGb5k4Y3bz2lkYw==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.2.4", + "@types/sizzle": "2.3.2", + "arch": "2.1.1", + "bluebird": "3.5.0", + "cachedir": "1.3.0", + "chalk": "2.4.2", + "check-more-types": "2.24.0", + "commander": "2.15.1", + "common-tags": "1.8.0", + "debug": "3.2.6", + "eventemitter2": "4.1.2", + "execa": "0.10.0", + "executable": "4.1.1", + "extract-zip": "1.6.7", + "fs-extra": "5.0.0", + "getos": "3.1.1", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.15", + "log-symbols": "2.2.0", + "minimist": "1.2.0", + "moment": "2.24.0", + "ramda": "0.24.1", + "request": "2.88.0", + "request-progress": "3.0.0", + "supports-color": "5.5.0", + "tmp": "0.1.0", + "untildify": "3.0.3", + "url": "0.11.0", + "yauzl": "2.10.0" + }, + "dependencies": { + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "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, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.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" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "deasync": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", + "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "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", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "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, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "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, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "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, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-event-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", + "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + } + } + }, + "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 + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "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 + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "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 + }, + "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==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.657", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.657.tgz", + "integrity": "sha512-/9ROOyvEflEbaZFUeGofD+Tqs/WynbSTbNgNF+/TJJxH1ePD/e6VjZlDJpW3FFFd3nj5l3Hd8ki2vRwy+gyRFw==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "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 + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "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, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz", + "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.3.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-config-standard": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.2.tgz", + "integrity": "sha512-fx3f1rJDsl9bY7qzyX8SAtP8GBSk6MfXFaTfaGgk12aAYW4gJSyRm7dM790L6cbXv63fvjY4XeSzXnb4WM+SKw==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-import-resolver-webpack": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.0.tgz", + "integrity": "sha512-hZWGcmjaJZK/WSCYGI/y4+FMGQZT+cwW/1E/P4rDwFj2PbanlQHISViw4ccDJ+2wxAqjgwBfxwy3seABbVKDEw==", + "dev": true, + "requires": { + "array-find": "^1.0.0", + "debug": "^2.6.9", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.2.0", + "lodash": "^4.17.15", + "node-libs-browser": "^1.0.0 || ^2.0.0", + "resolve": "^1.13.1", + "semver": "^5.7.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-cypress": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz", + "integrity": "sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA==", + "dev": true, + "requires": { + "globals": "^11.12.0" + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz", + "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.5.0.tgz", + "integrity": "sha512-QnMMTcyV8PLxBz7QQNAwISSEs6LYk2LJvGlxalXvpCtfKnqo7qcY0aZTIxPe8QOnHd7WCwiMZLOJzg6A03T0Gw==", + "dev": true, + "requires": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^7.3.2", + "vue-eslint-parser": "^7.4.1" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter2": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-4.1.2.tgz", + "integrity": "sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "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, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "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==", + "dev": true + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + } + } + }, + "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==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", + "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "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==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "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, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", + "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "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, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.1.tgz", + "integrity": "sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA==", + "dev": true, + "optional": true + }, + "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": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "gensync": { + "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 + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "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, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "dev": true, + "requires": { + "async": "2.6.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", + "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "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 + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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 + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" + }, + "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, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "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 + }, + "highlight.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz", + "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "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 + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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 + } + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "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, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "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, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "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, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "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==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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 + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "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, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "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 + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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 + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "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" + } + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true + }, + "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, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "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, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "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 + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "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==", + "dev": true + }, + "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, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "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, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "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 + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom-fifteen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz", + "integrity": "sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==", + "dev": true, + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^15.2.1" + }, + "dependencies": { + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "stack-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "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 + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "stack-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + } + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-beautify": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz", + "integrity": "sha512-MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "^1.0.4", + "nopt": "^5.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "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==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "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 + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.2.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.0.0-beta.11", + "stream-to-observable": "^0.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + } + } + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "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, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "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, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "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, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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 + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.0.tgz", + "integrity": "sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==", + "dev": true, + "optional": true, + "requires": { + "fs-monkey": "1.0.1" + } + }, + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "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, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", + "dev": true + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "dev": true + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "dev": true, + "requires": { + "mime-db": "1.45.0" + } + }, + "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 + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "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 + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "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": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "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==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, + "node-cache": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz", + "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==", + "dev": true, + "requires": { + "clone": "2.x", + "lodash": "^4.17.15" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-ipc": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.3.tgz", + "integrity": "sha512-8RS4RZyS/KMKKYG8mrje+cLxwATe9dBCuOiqKFSWND4oOuKytfuKCiR9yinvhoXF/nGdX/WnbywaUee+9U87zA==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "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, + "requires": { + "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-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", + "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", + "dev": true, + "optional": true, + "requires": { + "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-releases": { + "version": "1.1.70", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", + "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "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==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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 + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "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, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-is": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "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 + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "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 + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "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, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "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==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "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, + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "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, + "requires": { + "retry": "^0.12.0" + } + }, + "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 + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "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==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "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 + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "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 + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portal-vue": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", + "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "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, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "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, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "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, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "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, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "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" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-3.2.2.tgz", + "integrity": "sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==", + "dev": true, + "requires": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.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", + "string-hash": "^1.1.1" + } + }, + "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==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "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==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "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, + "requires": { + "postcss": "^7.0.0" + } + }, + "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, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "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, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "pretty-bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz", + "integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==", + "dev": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "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 + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "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 + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", + "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + }, + "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==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "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 + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "register-service-worker": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz", + "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==" + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "dev": true, + "requires": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "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 + }, + "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 + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "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, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "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 + } + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "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 + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "sass": { + "version": "1.32.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.7.tgz", + "integrity": "sha512-C8Z4bjqGWnsYa11o8hpKAuoyFdRhrSHcYjCr+XAWVPSIQqC8mp2f5Dx4em0dKYehPzg5XSekmCjqJnEZbIls9A==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "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, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "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, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "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 + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "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" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "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, + "requires": { + "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" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "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, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "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==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "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, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "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, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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 + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + } + } + }, + "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, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dev": true, + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "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 + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "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, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "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" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz", + "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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 + }, + "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 + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "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 + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "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, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "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, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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, + "requires": { + "is-number": "^7.0.0" + }, + "dependencies": { + "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 + } + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz", + "integrity": "sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "ts-loader": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", + "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "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, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "dev": true + }, + "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, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "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 + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "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, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "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, + "optional": true + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", + "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "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 + }, + "vue": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.0.5.tgz", + "integrity": "sha512-TfaprOmtsAfhQau7WsomXZ8d9op/dkQLNIq8qPV3A0Vxs6GR5E+c1rfJS1SDkXRQj+dFyfnec7+U0Be1huiScg==", + "requires": { + "@vue/compiler-dom": "3.0.5", + "@vue/runtime-dom": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "vue-axios": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.2.4.tgz", + "integrity": "sha512-8Dgws6dwt+1LoKEU4HDzIPfaRgWHl0xLDLW6kxrAk/z3GAJ2thkajcXC4qZgmqj0cZRx/Z/dzooKi5HWtUQwxA==" + }, + "vue-eslint-parser": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz", + "integrity": "sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "vue-functional-data-merge": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", + "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" + }, + "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 + }, + "vue-jest": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.7.tgz", + "integrity": "sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "chalk": "^2.1.0", + "deasync": "^0.1.15", + "extract-from-css": "^0.4.4", + "find-babel-config": "^1.1.0", + "js-beautify": "^1.6.14", + "node-cache": "^4.1.1", + "object-assign": "^4.1.1", + "source-map": "^0.5.6", + "tsconfig": "^7.0.0", + "vue-template-es2015-compiler": "^1.6.0" + } + }, + "vue-loader": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", + "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-router": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.3.tgz", + "integrity": "sha512-AD1OjtVPyQHTSpoRsEGfPpxRQwhAhxcacOYO3zJ3KNkYP/r09mileSp6kdMQKhZWP2cFsPR3E2M3PZguSN5/ww==" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "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 + }, + "vuex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.0.tgz", + "integrity": "sha512-56VPujlHscP5q/e7Jlpqc40sja4vOhC4uJD1llBCWolVI8ND4+VzisDVkUMl+z5y0MpIImW6HjhNc+ZvuizgOw==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "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==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "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 + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "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, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "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==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "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==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "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, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "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, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "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 + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "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, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "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 + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.4", + "@hapi/joi": "^15.0.0", + "common-tags": "^1.8.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.3", + "lodash.template": "^4.4.0", + "pretty-bytes": "^5.1.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^4.3.1", + "workbox-broadcast-update": "^4.3.1", + "workbox-cacheable-response": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-expiration": "^4.3.1", + "workbox-google-analytics": "^4.3.1", + "workbox-navigation-preload": "^4.3.1", + "workbox-precaching": "^4.3.1", + "workbox-range-requests": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1", + "workbox-streams": "^4.3.1", + "workbox-sw": "^4.3.1", + "workbox-window": "^4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==", + "dev": true + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "dev": true, + "requires": { + "workbox-background-sync": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "json-stable-stringify": "^1.0.1", + "workbox-build": "^4.3.1" + } + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "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==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true, + "optional": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/frontend/lama/package.json b/frontend/lama/package.json new file mode 100644 index 0000000..ed6138a --- /dev/null +++ b/frontend/lama/package.json @@ -0,0 +1,57 @@ +{ + "name": "lama", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "test:unit": "vue-cli-service test:unit", + "test:e2e": "vue-cli-service test:e2e", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@casl/ability": "^5.2.2", + "@casl/vue": "^2.0.2", + "axios": "^0.21.1", + "bootstrap": "^4.6.0", + "bootstrap-vue": "^2.21.2", + "core-js": "^3.8.3", + "jwt-decode": "^3.1.2", + "register-service-worker": "^1.7.1", + "vue": "^3.0.5", + "vue-axios": "^3.2.4", + "vue-loader": "^16.1.2", + "vue-router": "^4.0.3", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@types/jest": "^26.0.20", + "@typescript-eslint/eslint-plugin": "^4.15.0", + "@typescript-eslint/parser": "^4.15.0", + "@vue/cli-plugin-babel": "^4.5.11", + "@vue/cli-plugin-e2e-cypress": "^4.5.11", + "@vue/cli-plugin-eslint": "^4.5.11", + "@vue/cli-plugin-pwa": "^4.5.11", + "@vue/cli-plugin-router": "^4.5.11", + "@vue/cli-plugin-typescript": "^4.5.11", + "@vue/cli-plugin-unit-jest": "^4.5.11", + "@vue/cli-plugin-vuex": "^4.5.11", + "@vue/cli-service": "^4.5.11", + "@vue/compiler-sfc": "^3.0.5", + "@vue/eslint-config-standard": "^6.0.0", + "@vue/eslint-config-typescript": "^7.0.0", + "@vue/test-utils": "^1.1.3", + "babel-eslint": "^10.1.0", + "eslint": "^7.19.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^5.0.0", + "eslint-plugin-vue": "^7.5.0", + "jest": "^26.6.3", + "sass": "^1.32.7", + "sass-loader": "^10.1.1 ", + "typescript": "~4.1.5", + "vue-template-compiler": "^2.6.12" + } +} diff --git a/frontend/lama/public/config/config.json b/frontend/lama/public/config/config.json new file mode 100644 index 0000000..bb6e8e8 --- /dev/null +++ b/frontend/lama/public/config/config.json @@ -0,0 +1,3 @@ +{ + "LAMA_ENDPOINT": "http://localhost:8888/api" +} diff --git a/frontend/lama/public/favicon.ico b/frontend/lama/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/frontend/lama/public/favicon.ico differ diff --git a/frontend/lama/public/img/icons/android-chrome-192x192.png b/frontend/lama/public/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000..4bda778 Binary files /dev/null and b/frontend/lama/public/img/icons/android-chrome-192x192.png differ diff --git a/frontend/lama/public/img/icons/android-chrome-512x512.png b/frontend/lama/public/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000..2f55e82 Binary files /dev/null and b/frontend/lama/public/img/icons/android-chrome-512x512.png differ diff --git a/frontend/lama/public/img/icons/android-chrome-maskable-192x192.png b/frontend/lama/public/img/icons/android-chrome-maskable-192x192.png new file mode 100644 index 0000000..66063e6 Binary files /dev/null and b/frontend/lama/public/img/icons/android-chrome-maskable-192x192.png differ diff --git a/frontend/lama/public/img/icons/android-chrome-maskable-512x512.png b/frontend/lama/public/img/icons/android-chrome-maskable-512x512.png new file mode 100644 index 0000000..0e51397 Binary files /dev/null and b/frontend/lama/public/img/icons/android-chrome-maskable-512x512.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon-120x120.png b/frontend/lama/public/img/icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000..49099d4 Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon-120x120.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon-152x152.png b/frontend/lama/public/img/icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000..4922f6c Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon-152x152.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon-180x180.png b/frontend/lama/public/img/icons/apple-touch-icon-180x180.png new file mode 100644 index 0000000..d00c59a Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon-180x180.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon-60x60.png b/frontend/lama/public/img/icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000..dc42194 Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon-60x60.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon-76x76.png b/frontend/lama/public/img/icons/apple-touch-icon-76x76.png new file mode 100644 index 0000000..07ec974 Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon-76x76.png differ diff --git a/frontend/lama/public/img/icons/apple-touch-icon.png b/frontend/lama/public/img/icons/apple-touch-icon.png new file mode 100644 index 0000000..b4f27ca Binary files /dev/null and b/frontend/lama/public/img/icons/apple-touch-icon.png differ diff --git a/frontend/lama/public/img/icons/favicon-16x16.png b/frontend/lama/public/img/icons/favicon-16x16.png new file mode 100644 index 0000000..e80e7d3 Binary files /dev/null and b/frontend/lama/public/img/icons/favicon-16x16.png differ diff --git a/frontend/lama/public/img/icons/favicon-32x32.png b/frontend/lama/public/img/icons/favicon-32x32.png new file mode 100644 index 0000000..99e1efe Binary files /dev/null and b/frontend/lama/public/img/icons/favicon-32x32.png differ diff --git a/frontend/lama/public/img/icons/logo.svg b/frontend/lama/public/img/icons/logo.svg new file mode 100644 index 0000000..a64296c --- /dev/null +++ b/frontend/lama/public/img/icons/logo.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/lama/public/img/icons/msapplication-icon-144x144.png b/frontend/lama/public/img/icons/msapplication-icon-144x144.png new file mode 100644 index 0000000..6a25e32 Binary files /dev/null and b/frontend/lama/public/img/icons/msapplication-icon-144x144.png differ diff --git a/frontend/lama/public/img/icons/mstile-150x150.png b/frontend/lama/public/img/icons/mstile-150x150.png new file mode 100644 index 0000000..005e465 Binary files /dev/null and b/frontend/lama/public/img/icons/mstile-150x150.png differ diff --git a/frontend/lama/public/img/icons/safari-pinned-tab.svg b/frontend/lama/public/img/icons/safari-pinned-tab.svg new file mode 100644 index 0000000..a64296c --- /dev/null +++ b/frontend/lama/public/img/icons/safari-pinned-tab.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/lama/public/index.html b/frontend/lama/public/index.html new file mode 100644 index 0000000..4123528 --- /dev/null +++ b/frontend/lama/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/frontend/lama/public/robots.txt b/frontend/lama/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/frontend/lama/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/frontend/lama/src/App.vue b/frontend/lama/src/App.vue new file mode 100644 index 0000000..cac3d41 --- /dev/null +++ b/frontend/lama/src/App.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/frontend/lama/src/apps/authentication/api.ts b/frontend/lama/src/apps/authentication/api.ts new file mode 100644 index 0000000..e2c5f36 --- /dev/null +++ b/frontend/lama/src/apps/authentication/api.ts @@ -0,0 +1,5 @@ +const baseURL = 'localhost:8888' + +export default axios.create({ + baseURL +}) diff --git a/frontend/lama/src/apps/authentication/api/lama.ts b/frontend/lama/src/apps/authentication/api/lama.ts new file mode 100644 index 0000000..a7dc82a --- /dev/null +++ b/frontend/lama/src/apps/authentication/api/lama.ts @@ -0,0 +1,6 @@ +const BaseUrl = 'http://localhost:8000/api'.concat('/auth') + +export const AuthenticationEndpoint = { + Token: BaseUrl + '/token/', + RefreshToken: BaseUrl + '/token/refresh/' +} diff --git a/frontend/lama/src/apps/authentication/clients/httpClient.ts b/frontend/lama/src/apps/authentication/clients/httpClient.ts new file mode 100644 index 0000000..fd00f75 --- /dev/null +++ b/frontend/lama/src/apps/authentication/clients/httpClient.ts @@ -0,0 +1,108 @@ +import axios, { AxiosError, AxiosResponse, AxiosStatic } from 'axios' +import { authTokenClient } from './tokenClient' +import { AuthenticationEndpoint } from '@/apps/authentication/api/lama' + +import { store } from '@/store' +import { RawTokenInterface } from '@/apps/authentication/interfaces/token' + +export class HttpClient { + public client: AxiosStatic + private isAlreadyFetchingAccessToken: boolean + private subscribers: any[] + + constructor () { + this.client = axios + this.isAlreadyFetchingAccessToken = false + this.subscribers = [] + this.setResponseInterceptor() + this.client.defaults.headers['Content-Type'] = 'application/json' + } + + clearAuthorizationHeader () { + delete this.client.defaults.headers.common.Authorization + } + + setAuthorizationHeader (accessToken: string) { + if (accessToken) { + this.client.defaults.headers.common.Authorization = `Bearer ${accessToken}` + } else { + this.clearAuthorizationHeader() + } + } + + setResponseInterceptor () { + this.client.interceptors.response.use( + (response: AxiosResponse) => response, + async (error: AxiosError) => { + const errorResponse = error.response + if (errorResponse && this.isTokenExpiredError(errorResponse)) { + return this.resetTokenAndReattemptRequest(error) + } + return Promise.reject(error) + }) + } + + isTokenExpiredError (errorResponse: AxiosResponse) { + return errorResponse.data.code === 'token_not_valid' + } + + async resetTokenAndReattemptRequest (error: AxiosError) { + try { + const { response: errorResponse } = error + const token = await authTokenClient.getToken() + if (token.isEmpty()) { + console.log('HTTPCLIENT: Token is empty') + // Refresh not possible + return Promise.reject(error) + } + const retryOriginalRequest = new Promise((resolve, reject) => { + this.addSubscriber((accessToken: string) => { + if (accessToken && errorResponse) { + errorResponse.config.headers.Authorization = 'Bearer ' + accessToken + resolve(this.client(errorResponse.config)) + } else { + reject(error) + } + }) + }) + if (!this.isAlreadyFetchingAccessToken) { + console.log('HTTPCLIENT: !isAlreadyFetchingAccessToken') + this.isAlreadyFetchingAccessToken = true + const data = { refresh: token.refreshToken } + const response = await this.client.post(AuthenticationEndpoint.RefreshToken, data) + if (!response.data) { + return Promise.reject(error) + } + const newRawToken = response.data + this.isAlreadyFetchingAccessToken = false + await this.onAccessTokenFetched(newRawToken) + } + return retryOriginalRequest + } catch (error) { + console.log(error) + await this.onAccessTokenFetchedFailed() + + return Promise.reject(error) + } + } + + async onAccessTokenFetched (rawToken: RawTokenInterface) { + const token = await authTokenClient.saveToken(rawToken) + this.subscribers.forEach(callback => callback(token.accessToken)) + this.subscribers = [] + await store.dispatch('authentication/loginWithToken', token) + } + + async onAccessTokenFetchedFailed () { + this.subscribers.forEach(callback => callback(null)) + this.subscribers = [] + await store.dispatch('authentication/logout') + } + + addSubscriber (callback: Function) { + this.subscribers.push(callback) + } +} + +const httpClient = new HttpClient() +export default httpClient diff --git a/frontend/lama/src/apps/authentication/clients/tokenClient.ts b/frontend/lama/src/apps/authentication/clients/tokenClient.ts new file mode 100644 index 0000000..3126b38 --- /dev/null +++ b/frontend/lama/src/apps/authentication/clients/tokenClient.ts @@ -0,0 +1,59 @@ +import jwtDecode from 'jwt-decode' +import { Token } from '@/apps/authentication/models/token' +import { ApiTokenInterface, RawTokenInterface } from '@/apps/authentication/interfaces/token' + +export class AuthTokenClient { + private readonly ACCESS_TOKEN_KEY: string + private readonly REFRESH_TOKEN_KEY: string + private token: Token + + constructor () { + this.ACCESS_TOKEN_KEY = 'access_token' + this.REFRESH_TOKEN_KEY = 'refresh_token' + this.token = this.getEmptyToken() + } + + async saveToken ({ + accessToken, + refreshToken + }: RawTokenInterface) { + localStorage.setItem(this.ACCESS_TOKEN_KEY, accessToken) + localStorage.setItem(this.REFRESH_TOKEN_KEY, refreshToken) + this.token = await this.getToken() + return this.token + } + + clearToken () { + this.token = this.getEmptyToken() + localStorage.removeItem(this.ACCESS_TOKEN_KEY) + localStorage.removeItem(this.REFRESH_TOKEN_KEY) + } + + async getToken () { + if (this.token.isEmpty()) { + this.token = await this.loadToken() + } + return this.token + } + + async loadToken () { + const accessToken = localStorage.getItem(this.ACCESS_TOKEN_KEY) + const refreshToken = localStorage.getItem(this.REFRESH_TOKEN_KEY) + if (accessToken && refreshToken) { + try { + const decodedToken = await jwtDecode(accessToken) + return new Token(accessToken, refreshToken, decodedToken.user, new Date(decodedToken.exp)) + } catch (error) { + // eslint-disable-next-line no-console + console.error(error) + } + } + return this.getEmptyToken() + } + + getEmptyToken () { + return new Token('', '', null, new Date()) + } +} + +export const authTokenClient = new AuthTokenClient() diff --git a/frontend/lama/src/apps/authentication/components/AuthNavModule.vue b/frontend/lama/src/apps/authentication/components/AuthNavModule.vue new file mode 100644 index 0000000..f31ae19 --- /dev/null +++ b/frontend/lama/src/apps/authentication/components/AuthNavModule.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/frontend/lama/src/apps/authentication/exceptions/repository.ts b/frontend/lama/src/apps/authentication/exceptions/repository.ts new file mode 100644 index 0000000..52dc815 --- /dev/null +++ b/frontend/lama/src/apps/authentication/exceptions/repository.ts @@ -0,0 +1,6 @@ +export class AuthRepositoryException extends Error { + constructor (message: string) { + super(message) + this.name = 'ValidationError' + } +} diff --git a/frontend/lama/src/apps/authentication/interfaces/token.ts b/frontend/lama/src/apps/authentication/interfaces/token.ts new file mode 100644 index 0000000..0b5eb1d --- /dev/null +++ b/frontend/lama/src/apps/authentication/interfaces/token.ts @@ -0,0 +1,18 @@ +import { User } from '@/apps/authentication/models/user' +import { ClaimRawRule, RawRuleFrom } from '@casl/ability' + +export interface RawTokenInterface { + accessToken: string + refreshToken: string +} + +export interface ApiTokenUserInterface { + username: string + email: string + rules: Array +} + +export interface ApiTokenInterface { + user: ApiTokenUserInterface + exp: string +} diff --git a/frontend/lama/src/apps/authentication/models/token.ts b/frontend/lama/src/apps/authentication/models/token.ts new file mode 100644 index 0000000..c1bd1d0 --- /dev/null +++ b/frontend/lama/src/apps/authentication/models/token.ts @@ -0,0 +1,25 @@ +import { User } from '@/apps/authentication/models/user' +import { ApiTokenUserInterface } from '@/apps/authentication/interfaces/token' + +export class Token { + public accessToken: string + public refreshToken: string + public user: ApiTokenUserInterface | null + public sessionExpirationTime: Date + + constructor (accessToken: string, refreshToken: string, user: ApiTokenUserInterface | null, expirationTime: Date) { + this.accessToken = accessToken + this.refreshToken = refreshToken + this.user = user + this.sessionExpirationTime = expirationTime + } + + isEmpty () { + return !this.accessToken || !this.refreshToken + } + + isExpired () { + // TODO: implement + return this.isEmpty() + } +} diff --git a/frontend/lama/src/apps/authentication/models/user.ts b/frontend/lama/src/apps/authentication/models/user.ts new file mode 100644 index 0000000..d4cb02e --- /dev/null +++ b/frontend/lama/src/apps/authentication/models/user.ts @@ -0,0 +1,23 @@ +import { Ability } from '@casl/ability' + +export class User { + public username: string + public email: string + public ability: Ability + public sessionExpirationTime: Date + + constructor (username: string, email: string, ability: Ability, sessionExpirationTime: Date) { + this.username = username + this.email = email + this.ability = ability + this.sessionExpirationTime = sessionExpirationTime + } + + isEmpty () { + return !this.username + } + + static emptyUser () { + return new User('', '', new Ability([]), new Date()) + } +} diff --git a/frontend/lama/src/apps/authentication/repositories/RepositoryFactory.ts b/frontend/lama/src/apps/authentication/repositories/RepositoryFactory.ts new file mode 100644 index 0000000..88491e6 --- /dev/null +++ b/frontend/lama/src/apps/authentication/repositories/RepositoryFactory.ts @@ -0,0 +1,26 @@ +import AuthRepository from '@/apps/authentication/repositories/authRepository' +import { UserRepository } from '@/apps/users/repositories/userRepository' +import { UsersRepository } from '@/apps/users/repositories/usersRepository' +import { RealmRepository } from '@/apps/realms/repositories/realmRepository' +import { RealmsRepository } from '@/apps/realms/repositories/realmsRepository' + +class RepositoryFactory { + private readonly repositoryMap: Record + constructor () { + this.repositoryMap = { + authentication: AuthRepository, + realm: new RealmRepository(), + realms: new RealmsRepository(), + users: new UsersRepository(), + user: new UserRepository() + } + } + + get (id: string) { + return this.repositoryMap[id] + } +} + +const instance = new RepositoryFactory() +Object.freeze(instance) +export default instance diff --git a/frontend/lama/src/apps/authentication/repositories/authRepository.ts b/frontend/lama/src/apps/authentication/repositories/authRepository.ts new file mode 100644 index 0000000..2d2ae11 --- /dev/null +++ b/frontend/lama/src/apps/authentication/repositories/authRepository.ts @@ -0,0 +1,97 @@ +import { Ability, RawRuleOf } from '@casl/ability' +import { AuthenticationEndpoint } from '../api/lama' +import { AuthRepositoryException } from '../exceptions/repository' +import httpClient, { HttpClient } from '@/apps/authentication/clients/httpClient' +import { AuthTokenClient, authTokenClient } from '../clients/tokenClient' +import { User } from '@/apps/authentication/models/user' +import { Token } from '@/apps/authentication/models/token' + +class AuthRepository { + private httpClient: HttpClient + private tokenClient: AuthTokenClient + private user: User + private readonly ability: Ability + + constructor () { + this.ability = new Ability([]) + this.user = this.getEmptyUser() + this.httpClient = httpClient + this.tokenClient = authTokenClient + } + + async login (username: string, password: string) { + console.info('AUTH REPO: login') + try { + const response = await this.httpClient.client.post(AuthenticationEndpoint.Token, { + username: username, + password: password + }) + return await this.initializeAuthenticationComponents(response.data) + } catch (error) { + this.user = this.getEmptyUser() + if (error.toString() === 'Error: Network Error') { + throw new AuthRepositoryException('Es konnte keine Verbindung zum Server hergestellt werden. Bitte versuchen sie es später noch einmal.') + } else { + if (error.response.status === 401) { + throw new AuthRepositoryException('Fehlerhafter Nutzername oder fehlerhaftes Passwort') + } else { + throw new AuthRepositoryException('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchen sie es später erneut.') + } + } + } + } + + async loadUser () { + console.info('AUTH REPO: loadUser') + if (this.user.isEmpty()) { + const token = await this.tokenClient.getToken() + if (!token.isEmpty()) { + return await this.initializeAuthenticationComponents(token) + } + this.user = this.getEmptyUser() + } + return this.user + } + + async initializeAuthenticationComponents (token: Token) { + console.info('AUTH REPO: initializeAuthenticationComponents') + const savedToken = await this.tokenClient.saveToken({ + accessToken: token.accessToken, + refreshToken: token.refreshToken + }) + this.httpClient.setAuthorizationHeader(savedToken.accessToken) + if (!savedToken.user) { + return User.emptyUser() + } + this.ability.update(savedToken.user.rules) + this.user = new User(savedToken.user.username, savedToken.user.email, this.ability, savedToken.sessionExpirationTime) + return this.user + } + + async logout () { + console.info('AUTH REPO: logout') + await this.clearAuthenticationComponents() + } + + async isLoggedIn () { + const token = await this.tokenClient.getToken() + return !token.isEmpty() + } + + async clearAuthenticationComponents () { + this.httpClient.clearAuthorizationHeader() + this.tokenClient.clearToken() + this.user = this.getEmptyUser() + } + + getAbility () { + return this.ability + } + + getEmptyUser () { + return User.emptyUser() + } +} + +const authRepository = new AuthRepository() +export default authRepository diff --git a/frontend/lama/src/apps/authentication/routes.ts b/frontend/lama/src/apps/authentication/routes.ts new file mode 100644 index 0000000..cd74110 --- /dev/null +++ b/frontend/lama/src/apps/authentication/routes.ts @@ -0,0 +1,22 @@ +import Login from '@/apps/authentication/views/Login.vue' +import ForgotPassword from '@/apps/authentication/views/ForgotPassword.vue' +import ForgotPasswordConfirm from '@/apps/authentication/views/ForgotPasswordConfirm.vue' +import { RouteRecordRaw } from 'vue-router' + +export const authenticationRoutes: Array = [ + { + path: '/login', + name: 'Login', + component: Login + }, + { + path: '/forgot-password', + name: 'ForgotPassword', + component: ForgotPassword + }, + { + path: '/forgot-password-confirm', + name: 'ForgotPasswordConfirm', + component: ForgotPasswordConfirm + } +] diff --git a/frontend/lama/src/apps/authentication/store.ts b/frontend/lama/src/apps/authentication/store.ts new file mode 100644 index 0000000..32f4da7 --- /dev/null +++ b/frontend/lama/src/apps/authentication/store.ts @@ -0,0 +1,81 @@ +import { router } from '@/router' +import RepositoryFactory from '@/apps/authentication/repositories/RepositoryFactory' +import { Ability } from '@casl/ability' +import { Module } from 'vuex' +import { IRootState } from '@/store' + +const AuthenticationRepository = RepositoryFactory.get('authentication') + +export interface IAccountState { + user: { + username: string, + email: string, + ability: Ability + } +} + +export const store: Module = { + namespaced: true, + state: { + user: { + username: '', + email: '', + ability: new Ability([]) + } + }, + getters: { + user: state => state.user, + isLoggedIn: state => !!state.user.username + }, + mutations: { + SET_USER (state, { + username, + email, + ability + }) { + state.user.username = username + state.user.email = email + state.user.ability = ability + }, + INIT_USER (state) { + state.user.username = '' + state.user.email = '' + state.user.ability = new Ability([]) + } + }, + actions: { + async login ({ commit }, { + username, + password + }) { + const user = await AuthenticationRepository.login(username, password) + commit('SET_USER', user) + }, + async loadUser ({ + commit, + state + }) { + console.log('STORE: loadUser') + const user = await AuthenticationRepository.loadUser() + console.log('STORE: loadUser', user) + if (!user.isEmpty()) { + commit('SET_USER', user) + } else if (!state.user.username) { + commit('INIT_USER') + } + }, + async loginWithToken ({ + commit, + dispatch + }, token) { + const user = await AuthenticationRepository.initializeAuthenticationComponents(token) + commit('SET_USER', user) + }, + async logout ({ commit }) { + console.log('STORE: logout') + await AuthenticationRepository.logout() + commit('INIT_USER') + await router.push({ name: 'Login' }) + } + } +} diff --git a/frontend/lama/src/apps/authentication/views/ForgotPassword.vue b/frontend/lama/src/apps/authentication/views/ForgotPassword.vue new file mode 100644 index 0000000..a452b6c --- /dev/null +++ b/frontend/lama/src/apps/authentication/views/ForgotPassword.vue @@ -0,0 +1,87 @@ + + + + diff --git a/frontend/lama/src/apps/authentication/views/ForgotPasswordConfirm.vue b/frontend/lama/src/apps/authentication/views/ForgotPasswordConfirm.vue new file mode 100644 index 0000000..81f7afe --- /dev/null +++ b/frontend/lama/src/apps/authentication/views/ForgotPasswordConfirm.vue @@ -0,0 +1,96 @@ + + + + diff --git a/frontend/lama/src/apps/authentication/views/Login.vue b/frontend/lama/src/apps/authentication/views/Login.vue new file mode 100644 index 0000000..11c3a48 --- /dev/null +++ b/frontend/lama/src/apps/authentication/views/Login.vue @@ -0,0 +1,124 @@ + + + + diff --git a/frontend/lama/src/apps/realms/api/lama.ts b/frontend/lama/src/apps/realms/api/lama.ts new file mode 100644 index 0000000..d0f81d8 --- /dev/null +++ b/frontend/lama/src/apps/realms/api/lama.ts @@ -0,0 +1,6 @@ +// TODO: automatic set enpoint +const BaseUrl = 'http://localhost:8888/api/v1'.concat('/realm') +export const RealmEndpoint = { + Realm: (id: number) => BaseUrl + '/' + id + '/', + Realms: BaseUrl + '/' +} diff --git a/frontend/lama/src/apps/realms/components/RealmDetail.vue b/frontend/lama/src/apps/realms/components/RealmDetail.vue new file mode 100644 index 0000000..eb8c9a2 --- /dev/null +++ b/frontend/lama/src/apps/realms/components/RealmDetail.vue @@ -0,0 +1,52 @@ + + diff --git a/frontend/lama/src/apps/realms/components/RealmsTable.vue b/frontend/lama/src/apps/realms/components/RealmsTable.vue new file mode 100644 index 0000000..e166e08 --- /dev/null +++ b/frontend/lama/src/apps/realms/components/RealmsTable.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/frontend/lama/src/apps/realms/components/UpdateRealm.vue b/frontend/lama/src/apps/realms/components/UpdateRealm.vue new file mode 100644 index 0000000..b75ea59 --- /dev/null +++ b/frontend/lama/src/apps/realms/components/UpdateRealm.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/frontend/lama/src/apps/realms/exceptions/repository.ts b/frontend/lama/src/apps/realms/exceptions/repository.ts new file mode 100644 index 0000000..e3f9155 --- /dev/null +++ b/frontend/lama/src/apps/realms/exceptions/repository.ts @@ -0,0 +1,6 @@ +export class RealmRepositoryException extends Error { + constructor (message: string) { + super(message) + this.name = 'RealmException' + } +} diff --git a/frontend/lama/src/apps/realms/models/realm.ts b/frontend/lama/src/apps/realms/models/realm.ts new file mode 100644 index 0000000..5ade6a5 --- /dev/null +++ b/frontend/lama/src/apps/realms/models/realm.ts @@ -0,0 +1,33 @@ +export class Realm { + public id: number + public name: string + public email: string + public ldapBaseDn: string + public adminGroup: object + public defaultGroup: object + public userCount: number + public groupCount: number + + constructor ( + id: number, + name: string, + email: string, + ldapBaseDn: string, + adminGroup: object, + defaultGroup: object, + userCount: number, + groupCount: number) { + this.id = id + this.name = name + this.email = email + this.ldapBaseDn = ldapBaseDn + this.adminGroup = adminGroup + this.defaultGroup = defaultGroup + this.userCount = userCount + this.groupCount = groupCount + } + + static emptyRealm () { + return new Realm(-1, '', '', '', {}, {}, -1, -1) + } +} diff --git a/frontend/lama/src/apps/realms/repositories/realmRepository.ts b/frontend/lama/src/apps/realms/repositories/realmRepository.ts new file mode 100644 index 0000000..75ef9c4 --- /dev/null +++ b/frontend/lama/src/apps/realms/repositories/realmRepository.ts @@ -0,0 +1,60 @@ +import { RealmEndpoint } from '@/apps/realms/api/lama' +import { RealmRepositoryException } from '@/apps/realms/exceptions/repository' +import httpClient from '@/apps/authentication/clients/httpClient' +import { Realm } from '@/apps/realms/models/realm' + +export class RealmRepository { + async getRealm (id: number) { + try { + const response = await httpClient.client.get(RealmEndpoint.Realm(id)) + return new Realm( + response.data.realm.id, + response.data.realm.name, + response.data.realm.email, + response.data.realm.ldap_base_dn, + response.data.realm.admin_group, + response.data.realm.default_group, + response.data.user_count, + response.data.group_count + ) + } catch (error) { + throw new RealmRepositoryException(error.message) + } + } + + async updateRealm (id: number, data: Realm) { + try { + const response = await httpClient.client.patch(RealmEndpoint.Realm(id)) + return new Realm( + response.data.realm.id, + response.data.realm.name, + response.data.realm.email, + response.data.realm.ldap_base_dn, + response.data.realm.admin_group, + response.data.realm.default_group, + response.data.user_count, + response.data.group_count + ) + } catch (error) { + throw new RealmRepositoryException(error.message) + } + } + + async deleteRealm (id: number) { + try { + const response = await httpClient.client.delete(RealmEndpoint.Realm(id)) + return new Realm( + response.data.realm.id, + response.data.realm.name, + response.data.realm.email, + response.data.realm.ldap_base_dn, + response.data.realm.admin_group, + response.data.realm.default_group, + response.data.user_count, + response.data.group_count + ) + } catch (error) { + throw new RealmRepositoryException(error.message) + } + } +} diff --git a/frontend/lama/src/apps/realms/repositories/realmsRepository.ts b/frontend/lama/src/apps/realms/repositories/realmsRepository.ts new file mode 100644 index 0000000..8a5c800 --- /dev/null +++ b/frontend/lama/src/apps/realms/repositories/realmsRepository.ts @@ -0,0 +1,62 @@ +import { RealmEndpoint } from '@/apps/realms/api/lama' +import { RealmRepositoryException } from '@/apps/realms/exceptions/repository' +import httpClient from '@/apps/authentication/clients/httpClient' +import { Realm } from '@/apps/realms/models/realm' + +interface RawRealm { + realm: { + id: number + name: string + email: string + // eslint-disable-next-line camelcase + ldap_base_dn: string + // eslint-disable-next-line camelcase + admin_group: object + // eslint-disable-next-line camelcase + default_group: object + } + // eslint-disable-next-line camelcase + user_count: number + // eslint-disable-next-line camelcase + group_count: number +} + +export class RealmsRepository { + async getRealms () { + try { + const response = await httpClient.client.get(RealmEndpoint.Realms) + console.log('Realms', response.data.results) + const realms = response.data.results.map((rawRealm: RawRealm) => { + return new Realm(rawRealm.realm.id, + rawRealm.realm.name, + rawRealm.realm.email, + rawRealm.realm.ldap_base_dn, + rawRealm.realm.admin_group, + rawRealm.realm.default_group, + rawRealm.user_count, + rawRealm.group_count + ) + }) + console.log('Realms', realms) + return realms + } catch (error) { + throw new RealmRepositoryException(error.message) + } + } + + async addRealm (name: string, ldapBaseDn: string) { + try { + const response = await httpClient.client.post(RealmEndpoint.Realms, { + name: name, + ldap_base_dn: ldapBaseDn + }) + const data = response.data + return { + name: data.name, + ldapBaseDn: data.ldap_base_dn + } + } catch (error) { + throw new RealmRepositoryException(error.message) + } + } +} diff --git a/frontend/lama/src/apps/realms/store/realm.ts b/frontend/lama/src/apps/realms/store/realm.ts new file mode 100644 index 0000000..dde9b76 --- /dev/null +++ b/frontend/lama/src/apps/realms/store/realm.ts @@ -0,0 +1,57 @@ +import RepositoryFactory from '@/apps/authentication/repositories/RepositoryFactory' +import { Realm } from '@/apps/realms/models/realm' +import { Module } from 'vuex' +import { IRootState } from '@/store' + +const RealmRepository = RepositoryFactory.get('realm') + +export interface IRealmState { + status: string, + loading: boolean, + error: boolean, + realm: Realm +} + +export const realm: Module = { + namespaced: true, + state: { + status: '', + loading: false, + error: false, + realm: Realm.emptyRealm() + }, + mutations: { + SET_REALM (state: IRealmState, realm: Realm) { + state.realm = realm + }, + SET_LOADING_STATE (state: IRealmState, { loading, error }: {loading: boolean, error: boolean}) { + state.loading = loading + state.error = error + } + }, + actions: { + async fetchRealm ({ commit }, { realmId }: {realmId: number}) { + commit('SET_LOADING_STATE', { + loading: true, + error: false + }) + try { + const realm = await RealmRepository.getRealm(realmId) + commit('SET_REALM', { realm: realm }) + commit('SET_LOADING_STATE', { + loading: false, + error: false + }) + } catch (error) { + commit('SET_LOADING_STATE', { + loading: false, + error: error.message + }) + } + } + }, + getters: { + realm: (state: IRealmState) => state.realm, + loading: (state: IRealmState) => state.loading + } +} diff --git a/frontend/lama/src/apps/realms/store/realms.ts b/frontend/lama/src/apps/realms/store/realms.ts new file mode 100644 index 0000000..69b4671 --- /dev/null +++ b/frontend/lama/src/apps/realms/store/realms.ts @@ -0,0 +1,60 @@ +import { Module } from 'vuex' +import RepositoryFactory from '@/apps/authentication/repositories/RepositoryFactory' +import { Realm } from '@/apps/realms/models/realm' +import { IRootState } from '@/store' + +const RealmsRepository = RepositoryFactory.get('realms') + +export interface IRealmsState { + status: string, + loading: boolean, + error: boolean, + realms: Array +} + +export const realms: Module = { + namespaced: true, + state: { + status: '', + loading: false, + error: false, + realms: [] + }, + mutations: { + SET_REALMS (state, { realms }) { + state.realms = realms + }, + SET_LOADING_STATE (state, { loading, error }) { + state.loading = loading + state.error = error + } + }, + actions: { + async fetchRealms ({ commit }, user) { + commit('SET_LOADING_STATE', { + loading: true, + error: null + }) + try { + const realms = await RealmsRepository.getRealms() + commit('SET_REALMS', { realms: realms }) + commit('SET_LOADING_STATE', { + loading: false, + error: null + }) + } catch (error) { + // TODO: improve error response + commit('SET_LOADING_STATE', { + loading: false, + error: error.message + }) + } + } + }, + getters: { + realms: state => state.realms, + loading: state => state.loading, + error: state => state.error + }, + modules: {} +} diff --git a/frontend/lama/src/apps/realms/views/CreateRealm.vue b/frontend/lama/src/apps/realms/views/CreateRealm.vue new file mode 100644 index 0000000..aa52eae --- /dev/null +++ b/frontend/lama/src/apps/realms/views/CreateRealm.vue @@ -0,0 +1,100 @@ + + + diff --git a/frontend/lama/src/apps/realms/views/Realm.vue b/frontend/lama/src/apps/realms/views/Realm.vue new file mode 100644 index 0000000..6011492 --- /dev/null +++ b/frontend/lama/src/apps/realms/views/Realm.vue @@ -0,0 +1,98 @@ + + + diff --git a/frontend/lama/src/apps/realms/views/Realms.vue b/frontend/lama/src/apps/realms/views/Realms.vue new file mode 100644 index 0000000..5e50e85 --- /dev/null +++ b/frontend/lama/src/apps/realms/views/Realms.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/frontend/lama/src/apps/users/api/lama.ts b/frontend/lama/src/apps/users/api/lama.ts new file mode 100644 index 0000000..3e17451 --- /dev/null +++ b/frontend/lama/src/apps/users/api/lama.ts @@ -0,0 +1,6 @@ +// TODO: automatic set enpoint +const BaseUrl = 'http://localhost:8888/api/v1' +export const UserEndpoint = { + User: (realmId: number, userDn: string) => `${BaseUrl}/realm/${realmId}/user/${userDn}/`, + Users: (realmId: number) => `${BaseUrl}/realm/${realmId}/user/` +} diff --git a/frontend/lama/src/apps/users/exceptions/repository.ts b/frontend/lama/src/apps/users/exceptions/repository.ts new file mode 100644 index 0000000..bb94594 --- /dev/null +++ b/frontend/lama/src/apps/users/exceptions/repository.ts @@ -0,0 +1,6 @@ +export class UserRepositoryException extends Error { + constructor (message: string) { + super(message) + this.name = 'UserException' + } +} diff --git a/frontend/lama/src/apps/users/models/user.ts b/frontend/lama/src/apps/users/models/user.ts new file mode 100644 index 0000000..937d7bb --- /dev/null +++ b/frontend/lama/src/apps/users/models/user.ts @@ -0,0 +1,29 @@ +class Group {} + +export class User { + public dn: string + public name: string + public displayName: string + public email: string + public groups: Array + public lastLogin: Date + + constructor ( + dn: string, + name: string, + displayName: string, + email: string, + groups: Array, + lastLogin: Date) { + this.dn = dn + this.name = name + this.displayName = displayName + this.email = email + this.groups = groups + this.lastLogin = lastLogin + } + + static emptyUser () { + return new User('', '', '', '', [], new Date()) + } +} diff --git a/frontend/lama/src/apps/users/repositories/userRepository.ts b/frontend/lama/src/apps/users/repositories/userRepository.ts new file mode 100644 index 0000000..04cbbfe --- /dev/null +++ b/frontend/lama/src/apps/users/repositories/userRepository.ts @@ -0,0 +1,36 @@ +import { UserEndpoint } from '@/apps/users/api/lama' +import { UserRepositoryException } from '@/apps/users/exceptions/repository' +import httpClient from '@/apps/authentication/clients/httpClient' +import { User } from '@/apps/users/models/user' + +export class UserRepository { + async getUser (realmId: number, userDn: string) { + try { + const response = await httpClient.client.get(UserEndpoint.User(realmId, userDn)) + // TODO: convert to User + return response.data + } catch (error) { + throw new UserRepositoryException(error.message) + } + } + + async updateUser (realmId: number, userDn: string, user: User) { + try { + const response = await httpClient.client.patch(UserEndpoint.User(realmId, userDn)) + // TODO: convert to User + return response.data + } catch (error) { + throw new UserRepositoryException(error.message) + } + } + + async deleteUser (realmId: number, userDn: string) { + try { + const response = await httpClient.client.delete(UserEndpoint.User(realmId, userDn)) + // TODO: convert to User + return response.data + } catch (error) { + throw new UserRepositoryException(error.message) + } + } +} diff --git a/frontend/lama/src/apps/users/repositories/usersRepository.ts b/frontend/lama/src/apps/users/repositories/usersRepository.ts new file mode 100644 index 0000000..a9aef6b --- /dev/null +++ b/frontend/lama/src/apps/users/repositories/usersRepository.ts @@ -0,0 +1,30 @@ +import httpClient from '@/apps/authentication/clients/httpClient' +import { UserEndpoint } from '@/apps/users/api/lama' +import { UserRepositoryException } from '@/apps/users/exceptions/repository' +import { User } from '@/apps/users/models/user' + +export class UsersRepository { + async getUsers (realmId: number) { + try { + const response = await httpClient.client.get(UserEndpoint.Users(realmId)) + // TODO: convert to User + return response.data.results + } catch (error) { + throw new UserRepositoryException(error.message) + } + } + + async addUser (realmId: number, user: User) { + try { + const response = await httpClient.client.post(UserEndpoint.Users(realmId), user) + // TODO: convert to User + const data = response.data + return { + name: data.name, + ldapBaseDn: data.ldap_base_dn + } + } catch (error) { + throw new UserRepositoryException(error.message) + } + } +} diff --git a/frontend/lama/src/apps/users/store/user.ts b/frontend/lama/src/apps/users/store/user.ts new file mode 100644 index 0000000..c6c33de --- /dev/null +++ b/frontend/lama/src/apps/users/store/user.ts @@ -0,0 +1,67 @@ +import axios from 'axios' +import { Module } from 'vuex' +import { IRootState } from '@/store/index' +import { User } from '@/apps/users/models/user' + +export interface IUserState { + status: string + loading: boolean + error: boolean + user: User +} + +export const user: Module = { + namespaced: true, + state: { + status: '', + loading: false, + error: false, + user: User.emptyUser() + }, + mutations: { + SET_USER (state, { user }) { + state.user = user + }, + SET_LOADING_STATE (state, { + loading, + error + }) { + state.loading = loading + state.error = error + } + }, + actions: { + fetchUser ({ + dispatch, + commit, + rootState + }, { + realmId, + userDn + }) { + const url = rootState.config.lamaEndpoint.concat('/v1/realm/').concat(realmId).concat('/user/').concat(userDn).concat('/') + commit('SET_LOADING_STATE', { + loading: true, + error: false + }) + axios.get(url) + .then((response) => { + commit('SET_USER', { user: response.data }) + commit('SET_LOADING_STATE', { + loading: false, + error: false + }) + }) + .catch(() => { + commit('SET_LOADING_STATE', { + loading: false, + error: true + }) + }) + } + }, + getters: { + user: state => state.user + }, + modules: {} +} diff --git a/frontend/lama/src/apps/users/store/users.ts b/frontend/lama/src/apps/users/store/users.ts new file mode 100644 index 0000000..5e0df6f --- /dev/null +++ b/frontend/lama/src/apps/users/store/users.ts @@ -0,0 +1,64 @@ +import axios from 'axios' +import { Module } from 'vuex' +import { IRootState } from '@/store/index' +import { User } from '@/apps/users/models/user' + +export interface IUsersState { + status: string + loading: boolean + error: boolean + users: Array +} + +export const users: Module = { + namespaced: true, + state: { + status: '', + loading: false, + error: false, + users: [] + }, + mutations: { + SET_USERS (state, { users }) { + state.users = users + }, + SET_LOADING_STATE (state, { + loading, + error + }) { + state.loading = loading + state.error = error + } + }, + actions: { + fetchUsers ({ + dispatch, + commit, + rootState + }, { realmId }) { + const url = rootState.config.lamaEndpoint.concat('/v1/realm/').concat(realmId).concat('/user/') + commit('SET_LOADING_STATE', { + loading: true, + error: false + }) + axios.get(url) + .then((response) => { + commit('SET_USERS', { users: response.data.results }) + commit('SET_LOADING_STATE', { + loading: false, + error: false + }) + }) + .catch(() => { + commit('SET_LOADING_STATE', { + loading: false, + error: true + }) + }) + } + }, + getters: { + users: state => state.users + }, + modules: {} +} diff --git a/frontend/lama/src/apps/users/views/User.vue b/frontend/lama/src/apps/users/views/User.vue new file mode 100644 index 0000000..4f1bd76 --- /dev/null +++ b/frontend/lama/src/apps/users/views/User.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/frontend/lama/src/apps/users/views/Users.vue b/frontend/lama/src/apps/users/views/Users.vue new file mode 100644 index 0000000..280a030 --- /dev/null +++ b/frontend/lama/src/apps/users/views/Users.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/frontend/lama/src/assets/logo.svg b/frontend/lama/src/assets/logo.svg new file mode 100644 index 0000000..a64296c --- /dev/null +++ b/frontend/lama/src/assets/logo.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/lama/src/assets/styles/_footer.scss b/frontend/lama/src/assets/styles/_footer.scss new file mode 100644 index 0000000..22a769f --- /dev/null +++ b/frontend/lama/src/assets/styles/_footer.scss @@ -0,0 +1,8 @@ +footer { + position: fixed; + bottom: 0; + width: 100%; + height: var(--footer-height) !important; + padding-top: 0.5rem; + background-color: var(--footer-background-color); +} diff --git a/frontend/lama/src/assets/styles/_neomorph.scss b/frontend/lama/src/assets/styles/_neomorph.scss new file mode 100644 index 0000000..8a39912 --- /dev/null +++ b/frontend/lama/src/assets/styles/_neomorph.scss @@ -0,0 +1,8 @@ +.neo-morph { + box-shadow: .3rem .3rem 1rem #555555, -.3rem -.3rem 1rem #ffffff; + border-radius: 2rem; + padding: 1rem 1.5rem; +} + + + diff --git a/frontend/lama/src/assets/styles/_variables.scss b/frontend/lama/src/assets/styles/_variables.scss new file mode 100644 index 0000000..03f0a4a --- /dev/null +++ b/frontend/lama/src/assets/styles/_variables.scss @@ -0,0 +1,64 @@ +$enable-rounded: false; +$enable-shadows: true; +$bv-enable-table-stacked: true; +$body-bg: #ffefd9; +$body-color: #2f2f2f; +//$primary-color: #e97e2e; +$primary-color: #1260ff; + +// Theme color default definitions +//$primary: #e97e2e !default; +$primary: #005eff !default; +$secondary: #898886 !default; +$success: #7751ff !default; +//$info: $cyan !default; +//$warning: $yellow !default; +$danger: #f48882 !default; +//$light: $gray-100 !default; +//$dark: $gray-800 !default; + +$border-radius: 2rem !default; +$border-radius-base: 1rem !default; +$border-radius-large: 50% !default; +$border-radius-small: 50% !default; + +$btn-border-radius-base: $border-radius-base !default; +$btn-border-radius-large: $border-radius-large !default; +$btn-border-radius-small: $border-radius-small !default; + +$input-border-radius: $border-radius-base !default; +$input-border-radius-large: $border-radius-large !default; +$input-border-radius-small: $border-radius-small !default; + +$navbar-border-radius: $border-radius-base !default; +$nav-pills-border-radius: $border-radius-base !default; +$pager-border-radius: 15px !default; +$alert-border-radius: $border-radius-base !default; +$progress-border-radius: $border-radius-base !default; +$list-group-border-radius: $border-radius-base !default; +$panel-border-radius: $border-radius-base !default; +$thumbnail-border-radius: $border-radius-base !default; +$badge-border-radius: 10px !default; + + //@media (prefers-color-scheme: light) { + // :root { + // --background-color: #ffffff; + // --footer-background-color: #282828; + // --secondary: #fbb071 !important; + // --sidbar-background-color: #f6d76f; + // --sidbar-activation-button-background-color: #f6d76f; + // --sidbar-activation-button-color: #000; + // --page-background: #fbb071; + // --primary: #fbb071 !important; + // --text-color: #343a40; + // } + // } + // + // @media (prefers-color-scheme: dark) { + // :root { + // --background-color: #222831; + // --page-background: #393e46; + // --primary-color: #b55400; + // --text-color: #eeeeee; + // } + // } diff --git a/frontend/lama/src/assets/styles/custom.scss b/frontend/lama/src/assets/styles/custom.scss new file mode 100644 index 0000000..925396f --- /dev/null +++ b/frontend/lama/src/assets/styles/custom.scss @@ -0,0 +1,12 @@ +@import "variables"; +@import "floatingLabels"; +@import "neomorph"; +@import "footer"; + +html, body { + width: 100%; + height: 100%; +} + +@import 'node_modules/bootstrap/scss/bootstrap'; +@import 'node_modules/bootstrap-vue/src/index.scss'; diff --git a/frontend/lama/src/assets/styles/floatingLabels.scss b/frontend/lama/src/assets/styles/floatingLabels.scss new file mode 100644 index 0000000..9091d61 --- /dev/null +++ b/frontend/lama/src/assets/styles/floatingLabels.scss @@ -0,0 +1,56 @@ +:root { + --floating-input-padding-x: .5rem; + --floating-input-padding-y: .5rem; +} + +.floating-label-input-group .form-control { + height: calc(1.5em + 2 * var(--floating-input-padding-y) + 2px); +} + +.floating-label-input-group { + position: relative; + margin-bottom: 1rem; +} + +.floating-label-input-group > input, +.floating-label-input-group > label { + padding: var(--floating-input-padding-y) var(--floating-input-padding-x); +} + +.floating-label-input-group input::placeholder, +.floating-label-input-group input::-webkit-input-placeholder, +.floating-label-input-group input::-webkit-input-placeholder, +.floating-label-input-group input:-moz-placeholder, /* Firefox 18- */ +.floating-label-input-group input::-moz-placeholder, /* Firefox 19+ */ +.floating-label-input-group input:-ms-input-placeholder { + color: transparent !important; +} + +.floating-label-input-group > label { + position: absolute; + display: block; + top: 0; + margin-bottom: 0; /* Override default `