diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 000000000..4eaaa52be --- /dev/null +++ b/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +type: kubernetes +name: default +steps: +- name: docker + image: plugins/docker + settings: + repo: porto.interlegis.leg.br/spdt/sapl + registry: porto.interlegis.leg.br + mirror: https://registrycache.interlegis.leg.br + pull: if-not-exists + dockerfile: docker/Dockerfile + auto_tag: true + username: + from_secret: porto_user + password: + from_secret: porto_pw diff --git a/frontend/.eslintrc.js b/.eslintrc.js similarity index 75% rename from frontend/.eslintrc.js rename to .eslintrc.js index 5cc3e5896..d3a535cbe 100644 --- a/frontend/.eslintrc.js +++ b/.eslintrc.js @@ -11,7 +11,7 @@ module.exports = { ], rules: { 'generator-star-spacing': 'off', - //'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + // 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', camelcase: 0 }, @@ -20,7 +20,8 @@ module.exports = { 'vue' ], parserOptions: { - parser: 'babel-eslint' + parser: '@babel/eslint-parser' + // requireConfigFile: false }, globals: { diff --git a/README.rst b/README.rst index 349d8d5e4..b7ead05d1 100644 --- a/README.rst +++ b/README.rst @@ -6,6 +6,19 @@ SAPL - Sistema de Apoio ao Processo Legislativo *********************************************** +UPDATE! [02/08/2022]: Novas alterações foram realizadas nos containers do SAPL e no docker-compose.yaml. Estas mudanças estarão funcionais a partir do próximo release. Enquanto isso não vem, continuem utilizando as versões antigas do docker-compose.yaml. + +~~**UPDATE! [16/05/2022]: Devido a refatorações recentes no Solr, foi necessårio +adaptar o uso deste pelo SAPL. Para isso foram feitas mudanças no docker-compose.yml +como a adição de um container para o ZooKeeper e upload de arquivo de segurança. +Recomendamos fortemente que para a versão 3.1.162 e superior do SAPL seja feito o backup do +Banco de Dados, limpeza dos containers no host (`sudo docker system prune -a -f --volumes`), +e consequente instalação dos novos containers a partir da execução do docker-compose. É +importante frisar que o comando `docker system prune` irá apagar TODOS os containers E +TODOS os volumes (incluindo o BD) do host. Após o inicio dos novos containers, proceda +com a restauração do BD, pare os containers e reinicie novamente para indexação textual. +Além disso, o docker-compose.yml foi movido para a pasta dist/ na raiz do projeto.**~~ + Esta página reúne informações úteis sobre o desenvolvimento atual do SAPL. Isso significa que toda a informação aqui apresentada aplica-se apenas para a versão 3.1 e superior. @@ -73,3 +86,4 @@ Issues * Abra todas as questões sobre o desenvolvimento atual no `Github Issue Tracker `_. * Você pode escrever suas ``issues`` em Português ou Inglês (ao menos por enquanto). + diff --git a/frontend/babel.config.js b/babel.config.js similarity index 100% rename from frontend/babel.config.js rename to babel.config.js diff --git a/dist/bin/upload_configset.sh b/dist/bin/upload_configset.sh new file mode 100755 index 000000000..68559c56e --- /dev/null +++ b/dist/bin/upload_configset.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +SOLR_USER=solr +SOLR_PASSWORD=SolrRocks +SOLR_HOST=localhost +SOLR_PORT=8983 + +CONFIGSET_NAME=sapl_configset +CONFIGSET_FILE=sapl_configset.zip + +export SOLR_URL="http://$SOLR_USER:$SOLR_PASSWORD@$SOLR_HOST:$SOLR_PORT/solr/admin/configs?action=UPLOAD&name=$CONFIGSET_NAME&wt=json" +curl -X POST -L -F "file=@$CONFIGSET_FILE;type=application/zip" $SOLR_URL diff --git a/dist/docker-compose.yml b/dist/docker-compose.yml new file mode 100644 index 000000000..e2fad5a38 --- /dev/null +++ b/dist/docker-compose.yml @@ -0,0 +1,111 @@ +version: "3.7" +services: + sapldb: + image: postgres:10.5-alpine + restart: always + container_name: postgres + labels: + NAME: "postgres" + environment: + POSTGRES_PASSWORD: sapl + POSTGRES_USER: sapl + POSTGRES_DB: sapl + PGDATA : /var/lib/postgresql/data/ + volumes: + - sapldb_data:/var/lib/postgresql/data/ + ports: + - "5433:5432" + networks: + - sapl-net + solr1: + image: solr:8.11 + restart: unless-stopped + command: bash -c "docker-entrypoint.sh solr zk cp file:/var/security.json zk:security.json && exec solr-foreground" + container_name: solr + labels: + NAME: "solr" + ports: + - "8983:8983" + environment: + - ZK_HOST=zoo1:2181 + - SOLR_HEAP=1g + - SOLR_OPTS=-Djute.maxbuffer=50000000 + networks: + - sapl-net + depends_on: + - zoo1 + volumes: + - type: bind + source: ./solr_cloud/security.json + target: /var/security.json + - solr_data:/opt/solr/server/solr + - solr_configsets:/opt/solr/server/solr/configsets + + sapl: + image: interlegis/sapl:3.1.163-RC2 +# build: +# context: ../ +# dockerfile: ./docker/Dockerfile + container_name: sapl + labels: + NAME: "sapl" + restart: always + environment: + ADMIN_PASSWORD: interlegis + ADMIN_EMAIL: email@dominio.net + DEBUG: 'False' + EMAIL_PORT: 587 + EMAIL_USE_TLS: 'False' + EMAIL_HOST: smtp.dominio.net + EMAIL_HOST_USER: usuariosmtp + EMAIL_SEND_USER: usuariosmtp + EMAIL_HOST_PASSWORD: senhasmtp + USE_SOLR: 'True' + SOLR_COLLECTION: sapl + SOLR_URL: http://solr:SolrRocks@solr1:8983 + TZ: America/Sao_Paulo + volumes: + - sapl_data:/var/interlegis/sapl/data + - sapl_media:/var/interlegis/sapl/media + depends_on: + - sapldb + - solr1 + ports: + - "80:80" + networks: + - sapl-net + zoo1: + image: zookeeper:3.8 + container_name: zoo1 + hostname: zoo1 + restart: unless-stopped + ports: + - 2181:2181 + - 7001:7000 + environment: + ZOO_MY_ID: 1 + ZOOKEEPER_TICK_TIME: 2000 + ZOOKEEPER_CLIENT_PORT: 2181 + JVMFLAGS: "-Xmx1024m -Djute.maxbuffer=50000000" + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 + ZOO_LOG4J_PROP: "INFO,ROLLINGFILE" + ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok + ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true" + volumes: + - zoo_data:/data + - zoo_log:/datalog + networks: + - sapl-net +networks: + sapl-net: + name: sapl-net + driver: bridge +volumes: + sapldb_data: + sapl_data: + sapl_media: + solr_data: + solr_home: + solr_configsets: + zoo_data: + zoo_log: diff --git a/dist/solr_cloud/security.json b/dist/solr_cloud/security.json new file mode 100644 index 000000000..e0b8697dd --- /dev/null +++ b/dist/solr_cloud/security.json @@ -0,0 +1,13 @@ +{ +"authentication":{ + "blockUnknown": true, + "class":"solr.BasicAuthPlugin", + "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, + "forwardCredentials": false, + "realm": "Solr Login" +}, +"authorization":{ + "class":"solr.RuleBasedAuthorizationPlugin", + "permissions":[{"name":"security-edit", "role":"admin"}], + "user-role":{"solr":"admin"} +}} diff --git a/docker/Dockerfile b/docker/Dockerfile index 69ef33de3..a40bd91fe 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,20 +1,19 @@ -FROM python:3.7-slim-buster +FROM python:3.9-slim-buster # Setup env ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 ENV PYTHONDONTWRITEBYTECODE 1 - -#ENV PYTHONFAULTHANDLER 1 - +ENV PYTHONUNBUFFERED=1 ENV DEBIAN_FRONTEND noninteractive ENV BUILD_PACKAGES apt-utils apt-file libpq-dev graphviz-dev build-essential git pkg-config \ python3-dev libxml2-dev libjpeg-dev libssl-dev libffi-dev libxslt1-dev \ libcairo2-dev software-properties-common python3-setuptools python3-pip +## NAO EH PRA TIRAR O vim DA LISTA DE COMANDOS INSTALADOS!!! ENV RUN_PACKAGES graphviz python3-lxml python3-magic postgresql-client python3-psycopg2 \ - poppler-utils curl jq bash python3-venv tzdata nodejs \ + poppler-utils curl jq bash vim python3-venv tzdata nodejs \ fontconfig ttf-dejavu python nginx RUN mkdir -p /var/interlegis/sapl @@ -33,12 +32,13 @@ RUN apt-get update && \ SUDO_FORCE_REMOVE=yes apt-get purge -y --auto-remove $BUILD_PACKAGES && \ apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* -ENV HOME=/var/interlegis/sapl +WORKDIR /var/interlegis/sapl/ +ADD . /var/interlegis/sapl/ COPY docker/start.sh $HOME -COPY docker/check_solr.sh $HOME -COPY docker/solr_api.py $HOME -COPY docker/busy-wait.sh $HOME +COPY docker/solr_cli.py $HOME +COPY docker/wait-for-pg.sh $HOME +COPY docker/wait-for-solr.sh $HOME COPY docker/create_admin.py $HOME COPY docker/genkey.py $HOME COPY docker/gunicorn_start.sh $HOME @@ -54,7 +54,8 @@ RUN rm -rf /var/interlegis/sapl/sapl/.env && \ rm -rf /var/interlegis/sapl/sapl.db RUN chmod +x /var/interlegis/sapl/start.sh && \ - chmod +x /var/interlegis/sapl/check_solr.sh && \ + chmod +x /var/interlegis/sapl/wait-for-solr.sh && \ + chmod +x /var/interlegis/sapl/wait-for-pg.sh && \ ln -sf /dev/stdout /var/log/nginx/access.log && \ ln -sf /dev/stderr /var/log/nginx/error.log && \ mkdir /var/log/sapl/ && touch /var/interlegis/sapl/sapl.log && \ diff --git a/docker/config/nginx/nginx.conf b/docker/config/nginx/nginx.conf index 3037f3080..29b9e805c 100644 --- a/docker/config/nginx/nginx.conf +++ b/docker/config/nginx/nginx.conf @@ -23,7 +23,11 @@ http { sendfile off; #tcp_nopush on; - keepalive_timeout 65; + keepalive_timeout 300; + + proxy_connect_timeout 75s; + proxy_read_timeout 300s; + gzip on; gzip_disable "MSIE [1-6]\\.(?!.*SV1)"; diff --git a/docker/config/nginx/sapl.conf b/docker/config/nginx/sapl.conf index ef3dac421..18641045e 100644 --- a/docker/config/nginx/sapl.conf +++ b/docker/config/nginx/sapl.conf @@ -11,6 +11,31 @@ server { client_max_body_size 4G; + location /api/ { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, HEAD, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'Access-Control-Allow-Origin,XMLHttpRequest,Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With'; + add_header 'Access-Control-Expose-Headers' 'Access-Control-Allow-Origin,XMLHttpRequest,Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With'; + +# handle the browser's preflight steps + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, HEAD, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_pass http://sapl_server; + } + location /static/ { alias /var/interlegis/sapl/collected_static/; } @@ -21,17 +46,12 @@ server { location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_redirect off; - - if (!-f $request_filename) { - proxy_pass http://sapl_server; - break; - } + proxy_pass http://sapl_server; } + error_page 500 502 503 504 /500.html; location = /500.html { root /var/interlegis/sapl/sapl/static/; diff --git a/docker/docker-compose.yml b/docker/docker-compose.yaml similarity index 92% rename from docker/docker-compose.yml rename to docker/docker-compose.yaml index e42e093bb..6451a881f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yaml @@ -18,7 +18,7 @@ services: networks: - sapl-net saplsolr: - image: solr:8.3 + image: solr:8.11 restart: always command: bin/solr start -c -f container_name: solr @@ -32,7 +32,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.162-RC6 + image: interlegis/sapl:3.1.163-RC6 # build: # context: ../ # dockerfile: ./docker/Dockerfile @@ -52,7 +52,8 @@ services: EMAIL_HOST_PASSWORD: senhasmtp USE_SOLR: 'True' SOLR_COLLECTION: sapl - SOLR_URL: http://saplsolr:8983 + SOLR_URL: http://solr:solr@saplsolr:8983 + IS_ZK_EMBEDDED: 'True' TZ: America/Sao_Paulo volumes: - sapl_data:/var/interlegis/sapl/data diff --git a/docker/gunicorn_start.sh b/docker/gunicorn_start.sh index 3f46a5f8f..9ef4b7982 100755 --- a/docker/gunicorn_start.sh +++ b/docker/gunicorn_start.sh @@ -25,7 +25,7 @@ USER=`whoami` # the user to run as (*) GROUP=`whoami` # the group to run as (*) NUM_WORKERS=3 # how many worker processes should Gunicorn spawn (*) # NUM_WORKERS = 2 * CPUS + 1 -TIMEOUT=60 +TIMEOUT=300 MAX_REQUESTS=100 # number of requests before restarting worker DJANGO_SETTINGS_MODULE=sapl.settings # which settings file should Django use (*) DJANGO_WSGI_MODULE=sapl.wsgi # WSGI module name (*) diff --git a/docker/solr_api.py b/docker/solr_cli.py similarity index 69% rename from docker/solr_api.py rename to docker/solr_cli.py index 3ca06bba7..d452d1fe9 100755 --- a/docker/solr_api.py +++ b/docker/solr_cli.py @@ -1,18 +1,102 @@ -from io import BytesIO +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- import argparse -import os -import requests +import logging +import re +import secrets import subprocess import sys import zipfile +from base64 import b64encode, b64decode +from hashlib import sha256 +from io import BytesIO from pathlib import Path -## -## Este módulo deve ser executado na raiz do projeto -## +import requests +from kazoo.client import KazooClient + +# +# Este módulo deve ser executado na raiz do projeto +# + +logging.basicConfig() + +SECURITY_FILE_TEMPLATE = """ + { + "authentication":{ + "blockUnknown": true, + "class":"solr.BasicAuthPlugin", + "credentials":{"%s":"%s %s"}, + "forwardCredentials": false, + "realm": "Solr Login" + }, + "authorization":{ + "class":"solr.RuleBasedAuthorizationPlugin", + "permissions":[{"name":"security-edit", "role":"admin"}], + "user-role":{"%s":"admin"} + } + } +""" + +URL_PATTERN = 'https?://(([a-zA-Z0-9]+):([a-zA-Z0-9]+)@)?([a-zA-Z0-9.-]+)(:[0-9]{4})?' + + +def solr_hash_password(password: str, salt: str = None): + """ + Generates a password and salt to be used in Basic Auth Solr + + password: clean text password string + salt (optional): base64 salt string + returns: sha256 hash of password and salt (both base64 strings) + """ + m = sha256() + if salt is None: + salt = secrets.token_bytes(32) + else: + salt = b64decode(salt) + m.update(salt + password.encode('utf-8')) + digest = m.digest() -class SolrClient: + m = sha256() + m.update(digest) + digest = m.digest() + + cypher = b64encode(digest).decode('utf-8') + salt = b64encode(salt).decode('utf-8') + return cypher, salt + + +def create_security_file(username, password): + print("Creating security.json file...") + with open("security.json", "w") as f: + cypher, salt = solr_hash_password(password) + f.write(SECURITY_FILE_TEMPLATE % (username, cypher, salt, username)) + print("file created!") + + +def upload_security_file(zk_host): + zk_port = 9983 # embedded ZK port + print(f"Uploading security file to Solr, ZK server={zk_host}:{zk_port}...") + try: + with open('security.json', 'r') as f: + data = f.read() + zk = KazooClient(hosts=f"{zk_host}:{zk_port}") + zk.start() + print("Uploading security.json file...") + if zk.exists('/security.json'): + zk.set("/security.json", str.encode(data)) + else: + zk.create("/security.json", str.encode(data)) + data, stat = zk.get('/security.json') + print("file uploaded!") + print(data.decode('utf-8')) + zk.stop() + except Exception as e: + print(e) + sys.exit(-1) + +class SolrClient: LIST_CONFIGSETS = "{}/solr/admin/configs?action=LIST&omitHeader=true&wt=json" UPLOAD_CONFIGSET = "{}/solr/admin/configs?action=UPLOAD&name={}&wt=json" LIST_COLLECTIONS = "{}/solr/admin/collections?action=LIST&wt=json" @@ -129,7 +213,7 @@ class SolrClient: print(res.content) return False return True - + def delete_collection(self, collection_name): if collection_name == '*': collections = self.list_collections() @@ -160,6 +244,22 @@ class SolrClient: print("Num docs: %s" % num_docs) +def setup_embedded_zk(solr_url): + match = re.match(URL_PATTERN, solr_url) + if match: + _, solr_user, solr_pwd, solr_host, solr_port = match.groups() + + if solr_user and solr_pwd and solr_host: + create_security_file(solr_user, solr_pwd) + upload_security_file(solr_host) + else: + print(f"Missing Solr's username, password, and host: {solr_user}/{solr_pwd}/{solr_host}") + sys.exit(-1) + else: + print(f"Solr URL path doesn't match the required format: {solr_url}") + sys.exit(-1) + + if __name__ == '__main__': parser = argparse.ArgumentParser(description='Cria uma collection no Solr') @@ -178,6 +278,9 @@ if __name__ == '__main__': parser.add_argument('-ms', type=int, dest='max_shards_per_node', nargs='?', help='Max shards per node (default=1)', default=1) + parser.add_argument("--embedded_zk", default=False, action="store_true", + help="Embedded ZooKeeper") + try: args = parser.parse_args() except IOError as msg: @@ -185,10 +288,17 @@ if __name__ == '__main__': sys.exit(-1) url = args.url.pop() - collection = args.collection.pop() + if args.embedded_zk: + print("Setup embedded ZooKeeper...") + setup_embedded_zk(url) + + collection = args.collection.pop() client = SolrClient(url=url) + ## Add --force to force upload security.json, configset upload and collection recreation + ## it will clean the solr server before proceeding + ## Add --clean option to clean uploadconfig and collection if not client.exists_collection(collection): print("Collection '%s' doesn't exists. Creating a new one..." % collection) created = client.create_collection(collection, @@ -200,6 +310,7 @@ if __name__ == '__main__': else: print("Collection '%s' exists." % collection) + ## Add --disable-index to disable auto index num_docs = client.get_num_docs(collection) if num_docs == 0: print("Performing a full reindex of '%s' collection..." % collection) diff --git a/docker/start.sh b/docker/start.sh index 868942bfd..57b83b484 100755 --- a/docker/start.sh +++ b/docker/start.sh @@ -22,7 +22,6 @@ create_env() { touch $FILENAME - # explicitly use '>' to erase any previous content echo "SECRET_KEY="$KEY > $FILENAME # now only appends @@ -39,14 +38,14 @@ create_env() { echo "USE_SOLR = ""${USE_SOLR-False}" >> $FILENAME echo "SOLR_COLLECTION = ""${SOLR_COLLECTION-sapl}" >> $FILENAME echo "SOLR_URL = ""${SOLR_URL-http://localhost:8983}" >> $FILENAME + echo "IS_ZK_EMBEDDED = ""${IS_ZK_EMBEDDED-False}" >> $FILENAME - echo "[ENV FILE] done." } create_env -/bin/bash busy-wait.sh $DATABASE_URL +/bin/bash wait-for-pg.sh $DATABASE_URL yes yes | python3 manage.py migrate @@ -55,39 +54,46 @@ yes yes | python3 manage.py migrate USE_SOLR="${USE_SOLR:=False}" SOLR_URL="${SOLR_URL:=http://localhost:8983}" SOLR_COLLECTION="${SOLR_COLLECTION:=sapl}" - NUM_SHARDS=${NUM_SHARDS:=1} RF=${RF:=1} MAX_SHARDS_PER_NODE=${MAX_SHARDS_PER_NODE:=1} +IS_ZK_EMBEDDED="${IS_ZK_EMBEDDED:=False}" if [ "${USE_SOLR-False}" == "True" ] || [ "${USE_SOLR-False}" == "true" ]; then - echo "SOLR configurations" + echo "Solr configurations" echo "===================" echo "URL: $SOLR_URL" echo "COLLECTION: $SOLR_COLLECTION" echo "NUM_SHARDS: $NUM_SHARDS" echo "REPLICATION FACTOR: $RF" echo "MAX SHARDS PER NODE: $MAX_SHARDS_PER_NODE" + echo "ASSUME ZK EMBEDDED: $IS_ZK_EMBEDDED" echo "=========================================" - echo "running solr script" - /bin/bash check_solr.sh $SOLR_URL + echo "running Solr script" + /bin/bash wait-for-solr.sh $SOLR_URL CHECK_SOLR_RETURN=$? if [ $CHECK_SOLR_RETURN == 1 ]; then - echo "Connecting to solr..." - python3 solr_api.py -u $SOLR_URL -c $SOLR_COLLECTION -s $NUM_SHARDS -rf $RF -ms $MAX_SHARDS_PER_NODE & - # python3 manage.py rebuild_index --noinput & + echo "Connecting to Solr..." + + + if [ "${IS_ZK_EMBEDDED-False}" == "True" ] || [ "${IS_ZK_EMBEDDED-False}" == "true" ]; then + ZK_EMBEDDED="--embedded_zk" + echo "Assuming embedded ZooKeeper instalation..." + fi + + python3 solr_cli.py -u $SOLR_URL -c $SOLR_COLLECTION -s $NUM_SHARDS -rf $RF -ms $MAX_SHARDS_PER_NODE $ZK_EMBEDDED & else echo "Solr is offline, not possible to connect." fi else - echo "Suporte a SOLR não inicializado." + echo "Solr support is not initialized." fi -echo "Criando usuário admin..." +echo "Creating admin user..." user_created=$(python3 create_admin.py 2>&1) diff --git a/docker/busy-wait.sh b/docker/wait-for-pg.sh similarity index 100% rename from docker/busy-wait.sh rename to docker/wait-for-pg.sh diff --git a/docker/check_solr.sh b/docker/wait-for-solr.sh similarity index 82% rename from docker/check_solr.sh rename to docker/wait-for-solr.sh index 370b4adcf..df1fab5bb 100644 --- a/docker/check_solr.sh +++ b/docker/wait-for-solr.sh @@ -4,10 +4,10 @@ SOLR_URL=$1 -RETRY_COUNT=1 -RETRY_LIMIT=4 +RETRY_COUNT=0 +RETRY_LIMIT=60 # wait until 1 min -echo "Waiting for solr connection at $SOLR_URL ..." +echo "Waiting for Solr connection at $SOLR_URL ..." while [[ $RETRY_COUNT < $RETRY_LIMIT ]]; do echo "Attempt to connect to solr: $RETRY_COUNT of $RETRY_LIMIT" let RETRY_COUNT=RETRY_COUNT+1; @@ -18,7 +18,7 @@ while [[ $RETRY_COUNT < $RETRY_LIMIT ]]; do echo "Solr server is up!" exit 1 else - sleep 3 + sleep 1 fi done echo "Solr connection failed." diff --git a/docs/instalacao31.rst b/docs/instalacao31.rst index eee587a46..4ebd598d3 100644 --- a/docs/instalacao31.rst +++ b/docs/instalacao31.rst @@ -221,10 +221,10 @@ Frontend do SAPL Preparação do ambiente:: ---------------------- -* **Instalação do NodeJs LTS 10.15.x**:: +* **Instalação do NodeJs LTS 14.x**:: sudo apt-get install curl - curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - + curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs * **Instalação do Yarn**:: diff --git a/docs/solr.rst b/docs/solr.rst index 13bdbf02c..159b4211d 100644 --- a/docs/solr.rst +++ b/docs/solr.rst @@ -7,7 +7,7 @@ Instruções para instalar o Solr Solr é uma plataforma open source de indexação e busca textual utilizada pelo SAPL 3.1 para indexar documentos (normas jurídicas, matérias legislativas e documentos acessórios). Observação: Se a execução do SAPL for mediante containers Docker então use o arquivo *docker-compose.yml* disponível em -*https://github.com/interlegis/sapl/blob/3.1.x/solr/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do SAPL referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente); +*https://github.com/interlegis/sapl/blob/3.1.x/dist/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do SAPL referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente); 1) Faça o download da distribuição *binária* do Apache Solr do site oficial do projeto **http://lucene.apache.org/solr** diff --git a/frontend/public/img/arrow.png b/frontend/public/img/arrow.png deleted file mode 100644 index 1f1a6e5a1..000000000 Binary files a/frontend/public/img/arrow.png and /dev/null differ diff --git a/frontend/public/img/authenticated.png b/frontend/public/img/authenticated.png deleted file mode 100644 index 872718490..000000000 Binary files a/frontend/public/img/authenticated.png and /dev/null differ diff --git a/frontend/public/img/avatar.png b/frontend/public/img/avatar.png deleted file mode 100644 index 959c168a5..000000000 Binary files a/frontend/public/img/avatar.png and /dev/null differ diff --git a/frontend/public/img/beta.png b/frontend/public/img/beta.png deleted file mode 100644 index fe23d0e6d..000000000 Binary files a/frontend/public/img/beta.png and /dev/null differ diff --git a/frontend/public/img/brasao_transp.gif b/frontend/public/img/brasao_transp.gif deleted file mode 100644 index 2d9ac82c6..000000000 Binary files a/frontend/public/img/brasao_transp.gif and /dev/null differ diff --git a/frontend/public/img/down_arrow_select.jpg b/frontend/public/img/down_arrow_select.jpg deleted file mode 100644 index a3a75352d..000000000 Binary files a/frontend/public/img/down_arrow_select.jpg and /dev/null differ diff --git a/frontend/public/img/etiqueta.png b/frontend/public/img/etiqueta.png deleted file mode 100644 index 28db5a89e..000000000 Binary files a/frontend/public/img/etiqueta.png and /dev/null differ diff --git a/frontend/public/img/favicon.ico b/frontend/public/img/favicon.ico deleted file mode 100644 index b81629808..000000000 Binary files a/frontend/public/img/favicon.ico and /dev/null differ diff --git a/frontend/public/img/file.png b/frontend/public/img/file.png deleted file mode 100644 index 9bcae6c88..000000000 Binary files a/frontend/public/img/file.png and /dev/null differ diff --git a/frontend/public/img/hand-note.png b/frontend/public/img/hand-note.png deleted file mode 100644 index 43c757bf1..000000000 Binary files a/frontend/public/img/hand-note.png and /dev/null differ diff --git a/frontend/public/img/icon_comissoes.png b/frontend/public/img/icon_comissoes.png deleted file mode 100644 index 8ec70e7e1..000000000 Binary files a/frontend/public/img/icon_comissoes.png and /dev/null differ diff --git a/frontend/public/img/icon_delete_white.png b/frontend/public/img/icon_delete_white.png deleted file mode 100644 index f06892bff..000000000 Binary files a/frontend/public/img/icon_delete_white.png and /dev/null differ diff --git a/frontend/public/img/icon_materia_legislativa.png b/frontend/public/img/icon_materia_legislativa.png deleted file mode 100644 index 18cdd81f9..000000000 Binary files a/frontend/public/img/icon_materia_legislativa.png and /dev/null differ diff --git a/frontend/public/img/icon_mesa_diretora.png b/frontend/public/img/icon_mesa_diretora.png deleted file mode 100644 index 12a1b9f13..000000000 Binary files a/frontend/public/img/icon_mesa_diretora.png and /dev/null differ diff --git a/frontend/public/img/icon_normas_juridicas.png b/frontend/public/img/icon_normas_juridicas.png deleted file mode 100644 index 147681ef8..000000000 Binary files a/frontend/public/img/icon_normas_juridicas.png and /dev/null differ diff --git a/frontend/public/img/icon_parlamentares.png b/frontend/public/img/icon_parlamentares.png deleted file mode 100644 index fe9f91ac7..000000000 Binary files a/frontend/public/img/icon_parlamentares.png and /dev/null differ diff --git a/frontend/public/img/icon_pautas.png b/frontend/public/img/icon_pautas.png deleted file mode 100644 index 8d554f4e4..000000000 Binary files a/frontend/public/img/icon_pautas.png and /dev/null differ diff --git a/frontend/public/img/icon_plenarias.png b/frontend/public/img/icon_plenarias.png deleted file mode 100644 index b5fdaa97d..000000000 Binary files a/frontend/public/img/icon_plenarias.png and /dev/null differ diff --git a/frontend/public/img/icon_relatorios.png b/frontend/public/img/icon_relatorios.png deleted file mode 100644 index 3bd71c94d..000000000 Binary files a/frontend/public/img/icon_relatorios.png and /dev/null differ diff --git a/frontend/public/img/icon_save_white.png b/frontend/public/img/icon_save_white.png deleted file mode 100644 index 8f9ccbbf1..000000000 Binary files a/frontend/public/img/icon_save_white.png and /dev/null differ diff --git a/frontend/public/img/lexml.gif b/frontend/public/img/lexml.gif deleted file mode 100644 index 193f9cb55..000000000 Binary files a/frontend/public/img/lexml.gif and /dev/null differ diff --git a/frontend/public/img/logo.png b/frontend/public/img/logo.png deleted file mode 100644 index cc8619f2f..000000000 Binary files a/frontend/public/img/logo.png and /dev/null differ diff --git a/frontend/public/img/logo_cc.png b/frontend/public/img/logo_cc.png deleted file mode 100644 index 7301d05b1..000000000 Binary files a/frontend/public/img/logo_cc.png and /dev/null differ diff --git a/frontend/public/img/logo_interlegis.png b/frontend/public/img/logo_interlegis.png deleted file mode 100644 index 19591933c..000000000 Binary files a/frontend/public/img/logo_interlegis.png and /dev/null differ diff --git a/frontend/public/img/manual.png b/frontend/public/img/manual.png deleted file mode 100644 index 27a2d87c1..000000000 Binary files a/frontend/public/img/manual.png and /dev/null differ diff --git a/frontend/public/img/pdflogo.png b/frontend/public/img/pdflogo.png deleted file mode 100644 index ae28bf428..000000000 Binary files a/frontend/public/img/pdflogo.png and /dev/null differ diff --git a/frontend/public/img/perfil.png b/frontend/public/img/perfil.png deleted file mode 100644 index d1c4b77ed..000000000 Binary files a/frontend/public/img/perfil.png and /dev/null differ diff --git a/frontend/public/img/search-gray.png b/frontend/public/img/search-gray.png deleted file mode 100644 index 1f1c1c6c9..000000000 Binary files a/frontend/public/img/search-gray.png and /dev/null differ diff --git a/frontend/public/img/search.png b/frontend/public/img/search.png deleted file mode 100644 index 442814ed8..000000000 Binary files a/frontend/public/img/search.png and /dev/null differ diff --git a/frontend/public/img/user.png b/frontend/public/img/user.png deleted file mode 100644 index e8811bcb4..000000000 Binary files a/frontend/public/img/user.png and /dev/null differ diff --git a/frontend/src/__apps/compilacao/js/old/compilacao_edit.js b/frontend/src/__apps/compilacao/js/old/compilacao_edit.js index 13c5aa331..7eabb0d7a 100644 --- a/frontend/src/__apps/compilacao/js/old/compilacao_edit.js +++ b/frontend/src/__apps/compilacao/js/old/compilacao_edit.js @@ -62,8 +62,8 @@ window.DispositivoEdit = function () { const obj_click = (event.target.classList.contains('dpt-link') ? event.target : (event.target.parentElement.classList.contains('dpt-link') - ? event.target.parentElement - : null)) + ? event.target.parentElement + : null)) if (obj_click && obj_click.getAttribute('href') && obj_click.getAttribute('href').length > 0) { return } @@ -245,7 +245,7 @@ window.DispositivoEdit = function () { if (editortype !== 'construct') { dpt_form.html(data) if (editortype === 'tinymce') { - window.initTextRichEditor() + window.initTextRichEditor(null, false, true) } // OptionalCustomFrontEnd().init() } @@ -431,9 +431,9 @@ window.DispositivoEdit = function () { const form_data = { csrfmiddlewaretoken: this.csrfmiddlewaretoken.value, - texto: texto, - texto_atualizador: texto_atualizador, - visibilidade: visibilidade, + texto, + texto_atualizador, + visibilidade, formtype: 'get_form_base' } diff --git a/frontend/src/__apps/compilacao/scss/compilacao.scss b/frontend/src/__apps/compilacao/scss/compilacao.scss index 668de7383..91bc67b4c 100644 --- a/frontend/src/__apps/compilacao/scss/compilacao.scss +++ b/frontend/src/__apps/compilacao/scss/compilacao.scss @@ -367,6 +367,14 @@ a:link:after, a:visited:after { max-width: 100%; } } + + .dtxt { + display: inline; + :first-child { + display: inline !important; + } + } + .ementa { padding: 2em 0em 2em 35%; font-weight: bold; @@ -424,6 +432,7 @@ a:link:after, a:visited:after { float:left; .dptt { position: relative; + } } @@ -490,7 +499,6 @@ a:link:after, a:visited:after { } } } - .card-header { font-size: 1.7rem; } @@ -672,6 +680,9 @@ a:link:after, a:visited:after { } } } + + + } /* and dpt */ .tipo-vigencias { @@ -1381,7 +1392,7 @@ a:link:after, a:visited:after { &::before { z-index: 20; position: absolute; - background: url(/static/img/icon_delete_white.png) no-repeat 50% 50%; + background: url(@/assets/img/icon_delete_white.png) no-repeat 50% 50%; content:""; top: 0; left: 0; @@ -1403,7 +1414,7 @@ a:link:after, a:visited:after { color: white; } &::before { - background: url(/static/img/icon_save_white.png) no-repeat 50% 50%; + background: url(@/assets/img/icon_save_white.png) no-repeat 50% 50%; } } span { diff --git a/frontend/src/__global/js/tinymce/index.js b/frontend/src/__global/js/tinymce/index.js index 9dcb7b0ba..bfb854396 100644 --- a/frontend/src/__global/js/tinymce/index.js +++ b/frontend/src/__global/js/tinymce/index.js @@ -1,37 +1,28 @@ - -import tinymce from 'tinymce/tinymce' -import './langs/pt_BR.js' +import tinymce from 'tinymce' import 'tinymce/themes/silver' import 'tinymce/icons/default' +import 'tinymce/models/dom/index' +import 'tinymce/skins/ui/oxide/skin.min.css' -import 'tinymce/plugins/table' -import 'tinymce/plugins/lists' import 'tinymce/plugins/code' -import 'tinymce/plugins/visualblocks' +import 'tinymce/plugins/advlist' +import 'tinymce/plugins/link' +import 'tinymce/plugins/lists' +import 'tinymce/plugins/table' -import 'tinymce/skins/ui/oxide/skin.css' +import './langs/pt_BR.js' window.tinymce = tinymce - -window.removeTinymce = function () { - while (window.tinymce.editors.length > 0) { - window.tinymce.remove(window.tinymce.editors[0]) - } -} - window.initTextRichEditor = function (elements, readonly = false) { - window.removeTinymce() const configTinymce = { selector: elements === null || elements === undefined ? 'textarea' : elements, - forced_root_block: '', - min_height: 200, language: 'pt_BR', branding: false, - content_css: 'default', - plugins: ['lists table code visualblocks'], - menubar: 'edit view format table tools', - toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent' + forced_root_block: 'p', + plugins: 'table lists advlist link code', + toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | code', + menubar: 'file edit view insert format table' } if (readonly) { configTinymce.readonly = 1 diff --git a/frontend/src/__global/main.js b/frontend/src/__global/main.js index a30083a01..35c091100 100644 --- a/frontend/src/__global/main.js +++ b/frontend/src/__global/main.js @@ -1,32 +1,24 @@ -// app - global -// é uma app fundamental para o layout do sapl tradicional. -// é importada pelo backend em seus templates - -import '@fortawesome/fontawesome-free/css/all.css' - import 'bootstrap' +import 'jquery-mask-plugin' -import 'webpack-jquery-ui/dialog' -import 'webpack-jquery-ui/sortable' -import 'webpack-jquery-ui/datepicker' -import 'webpack-jquery-ui/autocomplete' +import 'jquery-ui/dist/jquery-ui' +import 'jquery-ui/ui/widgets/dialog' +import 'jquery-ui/ui/widgets/sortable' +import 'jquery-ui/ui/widgets/datepicker' +import 'jquery-ui/ui/widgets/autocomplete' import 'jquery-ui/ui/i18n/datepicker-pt-BR' -import 'jquery-ui-themes/themes/cupertino/jquery-ui.min.css' - -import 'jquery-mask-plugin' - -import './scss/app.scss' +import * as moment from 'moment' +import 'moment/locale/pt-br' import './js/tinymce' import './js/image_cropping' import './js/functions' +import './js/jquery.runner' -import * as moment from 'moment' -import 'moment/locale/pt-br' - -// eslint-disable-next-line -require('imports-loader?window.jQuery=jquery!./js/jquery.runner.js') +import '@fortawesome/fontawesome-free/css/all.css' +import 'jquery-ui-themes/themes/cupertino/jquery-ui.min.css' +import './scss/app.scss' window.$ = $ window.jQuery = $ diff --git a/frontend/src/__global/scss/_header.scss b/frontend/src/__global/scss/_header.scss index 5b6fd425a..a4cdadcfc 100644 --- a/frontend/src/__global/scss/_header.scss +++ b/frontend/src/__global/scss/_header.scss @@ -2,42 +2,8 @@ $blue: #02baf2 !default; $red: #f84545 !default; -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins"; -@import "~bootstrap/scss/reboot"; -@import "~bootstrap/scss/type"; -@import "~bootstrap/scss/images"; -@import "~bootstrap/scss/code"; -@import "~bootstrap/scss/grid"; -@import "~bootstrap/scss/tables"; -@import "~bootstrap/scss/forms"; -@import "~bootstrap/scss/buttons"; -@import "~bootstrap/scss/transitions"; -@import "~bootstrap/scss/dropdown"; -@import "~bootstrap/scss/button-group"; -@import "~bootstrap/scss/input-group"; -@import "~bootstrap/scss/custom-forms"; -@import "~bootstrap/scss/nav"; -@import "~bootstrap/scss/navbar"; -@import "~bootstrap/scss/card"; -@import "~bootstrap/scss/breadcrumb"; -@import "~bootstrap/scss/pagination"; -@import "~bootstrap/scss/badge"; -@import "~bootstrap/scss/jumbotron"; -@import "~bootstrap/scss/alert"; -@import "~bootstrap/scss/progress"; -@import "~bootstrap/scss/media"; -@import "~bootstrap/scss/list-group"; -@import "~bootstrap/scss/close"; -@import "~bootstrap/scss/toasts"; -@import "~bootstrap/scss/modal"; -@import "~bootstrap/scss/tooltip"; -@import "~bootstrap/scss/popover"; -@import "~bootstrap/scss/carousel"; -@import "~bootstrap/scss/spinners"; -@import "~bootstrap/scss/utilities"; -@import "~bootstrap/scss/print"; +@import "~bootstrap/scss/bootstrap"; + @each $color, $value in $theme-colors { .btn-outline-#{$color} { diff --git a/frontend/src/__global/scss/app.scss b/frontend/src/__global/scss/app.scss index af71f324c..1c2a4ea67 100644 --- a/frontend/src/__global/scss/app.scss +++ b/frontend/src/__global/scss/app.scss @@ -1,4 +1,4 @@ @import "header"; @import "libs/libs"; -@import "layouts/layouts"; +@import "layouts/layouts"; \ No newline at end of file diff --git a/frontend/src/__global/scss/libs/bootstrap/_nav_navbar.scss b/frontend/src/__global/scss/libs/bootstrap/_nav_navbar.scss index 3438db85d..bfd88eee8 100644 --- a/frontend/src/__global/scss/libs/bootstrap/_nav_navbar.scss +++ b/frontend/src/__global/scss/libs/bootstrap/_nav_navbar.scss @@ -1,3 +1,5 @@ +@import "~bootstrap/scss/variables"; + .navbar { padding: 0; } @@ -26,7 +28,7 @@ border-radius: 0; } a { - padding: 0 $grid-gutter-width / 2; + padding: 0 calc($grid-gutter-width / 2); line-height: 2.3rem; display: block; text-decoration: none; @@ -45,14 +47,14 @@ } } .search-form { - padding: $grid-gutter-width / 3; + padding: calc($grid-gutter-width / 3); min-width: 20%;; } a:not([href]):not([tabindex]) { color: #777; } - &.justify-content-end { + &.justify-content-end { .dropdown-menu { left: auto; right: 0px; @@ -71,7 +73,7 @@ a { color: white; } - } + } } } diff --git a/frontend/public/audio/ring.mp3 b/frontend/src/assets/audio/ring.mp3 similarity index 100% rename from frontend/public/audio/ring.mp3 rename to frontend/src/assets/audio/ring.mp3 diff --git a/frontend/webpack-stats.json b/frontend/webpack-stats.json index 6ff46b756..195343052 100644 --- a/frontend/webpack-stats.json +++ b/frontend/webpack-stats.json @@ -1 +1,807 @@ -{"status":"done","publicPath":"/static/sapl/frontend/","chunks":{"chunk-vendors":[{"name":"css/chunk-vendors.e8d8c6de.css","publicPath":"/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css","path":"sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css"},{"name":"js/chunk-vendors.8a6bb3dd.js","publicPath":"/static/sapl/frontend/js/chunk-vendors.8a6bb3dd.js","path":"sapl/static/sapl/frontend/js/chunk-vendors.8a6bb3dd.js"},{"name":"css/chunk-vendors.e8d8c6de.css.map","publicPath":"/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css.map","path":"sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css.map"},{"name":"js/chunk-vendors.8a6bb3dd.js.map","publicPath":"/static/sapl/frontend/js/chunk-vendors.8a6bb3dd.js.map","path":"sapl/static/sapl/frontend/js/chunk-vendors.8a6bb3dd.js.map"}],"compilacao":[{"name":"css/compilacao.90ba9ac3.css","publicPath":"/static/sapl/frontend/css/compilacao.90ba9ac3.css","path":"sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css"},{"name":"js/compilacao.2659b00e.js","publicPath":"/static/sapl/frontend/js/compilacao.2659b00e.js","path":"sapl/static/sapl/frontend/js/compilacao.2659b00e.js"},{"name":"css/compilacao.90ba9ac3.css.map","publicPath":"/static/sapl/frontend/css/compilacao.90ba9ac3.css.map","path":"sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css.map"},{"name":"js/compilacao.2659b00e.js.map","publicPath":"/static/sapl/frontend/js/compilacao.2659b00e.js.map","path":"sapl/static/sapl/frontend/js/compilacao.2659b00e.js.map"}],"global":[{"name":"css/global.80b7564c.css","publicPath":"/static/sapl/frontend/css/global.80b7564c.css","path":"sapl/static/sapl/frontend/css/global.80b7564c.css"},{"name":"js/global.9079a4fb.js","publicPath":"/static/sapl/frontend/js/global.9079a4fb.js","path":"sapl/static/sapl/frontend/js/global.9079a4fb.js"},{"name":"css/global.80b7564c.css.map","publicPath":"/static/sapl/frontend/css/global.80b7564c.css.map","path":"sapl/static/sapl/frontend/css/global.80b7564c.css.map"},{"name":"js/global.9079a4fb.js.map","publicPath":"/static/sapl/frontend/js/global.9079a4fb.js.map","path":"sapl/static/sapl/frontend/js/global.9079a4fb.js.map"}],"painel":[{"name":"css/painel.5d957a9b.css","publicPath":"/static/sapl/frontend/css/painel.5d957a9b.css","path":"sapl/static/sapl/frontend/css/painel.5d957a9b.css"},{"name":"js/painel.37936654.js","publicPath":"/static/sapl/frontend/js/painel.37936654.js","path":"sapl/static/sapl/frontend/js/painel.37936654.js"},{"name":"css/painel.5d957a9b.css.map","publicPath":"/static/sapl/frontend/css/painel.5d957a9b.css.map","path":"sapl/static/sapl/frontend/css/painel.5d957a9b.css.map"},{"name":"js/painel.37936654.js.map","publicPath":"/static/sapl/frontend/js/painel.37936654.js.map","path":"sapl/static/sapl/frontend/js/painel.37936654.js.map"}],"parlamentar":[{"name":"css/parlamentar.0e433876.css","publicPath":"/static/sapl/frontend/css/parlamentar.0e433876.css","path":"sapl/static/sapl/frontend/css/parlamentar.0e433876.css"},{"name":"js/parlamentar.84997ad7.js","publicPath":"/static/sapl/frontend/js/parlamentar.84997ad7.js","path":"sapl/static/sapl/frontend/js/parlamentar.84997ad7.js"},{"name":"css/parlamentar.0e433876.css.map","publicPath":"/static/sapl/frontend/css/parlamentar.0e433876.css.map","path":"sapl/static/sapl/frontend/css/parlamentar.0e433876.css.map"},{"name":"js/parlamentar.84997ad7.js.map","publicPath":"/static/sapl/frontend/js/parlamentar.84997ad7.js.map","path":"sapl/static/sapl/frontend/js/parlamentar.84997ad7.js.map"}]}} \ No newline at end of file +{ + "status": "done", + "assets": { + "fonts/fa-brands-400.86c7e1fa.woff2": { + "name": "fonts/fa-brands-400.86c7e1fa.woff2", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2", + "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2" + }, + "fonts/fa-brands-400.f5defc2e.ttf": { + "name": "fonts/fa-brands-400.f5defc2e.ttf", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf", + "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf" + }, + "fonts/fa-regular-400.e0550912.woff2": { + "name": "fonts/fa-regular-400.e0550912.woff2", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2", + "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2" + }, + "fonts/fa-regular-400.3edb9004.ttf": { + "name": "fonts/fa-regular-400.3edb9004.ttf", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf", + "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf" + }, + "fonts/fa-solid-900.64d5644d.woff2": { + "name": "fonts/fa-solid-900.64d5644d.woff2", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2", + "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2" + }, + "fonts/fa-solid-900.f418d876.ttf": { + "name": "fonts/fa-solid-900.f418d876.ttf", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf", + "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf" + }, + "fonts/fa-v4compatibility.7e7e1dad.ttf": { + "name": "fonts/fa-v4compatibility.7e7e1dad.ttf", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf", + "publicPath": "/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf" + }, + "css/global.45591136.css": { + "name": "css/global.45591136.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/global.45591136.css", + "publicPath": "/static/sapl/frontend/css/global.45591136.css" + }, + "js/global.babaa14f.js": { + "name": "js/global.babaa14f.js", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.babaa14f.js", + "publicPath": "/static/sapl/frontend/js/global.babaa14f.js" + }, + "css/parlamentar.cd5dc5a8.css": { + "name": "css/parlamentar.cd5dc5a8.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/parlamentar.cd5dc5a8.css", + "publicPath": "/static/sapl/frontend/css/parlamentar.cd5dc5a8.css" + }, + "js/parlamentar.25e7f0fa.js": { + "name": "js/parlamentar.25e7f0fa.js", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/parlamentar.25e7f0fa.js", + "publicPath": "/static/sapl/frontend/js/parlamentar.25e7f0fa.js" + }, + "css/painel.e2b9504e.css": { + "name": "css/painel.e2b9504e.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css", + "publicPath": "/static/sapl/frontend/css/painel.e2b9504e.css" + }, + "js/painel.7aa779e9.js": { + "name": "js/painel.7aa779e9.js", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/painel.7aa779e9.js", + "publicPath": "/static/sapl/frontend/js/painel.7aa779e9.js" + }, + "css/compilacao.991aa842.css": { + "name": "css/compilacao.991aa842.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/compilacao.991aa842.css", + "publicPath": "/static/sapl/frontend/css/compilacao.991aa842.css" + }, + "js/compilacao.1c9473f1.js": { + "name": "js/compilacao.1c9473f1.js", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/compilacao.1c9473f1.js", + "publicPath": "/static/sapl/frontend/js/compilacao.1c9473f1.js" + }, + "css/chunk-vendors.9904f9d0.css": { + "name": "css/chunk-vendors.9904f9d0.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css", + "publicPath": "/static/sapl/frontend/css/chunk-vendors.9904f9d0.css" + }, + "js/chunk-vendors.874df7f4.js": { + "name": "js/chunk-vendors.874df7f4.js", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js", + "publicPath": "/static/sapl/frontend/js/chunk-vendors.874df7f4.js" + }, + "audio/ring.mp3": { + "name": "audio/ring.mp3", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/audio/ring.mp3", + "publicPath": "/static/sapl/frontend/audio/ring.mp3" + }, + "img/arrow.png": { + "name": "img/arrow.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/arrow.png", + "publicPath": "/static/sapl/frontend/img/arrow.png" + }, + "img/authenticated.png": { + "name": "img/authenticated.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/authenticated.png", + "publicPath": "/static/sapl/frontend/img/authenticated.png" + }, + "img/avatar.png": { + "name": "img/avatar.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/avatar.png", + "publicPath": "/static/sapl/frontend/img/avatar.png" + }, + "img/beta.png": { + "name": "img/beta.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/beta.png", + "publicPath": "/static/sapl/frontend/img/beta.png" + }, + "img/bg.png": { + "name": "img/bg.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/bg.png", + "publicPath": "/static/sapl/frontend/img/bg.png" + }, + "img/brasao_transp.gif": { + "name": "img/brasao_transp.gif", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/brasao_transp.gif", + "publicPath": "/static/sapl/frontend/img/brasao_transp.gif" + }, + "img/down_arrow_select.jpg": { + "name": "img/down_arrow_select.jpg", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg", + "publicPath": "/static/sapl/frontend/img/down_arrow_select.jpg" + }, + "img/etiqueta.png": { + "name": "img/etiqueta.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/etiqueta.png", + "publicPath": "/static/sapl/frontend/img/etiqueta.png" + }, + "img/favicon.ico": { + "name": "img/favicon.ico", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/favicon.ico", + "publicPath": "/static/sapl/frontend/img/favicon.ico" + }, + "img/file.png": { + "name": "img/file.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/file.png", + "publicPath": "/static/sapl/frontend/img/file.png" + }, + "img/hand-note.png": { + "name": "img/hand-note.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/hand-note.png", + "publicPath": "/static/sapl/frontend/img/hand-note.png" + }, + "img/icon_comissoes.png": { + "name": "img/icon_comissoes.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_comissoes.png", + "publicPath": "/static/sapl/frontend/img/icon_comissoes.png" + }, + "img/icon_delete_white.png": { + "name": "img/icon_delete_white.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_delete_white.png", + "publicPath": "/static/sapl/frontend/img/icon_delete_white.png" + }, + "img/icon_materia_legislativa.png": { + "name": "img/icon_materia_legislativa.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_materia_legislativa.png", + "publicPath": "/static/sapl/frontend/img/icon_materia_legislativa.png" + }, + "img/icon_mesa_diretora.png": { + "name": "img/icon_mesa_diretora.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_mesa_diretora.png", + "publicPath": "/static/sapl/frontend/img/icon_mesa_diretora.png" + }, + "img/icon_normas_juridicas.png": { + "name": "img/icon_normas_juridicas.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_normas_juridicas.png", + "publicPath": "/static/sapl/frontend/img/icon_normas_juridicas.png" + }, + "img/icon_normas_juridicas_destaque.png": { + "name": "img/icon_normas_juridicas_destaque.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_normas_juridicas_destaque.png", + "publicPath": "/static/sapl/frontend/img/icon_normas_juridicas_destaque.png" + }, + "img/icon_parlamentares.png": { + "name": "img/icon_parlamentares.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_parlamentares.png", + "publicPath": "/static/sapl/frontend/img/icon_parlamentares.png" + }, + "img/icon_pautas.png": { + "name": "img/icon_pautas.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_pautas.png", + "publicPath": "/static/sapl/frontend/img/icon_pautas.png" + }, + "img/icon_plenarias.png": { + "name": "img/icon_plenarias.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_plenarias.png", + "publicPath": "/static/sapl/frontend/img/icon_plenarias.png" + }, + "img/icon_relatorios.png": { + "name": "img/icon_relatorios.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_relatorios.png", + "publicPath": "/static/sapl/frontend/img/icon_relatorios.png" + }, + "img/icon_save_white.png": { + "name": "img/icon_save_white.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_save_white.png", + "publicPath": "/static/sapl/frontend/img/icon_save_white.png" + }, + "img/lexml.gif": { + "name": "img/lexml.gif", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/lexml.gif", + "publicPath": "/static/sapl/frontend/img/lexml.gif" + }, + "img/logo.png": { + "name": "img/logo.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/logo.png", + "publicPath": "/static/sapl/frontend/img/logo.png" + }, + "img/logo_cc.png": { + "name": "img/logo_cc.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/logo_cc.png", + "publicPath": "/static/sapl/frontend/img/logo_cc.png" + }, + "img/logo_interlegis.png": { + "name": "img/logo_interlegis.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/logo_interlegis.png", + "publicPath": "/static/sapl/frontend/img/logo_interlegis.png" + }, + "img/manual.png": { + "name": "img/manual.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/manual.png", + "publicPath": "/static/sapl/frontend/img/manual.png" + }, + "img/pdflogo.png": { + "name": "img/pdflogo.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/pdflogo.png", + "publicPath": "/static/sapl/frontend/img/pdflogo.png" + }, + "img/perfil.png": { + "name": "img/perfil.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/perfil.png", + "publicPath": "/static/sapl/frontend/img/perfil.png" + }, + "img/search-gray.png": { + "name": "img/search-gray.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/search-gray.png", + "publicPath": "/static/sapl/frontend/img/search-gray.png" + }, + "img/search.png": { + "name": "img/search.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/search.png", + "publicPath": "/static/sapl/frontend/img/search.png" + }, + "img/user.png": { + "name": "img/user.png", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/user.png", + "publicPath": "/static/sapl/frontend/img/user.png" + }, + "js/skins/content/dark/content.css": { + "name": "js/skins/content/dark/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.css" + }, + "js/skins/content/dark/content.min.css": { + "name": "js/skins/content/dark/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.min.css" + }, + "js/skins/content/default/content.css": { + "name": "js/skins/content/default/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/default/content.css" + }, + "js/skins/content/default/content.min.css": { + "name": "js/skins/content/default/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/default/content.min.css" + }, + "js/skins/content/document/content.css": { + "name": "js/skins/content/document/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/document/content.css" + }, + "js/skins/content/document/content.min.css": { + "name": "js/skins/content/document/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/document/content.min.css" + }, + "js/skins/content/tinymce-5/content.css": { + "name": "js/skins/content/tinymce-5/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.css" + }, + "js/skins/content/tinymce-5/content.min.css": { + "name": "js/skins/content/tinymce-5/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css" + }, + "js/skins/content/tinymce-5-dark/content.css": { + "name": "js/skins/content/tinymce-5-dark/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css" + }, + "js/skins/content/tinymce-5-dark/content.min.css": { + "name": "js/skins/content/tinymce-5-dark/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css" + }, + "js/skins/content/writer/content.css": { + "name": "js/skins/content/writer/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.css", + "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.css" + }, + "js/skins/content/writer/content.min.css": { + "name": "js/skins/content/writer/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.min.css" + }, + "js/skins/ui/oxide/content.css": { + "name": "js/skins/ui/oxide/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.css" + }, + "js/skins/ui/oxide/content.inline.css": { + "name": "js/skins/ui/oxide/content.inline.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.css" + }, + "js/skins/ui/oxide/content.inline.min.css": { + "name": "js/skins/ui/oxide/content.inline.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css" + }, + "js/skins/ui/oxide/content.min.css": { + "name": "js/skins/ui/oxide/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.min.css" + }, + "js/skins/ui/oxide/skin.css": { + "name": "js/skins/ui/oxide/skin.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.css" + }, + "js/skins/ui/oxide/skin.min.css": { + "name": "js/skins/ui/oxide/skin.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.min.css" + }, + "js/skins/ui/oxide/skin.shadowdom.css": { + "name": "js/skins/ui/oxide/skin.shadowdom.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css" + }, + "js/skins/ui/oxide/skin.shadowdom.min.css": { + "name": "js/skins/ui/oxide/skin.shadowdom.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css" + }, + "js/skins/ui/oxide-dark/content.css": { + "name": "js/skins/ui/oxide-dark/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.css" + }, + "js/skins/ui/oxide-dark/content.inline.css": { + "name": "js/skins/ui/oxide-dark/content.inline.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css" + }, + "js/skins/ui/oxide-dark/content.inline.min.css": { + "name": "js/skins/ui/oxide-dark/content.inline.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css" + }, + "js/skins/ui/oxide-dark/content.min.css": { + "name": "js/skins/ui/oxide-dark/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css" + }, + "js/skins/ui/oxide-dark/skin.css": { + "name": "js/skins/ui/oxide-dark/skin.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css" + }, + "js/skins/ui/oxide-dark/skin.min.css": { + "name": "js/skins/ui/oxide-dark/skin.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css" + }, + "js/skins/ui/oxide-dark/skin.shadowdom.css": { + "name": "js/skins/ui/oxide-dark/skin.shadowdom.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css" + }, + "js/skins/ui/oxide-dark/skin.shadowdom.min.css": { + "name": "js/skins/ui/oxide-dark/skin.shadowdom.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css" + }, + "js/skins/ui/tinymce-5/content.css": { + "name": "js/skins/ui/tinymce-5/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.css" + }, + "js/skins/ui/tinymce-5/content.inline.css": { + "name": "js/skins/ui/tinymce-5/content.inline.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css" + }, + "js/skins/ui/tinymce-5/content.inline.min.css": { + "name": "js/skins/ui/tinymce-5/content.inline.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css" + }, + "js/skins/ui/tinymce-5/content.min.css": { + "name": "js/skins/ui/tinymce-5/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css" + }, + "js/skins/ui/tinymce-5/skin.css": { + "name": "js/skins/ui/tinymce-5/skin.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css" + }, + "js/skins/ui/tinymce-5/skin.min.css": { + "name": "js/skins/ui/tinymce-5/skin.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css" + }, + "js/skins/ui/tinymce-5/skin.shadowdom.css": { + "name": "js/skins/ui/tinymce-5/skin.shadowdom.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css" + }, + "js/skins/ui/tinymce-5/skin.shadowdom.min.css": { + "name": "js/skins/ui/tinymce-5/skin.shadowdom.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css" + }, + "js/skins/ui/tinymce-5-dark/content.css": { + "name": "js/skins/ui/tinymce-5-dark/content.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css" + }, + "js/skins/ui/tinymce-5-dark/content.inline.css": { + "name": "js/skins/ui/tinymce-5-dark/content.inline.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css" + }, + "js/skins/ui/tinymce-5-dark/content.inline.min.css": { + "name": "js/skins/ui/tinymce-5-dark/content.inline.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css" + }, + "js/skins/ui/tinymce-5-dark/content.min.css": { + "name": "js/skins/ui/tinymce-5-dark/content.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css" + }, + "js/skins/ui/tinymce-5-dark/skin.css": { + "name": "js/skins/ui/tinymce-5-dark/skin.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css" + }, + "js/skins/ui/tinymce-5-dark/skin.min.css": { + "name": "js/skins/ui/tinymce-5-dark/skin.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css" + }, + "js/skins/ui/tinymce-5-dark/skin.shadowdom.css": { + "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css" + }, + "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css": { + "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css" + }, + "js/chunk-vendors.874df7f4.js.LICENSE.txt": { + "name": "js/chunk-vendors.874df7f4.js.LICENSE.txt", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js.LICENSE.txt", + "publicPath": "/static/sapl/frontend/js/chunk-vendors.874df7f4.js.LICENSE.txt" + }, + "js/global.babaa14f.js.LICENSE.txt": { + "name": "js/global.babaa14f.js.LICENSE.txt", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.babaa14f.js.LICENSE.txt", + "publicPath": "/static/sapl/frontend/js/global.babaa14f.js.LICENSE.txt" + }, + "fonts/fa-v4compatibility.7e7e1dad.ttf.gz": { + "name": "fonts/fa-v4compatibility.7e7e1dad.ttf.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf.gz", + "publicPath": "/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf.gz" + }, + "js/parlamentar.25e7f0fa.js.gz": { + "name": "js/parlamentar.25e7f0fa.js.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/parlamentar.25e7f0fa.js.gz", + "publicPath": "/static/sapl/frontend/js/parlamentar.25e7f0fa.js.gz" + }, + "css/painel.e2b9504e.css.gz": { + "name": "css/painel.e2b9504e.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz", + "publicPath": "/static/sapl/frontend/css/painel.e2b9504e.css.gz" + }, + "js/painel.7aa779e9.js.gz": { + "name": "js/painel.7aa779e9.js.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/painel.7aa779e9.js.gz", + "publicPath": "/static/sapl/frontend/js/painel.7aa779e9.js.gz" + }, + "css/compilacao.991aa842.css.gz": { + "name": "css/compilacao.991aa842.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/compilacao.991aa842.css.gz", + "publicPath": "/static/sapl/frontend/css/compilacao.991aa842.css.gz" + }, + "js/compilacao.1c9473f1.js.gz": { + "name": "js/compilacao.1c9473f1.js.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/compilacao.1c9473f1.js.gz", + "publicPath": "/static/sapl/frontend/js/compilacao.1c9473f1.js.gz" + }, + "js/global.babaa14f.js.gz": { + "name": "js/global.babaa14f.js.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.babaa14f.js.gz", + "publicPath": "/static/sapl/frontend/js/global.babaa14f.js.gz" + }, + "img/down_arrow_select.jpg.gz": { + "name": "img/down_arrow_select.jpg.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg.gz", + "publicPath": "/static/sapl/frontend/img/down_arrow_select.jpg.gz" + }, + "js/skins/content/dark/content.css.gz": { + "name": "js/skins/content/dark/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.css.gz" + }, + "js/skins/content/dark/content.min.css.gz": { + "name": "js/skins/content/dark/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.min.css.gz" + }, + "js/skins/content/default/content.css.gz": { + "name": "js/skins/content/default/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/default/content.css.gz" + }, + "js/skins/content/default/content.min.css.gz": { + "name": "js/skins/content/default/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/default/content.min.css.gz" + }, + "js/skins/content/document/content.css.gz": { + "name": "js/skins/content/document/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/document/content.css.gz" + }, + "js/skins/content/document/content.min.css.gz": { + "name": "js/skins/content/document/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/document/content.min.css.gz" + }, + "js/skins/content/tinymce-5/content.css.gz": { + "name": "js/skins/content/tinymce-5/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.css.gz" + }, + "js/skins/content/tinymce-5/content.min.css.gz": { + "name": "js/skins/content/tinymce-5/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css.gz" + }, + "js/skins/content/tinymce-5-dark/content.css.gz": { + "name": "js/skins/content/tinymce-5-dark/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css.gz" + }, + "js/skins/content/tinymce-5-dark/content.min.css.gz": { + "name": "js/skins/content/tinymce-5-dark/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css.gz" + }, + "js/skins/content/writer/content.css.gz": { + "name": "js/skins/content/writer/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.css.gz" + }, + "js/skins/content/writer/content.min.css.gz": { + "name": "js/skins/content/writer/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.min.css.gz" + }, + "js/skins/ui/oxide/content.inline.css.gz": { + "name": "js/skins/ui/oxide/content.inline.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.css.gz" + }, + "js/skins/ui/oxide/content.inline.min.css.gz": { + "name": "js/skins/ui/oxide/content.inline.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css.gz" + }, + "js/skins/ui/oxide/content.min.css.gz": { + "name": "js/skins/ui/oxide/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.min.css.gz" + }, + "js/skins/ui/oxide/skin.shadowdom.css.gz": { + "name": "js/skins/ui/oxide/skin.shadowdom.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css.gz" + }, + "js/skins/ui/oxide/skin.shadowdom.min.css.gz": { + "name": "js/skins/ui/oxide/skin.shadowdom.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css.gz" + }, + "js/skins/ui/oxide-dark/content.css.gz": { + "name": "js/skins/ui/oxide-dark/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.css.gz" + }, + "js/skins/ui/oxide-dark/content.inline.css.gz": { + "name": "js/skins/ui/oxide-dark/content.inline.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css.gz" + }, + "js/skins/ui/oxide-dark/content.inline.min.css.gz": { + "name": "js/skins/ui/oxide-dark/content.inline.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css.gz" + }, + "js/skins/ui/oxide-dark/content.min.css.gz": { + "name": "js/skins/ui/oxide-dark/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css.gz" + }, + "js/skins/ui/oxide/skin.css.gz": { + "name": "js/skins/ui/oxide/skin.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.css.gz" + }, + "js/skins/ui/oxide-dark/skin.css.gz": { + "name": "js/skins/ui/oxide-dark/skin.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css.gz" + }, + "js/skins/ui/oxide-dark/skin.shadowdom.css.gz": { + "name": "js/skins/ui/oxide-dark/skin.shadowdom.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css.gz" + }, + "js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz": { + "name": "js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz" + }, + "js/skins/ui/oxide-dark/skin.min.css.gz": { + "name": "js/skins/ui/oxide-dark/skin.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css.gz" + }, + "js/skins/ui/tinymce-5/content.css.gz": { + "name": "js/skins/ui/tinymce-5/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.css.gz" + }, + "js/skins/ui/tinymce-5/content.inline.css.gz": { + "name": "js/skins/ui/tinymce-5/content.inline.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css.gz" + }, + "js/skins/ui/tinymce-5/content.inline.min.css.gz": { + "name": "js/skins/ui/tinymce-5/content.inline.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css.gz" + }, + "js/skins/ui/tinymce-5/content.min.css.gz": { + "name": "js/skins/ui/tinymce-5/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css.gz" + }, + "js/skins/ui/oxide/content.css.gz": { + "name": "js/skins/ui/oxide/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.css.gz" + }, + "js/skins/ui/tinymce-5/skin.shadowdom.css.gz": { + "name": "js/skins/ui/tinymce-5/skin.shadowdom.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css.gz" + }, + "js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz": { + "name": "js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz" + }, + "js/skins/ui/tinymce-5-dark/content.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/content.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css.gz" + }, + "js/skins/ui/tinymce-5-dark/content.inline.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/content.inline.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css.gz" + }, + "js/skins/ui/tinymce-5-dark/content.inline.min.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/content.inline.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css.gz" + }, + "js/skins/ui/oxide/skin.min.css.gz": { + "name": "js/skins/ui/oxide/skin.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.min.css.gz" + }, + "js/skins/ui/tinymce-5-dark/content.min.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/content.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css.gz" + }, + "js/skins/ui/tinymce-5/skin.css.gz": { + "name": "js/skins/ui/tinymce-5/skin.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css.gz" + }, + "js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz" + }, + "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz" + }, + "js/chunk-vendors.874df7f4.js.LICENSE.txt.gz": { + "name": "js/chunk-vendors.874df7f4.js.LICENSE.txt.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js.LICENSE.txt.gz", + "publicPath": "/static/sapl/frontend/js/chunk-vendors.874df7f4.js.LICENSE.txt.gz" + }, + "js/skins/ui/tinymce-5-dark/skin.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/skin.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css.gz" + }, + "js/skins/ui/tinymce-5-dark/skin.min.css.gz": { + "name": "js/skins/ui/tinymce-5-dark/skin.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css.gz" + }, + "fonts/fa-regular-400.3edb9004.ttf.gz": { + "name": "fonts/fa-regular-400.3edb9004.ttf.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf.gz", + "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf.gz" + }, + "css/global.45591136.css.gz": { + "name": "css/global.45591136.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/global.45591136.css.gz", + "publicPath": "/static/sapl/frontend/css/global.45591136.css.gz" + }, + "js/skins/ui/tinymce-5/skin.min.css.gz": { + "name": "js/skins/ui/tinymce-5/skin.min.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css.gz", + "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css.gz" + }, + "css/chunk-vendors.9904f9d0.css.gz": { + "name": "css/chunk-vendors.9904f9d0.css.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css.gz", + "publicPath": "/static/sapl/frontend/css/chunk-vendors.9904f9d0.css.gz" + }, + "fonts/fa-brands-400.f5defc2e.ttf.gz": { + "name": "fonts/fa-brands-400.f5defc2e.ttf.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf.gz", + "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf.gz" + }, + "fonts/fa-solid-900.f418d876.ttf.gz": { + "name": "fonts/fa-solid-900.f418d876.ttf.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf.gz", + "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf.gz" + }, + "js/chunk-vendors.874df7f4.js.gz": { + "name": "js/chunk-vendors.874df7f4.js.gz", + "path": "/home/leandro/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js.gz", + "publicPath": "/static/sapl/frontend/js/chunk-vendors.874df7f4.js.gz" + } + }, + "chunks": { + "global": [ + "css/chunk-vendors.9904f9d0.css", + "js/chunk-vendors.874df7f4.js", + "css/global.45591136.css", + "js/global.babaa14f.js" + ], + "parlamentar": [ + "css/chunk-vendors.9904f9d0.css", + "js/chunk-vendors.874df7f4.js", + "css/parlamentar.cd5dc5a8.css", + "js/parlamentar.25e7f0fa.js" + ], + "painel": [ + "css/chunk-vendors.9904f9d0.css", + "js/chunk-vendors.874df7f4.js", + "css/painel.e2b9504e.css", + "js/painel.7aa779e9.js" + ], + "compilacao": [ + "css/chunk-vendors.9904f9d0.css", + "js/chunk-vendors.874df7f4.js", + "css/compilacao.991aa842.css", + "js/compilacao.1c9473f1.js" + ] + }, + "publicPath": "/static/sapl/frontend/" +} \ No newline at end of file diff --git a/package.json b/package.json index 6c1cff61e..ef7f8e948 100644 --- a/package.json +++ b/package.json @@ -8,50 +8,51 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "@fortawesome/fontawesome-free": "^5.13.0", - "axios": "^0.21.1", - "axios-progress-bar": "^1.2.0", - "bootstrap": "^4.4.1", - "bootstrap-vue": "^2.12.0", - "diff": "^4.0.1", - "dotenv": "^6.2.0", - "exports-loader": "^0.7.0", - "imports-loader": "^0.8.0", - "jquery": "^3.5.1", + "@fortawesome/fontawesome-free": "^6.1.2", + "axios": "^0.27.2", + "bootstrap": "^4.6.2", + "bootstrap-vue": "^2.22.0", + "diff": "^5.1.0", + "jquery": "^3.6.0", "jquery-mask-plugin": "^1.14.16", + "jquery-ui": "^1.13.2", "jquery-ui-themes": "^1.12.0", - "lodash": "^4.17.19", - "moment": "^2.24.0", - "moment-locales-webpack-plugin": "^1.1.2", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-locales-webpack-plugin": "^1.2.0", "popper.js": "^1.16.1", - "serialize-javascript": "^3.1.0", - "terser": "^4.6.11", - "tinymce": "^5.6.2", - "vue": "^2.6.11", - "webpack": "^4.43.0", - "webpack-jquery-ui": "^2.0.1", - "websocket-extensions": "^0.1.4" + "tinymce": "^6.1.2", + "vue": "^2.7.9" }, "devDependencies": { - "@vue/cli-plugin-babel": "^4.3.1", - "@vue/cli-plugin-eslint": "^4.3.1", - "@vue/cli-service": "^4.3.1", - "babel-eslint": "^10.1.0", - "compression-webpack-plugin": "^3.1.0", - "css-loader": "^3.5.2", - "eslint": "^6.8.0", - "eslint-config-standard": "^14.1.1", + "@babel/core": "^7.18.13", + "@babel/eslint-parser": "^7.18.9", + "@vue/cli-plugin-babel": "^5.0.8", + "@vue/cli-service": "^5.0.8", + "compression-webpack-plugin": "^10.0.0", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.7.1", + "dotenv": "^16.0.1", + "eslint": "^8.22.0", + "eslint-config-standard": "^17.0.0", "eslint-friendly-formatter": "^4.0.1", - "eslint-loader": "^4.0.0", - "eslint-plugin-import": "^2.20.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.5", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.1", - "eslint-plugin-vue": "^6.2.2", - "node-sass": "^4.13.1", - "sass-loader": "^8.0.2", - "shelljs": "^0.8.4", - "vue-template-compiler": "^2.6.11", - "webpack-bundle-tracker": "^0.4.3" + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-vue": "^9.3.0", + "eslint-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "imports-loader": "^4.0.1", + "mini-css-extract-plugin": "^2.6.1", + "sass": "^1.54.5", + "sass-loader": "^13.0.2", + "shelljs": "^0.8.5", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.5", + "uglify-js": "^3.17.0", + "vue-template-compiler": "^2.7.9", + "webpack": "^5.74.0", + "webpack-bundle-tracker": "^1.6.0" } } diff --git a/release.sh b/release.sh index f22d2b19b..80051e9d1 100755 --- a/release.sh +++ b/release.sh @@ -30,17 +30,17 @@ FINAL_VERSION= function change_files { - OLD_VERSION=$(grep -E 'interlegis/sapl:'$VERSION_PATTERN docker/docker-compose.yml | cut -d':' -f3) + OLD_VERSION=$(grep -E 'interlegis/sapl:'$VERSION_PATTERN docker/docker-compose.yaml | cut -d':' -f3) echo "Atualizando de "$OLD_VERSION" para "$FINAL_VERSION - sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" docker/docker-compose.yml + sed -E -i "" "s|$OLD_VERSION|$FINAL_VERSION|g" docker/docker-compose.yaml - sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" setup.py + sed -E -i "" "s|$OLD_VERSION|$FINAL_VERSION|g" setup.py - sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/templates/base.html + sed -E -i "" "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/templates/base.html - sed -E -i "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/settings.py + sed -E -i "" "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/settings.py } function set_major_version { @@ -61,11 +61,14 @@ function set_rc_version { fi FINAL_VERSION=$NEXT_RC_VERSION + + echo "OLD_VERSION: $OLD_VERSION" + echo "FINAL_VERSION: $FINAL_VERSION" } function commit_and_push { echo "committing..." - git add docker/docker-compose.yml setup.py sapl/settings.py sapl/templates/base.html + git add docker/docker-compose.yaml setup.py sapl/settings.py sapl/templates/base.html git commit -m "Release: $FINAL_VERSION" git tag $FINAL_VERSION diff --git a/requirements/dev-requirements.txt b/requirements/dev-requirements.txt index c13832b67..64308a0b2 100644 --- a/requirements/dev-requirements.txt +++ b/requirements/dev-requirements.txt @@ -2,7 +2,7 @@ autopep8==1.2.4 beautifulsoup4==4.9.1 -django-debug-toolbar==1.8 +django-debug-toolbar==1.11.1 ipdb==0.13.3 pdbpp==0.9.2 pip-review==0.4 diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 98a0715a4..bc7c9fd81 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,10 +1,11 @@ -django==2.2.18 -django-haystack==2.8.1 -django-filter==2.0.0 -djangorestframework==3.11.2 +django==2.2.28 +django-haystack==3.1.1 +django-filter==2.4.0 +djangorestframework==3.12.4 dj-database-url==0.5.0 django-braces==1.14.0 django-crispy-forms==1.7.2 +django-contrib-postgres==0.0.1 django-floppyforms==1.8.0 django-extra-views==0.12.0 django-model-utils==3.1.2 @@ -13,17 +14,18 @@ django-reversion-compare==0.8.6 django-speedinfo==1.4.0 django-extensions==2.1.4 django-image-cropping==1.2 -django-webpack-loader==0.6.0 -drf-yasg==1.20.0 +django-webpack-loader==1.6.0 +drf-spectacular==0.18.2 +django-ratelimit==3.0.1 easy-thumbnails==2.5 python-decouple==3.1 psycopg2-binary==2.8.6 -pyyaml==5.3.1 +pyyaml==5.4 pytz==2019.3 python-magic==0.4.15 unipath==1.1 WeasyPrint==51 -Pillow==8.1.1 +Pillow==9.0.1 gunicorn==19.9.0 more-itertools==8.2.0 pysolr==3.6.0 @@ -31,6 +33,7 @@ PyPDF4==1.27.0 pyoai==2.5.0 Unidecode==1.1.1 whitenoise==5.1.0 +kazoo==2.8.0 git+https://github.com/interlegis/trml2pdf git+https://github.com/interlegis/django-admin-bootstrapped diff --git a/sapl/api/core/__init__.py b/sapl/api/core/__init__.py new file mode 100644 index 000000000..2ecab98fd --- /dev/null +++ b/sapl/api/core/__init__.py @@ -0,0 +1,307 @@ +import logging + +from django import apps +from django.conf import settings +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Q +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.utils import timezone +from django.utils.decorators import classonlymethod +from django.utils.translation import ugettext_lazy as _ +from django_filters.rest_framework.backends import DjangoFilterBackend +from rest_framework import serializers as rest_serializers +from rest_framework.authtoken.models import Token +from rest_framework.decorators import action, api_view, permission_classes +from rest_framework.fields import SerializerMethodField +from rest_framework.permissions import IsAuthenticated, IsAdminUser +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework.viewsets import ModelViewSet + +from sapl.api.core.filters import SaplFilterSetMixin +from sapl.api.permissions import SaplModelPermissions +from sapl.base.models import Metadata + +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA + + +class BusinessRulesNotImplementedMixin: + + def create(self, request, *args, **kwargs): + raise Exception(_("POST Create não implementado")) + + def update(self, request, *args, **kwargs): + raise Exception(_("PUT and PATCH não implementado")) + + def delete(self, request, *args, **kwargs): + raise Exception(_("DELETE Delete não implementado")) + + +class SaplApiViewSetConstrutor(): + + class SaplApiViewSet(ModelViewSet): + filter_backends = (DjangoFilterBackend,) + + _built_sets = {} + + @classonlymethod + def get_class_for_model(cls, model): + return cls._built_sets[model._meta.app_config][model] + + @classonlymethod + def build_class(cls): + import inspect + from sapl.api.core import serializers + + # Carrega todas as classes de sapl.api.serializers que possuam + # "Serializer" como Sufixo. + serializers_classes = inspect.getmembers(serializers) + + serializers_classes = {i[0]: i[1] for i in filter( + lambda x: x[0].endswith('Serializer'), + serializers_classes + )} + + # Carrega todas as classes de sapl.api.forms que possuam + # "FilterSet" como Sufixo. + from sapl.api.core import forms + filters_classes = inspect.getmembers(forms) + filters_classes = {i[0]: i[1] for i in filter( + lambda x: x[0].endswith('FilterSet'), + filters_classes + )} + + built_sets = {} + + def build(_model): + object_name = _model._meta.object_name + + # Caso Exista, pega a classe sapl.api.serializers.{model}Serializer + # ou utiliza a base do drf para gerar uma automática para o model + serializer_name = f'{object_name}Serializer' + _serializer_class = serializers_classes.get( + serializer_name, rest_serializers.ModelSerializer) + + # Caso Exista, pega a classe sapl.api.core.forms.{model}FilterSet + # ou utiliza a base definida em + # sapl.api.core.filters.SaplFilterSetMixin + filter_name = f'{object_name}FilterSet' + _filterset_class = filters_classes.get( + filter_name, SaplFilterSetMixin) + + def create_class(): + + _meta_serializer = object if not hasattr( + _serializer_class, 'Meta') else _serializer_class.Meta + + # Define uma classe padrão para serializer caso não tenha sido + # criada a classe sapl.api.core.serializers.{model}Serializer + class SaplSerializer(_serializer_class): + __str__ = SerializerMethodField() + metadata = SerializerMethodField() + + class Meta(_meta_serializer): + if not hasattr(_meta_serializer, 'ref_name'): + ref_name = f'{object_name}Serializer' + + if not hasattr(_meta_serializer, 'model'): + model = _model + + if hasattr(_meta_serializer, 'exclude'): + exclude = _meta_serializer.exclude + else: + if not hasattr(_meta_serializer, 'fields'): + fields = '__all__' + elif _meta_serializer.fields != '__all__': + fields = list(_meta_serializer.fields) + [ + '__str__', 'metadata'] + else: + fields = _meta_serializer.fields + + def get___str__(self, obj) -> str: + return str(obj) + + def get_metadata(self, obj): + try: + metadata = Metadata.objects.get( + content_type=ContentType.objects.get_for_model( + obj._meta.model), + object_id=obj.id + ).metadata + except: + metadata = {} + finally: + return metadata + + _meta_filterset = object if not hasattr( + _filterset_class, 'Meta') else _filterset_class.Meta + + # Define uma classe padrão para filtro caso não tenha sido + # criada a classe sapl.api.forms.{model}FilterSet + class SaplFilterSet(_filterset_class): + + class Meta(_meta_filterset): + if not hasattr(_meta_filterset, 'model'): + model = _model + + # Define uma classe padrão ModelViewSet de DRF + class ModelSaplViewSet(SaplApiViewSetConstrutor.SaplApiViewSet): + queryset = _model.objects.all() + + # Utiliza o filtro customizado pela classe + # sapl.api.core.forms.{model}FilterSet + # ou utiliza o trivial SaplFilterSet definido acima + filterset_class = SaplFilterSet + + # Utiliza o serializer customizado pela classe + # sapl.api.core.serializers.{model}Serializer + # ou utiliza o trivial SaplSerializer definido acima + serializer_class = SaplSerializer + + return ModelSaplViewSet + + viewset = create_class() + viewset.__name__ = '%sModelSaplViewSet' % _model.__name__ + return viewset + + apps_sapl = [apps.apps.get_app_config( + n[5:]) for n in settings.SAPL_APPS] + for app in apps_sapl: + cls._built_sets[app] = {} + for model in app.get_models(): + cls._built_sets[app][model] = build(model) + + return cls + + +""" +1. Constroi uma rest_framework.viewsets.ModelViewSet para + todos os models de todas as apps do sapl +2. Define DjangoFilterBackend como ferramenta de filtro dos campos +3. Define Serializer como a seguir: + 3.1 - Define um Serializer genérico para cada módel + 3.2 - Recupera Serializer customizado em sapl.api.core.serializers + 3.3 - Para todo model é opcional a existência de + sapl.api.core.serializers.{model}Serializer. + Caso não seja definido um Serializer customizado, utiliza-se o trivial +4. Define um FilterSet como a seguir: + 4.1 - Define um FilterSet genérico para cada módel + 4.2 - Recupera FilterSet customizado em sapl.api.core.forms + 4.3 - Para todo model é opcional a existência de + sapl.api.core.forms.{model}FilterSet. + Caso não seja definido um FilterSet customizado, utiliza-se o trivial + 4.4 - todos os campos que aceitam lookup 'exact' + podem ser filtrados por default + +5. SaplApiViewSetConstrutor não cria padrões e/ou exige conhecimento alem dos + exigidos pela DRF. + +6. As rotas são criadas seguindo nome da app e nome do model + http://localhost:9000/api/{applabel}/{model_name}/ + e seguem as variações definidas em: + https://www.django-rest-framework.org/api-guide/routers/#defaultrouter + +7. Todas as viewsets construídas por SaplApiViewSetConstrutor e suas rotas + (paginate list, detail, edit, create, delete) + bem como testes em ambiente de desenvolvimento podem ser conferidas em: + http://localhost:9000/api/ + desde que settings.DEBUG=True + +**SaplApiViewSetConstrutor._built_sets** é um dict de dicts de models conforme: + { + ... + + 'audiencia': { + 'tipoaudienciapublica': TipoAudienciaPublicaViewSet, + 'audienciapublica': AudienciaPublicaViewSet, + 'anexoaudienciapublica': AnexoAudienciaPublicaViewSet + + ... + + }, + + ... + + 'base': { + 'casalegislativa': CasaLegislativaViewSet, + 'appconfig': AppConfigViewSet, + + ... + + } + + ... + + } +""" + +# Toda Classe construida acima, pode ser redefinida e aplicado quaisquer +# das possibilidades para uma classe normal criada a partir de +# rest_framework.viewsets.ModelViewSet conforme exemplo para a classe autor + +# decorator que processa um endpoint detail trivial com base no model passado, +# Um endpoint detail geralmente é um conteúdo baseado numa FK com outros possíveis filtros +# e os passados pelo proprio cliente, além de o serializer e o filterset +# ser desse model passado + + +class wrapper_queryset_response_for_drf_action(object): + + def __init__(self, model): + self.model = model + + def __call__(self, cls): + + def wrapper(instance_view, *args, **kwargs): + # recupera a viewset do model anotado + iv = instance_view + viewset_from_model = SaplApiViewSetConstrutor._built_sets[ + self.model._meta.app_config][self.model] + + # apossa da instancia da viewset mae do action + # em uma viewset que processa dados do model passado no decorator + iv.queryset = viewset_from_model.queryset + iv.serializer_class = viewset_from_model.serializer_class + iv.filterset_class = viewset_from_model.filterset_class + + iv.queryset = instance_view.filter_queryset( + iv.get_queryset()) + + # chama efetivamente o metodo anotado que deve devolver um queryset + # com os filtros específicos definido pelo programador customizador + qs = cls(instance_view, *args, **kwargs) + + page = iv.paginate_queryset(qs) + data = iv.get_serializer( + page if page is not None else qs, many=True).data + + return iv.get_paginated_response( + data) if page is not None else Response(data) + + return wrapper + + +# decorator para recuperar e transformar o default +class customize(object): + + def __init__(self, model): + self.model = model + + def __call__(self, cls): + + class _SaplApiViewSet( + cls, + SaplApiViewSetConstrutor._built_sets[ + self.model._meta.app_config][self.model] + ): + pass + + if hasattr(_SaplApiViewSet, 'build'): + _SaplApiViewSet = _SaplApiViewSet.build() + + SaplApiViewSetConstrutor._built_sets[ + self.model._meta.app_config][self.model] = _SaplApiViewSet + return _SaplApiViewSet diff --git a/sapl/api/core/filters.py b/sapl/api/core/filters.py new file mode 100644 index 000000000..0007906c6 --- /dev/null +++ b/sapl/api/core/filters.py @@ -0,0 +1,116 @@ + +from collections import OrderedDict + +from django.contrib.postgres.fields.jsonb import JSONField +from django.db.models.fields.files import FileField +from django.template.defaultfilters import capfirst +import django_filters +from django_filters.constants import ALL_FIELDS +from django_filters.filters import CharFilter +from django_filters.filterset import FilterSet +from django_filters.utils import resolve_field, get_all_model_fields + + +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA E CONSCIENTE DOS IMPACTOS NA API +class SaplFilterSetMixin(FilterSet): + + o = CharFilter(method='filter_o') + + class Meta: + fields = '__all__' + filter_overrides = { + FileField: { + 'filter_class': django_filters.CharFilter, + 'extra': lambda f: { + 'lookup_expr': 'exact', + }, + }, + JSONField: { + 'filter_class': django_filters.CharFilter, + 'extra': lambda f: { + 'lookup_expr': 'exact', + }, + }, + } + + def filter_o(self, queryset, name, value): + try: + return queryset.order_by( + *map(str.strip, value.split(','))) + except: + return queryset + + @classmethod + def get_fields(cls): + model = cls._meta.model + fields_model = get_all_model_fields(model) + fields_filter = cls._meta.fields + exclude = cls._meta.exclude + + if exclude is not None and fields_filter is None: + fields_filter = ALL_FIELDS + + fields = fields_filter if isinstance(fields_filter, dict) else {} + + for f_str in fields_model: + if f_str not in fields: + + f = model._meta.get_field(f_str) + + if f.many_to_many: + fields[f_str] = ['exact'] + continue + + fields[f_str] = ['exact'] + + def get_keys_lookups(cl, sub_f): + r = [] + for lk, lv in cl.items(): + + if lk == 'contained_by': + continue + + sflk = f'{sub_f}{"__" if sub_f else ""}{lk}' + r.append(sflk) + + if hasattr(lv, 'class_lookups'): + r += get_keys_lookups(lv.class_lookups, sflk) + + if hasattr(lv, 'output_field') and hasattr(lv, 'output_field.class_lookups'): + r.append(f'{sflk}{"__" if sflk else ""}range') + + r += get_keys_lookups(lv.output_field.class_lookups, sflk) + + return r + + fields[f_str] = list( + set(fields[f_str] + get_keys_lookups(f.class_lookups, ''))) + + # Remove excluded fields + exclude = exclude or [] + + fields = [(f, lookups) + for f, lookups in fields.items() if f not in exclude] + + return OrderedDict(fields) + + @classmethod + def filter_for_field(cls, f, name, lookup_expr='exact'): + # Redefine método estático para ignorar filtro para + # fields que não possuam lookup_expr informado + + f, lookup_type = resolve_field(f, lookup_expr) + + default = { + 'field_name': name, + 'label': capfirst(f.verbose_name), + 'lookup_expr': lookup_expr + } + + filter_class, params = cls.filter_for_lookup( + f, lookup_type) + default.update(params) + if filter_class is not None: + return filter_class(**default) + return None diff --git a/sapl/api/core/forms.py b/sapl/api/core/forms.py new file mode 100644 index 000000000..ea61026c7 --- /dev/null +++ b/sapl/api/core/forms.py @@ -0,0 +1,25 @@ + +from sapl.api.core.filters import SaplFilterSetMixin +from sapl.sessao.models import SessaoPlenaria + +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA E CONSCIENTE DOS IMPACTOS NA API + +# FILTER SET dentro do core devem ser criados se o intuíto é um filter-set +# para o list da api. +# filter_set para actions, devem ser criados fora do core. + +# A CLASSE SessaoPlenariaFilterSet não é necessária +# o construtor da api construiría uma igual +# mas está aqui para demonstrar que caso queira customizar um filter_set +# que a api consiga recuperá-lo, para os endpoints básicos +# deve seguir os critérios de nomenclatura e herança + +# class [Model]FilterSet(SaplFilterSetMixin): +# class Meta(SaplFilterSetMixin.Meta): + + +class SessaoPlenariaFilterSet(SaplFilterSetMixin): + + class Meta(SaplFilterSetMixin.Meta): + model = SessaoPlenaria diff --git a/sapl/api/core/schema.py b/sapl/api/core/schema.py new file mode 100644 index 000000000..b7ca42354 --- /dev/null +++ b/sapl/api/core/schema.py @@ -0,0 +1,5 @@ +from drf_spectacular.openapi import AutoSchema + + +class Schema(AutoSchema): + pass diff --git a/sapl/api/core/serializers.py b/sapl/api/core/serializers.py new file mode 100644 index 000000000..b2731e4ca --- /dev/null +++ b/sapl/api/core/serializers.py @@ -0,0 +1,50 @@ +import logging + +from django.conf import settings +from rest_framework import serializers +from rest_framework.relations import StringRelatedField + +from sapl.base.models import CasaLegislativa + + +class IntRelatedField(StringRelatedField): + + def to_representation(self, value): + return int(value) + + +class ChoiceSerializer(serializers.Serializer): + value = serializers.SerializerMethodField() + text = serializers.SerializerMethodField() + + def get_text(self, obj): + return obj[1] + + def get_value(self, obj): + return obj[0] + + +class ModelChoiceSerializer(ChoiceSerializer): + + def get_text(self, obj): + return str(obj) + + def get_value(self, obj): + return obj.id + + +class ModelChoiceObjectRelatedField(serializers.RelatedField): + + def to_representation(self, value): + return ModelChoiceSerializer(value).data + + +class CasaLegislativaSerializer(serializers.ModelSerializer): + version = serializers.SerializerMethodField() + + def get_version(self, obj): + return settings.SAPL_VERSION + + class Meta: + model = CasaLegislativa + fields = '__all__' diff --git a/sapl/api/deprecated.py b/sapl/api/deprecated.py index 1b5fb84e5..45f5a12ae 100644 --- a/sapl/api/deprecated.py +++ b/sapl/api/deprecated.py @@ -1,5 +1,4 @@ -import logging import logging from django.contrib.contenttypes.models import ContentType @@ -10,20 +9,18 @@ from django.forms.widgets import MultiWidget, TextInput from django.http import Http404 from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ugettext_lazy as _ from django_filters.filters import CharFilter, ModelChoiceFilter, DateFilter from django_filters.rest_framework.backends import DjangoFilterBackend from django_filters.rest_framework.filterset import FilterSet from rest_framework import serializers -from rest_framework import serializers from rest_framework.generics import ListAPIView from rest_framework.mixins import ListModelMixin, RetrieveModelMixin from rest_framework.permissions import (IsAuthenticated, IsAuthenticatedOrReadOnly, AllowAny) from rest_framework.viewsets import GenericViewSet -from sapl.api.serializers import ModelChoiceSerializer, AutorSerializer,\ - ChoiceSerializer +from sapl.api.core.serializers import ModelChoiceSerializer, ChoiceSerializer +from sapl.api.serializers import AutorSerializer from sapl.base.models import TipoAutor, Autor, CasaLegislativa from sapl.materia.models import MateriaLegislativa from sapl.parlamentares.models import Legislatura @@ -210,7 +207,16 @@ class AutoresPossiveisFilterSet(FilterSet): if legislatura_relativa.atual(): q = q & Q(parlamentar_set__ativo=True) - return queryset.filter(q) + legislatura_anterior = self.request.GET.get('legislatura_anterior', 'False') + if legislatura_anterior.lower() == 'true': + legislaturas = Legislatura.objects.filter( + data_fim__lte=data_relativa).order_by('-data_fim')[:2] + if len(legislaturas) == 2: + _, leg_anterior = legislaturas + q = q | Q(parlamentar_set__mandato__data_inicio_mandato__gte=leg_anterior.data_inicio) + + qs = queryset.filter(q) + return qs def filter_comissao(self, queryset, data_relativa): return queryset.filter( @@ -505,7 +511,7 @@ class AutorListView(ListAPIView): model = Autor filter_class = AutorChoiceFilterSet - filter_backends = (DjangoFilterBackend, ) + filter_backends = (DjangoFilterBackend,) serializer_class = AutorChoiceSerializer @property @@ -651,7 +657,7 @@ class MateriaLegislativaViewSet(ListModelMixin, serializer_class = MateriaLegislativaOldSerializer queryset = MateriaLegislativa.objects.all() filter_backends = (DjangoFilterBackend,) - filter_fields = ('numero', 'ano', 'tipo', ) + filter_fields = ('numero', 'ano', 'tipo',) class SessaoPlenariaViewSet(ListModelMixin, diff --git a/sapl/api/forms.py b/sapl/api/forms.py index 7cb249ff3..e69de29bb 100644 --- a/sapl/api/forms.py +++ b/sapl/api/forms.py @@ -1,65 +0,0 @@ -from django.db.models.fields.files import FileField -from django.template.defaultfilters import capfirst -import django_filters -from django_filters.filters import CharFilter, NumberFilter -from django_filters.rest_framework.filterset import FilterSet -from django_filters.utils import resolve_field -from sapl.sessao.models import SessaoPlenaria - - -class SaplFilterSetMixin(FilterSet): - - o = CharFilter(method='filter_o') - - class Meta: - fields = '__all__' - filter_overrides = { - FileField: { - 'filter_class': django_filters.CharFilter, - 'extra': lambda f: { - 'lookup_expr': 'exact', - }, - }, - } - - def filter_o(self, queryset, name, value): - try: - return queryset.order_by( - *map(str.strip, value.split(','))) - except: - return queryset - - @classmethod - def filter_for_field(cls, f, name, lookup_expr='exact'): - # Redefine método estático para ignorar filtro para - # fields que não possuam lookup_expr informado - f, lookup_type = resolve_field(f, lookup_expr) - - default = { - 'field_name': name, - 'label': capfirst(f.verbose_name), - 'lookup_expr': lookup_expr - } - - filter_class, params = cls.filter_for_lookup( - f, lookup_type) - default.update(params) - if filter_class is not None: - return filter_class(**default) - return None - - -class SessaoPlenariaFilterSet(SaplFilterSetMixin): - year = NumberFilter(method='filter_year') - month = NumberFilter(method='filter_month') - - class Meta(SaplFilterSetMixin.Meta): - model = SessaoPlenaria - - def filter_year(self, queryset, name, value): - qs = queryset.filter(data_inicio__year=value) - return qs - - def filter_month(self, queryset, name, value): - qs = queryset.filter(data_inicio__month=value) - return qs diff --git a/sapl/api/pagination.py b/sapl/api/pagination.py index d205df3c5..67aecd7f5 100644 --- a/sapl/api/pagination.py +++ b/sapl/api/pagination.py @@ -6,13 +6,74 @@ from rest_framework.response import Response class StandardPagination(pagination.PageNumberPagination): page_size = 10 page_size_query_param = 'page_size' - max_page_size = 50 + max_page_size = 100 def paginate_queryset(self, queryset, request, view=None): if request.query_params.get('get_all', '').lower() == 'true': return None return super().paginate_queryset(queryset, request, view=view) + def get_paginated_response_schema(self, schema): + r = { + 'type': 'object', + 'properties': { + 'pagination': { + 'type': 'object', + 'properties': { + 'links': { + 'type': 'object', + 'properties': { + 'next': { + 'type': 'string', + 'nullable': True, + 'format': 'uri', + 'example': 'http://api.example.org/accounts/?{page_query_param}=4'.format( + page_query_param=self.page_query_param) + }, + 'previous': { + 'type': 'string', + 'nullable': True, + 'format': 'uri', + 'example': 'http://api.example.org/accounts/?{page_query_param}=2'.format( + page_query_param=self.page_query_param) + }, + } + }, + 'previous_page': { + 'type': 'integer', + 'example': 123, + }, + 'next_page': { + 'type': 'integer', + 'example': 123, + }, + 'start_index': { + 'type': 'integer', + 'example': 123, + }, + 'end_index': { + 'type': 'integer', + 'example': 123, + }, + 'total_entries': { + 'type': 'integer', + 'example': 123, + }, + 'total_pages': { + 'type': 'integer', + 'example': 123, + }, + 'page': { + 'type': 'integer', + 'example': 123, + }, + } + }, + 'results': schema, + }, + } + return r + def get_paginated_response(self, data): try: previous_page_number = self.page.previous_page_number() @@ -26,6 +87,10 @@ class StandardPagination(pagination.PageNumberPagination): return Response({ 'pagination': { + 'links': { + 'next': self.get_next_link(), + 'previous': self.get_previous_link(), + }, 'previous_page': previous_page_number, 'next_page': next_page_number, 'start_index': self.page.start_index(), diff --git a/sapl/api/serializers.py b/sapl/api/serializers.py index 2dcb518ba..d670af43e 100644 --- a/sapl/api/serializers.py +++ b/sapl/api/serializers.py @@ -1,44 +1,14 @@ import logging + from django.conf import settings from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist -from django.db.models import F, Q -from rest_framework import serializers -from rest_framework.relations import StringRelatedField -from sapl.parlamentares.models import Parlamentar, Mandato, Filiacao, Legislatura -from sapl.base.models import Autor, CasaLegislativa -from sapl.utils import filiacao_data +from django.db.models import Q from image_cropping.utils import get_backend +from rest_framework import serializers - -class IntRelatedField(StringRelatedField): - def to_representation(self, value): - return int(value) - - -class ChoiceSerializer(serializers.Serializer): - value = serializers.SerializerMethodField() - text = serializers.SerializerMethodField() - - def get_text(self, obj): - return obj[1] - - def get_value(self, obj): - return obj[0] - - -class ModelChoiceSerializer(ChoiceSerializer): - - def get_text(self, obj): - return str(obj) - - def get_value(self, obj): - return obj.id - - -class ModelChoiceObjectRelatedField(serializers.RelatedField): - - def to_representation(self, value): - return ModelChoiceSerializer(value).data +from sapl.api.core.serializers import ModelChoiceObjectRelatedField +from sapl.base.models import Autor +from sapl.parlamentares.models import Parlamentar, Mandato, Legislatura class AutorSerializer(serializers.ModelSerializer): @@ -52,18 +22,7 @@ class AutorSerializer(serializers.ModelSerializer): fields = '__all__' -class CasaLegislativaSerializer(serializers.ModelSerializer): - version = serializers.SerializerMethodField() - - def get_version(self, obj): - return settings.SAPL_VERSION - - class Meta: - model = CasaLegislativa - fields = '__all__' - - -class ParlamentarSerializer(serializers.ModelSerializer): +class ParlamentarSerializerPublic(serializers.ModelSerializer): class Meta: model = Parlamentar @@ -73,46 +32,39 @@ class ParlamentarSerializer(serializers.ModelSerializer): "telefone_residencia", "titulo_eleitor", "fax_residencia"] -class ParlamentarEditSerializer(serializers.ModelSerializer): - - class Meta: - model = Parlamentar - fields = '__all__' - - -class ParlamentarResumeSerializer(serializers.ModelSerializer): +class ParlamentarSerializerVerbose(serializers.ModelSerializer): titular = serializers.SerializerMethodField('check_titular') partido = serializers.SerializerMethodField('check_partido') fotografia_cropped = serializers.SerializerMethodField('crop_fotografia') logger = logging.getLogger(__name__) - def crop_fotografia(self,obj): + def crop_fotografia(self, obj): thumbnail_url = "" try: import os if not obj.fotografia or not os.path.exists(obj.fotografia.path): return thumbnail_url - thumbnail_url = get_backend().get_thumbnail_url( - obj.fotografia, - { - 'size': (128, 128), - 'box': obj.cropping, - 'crop': True, - 'detail': True, - } + thumbnail_url = get_backend().get_thumbnail_url( + obj.fotografia, + { + 'size': (128, 128), + 'box': obj.cropping, + 'crop': True, + 'detail': True, + } ) except Exception as e: self.logger.error(e) self.logger.error('erro processando arquivo: %s' % obj.fotografia.path) - + return thumbnail_url - def check_titular(self,obj): + def check_titular(self, obj): is_titular = None if not Legislatura.objects.exists(): self.logger.error("Não há legislaturas cadastradas.") return "" - + try: legislatura = Legislatura.objects.get(id=self.context.get('legislatura')) except ObjectDoesNotExist: @@ -125,17 +77,17 @@ class ParlamentarResumeSerializer(serializers.ModelSerializer): if mandato: is_titular = 'Sim' if mandato.titular else 'Não' else: - is_titular = '-' + is_titular = '-' return is_titular - def check_partido(self,obj): + def check_partido(self, obj): # Coloca a filiação atual ao invés da última # As condições para mostrar a filiação são: # A data de filiacao deve ser menor que a data de fim # da legislatura e data de desfiliação deve nula, ou maior, # ou igual a data de fim da legislatura - - username = self.context['request'].user.username + + username = self.context['request'].user.username if not Legislatura.objects.exists(): self.logger.error("Não há legislaturas cadastradas.") return "" @@ -143,7 +95,7 @@ class ParlamentarResumeSerializer(serializers.ModelSerializer): legislatura = Legislatura.objects.get(id=self.context.get('legislatura')) except ObjectDoesNotExist: legislatura = Legislatura.objects.first() - + try: self.logger.debug("user=" + username + ". Tentando obter filiação do parlamentar com (data<={} e data_desfiliacao>={}) " "ou (data<={} e data_desfiliacao=Null))." @@ -174,7 +126,7 @@ class ParlamentarResumeSerializer(serializers.ModelSerializer): self.logger.debug("user=" + username + ". Filiação encontrada com sucesso.") filiacao = filiacao.partido.sigla - + return filiacao class Meta: diff --git a/sapl/api/urls.py b/sapl/api/urls.py index 17fd432ab..ddfa93df4 100644 --- a/sapl/api/urls.py +++ b/sapl/api/urls.py @@ -1,55 +1,41 @@ -from django.conf import settings + from django.conf.urls import include, url -from rest_framework import permissions +from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, \ + SpectacularRedocView +from rest_framework.authtoken.views import obtain_auth_token from rest_framework.routers import DefaultRouter -from sapl.api.deprecated import MateriaLegislativaViewSet, SessaoPlenariaViewSet,\ - AutoresProvaveisListView, AutoresPossiveisListView, AutorListView,\ +from sapl.api.deprecated import MateriaLegislativaViewSet, SessaoPlenariaViewSet, \ + AutoresProvaveisListView, AutoresPossiveisListView, AutorListView, \ ModelChoiceView -from sapl.api.views import SaplApiViewSetConstrutor, AppVersionView, recria_token +from sapl.api.views import AppVersionView, recria_token +from sapl.api.viewset import SaplApiViewSetConstrutor from .apps import AppConfig app_name = AppConfig.name - router = DefaultRouter() router.register(r'materia$', MateriaLegislativaViewSet) router.register(r'sessao-plenaria', SessaoPlenariaViewSet) - for app, built_sets in SaplApiViewSetConstrutor._built_sets.items(): for view_prefix, viewset in built_sets.items(): router.register(app.label + '/' + view_prefix._meta.model_name, viewset) - urlpatterns_router = router.urls -urlpatterns_api_doc = [] -if 'drf_yasg' in settings.INSTALLED_APPS: - from drf_yasg import openapi - from drf_yasg.views import get_schema_view - schema_view = get_schema_view( - openapi.Info( - title="Sapl API - docs", - default_version='v1', - description="Sapl API - Docs - Configuração Básica", - ), - url=settings.SITE_URL, - public=True, - permission_classes=(permissions.AllowAny,), - ) - - urlpatterns_api_doc = [ - url(r'^docs/swagger(?P\.json|\.yaml)$', - schema_view.without_ui(cache_timeout=0), name='schema-json'), - url(r'^docs/swagger/$', - schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), - url(r'^docs/redoc/$', - schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), - ] +urlpatterns_api_doc = [ + # Optional UI: + url('^schema/swagger-ui/', + SpectacularSwaggerView.as_view(url_name='sapl.api:schema_api'), name='swagger_ui_schema_api'), + url('^schema/redoc/', + SpectacularRedocView.as_view(url_name='sapl.api:schema_api'), name='redoc_schema_api'), + # YOUR PATTERNS + url('^schema/', SpectacularAPIView.as_view(), name='schema_api'), +] # TODO: refatorar para customização da api automática deprecated_urlpatterns_api = [ @@ -57,13 +43,9 @@ deprecated_urlpatterns_api = [ AutoresProvaveisListView.as_view(), name='autores_provaveis_list'), url(r'^autor/possiveis', AutoresPossiveisListView.as_view(), name='autores_possiveis_list'), - url(r'^autor', AutorListView.as_view(), name='autor_list'), - url(r'^model/(?P\d+)/(?P\d*)$', ModelChoiceView.as_view(), name='model_list'), - - ] urlpatterns = [ @@ -73,6 +55,8 @@ urlpatterns = [ url(r'^api/version', AppVersionView.as_view()), url(r'^api/recriar-token/(?P\d*)$', recria_token, name="recria_token"), + url(r'^api/auth/token$', obtain_auth_token), + # implementar caminho para autenticação # https://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/ # url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')), diff --git a/sapl/api/views.py b/sapl/api/views.py index f4e853ccd..1c2bc988e 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -1,39 +1,14 @@ import logging -from django import apps from django.conf import settings -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ObjectDoesNotExist -from django.db.models import Q from django.db.models.signals import post_save from django.dispatch import receiver -from django.utils import timezone -from django.utils.decorators import classonlymethod from django.utils.translation import ugettext_lazy as _ -from django_filters.rest_framework.backends import DjangoFilterBackend -from rest_framework import serializers as rest_serializers from rest_framework.authtoken.models import Token -from rest_framework.decorators import action, api_view, permission_classes -from rest_framework.fields import SerializerMethodField +from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import IsAuthenticated, IsAdminUser from rest_framework.response import Response from rest_framework.views import APIView -from rest_framework.viewsets import ModelViewSet - -from sapl.api.forms import SaplFilterSetMixin -from sapl.api.permissions import SaplModelPermissions -from sapl.api.serializers import ChoiceSerializer, ParlamentarSerializer,\ - ParlamentarEditSerializer, ParlamentarResumeSerializer -from sapl.base.models import Autor, AppConfig, DOC_ADM_OSTENSIVO -from sapl.materia.models import Proposicao, TipoMateriaLegislativa,\ - MateriaLegislativa, Tramitacao -from sapl.norma.models import NormaJuridica -from sapl.parlamentares.models import Mandato, Legislatura -from sapl.parlamentares.models import Parlamentar -from sapl.protocoloadm.models import DocumentoAdministrativo,\ - DocumentoAcessorioAdministrativo, TramitacaoAdministrativo, Anexado -from sapl.sessao.models import SessaoPlenaria, ExpedienteSessao -from sapl.utils import models_with_gr_for_model, choice_anos_com_sessaoplenaria @receiver(post_save, sender=settings.AUTH_USER_MODEL) @@ -51,647 +26,6 @@ def recria_token(request, pk): return Response({"message": "Token recriado com sucesso!", "token": token.key}) -class BusinessRulesNotImplementedMixin: - def create(self, request, *args, **kwargs): - raise Exception(_("POST Create não implementado")) - - def update(self, request, *args, **kwargs): - raise Exception(_("PUT and PATCH não implementado")) - - def delete(self, request, *args, **kwargs): - raise Exception(_("DELETE Delete não implementado")) - - -class SaplApiViewSetConstrutor(): - - class SaplApiViewSet(ModelViewSet): - filter_backends = (DjangoFilterBackend,) - - _built_sets = {} - - @classonlymethod - def get_class_for_model(cls, model): - return cls._built_sets[model._meta.app_config][model] - - @classonlymethod - def build_class(cls): - import inspect - from sapl.api import serializers - - # Carrega todas as classes de sapl.api.serializers que possuam - # "Serializer" como Sufixo. - serializers_classes = inspect.getmembers(serializers) - serializers_classes = {i[0]: i[1] for i in filter( - lambda x: x[0].endswith('Serializer'), - serializers_classes - )} - - # Carrega todas as classes de sapl.api.forms que possuam - # "FilterSet" como Sufixo. - from sapl.api import forms - filters_classes = inspect.getmembers(forms) - filters_classes = {i[0]: i[1] for i in filter( - lambda x: x[0].endswith('FilterSet'), - filters_classes - )} - - built_sets = {} - - def build(_model): - object_name = _model._meta.object_name - - # Caso Exista, pega a classe sapl.api.serializers.{model}Serializer - # ou utiliza a base do drf para gerar uma automática para o model - serializer_name = f'{object_name}Serializer' - _serializer_class = serializers_classes.get( - serializer_name, rest_serializers.ModelSerializer) - - # Caso Exista, pega a classe sapl.api.forms.{model}FilterSet - # ou utiliza a base definida em sapl.forms.SaplFilterSetMixin - filter_name = f'{object_name}FilterSet' - _filterset_class = filters_classes.get( - filter_name, SaplFilterSetMixin) - - def create_class(): - - _meta_serializer = object if not hasattr( - _serializer_class, 'Meta') else _serializer_class.Meta - - # Define uma classe padrão para serializer caso não tenha sido - # criada a classe sapl.api.serializers.{model}Serializer - class SaplSerializer(_serializer_class): - __str__ = SerializerMethodField() - - class Meta(_meta_serializer): - if not hasattr(_meta_serializer, 'ref_name'): - ref_name = None - - if not hasattr(_meta_serializer, 'model'): - model = _model - - if hasattr(_meta_serializer, 'exclude'): - exclude = _meta_serializer.exclude - else: - if not hasattr(_meta_serializer, 'fields'): - fields = '__all__' - elif _meta_serializer.fields != '__all__': - fields = list( - _meta_serializer.fields) + ['__str__', ] - else: - fields = _meta_serializer.fields - - def get___str__(self, obj): - return str(obj) - - _meta_filterset = object if not hasattr( - _filterset_class, 'Meta') else _filterset_class.Meta - - # Define uma classe padrão para filtro caso não tenha sido - # criada a classe sapl.api.forms.{model}FilterSet - class SaplFilterSet(_filterset_class): - class Meta(_meta_filterset): - if not hasattr(_meta_filterset, 'model'): - model = _model - - # Define uma classe padrão ModelViewSet de DRF - class ModelSaplViewSet(SaplApiViewSetConstrutor.SaplApiViewSet): - queryset = _model.objects.all() - - # Utiliza o filtro customizado pela classe - # sapl.api.forms.{model}FilterSet - # ou utiliza o trivial SaplFilterSet definido acima - filterset_class = SaplFilterSet - - # Utiliza o serializer customizado pela classe - # sapl.api.serializers.{model}Serializer - # ou utiliza o trivial SaplSerializer definido acima - serializer_class = SaplSerializer - - return ModelSaplViewSet - - viewset = create_class() - viewset.__name__ = '%sModelSaplViewSet' % _model.__name__ - return viewset - - apps_sapl = [apps.apps.get_app_config( - n[5:]) for n in settings.SAPL_APPS] - for app in apps_sapl: - cls._built_sets[app] = {} - for model in app.get_models(): - cls._built_sets[app][model] = build(model) - - -SaplApiViewSetConstrutor.build_class() - -""" -1. Constroi uma rest_framework.viewsets.ModelViewSet para - todos os models de todas as apps do sapl -2. Define DjangoFilterBackend como ferramenta de filtro dos campos -3. Define Serializer como a seguir: - 3.1 - Define um Serializer genérico para cada módel - 3.2 - Recupera Serializer customizado em sapl.api.serializers - 3.3 - Para todo model é opcional a existência de - sapl.api.serializers.{model}Serializer. - Caso não seja definido um Serializer customizado, utiliza-se o trivial -4. Define um FilterSet como a seguir: - 4.1 - Define um FilterSet genérico para cada módel - 4.2 - Recupera FilterSet customizado em sapl.api.forms - 4.3 - Para todo model é opcional a existência de - sapl.api.forms.{model}FilterSet. - Caso não seja definido um FilterSet customizado, utiliza-se o trivial - 4.4 - todos os campos que aceitam lookup 'exact' - podem ser filtrados por default - -5. SaplApiViewSetConstrutor não cria padrões e/ou exige conhecimento alem dos - exigidos pela DRF. - -6. As rotas são criadas seguindo nome da app e nome do model - http://localhost:9000/api/{applabel}/{model_name}/ - e seguem as variações definidas em: - https://www.django-rest-framework.org/api-guide/routers/#defaultrouter - -7. Todas as viewsets construídas por SaplApiViewSetConstrutor e suas rotas - (paginate list, detail, edit, create, delete) - bem como testes em ambiente de desenvolvimento podem ser conferidas em: - http://localhost:9000/api/ - desde que settings.DEBUG=True - -**SaplApiViewSetConstrutor._built_sets** é um dict de dicts de models conforme: - { - ... - - 'audiencia': { - 'tipoaudienciapublica': TipoAudienciaPublicaViewSet, - 'audienciapublica': AudienciaPublicaViewSet, - 'anexoaudienciapublica': AnexoAudienciaPublicaViewSet - - ... - - }, - - ... - - 'base': { - 'casalegislativa': CasaLegislativaViewSet, - 'appconfig': AppConfigViewSet, - - ... - - } - - ... - - } -""" - -# Toda Classe construida acima, pode ser redefinida e aplicado quaisquer -# das possibilidades para uma classe normal criada a partir de -# rest_framework.viewsets.ModelViewSet conforme exemplo para a classe autor - -# decorator que processa um endpoint detail trivial com base no model passado, -# Um endpoint detail geralmente é um conteúdo baseado numa FK com outros possíveis filtros -# e os passados pelo proprio cliente, além de o serializer e o filterset -# ser desse model passado - - -class wrapper_queryset_response_for_drf_action(object): - def __init__(self, model): - self.model = model - - def __call__(self, cls): - - def wrapper(instance_view, *args, **kwargs): - # recupera a viewset do model anotado - iv = instance_view - viewset_from_model = SaplApiViewSetConstrutor._built_sets[ - self.model._meta.app_config][self.model] - - # apossa da instancia da viewset mae do action - # em uma viewset que processa dados do model passado no decorator - iv.queryset = viewset_from_model.queryset - iv.serializer_class = viewset_from_model.serializer_class - iv.filterset_class = viewset_from_model.filterset_class - - iv.queryset = instance_view.filter_queryset( - iv.get_queryset()) - - # chama efetivamente o metodo anotado que deve devolver um queryset - # com os filtros específicos definido pelo programador customizador - qs = cls(instance_view, *args, **kwargs) - - page = iv.paginate_queryset(qs) - data = iv.get_serializer( - page if page is not None else qs, many=True).data - - return iv.get_paginated_response( - data) if page is not None else Response(data) - - return wrapper - - -# decorator para recuperar e transformar o default -class customize(object): - def __init__(self, model): - self.model = model - - def __call__(self, cls): - - class _SaplApiViewSet( - cls, - SaplApiViewSetConstrutor._built_sets[ - self.model._meta.app_config][self.model] - ): - pass - - if hasattr(_SaplApiViewSet, 'build'): - _SaplApiViewSet = _SaplApiViewSet.build() - - SaplApiViewSetConstrutor._built_sets[ - self.model._meta.app_config][self.model] = _SaplApiViewSet - return _SaplApiViewSet - - -# Customização para AutorViewSet com implementação de actions específicas - - -@customize(Autor) -class _AutorViewSet: - """ - Neste exemplo de customização do que foi criado em - SaplApiViewSetConstrutor além do ofertado por - rest_framework.viewsets.ModelViewSet, dentre outras customizações - possíveis, foi adicionado as rotas referentes aos relacionamentos genéricos - - * padrão de ModelViewSet - /api/base/autor/ POST - create - /api/base/autor/ GET - list - /api/base/autor/{pk}/ GET - detail - /api/base/autor/{pk}/ PUT - update - /api/base/autor/{pk}/ PATCH - partial_update - /api/base/autor/{pk}/ DELETE - destroy - - * rotas desta classe local criadas pelo método build: - /api/base/autor/parlamentar - devolve apenas autores que são parlamentares - /api/base/autor/comissao - devolve apenas autores que são comissões - /api/base/autor/bloco - devolve apenas autores que são blocos parlamentares - /api/base/autor/bancada - devolve apenas autores que são bancadas parlamentares - /api/base/autor/frente - devolve apenas autores que são Frene parlamentares - /api/base/autor/orgao - devolve apenas autores que são Órgãos - """ - - def list_for_content_type(self, content_type): - qs = self.get_queryset() - qs = qs.filter(content_type=content_type) - - page = self.paginate_queryset(qs) - if page is not None: - serializer = self.serializer_class(page, many=True) - return self.get_paginated_response(serializer.data) - - serializer = self.get_serializer(page, many=True) - return Response(serializer.data) - - @classonlymethod - def build(cls): - - models_with_gr_for_autor = models_with_gr_for_model(Autor) - - for _model in models_with_gr_for_autor: - - @action(detail=False, name=_model._meta.model_name) - def actionclass(self, request, *args, **kwargs): - model = getattr(self, self.action)._AutorViewSet__model - - content_type = ContentType.objects.get_for_model(model) - return self.list_for_content_type(content_type) - - func = actionclass - func.mapping['get'] = func.kwargs['name'] - func.url_name = func.kwargs['name'] - func.url_path = func.kwargs['name'] - func.__model = _model - - setattr(cls, _model._meta.model_name, func) - return cls - - -@customize(Parlamentar) -class _ParlamentarViewSet: - class ParlamentarPermission(SaplModelPermissions): - def has_permission(self, request, view): - if request.method == 'GET': - return True - else: - perm = super().has_permission(request, view) - return perm - - permission_classes = (ParlamentarPermission, ) - - def get_serializer(self, *args, **kwargs): - if self.request.user.has_perm('parlamentares.add_parlamentar'): - self.serializer_class = ParlamentarEditSerializer - return super().get_serializer(*args, **kwargs) - - @action(detail=True) - def proposicoes(self, request, *args, **kwargs): - """ - Lista de proposições públicas de parlamentar específico - - :param int id: - Identificador do parlamentar que se quer recuperar as proposições - :return: uma lista de proposições - """ - # /api/parlamentares/parlamentar/{id}/proposicoes/ - # recupera proposições enviadas e incorporadas do parlamentar - # deve coincidir com - # /parlamentar/{pk}/proposicao - - return self.get_proposicoes(**kwargs) - - @wrapper_queryset_response_for_drf_action(model=Proposicao) - def get_proposicoes(self, **kwargs): - - return self.get_queryset().filter( - data_envio__isnull=False, - data_recebimento__isnull=False, - cancelado=False, - autor__object_id=kwargs['pk'], - autor__content_type=ContentType.objects.get_for_model(Parlamentar) - ) - - @action(detail=False, methods=['GET']) - def search_parlamentares(self, request, *args, **kwargs): - nome = request.query_params.get('nome_parlamentar', '') - parlamentares = Parlamentar.objects.filter( - nome_parlamentar__icontains=nome) - serializer_class = ParlamentarResumeSerializer( - parlamentares, many=True, context={'request': request}) - return Response(serializer_class.data) - - -@customize(Legislatura) -class _LegislaturaViewSet: - - @action(detail=True) - def parlamentares(self, request, *args, **kwargs): - - def get_serializer_context(): - return { - 'request': self.request, 'legislatura': kwargs['pk'] - } - - def get_serializer_class(): - return ParlamentarResumeSerializer - - self.get_serializer_context = get_serializer_context - self.get_serializer_class = get_serializer_class - - return self.get_parlamentares() - - @wrapper_queryset_response_for_drf_action(model=Parlamentar) - def get_parlamentares(self): - - try: - legislatura = Legislatura.objects.get(pk=self.kwargs['pk']) - except ObjectDoesNotExist: - return Response("") - - data_atual = timezone.localdate() - - filter_params = { - 'legislatura': legislatura, - 'data_inicio_mandato__gte': legislatura.data_inicio, - 'data_fim_mandato__lte': legislatura.data_fim, - } - - mandatos = Mandato.objects.filter( - **filter_params).order_by('-data_inicio_mandato') - - parlamentares = self.get_queryset().filter( - mandato__in=mandatos).distinct() - - return parlamentares - - -@customize(Proposicao) -class _ProposicaoViewSet: - """ - list: - Retorna lista de Proposições - - * Permissões: - - * Usuário Dono: - * Pode listar todas suas Proposições - - * Usuário Conectado ou Anônimo: - * Pode listar todas as Proposições incorporadas - - retrieve: - Retorna uma proposição passada pelo 'id' - - * Permissões: - - * Usuário Dono: - * Pode recuperar qualquer de suas Proposições - - * Usuário Conectado ou Anônimo: - * Pode recuperar qualquer das proposições incorporadas - - """ - class ProposicaoPermission(SaplModelPermissions): - def has_permission(self, request, view): - if request.method == 'GET': - return True - # se a solicitação é list ou detail, libera o teste de permissão - # e deixa o get_queryset filtrar de acordo com a regra de - # visibilidade das proposições, ou seja: - # 1. proposição incorporada é proposição pública - # 2. não incorporada só o autor pode ver - else: - perm = super().has_permission(request, view) - return perm - # não é list ou detail, então passa pelas regras de permissão e, - # depois disso ainda passa pelo filtro de get_queryset - - permission_classes = (ProposicaoPermission, ) - - def get_queryset(self): - qs = super().get_queryset() - - q = Q(data_recebimento__isnull=False, object_id__isnull=False) - if not self.request.user.is_anonymous: - - autor_do_usuario_logado = self.request.user.autor_set.first() - - # se usuário logado é operador de algum autor - if autor_do_usuario_logado: - q = Q(autor=autor_do_usuario_logado) - - # se é operador de protocolo, ve qualquer coisa enviada - if self.request.user.has_perm('protocoloadm.list_protocolo'): - q = Q(data_envio__isnull=False) | Q( - data_devolucao__isnull=False) - - qs = qs.filter(q) - return qs - - -@customize(MateriaLegislativa) -class _MateriaLegislativaViewSet: - class Meta: - ordering = ['-ano', 'tipo', 'numero'] - - @action(detail=True, methods=['GET']) - def ultima_tramitacao(self, request, *args, **kwargs): - - materia = self.get_object() - if not materia.tramitacao_set.exists(): - return Response({}) - - ultima_tramitacao = materia.tramitacao_set.order_by( - '-data_tramitacao', '-id').first() - - serializer_class = SaplApiViewSetConstrutor.get_class_for_model( - Tramitacao).serializer_class(ultima_tramitacao) - - return Response(serializer_class.data) - - @action(detail=True, methods=['GET']) - def anexadas(self, request, *args, **kwargs): - self.queryset = self.get_object().anexadas.all() - return self.list(request, *args, **kwargs) - - -@customize(TipoMateriaLegislativa) -class _TipoMateriaLegislativaViewSet: - - @action(detail=True, methods=['POST']) - def change_position(self, request, *args, **kwargs): - result = { - 'status': 200, - 'message': 'OK' - } - d = request.data - if 'pos_ini' in d and 'pos_fim' in d: - if d['pos_ini'] != d['pos_fim']: - pk = kwargs['pk'] - TipoMateriaLegislativa.objects.reposicione(pk, d['pos_fim']) - - return Response(result) - - -@customize(DocumentoAdministrativo) -class _DocumentoAdministrativoViewSet: - - class DocumentoAdministrativoPermission(SaplModelPermissions): - def has_permission(self, request, view): - if request.method == 'GET': - comportamento = AppConfig.attr('documentos_administrativos') - if comportamento == DOC_ADM_OSTENSIVO: - return True - """ - Diante da lógica implementada na manutenção de documentos - administrativos: - - Se o comportamento é doc adm ostensivo, deve passar pelo - teste de permissões sem avaliá-las - - se o comportamento é doc adm restritivo, deve passar pelo - teste de permissões avaliando-as - """ - return super().has_permission(request, view) - - permission_classes = (DocumentoAdministrativoPermission, ) - - def get_queryset(self): - """ - mesmo tendo passado pelo teste de permissões, deve ser filtrado, - pelo campo restrito. Sendo este igual a True, disponibilizar apenas - a um usuário conectado. Apenas isso, sem critérios outros de permissão, - conforme implementado em DocumentoAdministrativoCrud - """ - qs = super().get_queryset() - - if self.request.user.is_anonymous: - qs = qs.exclude(restrito=True) - return qs - - -@customize(DocumentoAcessorioAdministrativo) -class _DocumentoAcessorioAdministrativoViewSet: - - permission_classes = ( - _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission, ) - - def get_queryset(self): - qs = super().get_queryset() - - if self.request.user.is_anonymous: - qs = qs.exclude(documento__restrito=True) - return qs - - -@customize(TramitacaoAdministrativo) -class _TramitacaoAdministrativoViewSet(BusinessRulesNotImplementedMixin): - # TODO: Implementar regras de manutenção das tramitações de docs adms - - permission_classes = ( - _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission, ) - - def get_queryset(self): - qs = super().get_queryset() - - if self.request.user.is_anonymous: - qs = qs.exclude(documento__restrito=True) - return qs - - -@customize(Anexado) -class _AnexadoViewSet(BusinessRulesNotImplementedMixin): - - permission_classes = ( - _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission, ) - - def get_queryset(self): - qs = super().get_queryset() - - if self.request.user.is_anonymous: - qs = qs.exclude(documento__restrito=True) - return qs - - -@customize(SessaoPlenaria) -class _SessaoPlenariaViewSet: - - @action(detail=False) - def years(self, request, *args, **kwargs): - years = choice_anos_com_sessaoplenaria() - - serializer = ChoiceSerializer(years, many=True) - return Response(serializer.data) - - @action(detail=True) - def expedientes(self, request, *args, **kwargs): - return self.get_expedientes() - - @wrapper_queryset_response_for_drf_action(model=ExpedienteSessao) - def get_expedientes(self): - return self.get_queryset().filter(sessao_plenaria_id=self.kwargs['pk']) - - -@customize(NormaJuridica) -class _NormaJuridicaViewset: - - @action(detail=False, methods=['GET']) - def destaques(self, request, *args, **kwargs): - self.queryset = self.get_queryset().filter(norma_de_destaque=True) - return self.list(request, *args, **kwargs) - - class AppVersionView(APIView): permission_classes = (IsAuthenticated,) diff --git a/sapl/api/viewset.py b/sapl/api/viewset.py new file mode 100644 index 000000000..fe3a9fb0f --- /dev/null +++ b/sapl/api/viewset.py @@ -0,0 +1,413 @@ +import logging + +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Q +from django.utils.decorators import classonlymethod +from django.utils.translation import ugettext_lazy as _ +from rest_framework.decorators import action +from rest_framework.response import Response + +from sapl.api.core import customize, SaplApiViewSetConstrutor, \ + wrapper_queryset_response_for_drf_action, \ + BusinessRulesNotImplementedMixin +from sapl.api.core.serializers import ChoiceSerializer +from sapl.api.permissions import SaplModelPermissions +from sapl.api.serializers import ParlamentarSerializerVerbose, \ + ParlamentarSerializerPublic +from sapl.base.models import Autor, AppConfig, DOC_ADM_OSTENSIVO +from sapl.materia.models import Proposicao, TipoMateriaLegislativa, \ + MateriaLegislativa, Tramitacao +from sapl.norma.models import NormaJuridica +from sapl.parlamentares.models import Mandato, Legislatura +from sapl.parlamentares.models import Parlamentar +from sapl.protocoloadm.models import DocumentoAdministrativo, \ + DocumentoAcessorioAdministrativo, TramitacaoAdministrativo, Anexado +from sapl.sessao.models import SessaoPlenaria, ExpedienteSessao +from sapl.utils import models_with_gr_for_model, choice_anos_com_sessaoplenaria + +SaplApiViewSetConstrutor = SaplApiViewSetConstrutor.build_class() + + +@customize(Autor) +class _AutorViewSet: + # Customização para AutorViewSet com implementação de actions específicas + """ + Nesta customização do que foi criado em + SaplApiViewSetConstrutor além do ofertado por + rest_framework.viewsets.ModelViewSet, dentre outras customizações + possíveis, foi adicionado as rotas referentes aos relacionamentos genéricos + + * padrão de ModelViewSet + /api/base/autor/ POST - create + /api/base/autor/ GET - list + /api/base/autor/{pk}/ GET - detail + /api/base/autor/{pk}/ PUT - update + /api/base/autor/{pk}/ PATCH - partial_update + /api/base/autor/{pk}/ DELETE - destroy + + * rotas desta classe local criadas pelo método build: + /api/base/autor/parlamentar + devolve apenas autores que são parlamentares + /api/base/autor/comissao + devolve apenas autores que são comissões + /api/base/autor/bloco + devolve apenas autores que são blocos parlamentares + /api/base/autor/bancada + devolve apenas autores que são bancadas parlamentares + /api/base/autor/frente + devolve apenas autores que são Frene parlamentares + /api/base/autor/orgao + devolve apenas autores que são Órgãos + """ + + def list_for_content_type(self, content_type): + qs = self.get_queryset() + qs = qs.filter(content_type=content_type) + + page = self.paginate_queryset(qs) + if page is not None: + serializer = self.serializer_class(page, many=True) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(page, many=True) + return Response(serializer.data) + + @classonlymethod + def build(cls): + + models_with_gr_for_autor = models_with_gr_for_model(Autor) + + for _model in models_with_gr_for_autor: + + @action(detail=False, name=_model._meta.model_name) + def actionclass(self, request, *args, **kwargs): + model = getattr(self, self.action)._AutorViewSet__model + + content_type = ContentType.objects.get_for_model(model) + return self.list_for_content_type(content_type) + + func = actionclass + func.mapping['get'] = func.kwargs['name'] + func.url_name = func.kwargs['name'] + func.url_path = func.kwargs['name'] + func.__name__ = func.kwargs['name'] + func.__model = _model + + setattr(cls, _model._meta.model_name, func) + return cls + + +@customize(Parlamentar) +class _ParlamentarViewSet: + + class ParlamentarPermission(SaplModelPermissions): + + def has_permission(self, request, view): + if request.method == 'GET': + return True + else: + perm = super().has_permission(request, view) + return perm + + permission_classes = (ParlamentarPermission,) + + def get_serializer(self, *args, **kwargs): + if not self.request.user.has_perm('parlamentares.add_parlamentar'): + self.serializer_class = ParlamentarSerializerPublic + return super().get_serializer(*args, **kwargs) + + @action(detail=True) + def proposicoes(self, request, *args, **kwargs): + """ + Lista de proposições públicas de parlamentar específico + + :param int id: - Identificador do parlamentar que se quer recuperar as proposições + :return: uma lista de proposições + """ + # /api/parlamentares/parlamentar/{id}/proposicoes/ + # recupera proposições enviadas e incorporadas do parlamentar + # deve coincidir com + # /parlamentar/{pk}/proposicao + + return self.get_proposicoes(**kwargs) + + @wrapper_queryset_response_for_drf_action(model=Proposicao) + def get_proposicoes(self, **kwargs): + + return self.get_queryset().filter( + data_envio__isnull=False, + data_recebimento__isnull=False, + cancelado=False, + autor__object_id=kwargs['pk'], + autor__content_type=ContentType.objects.get_for_model(Parlamentar) + ) + + @action(detail=False, methods=['GET']) + def search_parlamentares(self, request, *args, **kwargs): + nome = request.query_params.get('nome_parlamentar', '') + parlamentares = Parlamentar.objects.filter( + nome_parlamentar__icontains=nome) + serializer_class = ParlamentarSerializerVerbose( + parlamentares, many=True, context={'request': request}) + return Response(serializer_class.data) + + +@customize(Legislatura) +class _LegislaturaViewSet: + + @action(detail=True) + def parlamentares(self, request, *args, **kwargs): + + def get_serializer_context(): + return { + 'request': self.request, 'legislatura': kwargs['pk'] + } + + def get_serializer_class(): + return ParlamentarSerializerVerbose + + self.get_serializer_context = get_serializer_context + self.get_serializer_class = get_serializer_class + + return self.get_parlamentares() + + @wrapper_queryset_response_for_drf_action(model=Parlamentar) + def get_parlamentares(self): + + try: + legislatura = Legislatura.objects.get(pk=self.kwargs['pk']) + except ObjectDoesNotExist: + return Response("") + + filter_params = { + 'legislatura': legislatura, + 'data_inicio_mandato__gte': legislatura.data_inicio, + 'data_fim_mandato__lte': legislatura.data_fim, + } + + mandatos = Mandato.objects.filter( + **filter_params).order_by('-data_inicio_mandato') + + parlamentares = self.get_queryset().filter( + mandato__in=mandatos).distinct() + + return parlamentares + + +@customize(Proposicao) +class _ProposicaoViewSet: + """ + list: + Retorna lista de Proposições + + * Permissões: + + * Usuário Dono: + * Pode listar todas suas Proposições + + * Usuário Conectado ou Anônimo: + * Pode listar todas as Proposições incorporadas + + retrieve: + Retorna uma proposição passada pelo 'id' + + * Permissões: + + * Usuário Dono: + * Pode recuperar qualquer de suas Proposições + + * Usuário Conectado ou Anônimo: + * Pode recuperar qualquer das proposições incorporadas + + """ + + class ProposicaoPermission(SaplModelPermissions): + + def has_permission(self, request, view): + if request.method == 'GET': + return True + # se a solicitação é list ou detail, libera o teste de permissão + # e deixa o get_queryset filtrar de acordo com a regra de + # visibilidade das proposições, ou seja: + # 1. proposição incorporada é proposição pública + # 2. não incorporada só o autor pode ver + else: + perm = super().has_permission(request, view) + return perm + # não é list ou detail, então passa pelas regras de permissão e, + # depois disso ainda passa pelo filtro de get_queryset + + permission_classes = (ProposicaoPermission,) + + def get_queryset(self): + qs = super().get_queryset() + + q = Q(data_recebimento__isnull=False, object_id__isnull=False) + if not self.request.user.is_anonymous: + + autor_do_usuario_logado = self.request.user.autor_set.first() + + # se usuário logado é operador de algum autor + if autor_do_usuario_logado: + q = Q(autor=autor_do_usuario_logado) + + # se é operador de protocolo, ve qualquer coisa enviada + if self.request.user.has_perm('protocoloadm.list_protocolo'): + q = Q(data_envio__isnull=False) | Q( + data_devolucao__isnull=False) + + qs = qs.filter(q) + return qs + + +@customize(MateriaLegislativa) +class _MateriaLegislativaViewSet: + + class Meta: + ordering = ['-ano', 'tipo', 'numero'] + + @action(detail=True, methods=['GET']) + def ultima_tramitacao(self, request, *args, **kwargs): + + materia = self.get_object() + if not materia.tramitacao_set.exists(): + return Response({}) + + ultima_tramitacao = materia.tramitacao_set.order_by( + '-data_tramitacao', '-id').first() + + serializer_class = SaplApiViewSetConstrutor.get_class_for_model( + Tramitacao).serializer_class(ultima_tramitacao) + + return Response(serializer_class.data) + + @action(detail=True, methods=['GET']) + def anexadas(self, request, *args, **kwargs): + self.queryset = self.get_object().anexadas.all() + return self.list(request, *args, **kwargs) + + +@customize(TipoMateriaLegislativa) +class _TipoMateriaLegislativaViewSet: + + @action(detail=True, methods=['POST']) + def change_position(self, request, *args, **kwargs): + result = { + 'status': 200, + 'message': 'OK' + } + d = request.data + if 'pos_ini' in d and 'pos_fim' in d: + if d['pos_ini'] != d['pos_fim']: + pk = kwargs['pk'] + TipoMateriaLegislativa.objects.reposicione(pk, d['pos_fim']) + + return Response(result) + + +@customize(DocumentoAdministrativo) +class _DocumentoAdministrativoViewSet: + + class DocumentoAdministrativoPermission(SaplModelPermissions): + + def has_permission(self, request, view): + if request.method == 'GET': + comportamento = AppConfig.attr('documentos_administrativos') + if comportamento == DOC_ADM_OSTENSIVO: + return True + """ + Diante da lógica implementada na manutenção de documentos + administrativos: + - Se o comportamento é doc adm ostensivo, deve passar pelo + teste de permissões sem avaliá-las + - se o comportamento é doc adm restritivo, deve passar pelo + teste de permissões avaliando-as + """ + return super().has_permission(request, view) + + permission_classes = (DocumentoAdministrativoPermission,) + + def get_queryset(self): + """ + mesmo tendo passado pelo teste de permissões, deve ser filtrado, + pelo campo restrito. Sendo este igual a True, disponibilizar apenas + a um usuário conectado. Apenas isso, sem critérios outros de permissão, + conforme implementado em DocumentoAdministrativoCrud + """ + qs = super().get_queryset() + + if self.request.user.is_anonymous: + qs = qs.exclude(restrito=True) + return qs + + +@customize(DocumentoAcessorioAdministrativo) +class _DocumentoAcessorioAdministrativoViewSet: + + permission_classes = ( + _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission,) + + def get_queryset(self): + qs = super().get_queryset() + + if self.request.user.is_anonymous: + qs = qs.exclude(documento__restrito=True) + return qs + + +@customize(TramitacaoAdministrativo) +class _TramitacaoAdministrativoViewSet(BusinessRulesNotImplementedMixin): + # TODO: Implementar regras de manutenção das tramitações de docs adms + + permission_classes = ( + _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission,) + + def get_queryset(self): + qs = super().get_queryset() + + if self.request.user.is_anonymous: + qs = qs.exclude(documento__restrito=True) + return qs + + +@customize(Anexado) +class _AnexadoViewSet(BusinessRulesNotImplementedMixin): + + permission_classes = ( + _DocumentoAdministrativoViewSet.DocumentoAdministrativoPermission,) + + def get_queryset(self): + qs = super().get_queryset() + + if self.request.user.is_anonymous: + qs = qs.exclude(documento__restrito=True) + return qs + + +@customize(SessaoPlenaria) +class _SessaoPlenariaViewSet: + + @action(detail=False) + def years(self, request, *args, **kwargs): + years = choice_anos_com_sessaoplenaria() + + serializer = ChoiceSerializer(years, many=True) + return Response(serializer.data) + + @action(detail=True) + def expedientes(self, request, *args, **kwargs): + return self.get_expedientes() + + @wrapper_queryset_response_for_drf_action(model=ExpedienteSessao) + def get_expedientes(self): + return self.get_queryset().filter(sessao_plenaria_id=self.kwargs['pk']) + + +@customize(NormaJuridica) +class _NormaJuridicaViewset: + + @action(detail=False, methods=['GET']) + def destaques(self, request, *args, **kwargs): + self.queryset = self.get_queryset().filter(norma_de_destaque=True) + return self.list(request, *args, **kwargs) diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py index 637886e8c..a35add9c2 100755 --- a/sapl/audiencia/views.py +++ b/sapl/audiencia/views.py @@ -37,7 +37,7 @@ class AudienciaCrud(Crud): coluna_materia = row[2] # Se mudar a ordem de listagem, mudar aqui. if coluna_materia[0]: materia = audiencia_materia[audiencia_id][0] - if materia: + if materia is not None: url_materia = reverse('sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id}) else: url_materia = None diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 1dd54e3a7..99d6842ad 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -2,6 +2,7 @@ import logging import os from crispy_forms.bootstrap import FieldWithButtons, InlineRadios, StrictButton, FormActions +from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button, Div, Field, Fieldset, Layout, Row, Submit from django import forms from django.conf import settings @@ -17,6 +18,7 @@ from django.utils import timezone from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ import django_filters +from haystack.forms import ModelSearchForm from sapl.audiencia.models import AudienciaPublica from sapl.base.models import Autor, TipoAutor, OperadorAutor @@ -37,7 +39,7 @@ from sapl.utils import (autor_label, autor_modal, ChoiceWithoutValidationField, choice_anos_com_normas, choice_anos_com_materias, FilterOverridesMetaMixin, FileFieldCheckMixin, ImageThumbnailFileInput, qs_override_django_filter, - RANGE_ANOS, YES_NO_CHOICES, + RANGE_ANOS, YES_NO_CHOICES, choice_tipos_normas, GoogleRecapthaMixin, parlamentares_ativos) from .models import AppConfig, CasaLegislativa @@ -879,6 +881,11 @@ class RelatorioNormasMesFilterSet(django_filters.FilterSet): choices=choice_anos_com_normas, initial=ultimo_ano_com_norma) + tipo = django_filters.ChoiceFilter(required=False, + label='Tipo Norma', + choices=choice_tipos_normas, + initial=0) + class Meta: model = NormaJuridica fields = ['ano'] @@ -890,7 +897,7 @@ class RelatorioNormasMesFilterSet(django_filters.FilterSet): self.filters['ano'].label = 'Ano' self.form.fields['ano'].required = True - row1 = to_row([('ano', 12)]) + row1 = to_row([('ano', 6), ('tipo', 6)]) buttons = FormActions( *[ @@ -969,6 +976,11 @@ class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): choices=choice_anos_com_normas, initial=ultimo_ano_com_norma) + tipo = django_filters.ChoiceFilter(required=False, + label='Tipo Norma', + choices=choice_tipos_normas, + initial=0) + vigencia = forms.ChoiceField( label=_('Vigência'), choices=[(True, "Vigente"), (False, "Não vigente")], @@ -984,7 +996,7 @@ class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): self.form.fields['ano'].required = True self.form.fields['vigencia'] = self.vigencia - row1 = to_row([('ano', 12)]) + row1 = to_row([('ano', 6), ('tipo', 6)]) row2 = to_row([('vigencia', 12)]) buttons = FormActions( @@ -1150,6 +1162,10 @@ class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): + ano = django_filters.ChoiceFilter(required=False, + label='Ano da Matéria', + choices=choice_anos_com_materias) + @property def qs(self): parent = super(RelatorioDataFimPrazoTramitacaoFilterSet, self).qs @@ -1171,10 +1187,11 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): self.filters['tramitacao__unidade_tramitacao_destino'].label = 'Unidade Destino' self.filters['tramitacao__status'].label = 'Status de tramitação' - row1 = to_row([('tramitacao__data_fim_prazo', 12)]) - row2 = to_row([('tramitacao__unidade_tramitacao_local', 6), + row1 = to_row([('ano', 12)]) + row2 = to_row([('tramitacao__data_fim_prazo', 12)]) + row3 = to_row([('tramitacao__unidade_tramitacao_local', 6), ('tramitacao__unidade_tramitacao_destino', 6)]) - row3 = to_row( + row4 = to_row( [('tipo', 6), ('tramitacao__status', 6)]) @@ -1196,7 +1213,7 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): self.form.helper.form_method = 'GET' self.form.helper.layout = Layout( Fieldset(_('Tramitações'), - row1, row2, row3, + row1, row2, row3, row4, buttons, ) ) @@ -1561,11 +1578,13 @@ class ConfiguracoesAppForm(ModelForm): 'assinatura_ata', 'estatisticas_acesso_normas', 'escolher_numero_materia_proposicao', + 'tramitacao_origem_fixa', 'tramitacao_materia', 'tramitacao_documento', 'google_recaptcha_site_key', 'google_recaptcha_secret_key', - 'sapl_as_sapn'] + 'sapl_as_sapn', + 'identificacao_de_documentos'] def __init__(self, *args, **kwargs): super(ConfiguracoesAppForm, self).__init__(*args, **kwargs) @@ -1888,3 +1907,23 @@ class RelatorioNormasPorAutorFilterSet(django_filters.FilterSet): row3, form_actions(label='Pesquisar')) ) + + +class SaplSearchForm(ModelSearchForm): + + def search(self): + sqs = super().search() + + return sqs.order_by('-last_update') + + """def get_models(self): + Return a list of the selected models. + search_models = [] + + if self.is_valid(): + for model in self.cleaned_data['models']: + search_models.append(haystack_get_model(*model.split('.'))) + + return search_models + + return ModelSearchForm.get_models(self)""" diff --git a/sapl/base/migrations/0048_appconfig_tramitacao_origem_fixa.py b/sapl/base/migrations/0048_appconfig_tramitacao_origem_fixa.py new file mode 100644 index 000000000..933d42a84 --- /dev/null +++ b/sapl/base/migrations/0048_appconfig_tramitacao_origem_fixa.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.28 on 2022-06-27 11:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0047_auto_20210315_1522'), + ] + + operations = [ + migrations.AddField( + model_name='appconfig', + name='tramitacao_origem_fixa', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, + verbose_name='Fixar Origem das tramitações como sendo a tramitação de destino da última tramitação?'), + ), + ] diff --git a/sapl/base/migrations/0049_auto_20220728_2029.py b/sapl/base/migrations/0049_auto_20220728_2029.py new file mode 100644 index 000000000..92794a4be --- /dev/null +++ b/sapl/base/migrations/0049_auto_20220728_2029.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.20 on 2022-07-28 23:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0048_appconfig_tramitacao_origem_fixa'), + ] + + operations = [ + migrations.AlterField( + model_name='appconfig', + name='tramitacao_origem_fixa', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, help_text='Ao utilizar a opção NÂO, você compreende que os controles de origem e destino das tramitações são anulados, podendo seu operador registrar quaisquer origem e destino para as tramitações. Se você colocar Não, fizer tramitações aleatórias e voltar para SIM, o destino da tramitação mais recente será utilizado para a origem de uma nova inserção!', verbose_name='Fixar origem de novas tramitações como sendo a tramitação de destino da última tramitação?'), + ), + ] diff --git a/sapl/base/migrations/0050_metadata.py b/sapl/base/migrations/0050_metadata.py new file mode 100644 index 000000000..ec2f7435f --- /dev/null +++ b/sapl/base/migrations/0050_metadata.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.20 on 2022-07-29 01:02 + +import django.contrib.postgres.fields.jsonb +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('base', '0049_auto_20220728_2029'), + ] + + operations = [ + migrations.CreateModel( + name='Metadata', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('object_id', models.PositiveIntegerField(blank=True, default=None, null=True)), + ('metadata', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=None, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True, verbose_name='Metadados')), + ('content_type', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='contenttypes.ContentType')), + ], + options={ + 'verbose_name': 'Metadado', + 'verbose_name_plural': 'Metadados', + 'unique_together': {('content_type', 'object_id')}, + }, + ), + ] diff --git a/sapl/base/migrations/0051_auto_20220814_2138.py b/sapl/base/migrations/0051_auto_20220814_2138.py new file mode 100644 index 000000000..39f98c00f --- /dev/null +++ b/sapl/base/migrations/0051_auto_20220814_2138.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.28 on 2022-08-15 00:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0050_metadata'), + ] + + operations = [ + migrations.AddField( + model_name='appconfig', + name='identificacao_de_documentos', + field=models.CharField(default='{sigla} Nº {numero}/{ano}{-}{complemento} - {nome}', help_text='\n Como mostrar a identificação dos documentos administrativos?\n Você pode usar um conjunto de combinações que pretender.\n Ao fazer sua edição, será mostrado logo abaixo o último documento cadastrado, como exemplo de resultado de sua edição.\n Em caso de erro, nenhum documento será mostrado e aparecerá apenas o formato padrão mínimo, que é este: "{sigla} Nº {numero}/{ano}{-}{complemento} - {nome}".\n Muito importante, use as chaves "{}", sem elas, você estará inserindo um texto qualquer e não o valor de um campo.\n Você pode combinar as seguintes campos: {sigla} {nome} {numero} {ano} {complemento} {assunto}\n Ainda pode ser usado {/}, {-}, {.} se você quiser que uma barra, traço, ou ponto\n seja adicionado apenas se o próximo campo que será usado tenha algum conteúdo\n (não use dois destes destes condicionais em sequência, somente o último será considerado).\n ', max_length=254, verbose_name='Formato da identificação dos documentos'), + ), + migrations.AlterField( + model_name='appconfig', + name='protocolo_manual', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Permitir informe manual de data e hora de protocolo?'), + ), + ] diff --git a/sapl/base/models.py b/sapl/base/models.py index fb2a3bd66..dda6ae48b 100644 --- a/sapl/base/models.py +++ b/sapl/base/models.py @@ -1,5 +1,8 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType +from django.contrib.postgres.fields.jsonb import JSONField +from django.core.cache import cache +from django.core.serializers.json import DjangoJSONEncoder from django.db import models from django.db.models.deletion import CASCADE from django.db.models.signals import post_migrate @@ -91,63 +94,124 @@ class AppConfig(models.Model): ('N', _('Nunca Protocolar ao incorporar uma proposição')), ) - documentos_administrativos = models.CharField( - max_length=1, - verbose_name=_('Visibilidade dos Documentos Administrativos'), - choices=TIPO_DOCUMENTO_ADMINISTRATIVO, default='O') + # MANTENHA A SEQUÊNCIA EQUIVALENTE COM /sapl/templates/base/layout.yaml + # AppConfig: - estatisticas_acesso_normas = models.CharField( + # CONFIGURAÇÕES GERAIS + # Linha 1 ------------ + esfera_federacao = models.CharField( max_length=1, - verbose_name=_('Estatísticas de acesso a normas'), - choices=RELATORIO_ATOS_ACESSADOS, default='N') + blank=True, + default="", + verbose_name=_('Esfera Federação'), + choices=ESFERA_FEDERACAO_CHOICES) + sapl_as_sapn = models.BooleanField( + verbose_name=_( + 'Utilizar SAPL como SAPN?'), + choices=YES_NO_CHOICES, default=False) - sequencia_numeracao_proposicao = models.CharField( - max_length=1, - verbose_name=_('Sequência de numeração de proposições'), - choices=SEQUENCIA_NUMERACAO_PROPOSICAO, default='A') + # MÓDULO PARLAMENTARES + # MÓDULO MESA DIRETORA + + # MÓDULO COMISSÕES + + # MÓDULO BANCADAS PARLAMENTARES + + # MÓDULO DOCUMENTOS ADMINISTRATIVOS + # Linha 1 ------------------------- + documentos_administrativos = models.CharField( + max_length=1, + verbose_name=_('Visibilidade dos Documentos Administrativos'), + choices=TIPO_DOCUMENTO_ADMINISTRATIVO, default='O') + tramitacao_documento = models.BooleanField( + verbose_name=_( + 'Tramitar documentos anexados junto com os documentos principais?'), + choices=YES_NO_CHOICES, default=True) + # Linha 2 ------------------------- + protocolo_manual = models.BooleanField( + verbose_name=_('Permitir informe manual de data e hora de protocolo?'), + choices=YES_NO_CHOICES, default=False) sequencia_numeracao_protocolo = models.CharField( max_length=1, verbose_name=_('Sequência de numeração de protocolos'), choices=SEQUENCIA_NUMERACAO_PROTOCOLO, default='A') - inicio_numeracao_protocolo = models.PositiveIntegerField( verbose_name=_('Início da numeração de protocolo'), default=1 ) + # Linha 3 ------------------------- + identificacao_de_documentos = models.CharField( + max_length=254, + verbose_name=_('Formato da identificação dos documentos'), + default='{sigla} Nº {numero}/{ano}{-}{complemento} - {nome}', + help_text=""" + Como mostrar a identificação dos documentos administrativos? + Você pode usar um conjunto de combinações que pretender. + Ao fazer sua edição, será mostrado logo abaixo o último documento cadastrado, como exemplo de resultado de sua edição. + Em caso de erro, nenhum documento será mostrado e aparecerá apenas o formato padrão mínimo, que é este: "{sigla} Nº {numero}/{ano}{-}{complemento} - {nome}". + Muito importante, use as chaves "{}", sem elas, você estará inserindo um texto qualquer e não o valor de um campo. + Você pode combinar as seguintes campos: {sigla} {nome} {numero} {ano} {complemento} {assunto} + Ainda pode ser usado {/}, {-}, {.} se você quiser que uma barra, traço, ou ponto + seja adicionado apenas se o próximo campo que será usado tenha algum conteúdo + (não use dois destes destes condicionais em sequência, somente o último será considerado). + """ + ) - esfera_federacao = models.CharField( + # MÓDULO PROPOSIÇÕES + # Linha 1 ---------- + sequencia_numeracao_proposicao = models.CharField( max_length=1, - blank=True, - default="", - verbose_name=_('Esfera Federação'), - choices=ESFERA_FEDERACAO_CHOICES) + verbose_name=_('Sequência de numeração de proposições'), + choices=SEQUENCIA_NUMERACAO_PROPOSICAO, default='A') + receber_recibo_proposicao = models.BooleanField( + verbose_name=_('Protocolar proposição somente com recibo?'), + choices=YES_NO_CHOICES, default=True) + proposicao_incorporacao_obrigatoria = models.CharField( + verbose_name=_('Regra de incorporação de proposições e protocolo'), + max_length=1, choices=POLITICA_PROTOCOLO_CHOICES, default='O') + escolher_numero_materia_proposicao = models.BooleanField( + verbose_name=_( + 'Indicar número da matéria a ser gerada na proposição?'), + choices=YES_NO_CHOICES, default=False) - # TODO: a ser implementado na versão 3.2 - # painel_aberto = models.BooleanField( - # verbose_name=_('Painel aberto para usuário anônimo'), - # choices=YES_NO_CHOICES, default=False) + # MÓDULO MATÉRIA LEGISLATIVA + # Linha 1 ------------------ + tramitacao_origem_fixa = models.BooleanField( + verbose_name=_( + 'Fixar origem de novas tramitações como sendo a tramitação de destino da última tramitação?'), + choices=YES_NO_CHOICES, + default=True, + help_text=_('Ao utilizar a opção NÂO, você compreende que os controles ' + 'de origem e destino das tramitações são anulados, ' + 'podendo seu operador registrar quaisquer origem e ' + 'destino para as tramitações. Se você colocar Não, ' + 'fizer tramitações aleatórias e voltar para SIM, ' + 'o destino da tramitação mais recente será utilizado ' + 'para a origem de uma nova inserção!')) + tramitacao_materia = models.BooleanField( + verbose_name=_( + 'Tramitar matérias anexadas junto com as matérias principais?'), + choices=YES_NO_CHOICES, default=True) + # MÓDULO NORMAS JURÍDICAS + # MÓDULO TEXTOS ARTICULADOS + # Linha 1 ----------------- texto_articulado_proposicao = models.BooleanField( verbose_name=_('Usar Textos Articulados para Proposições'), choices=YES_NO_CHOICES, default=False) - texto_articulado_materia = models.BooleanField( verbose_name=_('Usar Textos Articulados para Matérias'), choices=YES_NO_CHOICES, default=False) - texto_articulado_norma = models.BooleanField( verbose_name=_('Usar Textos Articulados para Normas'), choices=YES_NO_CHOICES, default=True) - proposicao_incorporacao_obrigatoria = models.CharField( - verbose_name=_('Regra de incorporação de proposições e protocolo'), - max_length=1, choices=POLITICA_PROTOCOLO_CHOICES, default='O') - + # MÓDULO SESSÃO PLENÁRIA assinatura_ata = models.CharField( verbose_name=_('Quem deve assinar a ata'), max_length=1, choices=ASSINATURA_ATA_CHOICES, default='T') - + # MÓDULO PAINEL cronometro_discurso = models.DurationField( verbose_name=_('Cronômetro do Discurso'), blank=True, @@ -172,28 +236,20 @@ class AppConfig(models.Model): default=False, verbose_name=_('Mostrar brasão da Casa no painel?')) - receber_recibo_proposicao = models.BooleanField( - verbose_name=_('Protocolar proposição somente com recibo?'), - choices=YES_NO_CHOICES, default=True) - - protocolo_manual = models.BooleanField( - verbose_name=_('Informar data e hora de protocolo?'), - choices=YES_NO_CHOICES, default=False) + # MÓDULO ESTATÍSTICAS DE ACESSO + estatisticas_acesso_normas = models.CharField( + max_length=1, + verbose_name=_('Estatísticas de acesso a normas'), + choices=RELATORIO_ATOS_ACESSADOS, default='N') - escolher_numero_materia_proposicao = models.BooleanField( - verbose_name=_( - 'Indicar número da matéria a ser gerada na proposição?'), - choices=YES_NO_CHOICES, default=False) + # MÓDULO SEGURANÇA - tramitacao_materia = models.BooleanField( - verbose_name=_( - 'Tramitar matérias anexadas junto com as matérias principais?'), - choices=YES_NO_CHOICES, default=True) + # MÓDULO LEXML - tramitacao_documento = models.BooleanField( - verbose_name=_( - 'Tramitar documentos anexados junto com os documentos principais?'), - choices=YES_NO_CHOICES, default=True) + # TODO: a ser implementado na versão 3.2 + # painel_aberto = models.BooleanField( + # verbose_name=_('Painel aberto para usuário anônimo'), + # choices=YES_NO_CHOICES, default=False) google_recaptcha_site_key = models.CharField( verbose_name=_('Chave pública gerada pelo Google Recaptcha'), @@ -202,11 +258,6 @@ class AppConfig(models.Model): verbose_name=_('Chave privada gerada pelo Google Recaptcha'), max_length=256, default='') - sapl_as_sapn = models.BooleanField( - verbose_name=_( - 'Utilizar SAPL como SAPN?'), - choices=YES_NO_CHOICES, default=False) - class Meta: verbose_name = _('Configurações da Aplicação') verbose_name_plural = _('Configurações da Aplicação') @@ -216,15 +267,31 @@ class AppConfig(models.Model): ) ordering = ('-id',) + def save(self, force_insert=False, force_update=False, using=None, + update_fields=None): + fields = self._meta.get_fields() + for f in fields: + if f.name != 'id' and not cache.get(f'sapl_{f.name}') is None: + cache.set(f'sapl_{f.name}', getattr(self, f.name), 600) + + return models.Model.save(self, force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields) + @classmethod def attr(cls, attr): + value = cache.get(f'sapl_{attr}') + if not value is None: + return value + config = AppConfig.objects.first() if not config: config = AppConfig() config.save() - return getattr(config, attr) + value = getattr(config, attr) + cache.set(f'sapl_{attr}', value, 600) + + return value def __str__(self): return _('Configurações da Aplicação - %(id)s') % { @@ -376,3 +443,29 @@ class AuditLog(models.Model): self.model_name, self.username, ) + + +class Metadata(models.Model): + content_type = models.ForeignKey( + ContentType, + blank=True, + null=True, + default=None, + on_delete=models.PROTECT) + object_id = models.PositiveIntegerField( + blank=True, + null=True, + default=None) + content_object = GenericForeignKey('content_type', 'object_id') + + metadata = JSONField( + verbose_name=_('Metadados'), + blank=True, null=True, default=None, encoder=DjangoJSONEncoder) + + class Meta: + verbose_name = _('Metadado') + verbose_name_plural = _('Metadados') + unique_together = (('content_type', 'object_id'), ) + + def __str__(self): + return f'Metadata de {self.content_object}' diff --git a/sapl/base/receivers.py b/sapl/base/receivers.py index 6a1e622be..0813ccf9a 100644 --- a/sapl/base/receivers.py +++ b/sapl/base/receivers.py @@ -4,7 +4,7 @@ import logging from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core import serializers -from django.db.models.signals import post_delete, post_save,\ +from django.db.models.signals import post_delete, post_save, \ post_migrate from django.db.utils import DEFAULT_DB_ALIAS from django.dispatch import receiver @@ -13,10 +13,23 @@ from django.utils.translation import ugettext_lazy as _ from sapl.base.email_utils import do_envia_email_tramitacao from sapl.base.models import AuditLog, TipoAutor, Autor +from sapl.decorators import receiver_multi_senders from sapl.materia.models import Tramitacao from sapl.protocoloadm.models import TramitacaoAdministrativo from sapl.utils import get_base_url, models_with_gr_for_model +models_with_gr_for_autor = models_with_gr_for_model(Autor) + + +@receiver_multi_senders(post_save, senders=models_with_gr_for_autor) +def handle_update_autor_related(sender, **kwargs): + # for m in models_with_gr_for_autor: + instance = kwargs.get('instance') + autor = instance.autor.first() + if autor: + autor.nome = str(instance) + autor.save() + @receiver(post_save, sender=Tramitacao) @receiver(post_save, sender=TramitacaoAdministrativo) @@ -143,11 +156,9 @@ def audit_log_post_save(sender, **kwargs): def cria_models_tipo_autor(app_config=None, verbosity=2, interactive=True, using=DEFAULT_DB_ALIAS, **kwargs): - models = models_with_gr_for_model(Autor) - print("\n\033[93m\033[1m{}\033[0m".format( _('Atualizando registros TipoAutor do SAPL:'))) - for model in models: + for model in models_with_gr_for_autor: content_type = ContentType.objects.get_for_model(model) tipo_autor = TipoAutor.objects.filter( content_type=content_type.id).exists() diff --git a/sapl/base/search_indexes.py b/sapl/base/search_indexes.py index 359fbd44b..e76f00168 100644 --- a/sapl/base/search_indexes.py +++ b/sapl/base/search_indexes.py @@ -1,5 +1,5 @@ -import os.path import logging +import os.path from django.db.models import F, Q, Value from django.db.models.fields import TextField @@ -15,6 +15,7 @@ from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC, STATUS_TA_PUBLIC, Dispositivo) from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa from sapl.norma.models import NormaJuridica +from sapl.sessao.models import SessaoPlenaria from sapl.settings import SOLR_URL from sapl.utils import RemoveTag @@ -37,9 +38,14 @@ class TextExtractField(CharField): try: with open(arquivo.path, 'rb') as f: content = self.backend.extract_file_contents(f) - if not content or not content['contents']: - return '' - data = content['contents'] + data = '' + if content: + # update from Solr 7.5 to 8.9 + if content['contents']: + data += content['contents'] + if content['file']: + data += content['file'] + return data except Exception as e: print('erro processando arquivo: ' % arquivo.path) self.logger.error(arquivo.path) @@ -168,3 +174,15 @@ class MateriaLegislativaIndex(DocumentoAcessorioIndex): ('observacao', 'string_extractor'), ) ) + + +class SessaoPlenariaIndex(DocumentoAcessorioIndex): + model = SessaoPlenaria + text = TextExtractField( + document=True, use_template=True, + model_attr=( + ('upload_ata', 'file_extractor'), + ('upload_anexo', 'file_extractor'), + ('upload_pauta', 'file_extractor'), + ) + ) diff --git a/sapl/base/templatetags/common_tags.py b/sapl/base/templatetags/common_tags.py index 56d7d356e..f5b9c2c36 100644 --- a/sapl/base/templatetags/common_tags.py +++ b/sapl/base/templatetags/common_tags.py @@ -1,4 +1,3 @@ -from _functools import reduce import re from django import template @@ -10,6 +9,7 @@ from sapl.base.models import AppConfig from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa, Proposicao from sapl.norma.models import NormaJuridica from sapl.parlamentares.models import Filiacao +from sapl.sessao.models import SessaoPlenaria from sapl.utils import filiacao_data, SEPARADOR_HASH_PROPOSICAO register = template.Library() @@ -51,6 +51,13 @@ def model_verbose_name_plural(class_name): model = get_class(class_name) return model._meta.verbose_name_plural +@register.filter +def format_user(user): + if user.first_name: + return user.first_name + " " + user.last_name + " (" + user.username + ")" + else: + return user.username + @register.filter def meta_model_value(instance, attr): try: @@ -103,6 +110,23 @@ def paginacao_limite_superior(pagina): return int(pagina) * 10 +@register.filter +def resultado_votacao(materia): + ra = materia.registrovotacao_set.last() + rb = materia.retiradapauta_set.last() + rl = materia.registroleitura_set.last() + + if ra: + resultado = ra.tipo_resultado_votacao.nome + elif rb: + resultado = rb.tipo_de_retirada.descricao + elif rl: + resultado = "Matéria lida" + else: + resultado = "" + return resultado + + @register.filter def lookup(d, key): return d[key] if key in d else [] @@ -245,6 +269,7 @@ def youtube_url(value): r = re.findall(youtube_pattern, value) return True if r else False + @register.filter def facebook_url(value): value = value.lower() @@ -252,6 +277,7 @@ def facebook_url(value): r = re.findall(facebook_pattern, value) return True if r else False + @register.filter def youtube_id(value): from urllib.parse import urlparse, parse_qs @@ -289,6 +315,8 @@ def search_get_model(object): return 'd' elif type(object) == NormaJuridica: return 'n' + elif type(object) == SessaoPlenaria: + return 's' return None diff --git a/sapl/base/urls.py b/sapl/base/urls.py index b85c55a44..058264049 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -14,7 +14,7 @@ from sapl.settings import MEDIA_URL, LOGOUT_REDIRECT_URL from .apps import AppConfig from .forms import LoginForm -from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, +from .views import (LoginSapl, AlterarSenha, AppConfigCrud, CasaLegislativaCrud, HelpTopicView, LogotipoView, RelatorioAtasView, RelatorioAudienciaView, RelatorioDataFimPrazoTramitacaoView, RelatorioHistoricoTramitacaoView, RelatorioMateriasPorAnoAutorTipoView, RelatorioMateriasPorAutorView, @@ -173,8 +173,7 @@ urlpatterns = [ (TemplateView.as_view(template_name='sistema.html')), name='sistema'), - url(r'^login/$', views.LoginView.as_view(template_name='base/login.html', authentication_form=LoginForm), - name='login'), + url(r'^login/$', LoginSapl.as_view(), name='login'), url(r'^logout/$', views.LogoutView.as_view(), {'next_page': LOGOUT_REDIRECT_URL}, name='logout'), diff --git a/sapl/base/views.py b/sapl/base/views.py index 447509882..05a6c8f49 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -4,9 +4,11 @@ import datetime import itertools import logging import os +import re +from django.apps.registry import apps from django.contrib import messages -from django.contrib.auth import get_user_model +from django.contrib.auth import get_user_model, views from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.models import Group from django.contrib.auth.tokens import default_token_generator @@ -23,6 +25,7 @@ from django.template import TemplateDoesNotExist from django.template.loader import get_template from django.urls import reverse, reverse_lazy from django.utils import timezone +from django.utils.decorators import method_decorator from django.utils.encoding import force_bytes from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode from django.utils.translation import ugettext_lazy as _ @@ -31,12 +34,13 @@ from django.views.generic.base import RedirectView, TemplateView from django_filters.views import FilterView from haystack.query import SearchQuerySet from haystack.views import SearchView +from ratelimit.decorators import ratelimit from sapl import settings from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica from sapl.base.forms import (AutorForm, TipoAutorForm, AutorFilterSet, RecuperarSenhaForm, NovaSenhaForm, UserAdminForm, - OperadorAutorForm) + OperadorAutorForm, LoginForm, SaplSearchForm) from sapl.base.models import Autor, TipoAutor, OperadorAutor from sapl.comissoes.models import Comissao, Reuniao from sapl.crud.base import CrudAux, make_pagination, Crud,\ @@ -62,7 +66,7 @@ from sapl.settings import EMAIL_SEND_USER from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, parlamentares_ativos, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, num_materias_por_tipo, google_recaptcha_configured, sapl_as_sapn, - groups_remove_user, groups_add_user) + groups_remove_user, groups_add_user, get_client_ip) from .forms import (AlterarSenhaForm, CasaLegislativaForm, ConfiguracoesAppForm, RelatorioAtasFilterSet, RelatorioAudienciaFilterSet, RelatorioDataFimPrazoTramitacaoFilterSet, @@ -86,6 +90,15 @@ class IndexView(TemplateView): return TemplateView.get(self, request, *args, **kwargs) +@method_decorator(ratelimit(key=lambda group, request: get_client_ip(request), + rate='20/m', + method=ratelimit.UNSAFE, + block=True), name='dispatch') +class LoginSapl(views.LoginView): + template_name = 'base/login.html' + authentication_form = LoginForm + + class ConfirmarEmailView(TemplateView): template_name = "email/confirma.html" @@ -699,6 +712,12 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView): context['data_tramitacao'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' + self.request.GET['tramitacao__data_fim_prazo_1']) + + if self.request.GET['ano']: + context['ano'] = self.request.GET['ano'] + else: + context['ano'] = '' + if self.request.GET['tipo']: tipo = self.request.GET['tipo'] context['tipo'] = ( @@ -896,7 +915,8 @@ class RelatorioMateriasTramitacaoView(RelatorioMixin, FilterView): ) else: context['materia__autor'] = '' - + if 'page' in qr: + del qr['page'] context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['show_results'] = show_results_filter_set(qr) @@ -1876,6 +1896,9 @@ class UserCrud(Crud): 'usuario', 'groups', 'is_active' ] + def openapi_url(self): + return '' + def resolve_url(self, suffix, args=None): return reverse('sapl.base:%s' % self.url_name(suffix), args=args) @@ -2079,10 +2102,45 @@ class AppConfigCrud(CrudAux): kwargs={'pk': app_config.pk})) class UpdateView(CrudAux.UpdateView): - - template_name = 'base/AppConfig.html' form_class = ConfiguracoesAppForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.model._meta.verbose_name + return context + + def get(self, request, *args, **kwargs): + if 'jsidd' in request.GET: + return self.json_simular_identificacao_de_documentos(request, *args, **kwargs) + + return super().get(request, *args, **kwargs) + + def json_simular_identificacao_de_documentos(self, request, *args, **kwargs): + + DocumentoAdministrativo = apps.get_model( + 'protocoloadm', + 'DocumentoAdministrativo' + ) + + d = DocumentoAdministrativo.objects.order_by('-id').first() + + jsidd = request.GET.get('jsidd', '') + values = { + '{sigla}': d.tipo.sigla if d else 'OF', + '{nome}': d.tipo.descricao if d else 'Ofício', + '{numero}': f'{d.numero:0>3}' if d else '001', + '{ano}': f'{d.ano}' if d else str(timezone.now().year), + '{complemento}': d.complemento if d else 'GAB', + '{assunto}': d.assunto if d else 'Simulação de Identificação de Documentos' + } + + result = DocumentoAdministrativo.mask_to_str(values, jsidd) + + return JsonResponse({ + 'jsidd': result[0], + 'error': list(result[1]) + }) + def form_valid(self, form): numeracao = AppConfig.objects.last().sequencia_numeracao_protocolo numeracao_antiga = AppConfig.objects.last().inicio_numeracao_protocolo @@ -2151,15 +2209,40 @@ class AppConfigCrud(CrudAux): class SaplSearchView(SearchView): results_per_page = 10 + def __init__(self, template=None, load_all=True, form_class=None, searchqueryset=None, results_per_page=None): + super().__init__( + template=template, + load_all=load_all, + form_class=SaplSearchForm, + searchqueryset=None, + results_per_page=results_per_page + ) + def get_context(self): context = super(SaplSearchView, self).get_context() + data = self.request.GET or self.request.POST + data = data.copy() + if 'models' in self.request.GET: models = self.request.GET.getlist('models') else: models = [] context['models'] = '' + context['is_paginated'] = True + + page_obj = context['page'] + context['page_obj'] = page_obj + paginator = context['paginator'] + context['page_range'] = make_pagination( + page_obj.number, paginator.num_pages) + + if 'page' in data: + del data['page'] + + context['filter_url'] = ( + '&' + data.urlencode()) if len(data) > 0 else '' for m in models: context['models'] = context['models'] + '&models=' + m diff --git a/sapl/comissoes/migrations/0028_auto_20220807_2257.py b/sapl/comissoes/migrations/0028_auto_20220807_2257.py new file mode 100644 index 000000000..5c405165a --- /dev/null +++ b/sapl/comissoes/migrations/0028_auto_20220807_2257.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.28 on 2022-08-08 01:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comissoes', '0027_auto_20210209_1047'), + ] + + operations = [ + migrations.AlterField( + model_name='participacao', + name='motivo_desligamento', + field=models.TextField(blank=True, verbose_name='Motivo Desligamento'), + ), + migrations.AlterField( + model_name='participacao', + name='observacao', + field=models.TextField(blank=True, verbose_name='Observação'), + ), + ] diff --git a/sapl/comissoes/models.py b/sapl/comissoes/models.py index 4bb1aa535..a3f632a43 100644 --- a/sapl/comissoes/models.py +++ b/sapl/comissoes/models.py @@ -177,11 +177,10 @@ class Participacao(models.Model): # ComposicaoComissao data_desligamento = models.DateField(blank=True, null=True, verbose_name=_('Data Desligamento')) - motivo_desligamento = models.CharField( - max_length=150, blank=True, - verbose_name=_('Motivo Desligamento')) - observacao = models.CharField( - max_length=150, blank=True, verbose_name=_('Observação')) + motivo_desligamento = models.TextField( + blank=True, verbose_name=_('Motivo Desligamento')) + observacao = models.TextField( + blank=True, verbose_name=_('Observação')) class Meta: verbose_name = _('Participação em Comissão') diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py index 48a19ddf6..0c9329f05 100644 --- a/sapl/comissoes/views.py +++ b/sapl/comissoes/views.py @@ -351,15 +351,17 @@ class AdicionaPautaView(PermissionRequiredMixin, FilterView): context['root_pk'] = context['object'].comissao.pk qr = self.request.GET.copy() - materias_pauta = PautaReuniao.objects.filter(reuniao=context['object']) nao_listar = [mp.materia.pk for mp in materias_pauta] - context['object_list'] = context['object_list'].filter( - tramitacao__unidade_tramitacao_destino__comissao=context['root_pk'] - ).exclude(materia__pk__in=nao_listar).order_by( - "materia__tipo", "-materia__ano", "materia__numero" - ) + if not len(qr): + context['object_list'] = [] + else: + context['object_list'] = context['object_list'].filter( + tramitacao__unidade_tramitacao_destino__comissao=context['root_pk'] + ).exclude(materia__pk__in=nao_listar).order_by( + "materia__tipo", "-materia__ano", "materia__numero" + ) context['numero_resultados'] = len(context['object_list']) context['show_results'] = show_results_filter_set(qr) diff --git a/sapl/compilacao/migrations/0019_auto_20220630_1420.py b/sapl/compilacao/migrations/0019_auto_20220630_1420.py new file mode 100644 index 000000000..8de4dcce3 --- /dev/null +++ b/sapl/compilacao/migrations/0019_auto_20220630_1420.py @@ -0,0 +1,44 @@ +# Generated by Django 2.2.24 on 2022-06-30 17:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('compilacao', '0018_auto_20210227_2152'), + ] + + operations = [ + migrations.AlterField( + model_name='dispositivo', + name='dispositivo_atualizador', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dispositivos_alterados_set', to='compilacao.Dispositivo', verbose_name='Dispositivo Atualizador'), + ), + migrations.AlterField( + model_name='dispositivo', + name='dispositivo_pai', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='dispositivos_filhos_set', to='compilacao.Dispositivo', verbose_name='Dispositivo Pai'), + ), + migrations.AlterField( + model_name='dispositivo', + name='dispositivo_raiz', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='nodes', to='compilacao.Dispositivo', verbose_name='Dispositivo Raiz'), + ), + migrations.AlterField( + model_name='dispositivo', + name='publicacao', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='compilacao.Publicacao', verbose_name='Publicação'), + ), + migrations.AlterField( + model_name='dispositivo', + name='ta_publicado', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='dispositivos_alterados_pelo_ta_set', to='compilacao.TextoArticulado', verbose_name='Texto Articulado Publicado'), + ), + migrations.AlterField( + model_name='publicacao', + name='ta', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='compilacao.TextoArticulado', verbose_name='Texto Articulado'), + ), + ] diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index 452d2a494..4cb452d4d 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType -from django.db import models +from django.db import models, transaction from django.db.models import F, Q from django.db.models.aggregates import Max from django.db.models.deletion import PROTECT @@ -475,48 +475,44 @@ class TextoArticulado(TimestampedMixin): view_integracao = view_integracao[0] - ta = TextoArticulado.update_or_create(view_integracao, obj) + origem = self + destino = TextoArticulado.update_or_create(view_integracao, obj) - dispositivos = Dispositivo.objects.filter(ta=self).order_by('ordem') + dispositivos = Dispositivo.objects.filter(ta=origem).order_by('ordem') - map_ids = {} - for d in dispositivos: - id_old = d.id + with transaction.atomic(): + map_ids = {} + for d in dispositivos: + id_old = d.id - # TODO - # validar isso: é o suficiente para pegar apenas o texto válido? - # exemplo: - # quando uma matéria for alterada por uma emenda - # ao usar esta função para gerar uma norma deve vir apenas - # o texto válido, compilado... - if d.dispositivo_subsequente: - continue + if d.dispositivo_subsequente: + continue - d.id = None - d.inicio_vigencia = ta.data - d.fim_vigencia = None - d.inicio_eficacia = ta.data - d.fim_eficacia = None - d.publicacao = None - d.ta = ta - d.ta_publicado = None - d.dispositivo_subsequente = None - d.dispositivo_substituido = None - d.dispositivo_vigencia = None - d.dispositivo_atualizador = None - d.save() - map_ids[id_old] = d.id - - dispositivos = Dispositivo.objects.filter(ta=ta).order_by('ordem') - - for d in dispositivos: - if not d.dispositivo_pai: - continue + d.id = None + d.inicio_vigencia = destino.data + d.fim_vigencia = None + d.inicio_eficacia = destino.data + d.fim_eficacia = None + d.publicacao = None + d.ta = destino + d.ta_publicado = None + d.dispositivo_subsequente = None + d.dispositivo_substituido = None + d.dispositivo_vigencia = None + d.dispositivo_atualizador = None + d.save() + map_ids[id_old] = d.id + + dispositivos = Dispositivo.objects.filter( + ta=destino).order_by('ordem') + + for d in dispositivos: + if not d.dispositivo_pai: + continue - d.dispositivo_pai_id = map_ids[d.dispositivo_pai_id] - d.save() - - return ta + d.dispositivo_pai_id = map_ids[d.dispositivo_pai_id] + d.save() + return destino def reagrupar_ordem_de_dispositivos(self): @@ -894,7 +890,7 @@ class Publicacao(TimestampedMixin): ta = models.ForeignKey( TextoArticulado, verbose_name=_('Texto Articulado'), - on_delete=models.PROTECT + on_delete=models.CASCADE ) veiculo_publicacao = models.ForeignKey( @@ -1104,7 +1100,7 @@ class Dispositivo(BaseModel, TimestampedMixin): null=True, default=None, verbose_name=_('Publicação'), - on_delete=models.PROTECT + on_delete=models.SET_NULL, ) ta = models.ForeignKey( @@ -1116,7 +1112,7 @@ class Dispositivo(BaseModel, TimestampedMixin): ta_publicado = models.ForeignKey( TextoArticulado, - on_delete=models.PROTECT, + on_delete=models.CASCADE, blank=True, null=True, default=None, @@ -1151,7 +1147,7 @@ class Dispositivo(BaseModel, TimestampedMixin): default=None, related_name='dispositivos_filhos_set', verbose_name=_('Dispositivo Pai'), - on_delete=models.PROTECT + on_delete=models.CASCADE, ) dispositivo_raiz = models.ForeignKey( @@ -1161,7 +1157,7 @@ class Dispositivo(BaseModel, TimestampedMixin): default=None, related_name='nodes', verbose_name=_('Dispositivo Raiz'), - on_delete=models.PROTECT + on_delete=models.CASCADE, ) dispositivo_vigencia = models.ForeignKey( @@ -1181,7 +1177,7 @@ class Dispositivo(BaseModel, TimestampedMixin): default=None, related_name='dispositivos_alterados_set', verbose_name=_('Dispositivo Atualizador'), - on_delete=models.PROTECT + on_delete=models.SET_NULL, ) contagem_continua = models.BooleanField( diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 29c00952f..c6939a5fe 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -6,6 +6,7 @@ import sys from braces.views import FormMessagesMixin from bs4 import BeautifulSoup from django import forms +from django.apps.registry import apps from django.conf import settings from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin @@ -152,34 +153,46 @@ class IntegracaoTaView(TemplateView): content_type=related_object_type) ta_exists = bool(ta.exists()) - if (ta_exists or - (request.user.has_perm( + self.object = ta = ta.first() + + ta_perm_edit = ( + ( + request.user.has_perm( 'compilacao.change_dispositivo_edicao_dinamica') and - ta_values.get('privacidade', STATUS_TA_EDITION - ) != STATUS_TA_PRIVATE) or - (request.user.has_perm( + ta_values.get( + 'privacidade', + STATUS_TA_EDITION + ) != STATUS_TA_PRIVATE + ) or ( + request.user.has_perm( 'compilacao.change_your_dispositivo_edicao_dinamica') and - ta_values.get('privacidade', STATUS_TA_EDITION - ) == STATUS_TA_PRIVATE)): - """ - o texto articulado será criado/atualizado se: - - texto articulado já foi criado. + ta_values.get( + 'privacidade', + STATUS_TA_EDITION + ) == STATUS_TA_PRIVATE + ) + ) - - não foi criado e o usuário possui permissão para criar - desde que o texto não seja um texto privado pois a permissão - para criar textos privados é diferente. + """ + o texto articulado será criado/atualizado se: + - texto articulado já foi criado. - - não foi criado e o usuário possui permissão para criar desde - que o texto seja privado e a permissão seja específica para - textos privados. - """ - pass - else: + - não foi criado e o usuário possui permissão para criar + desde que o texto não seja um texto privado pois a permissão + para criar textos privados é diferente. + + - não foi criado e o usuário possui permissão para criar desde + que o texto seja privado e a permissão seja específica para + textos privados. + """ + + if not ta_exists and not ta_perm_edit: messages.info(request, _('%s não possui %s.') % ( item, TextoArticulado._meta.verbose_name)) return redirect('/message') - ta = TextoArticulado.update_or_create(self, item) + if ta_perm_edit: + self.object = ta = TextoArticulado.update_or_create(self, item) if not ta_exists: if ta.editable_only_by_owners and\ @@ -1098,8 +1111,45 @@ class TextEditView(CompMixin, TemplateView): self.object = self.ta return self.object.has_edit_permission(self.request) + def importar_texto_materia(self, request, *args, **kwargs): + rd = redirect(to=reverse_lazy( + 'sapl.compilacao:ta_text_edit', kwargs={ + 'ta_id': self.object.id})) + + if self.object.dispositivos_set.count() > 1: + messages.error( + request, + _('Este Texto Articulado possui conteúdo, ' + 'para fazer a importação você deve deixar ' + 'apenas uma única Articulação inicial.')) + return rd + + materia = self.materia_da_norma_deste_texto_articulado() + if not materia: + messages.error( + request, + _('A Norma [{}] não está vinculada a nenhuma matéria.'.format(self.object.content_object))) + return rd + + self.object.dispositivos_set.all().delete() + + ta_materia = materia.texto_articulado.first() + + try: + ta_materia.clone_for(self.object.content_object) + #TextoArticulado.clone(ta_materia, self.object) + except Exception as e: + messages.error( + request, + _('Ocorreu erro na importação e o procedimento foi cancelado!')) + + return rd + def get(self, request, *args, **kwargs): + if 'importar_texto_materia' in request.GET: + return self.importar_texto_materia(request, *args, **kwargs) + if self.object.editing_locked: if 'unlock' not in request.GET: messages.error( @@ -1336,6 +1386,16 @@ class TextEditView(CompMixin, TemplateView): return '' + def materia_da_norma_deste_texto_articulado(self): + NormaJuridica = apps.get_model( + 'norma', 'NormaJuridica') + ta = self.ta + + if isinstance(ta.content_object, NormaJuridica) and\ + ta.content_object.materia: + return ta.content_object.materia + return None + def runBase(self): result = Dispositivo.objects.filter(ta_id=self.kwargs['ta_id']) diff --git a/sapl/crispy_layout_mixin.py b/sapl/crispy_layout_mixin.py index 8c9763eef..7bd099748 100644 --- a/sapl/crispy_layout_mixin.py +++ b/sapl/crispy_layout_mixin.py @@ -6,6 +6,7 @@ from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit from django import template from django.urls import reverse, reverse_lazy from django.utils import formats +from django.utils.encoding import force_text from django.utils.translation import ugettext as _ import yaml @@ -38,7 +39,7 @@ def form_actions(more=[Div(css_class='clearfix')], label=_('Salvar'), name='salvar', css_class='float-right', disabled=True): - if disabled: + if disabled and force_text(label) != 'Pesquisar': doubleclick = 'this.form.submit();this.disabled=true;' else: doubleclick = 'return true;' @@ -169,7 +170,7 @@ def get_field_display(obj, fieldname): display = '
{}
'.format(display) else: display = str(value) - return verbose_name, display + return verbose_name, display or ' ' class CrispyLayoutFormMixin: @@ -256,21 +257,30 @@ class CrispyLayoutFormMixin: if '|' in fieldname: fieldname, func = tuple(fieldname.split('|')) + try: + verbose_name, field_display = get_field_display(obj, fieldname) + except: + verbose_name, field_display = '', '' + if func: - verbose_name, text = getattr(self, func)(obj, fieldname) - else: - hook_fieldname = 'hook_%s' % fieldname - if hasattr(self, hook_fieldname): - verbose_name, text = getattr( + verbose_name, field_display = getattr(self, func)(obj, fieldname) + + hook_fieldname = 'hook_%s' % fieldname + if hasattr(self, hook_fieldname): + try: + verbose_name, field_display = getattr( + self, hook_fieldname)(obj, verbose_name=verbose_name, field_display=field_display) + except: + verbose_name, field_display = getattr( self, hook_fieldname)(obj) - else: - verbose_name, text = get_field_display(obj, fieldname) + elif not func: + verbose_name, field_display = get_field_display(obj, fieldname) return { 'id': fieldname, 'span': span, 'verbose_name': verbose_name, - 'text': text, + 'text': field_display, } def fk_urlize_for_detail(self, obj, fieldname): diff --git a/sapl/crud/base.py b/sapl/crud/base.py index 389161f12..5d6d8a3c1 100644 --- a/sapl/crud/base.py +++ b/sapl/crud/base.py @@ -24,11 +24,10 @@ from django.views.generic.list import MultipleObjectMixin from sapl.crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display from sapl.crispy_layout_mixin import SaplFormHelper -from sapl.rules.map_rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, - RP_LIST) +from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, + RP_LIST) from sapl.utils import normalize - logger = logging.getLogger(settings.BASE_DIR.name) ACTION_LIST, ACTION_CREATE, ACTION_DETAIL, ACTION_UPDATE, ACTION_DELETE = \ @@ -362,6 +361,13 @@ class CrudBaseMixin(CrispyLayoutFormMixin): if self.request.user.has_perm( self.permission(RP_DELETE)) else '' + @property + def openapi_url(self): + obj = self.crud if hasattr(self, 'crud') else self + o = self.object + url = f'/api/{o._meta.app_label}/{o._meta.model_name}/{o.id}' + return url + def get_template_names(self): names = super(CrudBaseMixin, self).get_template_names() names.append("crud/%s.html" % @@ -423,14 +429,20 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView): m = f.related_model except: f = None - hook = 'hook_header_{}'.format(''.join(fn)) - if hasattr(self, hook): - header = getattr(self, hook)() - s.append(header) - elif f: - s.append(force_text(f.verbose_name)) - - s = ' / '.join(s) + if f: + hook = 'hook_header_{}'.format(''.join(fn)) + if hasattr(self, hook): + header = getattr(self, hook)() + s.append(force_text(header)) + else: + s.append(force_text(f.verbose_name)) + else: + hook = 'hook_header_{}'.format(''.join(fn)) + if hasattr(self, hook): + header = getattr(self, hook)() + s.append(header) + + s = ' / '.join(filter(lambda x: x, s)) r.append(s) return r @@ -1113,12 +1125,15 @@ class MasterDetailCrud(Crud): root_pk = self.kwargs['pk'] if 'pkk' not in self.request.GET\ else self.request.GET['pkk'] kwargs.setdefault('root_pk', root_pk) - context = super(CrudBaseMixin, self).get_context_data(**kwargs) - if parent_object: - context['title'] = '%s (%s)' % ( - self.object, parent_object) + title = '%s (%s)' % ( + self.object, + parent_object + ) if parent_object else '' + context = super(CrudBaseMixin, self).get_context_data(**kwargs) + if 'title' not in context and title: + context['title'] = title return context class ListView(Crud.ListView): diff --git a/sapl/decorators.py b/sapl/decorators.py index fac94344a..a377c954b 100644 --- a/sapl/decorators.py +++ b/sapl/decorators.py @@ -13,6 +13,7 @@ def vigencia_atual(decorated_method): * A classe precisa conter os atributos 'data_inicio' e 'data_fim'. * 'data_inicio' e 'data_fim' precisam ser do tipo models.DateField """ + @wraps(decorated_method) def display_atual(self): string_displayed = decorated_method(self) @@ -41,3 +42,42 @@ def vigencia_atual(decorated_method): return string_displayed return display_atual + + +def receiver_multi_senders(signal, **kwargs): + """ + A decorator for connecting receivers to signals. Used by passing in the + signal (or list of signals) and keyword arguments to connect:: + + @receiver(post_save, senders=MyModelsList) + def signal_receiver(sender, **kwargs): + ... + + @receiver([post_save, post_delete], senders=MyModelsList) + def signals_receiver(sender, **kwargs): + ... + """ + + def _decorator(func): + senders = kwargs.get('senders', []) + if isinstance(signal, (list, tuple)): + if not senders: + for s in signal: + s.connect(func, **kwargs) + else: + senders = kwargs.pop('senders') + for sender in senders: + for s in signal: + s.connect(func, sender=sender, **kwargs) + + else: + if not senders: + signal.connect(func, **kwargs) + else: + senders = kwargs.pop('senders') + for sender in senders: + signal.connect(func, sender=sender, **kwargs) + + return func + + return _decorator diff --git a/sapl/lexml/OAIServer.py b/sapl/lexml/OAIServer.py index 9783f2fa6..340c03dde 100644 --- a/sapl/lexml/OAIServer.py +++ b/sapl/lexml/OAIServer.py @@ -6,9 +6,11 @@ import oaipmh.error import oaipmh.metadata import oaipmh.server from django.urls import reverse +from django.utils import timezone from lxml import etree from lxml.builder import ElementMaker + from sapl.base.models import AppConfig, CasaLegislativa from sapl.lexml.models import LexmlPublicador, LexmlProvedor from sapl.norma.models import NormaJuridica @@ -102,9 +104,12 @@ class OAIServer: return appconfig.esfera_federacao def recupera_norma(self, offset, batch_size, from_, until, identifier, esfera): - kwargs = {'data__lte': until} + kwargs = {'data__isnull': False, + 'esfera_federacao__isnull': False, + 'timestamp__isnull': False, + 'timestamp__lte': until} if from_: - kwargs['data__gte'] = from_ + kwargs['timestamp__gte'] = from_ if identifier: kwargs['numero'] = identifier if esfera: @@ -232,11 +237,21 @@ class OAIServer: return None def oai_query(self, offset=0, batch_size=10, from_=None, until=None, identifier=None): + from_ = timezone.make_aware(from_) # convert from naive to timezone aware datetime esfera = self.get_esfera_federacao() offset = 0 if offset < 0 else offset batch_size = 10 if batch_size < 0 else batch_size - until = datetime.now() if not until or until > datetime.now() else until - normas = self.recupera_norma(offset, batch_size, from_, until, identifier, esfera) + + until = timezone.make_aware(until) \ + if until and timezone.make_aware(until) < timezone.now() \ + else timezone.now() + + normas = self.recupera_norma(offset, + batch_size, + from_, + until, + identifier, + esfera) for norma in normas: resultado = {} identificador = self.monta_id(norma) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 856e7fa13..06bb15f7a 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -18,8 +18,7 @@ from django.utils import timezone from django.utils.translation import ugettext_lazy as _ import django_filters -import sapl -from sapl.base.models import AppConfig, Autor, TipoAutor +from sapl.base.models import AppConfig as BaseAppConfig, Autor, TipoAutor from sapl.comissoes.models import Comissao, Composicao, Participacao from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC, STATUS_TA_PRIVATE) @@ -348,8 +347,8 @@ class DocumentoAcessorioForm(FileFieldCheckMixin, ModelForm): if arquivo: validar_arquivo(arquivo, "Texto Integral") else: - ## TODO: definir arquivo no form e preservar o nome do campo - ## que gerou a mensagem de erro. + # TODO: definir arquivo no form e preservar o nome do campo + # que gerou a mensagem de erro. ## arquivo = forms.FileField(required=True, label="Texto Integral") nome_arquivo = self.fields['arquivo'].label raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') @@ -509,7 +508,7 @@ class TramitacaoForm(ModelForm): if not self.instance.data_tramitacao: - if ultima_tramitacao: + if ultima_tramitacao and BaseAppConfig.attr('tramitacao_origem_fixa'): destino = ultima_tramitacao.unidade_tramitacao_destino if (destino != self.cleaned_data['unidade_tramitacao_local']): self.logger.error("A origem da nova tramitação ({}) não é igual ao " @@ -562,7 +561,7 @@ class TramitacaoForm(ModelForm): materia.em_tramitacao = False if tramitacao.status.indicador == "F" else True materia.save() - tramitar_anexadas = sapl.base.models.AppConfig.attr( + tramitar_anexadas = BaseAppConfig.attr( 'tramitacao_materia') if tramitar_anexadas: lista_tramitacao = [] @@ -591,10 +590,11 @@ class TramitacaoForm(ModelForm): ip=tramitacao.ip, ultima_edicao=tramitacao.ultima_edicao )) - ## TODO: BULK UPDATE não envia Signal para Tramitacao + # TODO: BULK UPDATE não envia Signal para Tramitacao Tramitacao.objects.bulk_create(lista_tramitacao) # Atualiza status 'em_tramitacao' - MateriaLegislativa.objects.bulk_update(materias_anexadas, ['em_tramitacao']) + MateriaLegislativa.objects.bulk_update( + materias_anexadas, ['em_tramitacao']) return tramitacao @@ -663,7 +663,7 @@ class TramitacaoUpdateForm(TramitacaoForm): # ela não pode ter seu destino alterado. if ultima_tramitacao != obj: if cd['unidade_tramitacao_destino'] != \ - obj.unidade_tramitacao_destino: + obj.unidade_tramitacao_destino and BaseAppConfig.attr('tramitacao_origem_fixa'): self.logger.error("Você não pode mudar a Unidade de Destino desta " "tramitação para {}, pois irá conflitar com a Unidade " "Local da tramitação seguinte ({})." @@ -700,7 +700,7 @@ class TramitacaoUpdateForm(TramitacaoForm): materia.em_tramitacao = False if nova_tram_principal.status.indicador == "F" else True materia.save() - tramitar_anexadas = sapl.base.models.AppConfig.attr( + tramitar_anexadas = BaseAppConfig.attr( 'tramitacao_materia') if tramitar_anexadas: anexadas_list = lista_anexados(materia) @@ -724,7 +724,7 @@ class TramitacaoUpdateForm(TramitacaoForm): ma.em_tramitacao = False if nova_tram_principal.status.indicador == "F" else True ma.save() - ## TODO: refatorar? + # TODO: refatorar? return nova_tram_principal @@ -1415,6 +1415,9 @@ class AnexadaEmLoteFilterSet(django_filters.FilterSet): self.filters['tipo'].label = 'Tipo de Matéria' self.filters['data_apresentacao'].label = 'Data (Inicial - Final)' + self.form.fields['tipo'].required = True + self.form.fields['data_apresentacao'].required = True + row1 = to_row([('tipo', 12)]) row2 = to_row([('data_apresentacao', 12)]) @@ -1779,7 +1782,7 @@ class TramitacaoEmLoteForm(ModelForm): ip = self.initial['ip'] if 'ip' in self.initial else '' ultima_edicao = self.initial['ultima_edicao'] if 'ultima_edicao' in self.initial else '' - tramitar_anexadas = AppConfig.attr('tramitacao_materia') + tramitar_anexadas = BaseAppConfig.attr('tramitacao_materia') for mat_id in materias: mat = MateriaLegislativa.objects.get(id=mat_id) tramitacao = Tramitacao.objects.create( @@ -1824,7 +1827,7 @@ class TramitacaoEmLoteForm(ModelForm): ip=tramitacao.ip, ultima_edicao=tramitacao.ultima_edicao )) - ## TODO: BULK UPDATE não envia Signal para Tramitacao + # TODO: BULK UPDATE não envia Signal para Tramitacao Tramitacao.objects.bulk_create(lista_tramitacao) return tramitacao @@ -1898,10 +1901,10 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): } def __init__(self, *args, **kwargs): - self.texto_articulado_proposicao = AppConfig.attr( + self.texto_articulado_proposicao = BaseAppConfig.attr( 'texto_articulado_proposicao') - self.receber_recibo = AppConfig.attr( + self.receber_recibo = BaseAppConfig.attr( 'receber_recibo_proposicao') if not self.texto_articulado_proposicao: @@ -1923,7 +1926,7 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): ] - if AppConfig.objects.last().escolher_numero_materia_proposicao: + if BaseAppConfig.objects.last().escolher_numero_materia_proposicao: fields.append(to_column(('numero_materia_futuro', 12)),) else: if 'numero_materia_futuro' in self._meta.fields: @@ -2039,7 +2042,7 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): def save(self, commit=True): cd = self.cleaned_data inst = self.instance - receber_recibo = AppConfig.objects.last().receber_recibo_proposicao + receber_recibo = BaseAppConfig.objects.last().receber_recibo_proposicao if inst.pk: if 'tipo_texto' in cd: @@ -2059,7 +2062,8 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): return super().save(commit) inst.ano = timezone.now().year - sequencia_numeracao = AppConfig.attr('sequencia_numeracao_proposicao') + sequencia_numeracao = BaseAppConfig.attr( + 'sequencia_numeracao_proposicao') if sequencia_numeracao == 'A': numero__max = Proposicao.objects.filter( autor=inst.autor, @@ -2216,7 +2220,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): def __init__(self, *args, **kwargs): self.proposicao_incorporacao_obrigatoria = \ - AppConfig.attr('proposicao_incorporacao_obrigatoria') + BaseAppConfig.attr('proposicao_incorporacao_obrigatoria') if self.proposicao_incorporacao_obrigatoria != 'C': if 'gerar_protocolo' in self._meta.fields: @@ -2268,7 +2272,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): ) ] - if not AppConfig.objects.last().escolher_numero_materia_proposicao or \ + if not BaseAppConfig.objects.last().escolher_numero_materia_proposicao or \ not self.instance.numero_materia_futuro: if 'numero_materia_futuro' in self._meta.fields: del fields[0][0][3] @@ -2348,7 +2352,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): if not self.is_valid(): return self.cleaned_data - numeracao = AppConfig.attr('sequencia_numeracao_proposicao') + numeracao = BaseAppConfig.attr('sequencia_numeracao_proposicao') if not numeracao: self.logger.error("A sequência de numeração (por ano ou geral)" @@ -2431,7 +2435,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): try: self.logger.debug( "Tentando obter modelo de sequência de numeração.") - numeracao = AppConfig.objects.last( + numeracao = BaseAppConfig.objects.last( ).sequencia_numeracao_protocolo except AttributeError as e: self.logger.error("Erro ao obter modelo. " + str(e)) @@ -2583,7 +2587,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): GenericForeignKey """ - numeracao = AppConfig.attr('sequencia_numeracao_protocolo') + numeracao = BaseAppConfig.attr('sequencia_numeracao_protocolo') if numeracao == 'A': nm = Protocolo.objects.filter( ano=timezone.now().year).aggregate(Max('numero')) @@ -2603,6 +2607,8 @@ class ConfirmarProposicaoForm(ProposicaoForm): protocolo.ano = timezone.now().year protocolo.tipo_protocolo = '1' + protocolo.user = proposicao.user + protocolo.de_proposicao = True protocolo.interessado = str(proposicao.autor)[ :200] # tamanho máximo 200 diff --git a/sapl/materia/migrations/0080_auto_20211112_1106.py b/sapl/materia/migrations/0080_auto_20211112_1106.py new file mode 100644 index 000000000..6fc02fa51 --- /dev/null +++ b/sapl/materia/migrations/0080_auto_20211112_1106.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2021-11-12 14:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0079_auto_20210311_1711'), + ] + + operations = [ + migrations.AlterField( + model_name='documentoacessorio', + name='indexacao', + field=models.TextField(blank=True, verbose_name='Indexação'), + ), + ] diff --git a/sapl/materia/migrations/0081_auto_20220321_0934.py b/sapl/materia/migrations/0081_auto_20220321_0934.py new file mode 100644 index 000000000..7a09f04f2 --- /dev/null +++ b/sapl/materia/migrations/0081_auto_20220321_0934.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.24 on 2022-03-21 12:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0080_auto_20211112_1106'), + ] + + operations = [ + migrations.AlterField( + model_name='materialegislativa', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano'), + ), + migrations.AlterField( + model_name='materialegislativa', + name='ano_origem_externa', + field=models.PositiveSmallIntegerField(blank=True, choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], null=True, verbose_name='Ano'), + ), + migrations.AlterField( + model_name='numeracao', + name='ano_materia', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano'), + ), + migrations.AlterField( + model_name='proposicao', + name='ano', + field=models.PositiveSmallIntegerField(blank=True, choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], default=None, null=True, verbose_name='Ano'), + ), + ] diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 6e9a01fe4..1ff9268e9 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -344,9 +344,9 @@ class MateriaLegislativa(models.Model): numero=self.numero_protocolo).first() if protocolo: if protocolo.timestamp: - return protocolo.timestamp.date() + return protocolo.timestamp elif protocolo.timestamp_data_hora_manual: - return protocolo.timestamp_data_hora_manual.date() + return protocolo.timestamp_data_hora_manual elif protocolo.data: return protocolo.data @@ -556,7 +556,7 @@ class DocumentoAcessorio(models.Model): autor = models.CharField( max_length=200, blank=True, verbose_name=_('Autor')) ementa = models.TextField(blank=True, verbose_name=_('Ementa')) - indexacao = models.TextField(blank=True) + indexacao = models.TextField(blank=True, verbose_name=_('Indexação')) arquivo = models.FileField( blank=True, null=True, diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 3a350441d..d02959e83 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -104,9 +104,9 @@ def proposicao_texto(request, pk): if proposicao.texto_original: if (not proposicao.data_recebimento and - not proposicao.autor.operadores.filter( - id=request.user.id - ).exists() + not proposicao.autor.operadores.filter( + id=request.user.id + ).exists() ): logger.error("user=" + username + ". Usuário ({}) não tem permissão para acessar o texto original." .format(request.user.id)) @@ -394,7 +394,7 @@ class StatusTramitacaoCrud(CrudAux): class PesquisarStatusTramitacaoView(FilterView): model = StatusTramitacao filterset_class = StatusTramitacaoFilterSet - paginate_by = 10 + paginate_by = 20 def get_filterset_kwargs(self, filterset_class): super(PesquisarStatusTramitacaoView, self).get_filterset_kwargs( @@ -434,17 +434,22 @@ class PesquisarStatusTramitacaoView(FilterView): if data: url = '&' + str(self.request.META["QUERY_STRING"]) if url.startswith("&page"): - ponto_comeco = url.find("descricao=") - 1 - url = url[ponto_comeco:] + url = '' - context = self.get_context_data( - filter=self.filterset, object_list=self.object_list, - filter_url=url, numero_res=len(self.object_list) - ) + if 'descricao' in self.request.META['QUERY_STRING'] or\ + 'page' in self.request.META['QUERY_STRING']: + resultados = self.object_list + else: + resultados = [] - context["show_results"] = show_results_filter_set( - self.request.GET.copy() - ) + context = self.get_context_data(filter=self.filterset, + object_list=resultados, + filter_url=url, + numero_res=len(resultados) + ) + + context['show_results'] = show_results_filter_set( + self.request.GET.copy()) return self.render_to_response(context) @@ -583,6 +588,7 @@ class ProposicaoRecebida(PermissionRequiredMixin, ListView): context = super(ProposicaoRecebida, self).get_context_data(**kwargs) paginator = context['paginator'] page_obj = context['page_obj'] + context['AppConfig'] = sapl.base.models.AppConfig.objects.all().last() context['page_range'] = make_pagination( page_obj.number, paginator.num_pages) context['NO_ENTRIES_MSG'] = 'Nenhuma proposição recebida.' @@ -787,14 +793,20 @@ class UnidadeTramitacaoCrud(CrudAux): def get_headers(self): return [_('Unidade de Tramitação')] + def is_not_empty(self, value): + if value is None: + return False + value = value.strip().replace(' ', '') + return value != '' + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) for row in context['rows']: - if row[0][0]: # Comissão + if self.is_not_empty(row[0][0]): # Comissão pass - elif row[1][0]: # Órgão + elif self.is_not_empty(row[1][0]): # Órgão row[0] = (row[1][0], row[0][1]) - elif row[2][0]: # Parlamentar + elif self.is_not_empty(row[2][0]): # Parlamentar row[0] = (row[2][0], row[0][1]) row[1], row[2] = ('', ''), ('', '') return context @@ -1241,12 +1253,19 @@ class HistoricoProposicaoView(PermissionRequiredMixin, ListView): ordering = ['-data_hora'] paginate_by = 10 model = HistoricoProposicao - permission_required = ('materia.detail_proposicao', ) + permission_required = ('materia.detail_proposicao_enviada', ) def get_queryset(self): qs = super().get_queryset() + + from sapl.rules import SAPL_GROUP_AUTOR + from django.contrib.auth.models import Group + user = self.request.user - if not user.is_superuser: + grupo_autor = Group.objects.get(name=SAPL_GROUP_AUTOR) + + if not user.is_superuser and grupo_autor.user_set.filter( + id=user.id).exists(): autores = Autor.objects.filter(user=user) qs = qs.filter(proposicao__autor__in=autores) return qs @@ -1383,10 +1402,11 @@ class TramitacaoCrud(MasterDetailCrud): # necessária? if ultima_tramitacao: if ultima_tramitacao.unidade_tramitacao_destino: - context['form'].fields[ - 'unidade_tramitacao_local'].choices = [ - (ultima_tramitacao.unidade_tramitacao_destino.pk, - ultima_tramitacao.unidade_tramitacao_destino)] + if BaseAppConfig.attr('tramitacao_origem_fixa'): + context['form'].fields[ + 'unidade_tramitacao_local'].choices = [ + (ultima_tramitacao.unidade_tramitacao_destino.pk, + ultima_tramitacao.unidade_tramitacao_destino)] else: self.logger.error('user=' + username + '. Unidade de tramitação destino ' 'da última tramitação não pode ser vazia!') @@ -1399,7 +1419,7 @@ class TramitacaoCrud(MasterDetailCrud): # Se não for a primeira tramitação daquela matéria, o campo # não pode ser modificado - if not primeira_tramitacao: + if not primeira_tramitacao and BaseAppConfig.attr('tramitacao_origem_fixa'): context['form'].fields[ 'unidade_tramitacao_local'].widget.attrs['readonly'] = True @@ -2255,8 +2275,13 @@ class DocumentoAcessorioEmLoteView(PermissionRequiredMixin, FilterView): qr = self.request.GET.copy() context['tipos_docs'] = TipoDocumento.objects.all() - context['object_list'] = context['object_list'].order_by( - 'ano', 'numero') + + if not len(qr): + context['object_list'] = [] + else: + context['object_list'] = context['object_list'].order_by( + 'ano', 'numero') + context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['show_results'] = show_results_filter_set(qr) @@ -2377,39 +2402,42 @@ class MateriaAnexadaEmLoteView(PermissionRequiredMixin, FilterView): return context qr = self.request.GET.copy() - context['object_list'] = context['object_list'].order_by( - 'numero', '-ano') - principal = MateriaLegislativa.objects.get(pk=self.kwargs['pk']) - not_list = [self.kwargs['pk']] + \ - [m for m in principal.materia_principal_set.all( - ).values_list('materia_anexada_id', flat=True)] - context['object_list'] = context['object_list'].exclude( - pk__in=not_list) - - context['temp_object_list'] = context['object_list'] - context['object_list'] = [] - for obj in context['temp_object_list']: - materia_anexada = obj - ciclico = False - anexadas_anexada = Anexada.objects.filter( - materia_principal=materia_anexada - ) + if not len(qr): + context['object_list'] = [] + else: + context['object_list'] = context['object_list'].order_by( + 'numero', '-ano') + principal = MateriaLegislativa.objects.get(pk=self.kwargs['pk']) + not_list = [self.kwargs['pk']] + \ + [m for m in principal.materia_principal_set.all( + ).values_list('materia_anexada_id', flat=True)] + context['object_list'] = context['object_list'].exclude( + pk__in=not_list) + + context['temp_object_list'] = context['object_list'] + context['object_list'] = [] + for obj in context['temp_object_list']: + materia_anexada = obj + ciclico = False + anexadas_anexada = Anexada.objects.filter( + materia_principal=materia_anexada + ) - while anexadas_anexada and not ciclico: - anexadas = [] + while anexadas_anexada and not ciclico: + anexadas = [] - for anexa in anexadas_anexada: + for anexa in anexadas_anexada: - if principal == anexa.materia_anexada: - ciclico = True - else: - for a in Anexada.objects.filter(materia_principal=anexa.materia_anexada): - anexadas.append(a) + if principal == anexa.materia_anexada: + ciclico = True + else: + for a in Anexada.objects.filter(materia_principal=anexa.materia_anexada): + anexadas.append(a) - anexadas_anexada = anexadas + anexadas_anexada = anexadas - if not ciclico: - context['object_list'].append(obj) + if not ciclico: + context['object_list'].append(obj) context['numero_res'] = len(context['object_list']) diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 6162aef26..026d49842 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -1,24 +1,23 @@ import logging -from crispy_forms.layout import Fieldset, Layout +from crispy_forms.layout import (Button, Fieldset, HTML, Layout) from django import forms +from django.contrib.postgres.search import SearchVector from django.core.exceptions import ObjectDoesNotExist, ValidationError -from django.db import models from django.db.models import Q from django.forms import ModelChoiceField, ModelForm, widgets from django.utils import timezone from django.utils.translation import ugettext_lazy as _ import django_filters -from sapl.base.models import Autor, TipoAutor +from sapl.base.models import TipoAutor from sapl.crispy_layout_mixin import form_actions, SaplFormHelper, to_row -from sapl.materia.forms import choice_anos_com_materias from sapl.materia.models import (MateriaLegislativa, TipoMateriaLegislativa, Orgao) -from sapl.utils import (ANO_CHOICES, choice_anos_com_normas, +from sapl.parlamentares.models import Partido +from sapl.utils import (autor_label, autor_modal, ANO_CHOICES, choice_anos_com_normas, FileFieldCheckMixin, FilterOverridesMetaMixin, - NormaPesquisaOrderingFilter, RangeWidgetOverride, - validar_arquivo) + NormaPesquisaOrderingFilter, validar_arquivo) from .models import (AnexoNormaJuridica, AssuntoNorma, AutoriaNorma, NormaJuridica, NormaRelacionada, TipoNormaJuridica) @@ -74,43 +73,74 @@ class NormaFilterSet(django_filters.FilterSet): method='filter_ementa', label=_('Pesquisar expressões na ementa da norma')) - indexacao = django_filters.CharFilter(lookup_expr='icontains', + indexacao = django_filters.CharFilter(method='filter_indexacao', label=_('Indexação')) assuntos = django_filters.ModelChoiceFilter( queryset=AssuntoNorma.objects.all()) + autorianorma__autor = django_filters.CharFilter(widget=forms.HiddenInput()) + autorianorma__primeiro_autor = django_filters.BooleanFilter( + required=False, + label=_('Primeiro Autor')) + autorianorma__autor__parlamentar_set__filiacao__partido = django_filters.ModelChoiceFilter( + queryset=Partido.objects.all(), + label=_('Normas por Partido')) + o = NormaPesquisaOrderingFilter(help_text='') class Meta(FilterOverridesMetaMixin): model = NormaJuridica - fields = ['orgao', 'tipo', 'numero', 'ano', 'data', 'data_vigencia', - 'data_publicacao', 'ementa', 'assuntos'] + fields = ['orgao', 'tipo', 'numero', 'ano', 'data', + 'data_vigencia', 'data_publicacao', 'ementa', 'assuntos', + 'autorianorma__autor', 'autorianorma__primeiro_autor', 'autorianorma__autor__tipo'] def __init__(self, *args, **kwargs): super(NormaFilterSet, self).__init__(*args, **kwargs) + self.filters['autorianorma__autor__tipo'].label = _('Tipo de Autor') row1 = to_row([('tipo', 4), ('numero', 4), ('ano', 4)]) row2 = to_row([('data', 6), ('data_publicacao', 6)]) row3 = to_row([('ementa', 6), ('assuntos', 6)]) row4 = to_row([('data_vigencia', 6), ('orgao', 6), ]) row5 = to_row([('o', 6), ('indexacao', 6)]) + row6 = to_row([ + ('autorianorma__autor', 0), + (Button('pesquisar', + 'Pesquisar Autor', + css_class='btn btn-primary btn-sm'), 2), + (Button('limpar', + 'Limpar Autor', + css_class='btn btn-primary btn-sm'), 2), + ('autorianorma__primeiro_autor', 2), + ('autorianorma__autor__tipo', 3), + ('autorianorma__autor__parlamentar_set__filiacao__partido', 3) + ]) self.form.helper = SaplFormHelper() self.form.helper.form_method = 'GET' self.form.helper.layout = Layout( Fieldset(_('Pesquisa de Norma'), row1, row2, row3, row4, row5, + Fieldset(_('Pesquisa Avançada'), + row6, + HTML(autor_label), + HTML(autor_modal)), form_actions(label='Pesquisar')) ) def filter_ementa(self, queryset, name, value): - texto = value.split() - q = Q() - for t in texto: - q &= Q(ementa__icontains=t) + return queryset.annotate(search=SearchVector('ementa', + config='portuguese')).filter(search=value) + + def filter_indexacao(self, queryset, name, value): + return queryset.annotate(search=SearchVector('indexacao', + config='portuguese')).filter(search=value) - return queryset.filter(q) + def filter_autoria(self, queryset, name, value): + return queryset.filter(**{ + name: value, + }) class NormaJuridicaForm(FileFieldCheckMixin, ModelForm): @@ -257,6 +287,9 @@ class AutoriaNormaForm(ModelForm): data_relativa = forms.DateField( widget=forms.HiddenInput(), required=False) + legislatura_anterior = forms.BooleanField(label=_('Legislatura Anterior'), + required=False) + logger = logging.getLogger(__name__) def __init__(self, *args, **kwargs): @@ -269,14 +302,18 @@ class AutoriaNormaForm(ModelForm): self.helper = SaplFormHelper() self.helper.layout = Layout( Fieldset(_('Autoria'), - row1, 'data_relativa', form_actions(label='Salvar'))) + row1, 'data_relativa', + form_actions(label='Salvar'), + to_row([('legislatura_anterior', 12)]))) - if not kwargs['instance']: + if not self.instance: self.fields['autor'].choices = [] class Meta: model = AutoriaNorma - fields = ['tipo_autor', 'autor', 'primeiro_autor', 'data_relativa'] + fields = ['tipo_autor', 'autor', + 'primeiro_autor', 'data_relativa', + 'legislatura_anterior'] def clean(self): cd = super(AutoriaNormaForm, self).clean() @@ -360,7 +397,12 @@ class NormaRelacionadaForm(ModelForm): class Meta: model = NormaRelacionada - fields = ['orgao', 'tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo'] + fields = ['orgao', 'tipo', 'numero', 'ano', + 'resumo', 'ementa', 'tipo_vinculo'] + + widgets = { + 'resumo': forms.Textarea( + attrs={'id': 'texto-rico'})} def __init__(self, *args, **kwargs): super(NormaRelacionadaForm, self).__init__(*args, **kwargs) diff --git a/sapl/norma/migrations/0039_auto_20220321_0934.py b/sapl/norma/migrations/0039_auto_20220321_0934.py new file mode 100644 index 000000000..711f3bd7f --- /dev/null +++ b/sapl/norma/migrations/0039_auto_20220321_0934.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.24 on 2022-03-21 12:34 + +from django.db import migrations, models +import sapl.norma.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0038_normajuridica_orgao'), + ] + + operations = [ + migrations.AlterField( + model_name='anexonormajuridica', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano'), + ), + migrations.AlterField( + model_name='normaestatisticas', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], default=sapl.norma.models.get_ano_atual, verbose_name='Ano'), + ), + migrations.AlterField( + model_name='normajuridica', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano'), + ), + ] diff --git a/sapl/norma/migrations/0040_normarelacionada_resumo.py b/sapl/norma/migrations/0040_normarelacionada_resumo.py new file mode 100644 index 000000000..1d2d14cd4 --- /dev/null +++ b/sapl/norma/migrations/0040_normarelacionada_resumo.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2022-07-31 23:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0039_auto_20220321_0934'), + ] + + operations = [ + migrations.AddField( + model_name='normarelacionada', + name='resumo', + field=models.TextField(blank=True, default='', verbose_name='Resumo'), + ), + ] diff --git a/sapl/norma/migrations/0041_auto_20220814_2235.py b/sapl/norma/migrations/0041_auto_20220814_2235.py new file mode 100644 index 000000000..a8f14dfa4 --- /dev/null +++ b/sapl/norma/migrations/0041_auto_20220814_2235.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.28 on 2022-08-15 01:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0040_normarelacionada_resumo'), + ] + + operations = [ + migrations.AlterField( + model_name='normajuridica', + name='materia', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='normajuridica_set', to='materia.MateriaLegislativa', verbose_name='Matéria'), + ), + ] diff --git a/sapl/norma/models.py b/sapl/norma/models.py index 85358ed75..2fbd96ccf 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -120,6 +120,7 @@ class NormaJuridicaManager(models.Manager): if not count: ta.dispositivos_set.filter( dispositivo_pai__isnull=False).delete() + ta.publicacao_set.all().delete() ta.delete() return qs @@ -150,7 +151,9 @@ class NormaJuridica(models.Model): verbose_name=_('Tipo da Norma Jurídica')) materia = models.ForeignKey( MateriaLegislativa, blank=True, null=True, - on_delete=models.PROTECT, verbose_name=_('Matéria')) + on_delete=models.PROTECT, + verbose_name=_('Matéria'), + related_name='normajuridica_set') orgao = models.ForeignKey( Orgao, blank=True, null=True, on_delete=models.PROTECT, verbose_name=_('Órgão')) @@ -406,6 +409,11 @@ class NormaRelacionada(models.Model): TipoVinculoNormaJuridica, on_delete=models.PROTECT, verbose_name=_('Tipo de Vínculo')) + resumo = models.TextField( + blank=True, + default="", + verbose_name=_('Resumo'), + ) class Meta: verbose_name = _('Norma Relacionada') diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 3f9e1247b..bccd5e328 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -60,7 +60,7 @@ class AssuntoNormaCrud(CrudAux): class PesquisarAssuntoNormaView(FilterView): model = AssuntoNorma filterset_class = AssuntoNormaFilterSet - paginate_by = 10 + paginate_by = 20 def get_filterset_kwargs(self, filterset_class): super(PesquisarAssuntoNormaView, self).get_filterset_kwargs( @@ -100,17 +100,22 @@ class PesquisarAssuntoNormaView(FilterView): if data: url = '&' + str(self.request.META["QUERY_STRING"]) if url.startswith("&page"): - ponto_comeco = url.find("assunto=") - 1 - url = url[ponto_comeco:] + url = '' - context = self.get_context_data( - filter=self.filterset, object_list=self.object_list, - filter_url=url, numero_res=len(self.object_list) - ) + if 'assunto' in self.request.META['QUERY_STRING'] or\ + 'page' in self.request.META['QUERY_STRING']: + resultados = self.object_list + else: + resultados = [] - context["show_results"] = show_results_filter_set( - self.request.GET.copy() - ) + context = self.get_context_data(filter=self.filterset, + object_list=resultados, + filter_url=url, + numero_res=len(resultados) + ) + + context['show_results'] = show_results_filter_set( + self.request.GET.copy()) return self.render_to_response(context) @@ -121,7 +126,7 @@ class NormaRelacionadaCrud(MasterDetailCrud): help_topic = 'norma_juridica' class BaseMixin(MasterDetailCrud.BaseMixin): - list_field_names = ['norma_relacionada', 'tipo_vinculo'] + list_field_names = ['norma_relacionada', 'tipo_vinculo', 'resujmo'] class CreateView(MasterDetailCrud.CreateView): form_class = NormaRelacionadaForm @@ -492,7 +497,7 @@ class AutoriaNormaCrud(MasterDetailCrud): public = [RP_LIST, RP_DETAIL] list_field_names = ['autor', 'autor__tipo__descricao', 'primeiro_autor'] - class LocalBaseMixin(): + class LocalBaseMixin: form_class = AutoriaNormaForm @property @@ -513,7 +518,7 @@ class AutoriaNormaCrud(MasterDetailCrud): def get_initial(self): initial = super().get_initial() initial.update({ - 'data_relativa': self.object.norma.data_apresentacao, + 'data_relativa': self.object.norma.data, 'tipo_autor': self.object.autor.tipo.id, }) return initial diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 75f5a1b97..7f36fa8be 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -495,8 +495,8 @@ def get_votos(response, materia): if votos_parlamentares.get(parlamentar_id=p['parlamentar_id']).voto: response['presentes'][i]['voto'] = 'Voto Informado' except ObjectDoesNotExist: - logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio." - .format(p['parlamentar_id'])) + # logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio." + # .format(p['parlamentar_id'])) response['presentes'][i]['voto'] = '' elif leitura: response.update({ diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 31e216184..9ebd3469d 100755 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -1,7 +1,6 @@ from datetime import timedelta import logging -from sapl.crispy_layout_mixin import SaplFormHelper from crispy_forms.layout import Fieldset, Layout from django import forms from django.contrib.auth import get_user_model @@ -13,14 +12,15 @@ from django.db.models import Q from django.forms import ModelForm from django.utils import timezone from django.utils.translation import ugettext_lazy as _ +import django_filters from floppyforms.widgets import ClearableFileInput from image_cropping.widgets import CropWidget, ImageCropWidget -from sapl.utils import FileFieldCheckMixin from sapl.base.models import Autor, TipoAutor +from sapl.crispy_layout_mixin import SaplFormHelper from sapl.crispy_layout_mixin import form_actions, to_row from sapl.rules import SAPL_GROUP_VOTANTE -import django_filters +from sapl.utils import FileFieldCheckMixin from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura, Mandato, Parlamentar, Partido, Votante, Bloco, FrenteParlamentar, BlocoMembro) @@ -161,6 +161,10 @@ class LegislaturaForm(ModelForm): model = Legislatura exclude = [] + widgets = { + 'observacao': forms.Textarea( + attrs={'id': 'texto-rico'})} + def clean(self): data = super(LegislaturaForm, self).clean() @@ -253,7 +257,8 @@ class ParlamentarFilterSet(django_filters.FilterSet): class ColigacaoFilterSet(django_filters.FilterSet): - nome = django_filters.CharFilter(label=_('Nome da Coligação'), lookup_expr='icontains') + nome = django_filters.CharFilter( + label=_('Nome da Coligação'), lookup_expr='icontains') class Meta: model = Coligacao @@ -316,7 +321,8 @@ class ParlamentarCreateForm(ParlamentarForm): return self.cleaned_data cleaned_data = self.cleaned_data - parlamentar = Parlamentar.objects.filter(nome_parlamentar=cleaned_data['nome_parlamentar']).exists() + parlamentar = Parlamentar.objects.filter( + nome_parlamentar=cleaned_data['nome_parlamentar']).exists() if parlamentar: self.logger.error('Parlamentar já cadastrado.') @@ -537,9 +543,11 @@ class FrenteParlamentarForm(ModelForm): return self.cleaned_data if cd['cargo'].cargo_unico: - frente_parlamentar = FrenteParlamentar.objects.filter(frente=cd['frente'], cargo=cd['cargo']) + frente_parlamentar = FrenteParlamentar.objects.filter( + frente=cd['frente'], cargo=cd['cargo']) if frente_parlamentar and not frente_parlamentar[0].parlamentar == cd['parlamentar']: - raise ValidationError(_("Cargo único já ocupado por outro parlamentar.")) + raise ValidationError( + _("Cargo único já ocupado por outro parlamentar.")) return cd @@ -669,11 +677,15 @@ class VincularParlamentarForm(forms.Form): data_expedicao_diploma = cleaned_data['data_expedicao_diploma'] if parlamentar.mandato_set.filter(legislatura=legislatura): - self.logger.error('Parlamentar já está vinculado a legislatura informada.') - raise ValidationError(_('Parlamentar já está vinculado a legislatura informada.')) + self.logger.error( + 'Parlamentar já está vinculado a legislatura informada.') + raise ValidationError( + _('Parlamentar já está vinculado a legislatura informada.')) elif data_expedicao_diploma and legislatura.data_inicio <= data_expedicao_diploma: - self.logger.error('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.') - raise ValidationError(_('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.')) + self.logger.error( + 'Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.') + raise ValidationError( + _('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.')) return cleaned_data @@ -736,8 +748,10 @@ class BlocoMembroForm(ModelForm): if cd['cargo'].cargo_unico \ and BlocoMembro.objects.filter(bloco=cd['bloco'], cargo=cd['cargo'], data_saida__isnull=True)\ .exclude(pk=self.instance.pk).exists(): - raise ValidationError(_("Cargo único já ocupado por outro membro.")) + raise ValidationError( + _("Cargo único já ocupado por outro membro.")) elif not cd['data_saida'] and BlocoMembro.objects.filter(parlamentar=cd['parlamentar'], data_saida__isnull=True).exists(): - raise ValidationError(_("Parlamentar já é membro do bloco parlamentar.")) + raise ValidationError( + _("Parlamentar já é membro do bloco parlamentar.")) return cd diff --git a/sapl/parlamentares/migrations/0036_refatoraMesaDiretora.py b/sapl/parlamentares/migrations/0036_refatoraMesaDiretora.py new file mode 100644 index 000000000..ab0dc6e1d --- /dev/null +++ b/sapl/parlamentares/migrations/0036_refatoraMesaDiretora.py @@ -0,0 +1,38 @@ +# Generated by Django 2.2.20 on 2021-07-05 13:41 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0035_auto_20210315_1522'), + ] + + operations = [ + migrations.AlterModelOptions( + name='composicaomesa', + options={'ordering': ('cargo', 'parlamentar'), 'verbose_name': 'Ocupação de cargo na Mesa', 'verbose_name_plural': 'Ocupações de cargo na Mesa'}, + ), + migrations.CreateModel( + name='MesaDiretora', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('data_inicio', models.DateField(null=True, verbose_name='Data Início')), + ('data_fim', models.DateField(null=True, verbose_name='Data Fim')), + ('descricao', models.TextField(blank=True, verbose_name='Descrição')), + ('sessao_legislativa', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.SessaoLegislativa')), + ], + options={ + 'verbose_name': 'Mesa Diretora', + 'verbose_name_plural': 'Mesas Diretoras', + 'ordering': ('-data_inicio', '-sessao_legislativa'), + }, + ), + migrations.AddField( + model_name='composicaomesa', + name='mesa_diretora', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='parlamentares.MesaDiretora'), + ), + ] diff --git a/sapl/parlamentares/migrations/0037_atribuiMesaDiretora.py b/sapl/parlamentares/migrations/0037_atribuiMesaDiretora.py new file mode 100644 index 000000000..aa7387e04 --- /dev/null +++ b/sapl/parlamentares/migrations/0037_atribuiMesaDiretora.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.20 on 2021-07-05 13:43 + +from django.db import migrations, models + +def atribuiMesaDiretora(apps, schema_editor): + sl_anterior = None + ComposicaoMesa = apps.get_model('parlamentares', 'ComposicaoMesa') + for c in ComposicaoMesa.objects.all().order_by('sessao_legislativa_id'): + if sl_anterior is None or c.sessao_legislativa_id != sl_anterior: + sl_anterior = c.sessao_legislativa_id + MesaDiretora = apps.get_model('parlamentares', 'MesaDiretora') + mesa_diretora = MesaDiretora(data_inicio=c.sessao_legislativa.data_inicio, + data_fim=c.sessao_legislativa.data_fim, + sessao_legislativa=c.sessao_legislativa) + mesa_diretora.save() + c.mesa_diretora = mesa_diretora + c.save() + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0036_refatoraMesaDiretora'), + ] + + operations = [ + migrations.RunPython(atribuiMesaDiretora), + ] diff --git a/sapl/parlamentares/migrations/0038_sessao_legislativa_redundante.py b/sapl/parlamentares/migrations/0038_sessao_legislativa_redundante.py new file mode 100644 index 000000000..747ee1256 --- /dev/null +++ b/sapl/parlamentares/migrations/0038_sessao_legislativa_redundante.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.20 on 2021-07-05 13:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0037_atribuiMesaDiretora'), + ] + + operations = [ + migrations.RemoveField( + model_name='composicaomesa', + name='sessao_legislativa', + ), + ] diff --git a/sapl/parlamentares/migrations/0039_legislatura_observacao.py b/sapl/parlamentares/migrations/0039_legislatura_observacao.py new file mode 100644 index 000000000..0c68d5f1e --- /dev/null +++ b/sapl/parlamentares/migrations/0039_legislatura_observacao.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.20 on 2022-07-28 23:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0038_sessao_legislativa_redundante'), + ] + + operations = [ + migrations.AddField( + model_name='legislatura', + name='observacao', + field=models.TextField(blank=True, verbose_name='Observação'), + ), + ] diff --git a/sapl/parlamentares/migrations/0040_auto_20220806_1341.py b/sapl/parlamentares/migrations/0040_auto_20220806_1341.py new file mode 100644 index 000000000..69bd95510 --- /dev/null +++ b/sapl/parlamentares/migrations/0040_auto_20220806_1341.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.28 on 2022-08-06 16:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0039_legislatura_observacao'), + ] + + operations = [ + migrations.AlterField( + model_name='parlamentar', + name='rg', + field=models.CharField(blank=True, max_length=20, verbose_name='R.G.'), + ), + migrations.AlterField( + model_name='parlamentar', + name='titulo_eleitor', + field=models.CharField(blank=True, max_length=25, verbose_name='Título de Eleitor'), + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 423481b56..fda61ef95 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -4,6 +4,7 @@ from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from image_cropping.fields import ImageCropField, ImageRatioField from model_utils import Choices +from prompt_toolkit.key_binding.bindings.named_commands import self_insert import reversion from sapl.base.models import Autor @@ -21,6 +22,9 @@ class Legislatura(models.Model): data_fim = models.DateField(verbose_name=_('Data Fim')) data_eleicao = models.DateField(verbose_name=_('Data Eleição')) + observacao = models.TextField( + blank=True, verbose_name=_('Observação')) + class Meta: ordering = ['-data_inicio'] verbose_name = _('Legislatura') @@ -223,9 +227,9 @@ class Parlamentar(models.Model): cpf = models.CharField( max_length=14, blank=True, verbose_name=_('C.P.F')) rg = models.CharField( - max_length=15, blank=True, verbose_name=_('R.G.')) + max_length=20, blank=True, verbose_name=_('R.G.')) titulo_eleitor = models.CharField( - max_length=15, + max_length=25, blank=True, verbose_name=_('Título de Eleitor')) numero_gab_parlamentar = models.CharField( @@ -497,18 +501,37 @@ class CargoMesa(models.Model): return self.descricao +@reversion.register() +class MesaDiretora(models.Model): + data_inicio = models.DateField(verbose_name=_('Data Início'), null=True) + data_fim = models.DateField(verbose_name=_('Data Fim'), null=True) + sessao_legislativa = models.ForeignKey(SessaoLegislativa, + on_delete=models.PROTECT) + descricao = models.TextField(verbose_name=_('Descrição'), blank=True) + + class Meta: + verbose_name = _('Mesa Diretora') + verbose_name_plural = _('Mesas Diretoras') + ordering = ('-data_inicio', '-sessao_legislativa') + + def __str__(self): + return _('Mesa da %(sessao)s sessao da %(legislatura)s Legislatura') % { + 'sessao': self.sessao_legislativa, 'legislatura': self.sessao_legislativa.legislatura + } + + @reversion.register() class ComposicaoMesa(models.Model): # TODO M2M ???? Ternary????? parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) - sessao_legislativa = models.ForeignKey(SessaoLegislativa, - on_delete=models.PROTECT) cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT) + mesa_diretora = models.ForeignKey( + MesaDiretora, on_delete=models.PROTECT, null=True) class Meta: verbose_name = _('Ocupação de cargo na Mesa') verbose_name_plural = _('Ocupações de cargo na Mesa') - ordering = ('cargo', '-sessao_legislativa', 'parlamentar') + ordering = ('cargo', 'parlamentar') def __str__(self): return _('%(parlamentar)s - %(cargo)s') % { diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 88a46c69b..d97564692 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -6,7 +6,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, FiliacaoCrud, FrenteCrud, FrenteList, LegislaturaCrud, MandatoCrud, MesaDiretoraView, NivelInstrucaoCrud, - ParlamentarCrud, ParlamentarMateriasView, + ParlamentarCrud, ParlamentarMateriasView, ParlamentarNormasView, ParticipacaoParlamentarCrud, PartidoCrud, ProposicaoParlamentarCrud, RelatoriaParlamentarCrud, @@ -45,6 +45,9 @@ urlpatterns = [ url(r'^parlamentar/(?P\d+)/materias$', ParlamentarMateriasView.as_view(), name='parlamentar_materias'), + url(r'^parlamentar/(?P\d+)/normas$', + ParlamentarNormasView.as_view(), name='parlamentar_normas'), + url(r'^parlamentar/(?P\d+)/frentes/$', get_parlamentar_frentes, name='parlamentar_frentes'), url(r'^parlamentar/vincular-parlamentar/$', diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index aea6d53df..43a54c0f0 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -30,6 +30,7 @@ from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux, CrudBaseForListAndDetailExternalAppView, MasterDetailCrud, make_pagination) from sapl.materia.models import Autoria, Proposicao, Relatoria +from sapl.norma.models import AutoriaNorma, NormaJuridica from sapl.parlamentares.apps import AppConfig from sapl.rules import SAPL_GROUP_VOTANTE from sapl.utils import (parlamentares_ativos, show_results_filter_set) @@ -42,8 +43,7 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, Dependente, Filiacao, Frente, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, - Bloco, FrenteCargo, FrenteParlamentar, BlocoCargo, BlocoMembro) - + Bloco, FrenteCargo, FrenteParlamentar, BlocoCargo, BlocoMembro, MesaDiretora) FrenteCargoCrud = CrudAux.build(FrenteCargo, 'frente_cargo') BlocoCargoCrud = CrudAux.build(BlocoCargo, 'bloco_cargo') @@ -154,7 +154,7 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class ListView(CrudBaseForListAndDetailExternalAppView.ListView): def get_context_data(self, **kwargs): - context = CrudBaseForListAndDetailExternalAppView\ + context = CrudBaseForListAndDetailExternalAppView \ .ListView.get_context_data(self, **kwargs) return context @@ -172,7 +172,6 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): @property def extras_url(self): - if self.object.texto_articulado.exists(): ta = self.object.texto_articulado.first() yield (str(reverse_lazy( @@ -185,7 +184,7 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class PesquisarParlamentarView(FilterView): model = Parlamentar filterset_class = ParlamentarFilterSet - paginate_by = 10 + paginate_by = 20 def get_filterset_kwargs(self, filterset_class): super(PesquisarParlamentarView, @@ -224,13 +223,18 @@ class PesquisarParlamentarView(FilterView): if data: url = "&" + str(self.request.META['QUERY_STRING']) if url.startswith("&page"): - ponto_comeco = url.find('nome_parlamentar=') - 1 - url = url[ponto_comeco:] + url = '' + + if 'nome_parlamentar' in self.request.META['QUERY_STRING'] or\ + 'page' in self.request.META['QUERY_STRING']: + resultados = self.object_list + else: + resultados = [] context = self.get_context_data(filter=self.filterset, - object_list=self.object_list, + object_list=resultados, filter_url=url, - numero_res=len(self.object_list) + numero_res=len(resultados) ) context['show_results'] = show_results_filter_set( @@ -242,7 +246,7 @@ class PesquisarParlamentarView(FilterView): class PesquisarColigacaoView(FilterView): model = Coligacao filterset_class = ColigacaoFilterSet - paginate_by = 10 + paginate_by = 20 def get_filterset_kwargs(self, filterset_class): super(PesquisarColigacaoView, self).get_filterset_kwargs(filterset_class) @@ -275,13 +279,19 @@ class PesquisarColigacaoView(FilterView): if data: url = "&" + str(self.request.META['QUERY_STRING']) if url.startswith("&page"): - ponto_comeco = url.find('nome=') - 1 - url = url[ponto_comeco:] + url = '' + + if 'nome' in self.request.META['QUERY_STRING'] or\ + 'page' in self.request.META['QUERY_STRING']: + resultados = self.object_list + else: + resultados = [] context = self.get_context_data(filter=self.filterset, - object_list=self.object_list, + object_list=resultados, filter_url=url, - numero_res=len(self.object_list)) + numero_res=len(resultados) + ) context['show_results'] = show_results_filter_set( self.request.GET.copy()) @@ -292,7 +302,7 @@ class PesquisarColigacaoView(FilterView): class PesquisarPartidoView(FilterView): model = Partido filterset_class = PartidoFilterSet - paginate_by = 10 + paginate_by = 20 def get_filterset_kwargs(self, filterset_class): super(PesquisarPartidoView, self).get_filterset_kwargs(filterset_class) @@ -324,13 +334,20 @@ class PesquisarPartidoView(FilterView): if data: url = "&" + str(self.request.META['QUERY_STRING']) if url.startswith("&page"): - ponto_comeco = url.find('nome=') - 1 - url = url[ponto_comeco:] + url = '' + + if 'nome' in self.request.META['QUERY_STRING'] or\ + 'page' in self.request.META['QUERY_STRING']: + resultados = self.object_list + else: + resultados = [] context = self.get_context_data(filter=self.filterset, - object_list=self.object_list, + object_list=resultados, filter_url=url, - numero_res=len(self.object_list)) + numero_res=len(resultados) + ) + context['show_results'] = show_results_filter_set( self.request.GET.copy()) @@ -361,14 +378,22 @@ class ParticipacaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): comissoes = [] for p in object_list: + # TODO: atualmente periodo.data_fim pode ser nulo o que pode + # gerar um erro nessa tela + data_fim = p.composicao.periodo.data_fim + if data_fim: + data_fim = data_fim.strftime("%d/%m/%Y") + else: + data_fim = ' - ' + comissao = [ (p.composicao.comissao.nome, reverse( 'sapl.comissoes:comissao_detail', kwargs={ 'pk': p.composicao.comissao.pk})), (p.cargo.nome, None), (p.composicao.periodo.data_inicio.strftime( - "%d/%m/%Y") + ' a ' + - p.composicao.periodo.data_fim.strftime("%d/%m/%Y"), + "%d/%m/%Y") + ' a ' + + data_fim, None) ] comissoes.append(comissao) @@ -558,8 +583,8 @@ class FrenteParlamentarCrud(MasterDetailCrud): def get_parlamentar_frentes(request, pk): template_name = 'parlamentares/parlamentar_frentes_list.html' frentes = [f for f in FrenteParlamentar.objects.filter(parlamentar_id=pk) - .select_related('frente', 'cargo') - .order_by('-data_entrada', '-data_saida')] + .select_related('frente', 'cargo') + .order_by('-data_entrada', '-data_saida')] context = { 'subnav_template_name': 'parlamentares/subnav.yaml', @@ -605,7 +630,7 @@ class MandatoCrud(MasterDetailCrud): def get_initial(self): return {'parlamentar': Parlamentar.objects.get( - pk=self.kwargs['pk'])} + pk=self.kwargs['pk'])} class UpdateView(MasterDetailCrud.UpdateView): form_class = MandatoForm @@ -629,9 +654,13 @@ class ComposicaoColigacaoCrud(MasterDetailCrud): class LegislaturaCrud(CrudAux): - model = Legislatura help_topic = 'legislatura' + list_field_names = [ + 'numero', + 'data_eleicao', + 'data_inicio', + 'data_fim'] class CreateView(CrudAux.CreateView): logger = logging.getLogger(__name__) @@ -840,20 +869,20 @@ class ParlamentarMateriasView(FormView): autoria = Autoria.objects.filter( autor=autor, primeiro_autor=True).values( - 'materia__ano', - 'materia__tipo__pk', - 'materia__tipo__sigla', - 'materia__tipo__descricao').annotate( - total=Count('materia__tipo__pk')).order_by( - '-materia__ano', 'materia__tipo') + 'materia__ano', + 'materia__tipo__pk', + 'materia__tipo__sigla', + 'materia__tipo__descricao').annotate( + total=Count('materia__tipo__pk')).order_by( + '-materia__ano', 'materia__tipo') coautoria = Autoria.objects.filter( autor=autor, primeiro_autor=False).values( - 'materia__ano', - 'materia__tipo__pk', - 'materia__tipo__sigla', - 'materia__tipo__descricao').annotate( - total=Count('materia__tipo__pk')).order_by( + 'materia__ano', + 'materia__tipo__pk', + 'materia__tipo__sigla', + 'materia__tipo__descricao').annotate( + total=Count('materia__tipo__pk')).order_by( '-materia__ano', 'materia__tipo') autor_list = self.get_autoria(autoria) @@ -870,6 +899,80 @@ class ParlamentarMateriasView(FormView): }) +class ParlamentarNormasView(FormView): + template_name = "norma/normas.html" + success_url = reverse_lazy('sapl.parlamentares:parlamentar_normas') + logger = logging.getLogger(__name__) + + def get_autoria(self, resultset): + autoria = {} + total_autoria = 0 + + for i in resultset: + row = autoria.get(i['norma__ano'], []) + columns = (i['norma__tipo__pk'], + i['norma__tipo__sigla'], + i['norma__tipo__descricao'], + int(i['total'])) + row.append(columns) + autoria[i['norma__ano']] = row + total_autoria += columns[3] + autoria = sorted(autoria.items(), reverse=True) + return autoria, total_autoria + + @xframe_options_exempt + def get(self, request, *args, **kwargs): + parlamentar_pk = kwargs['pk'] + username = request.user.username + try: + self.logger.debug( + "user=" + username + ". Tentando obter Autor (object_id={}).".format(parlamentar_pk)) + autor = Autor.objects.get( + content_type=ContentType.objects.get_for_model(Parlamentar), + object_id=parlamentar_pk) + except ObjectDoesNotExist: + mensagem = _( + 'Este Parlamentar não está associado como autor de matéria.'.format(parlamentar_pk)) + self.logger.error( + "user=" + username + ". Este Parlamentar (pk={}) não é Autor de matéria.".format(parlamentar_pk)) + messages.add_message(request, messages.ERROR, mensagem) + return HttpResponseRedirect( + reverse( + 'sapl.parlamentares:parlamentar_detail', + kwargs={'pk': parlamentar_pk})) + + autoria = AutoriaNorma.objects.filter( + autor=autor, primeiro_autor=True).values( + 'norma__ano', + 'norma__tipo__pk', + 'norma__tipo__sigla', + 'norma__tipo__descricao').annotate( + total=Count('norma__tipo__pk')).order_by( + '-norma__ano', 'norma__tipo') + + coautoria = AutoriaNorma.objects.filter( + autor=autor, primeiro_autor=False).values( + 'norma__ano', + 'norma__tipo__pk', + 'norma__tipo__sigla', + 'norma__tipo__descricao').annotate( + total=Count('norma__tipo__pk')).order_by( + '-norma__ano', 'norma__tipo') + + autor_list = self.get_autoria(autoria) + coautor_list = self.get_autoria(coautoria) + + parlamentar_pk = autor.autor_related.pk + nome_parlamentar = autor.autor_related.nome_parlamentar + + return self.render_to_response({'autor_pk': autor.pk, + 'root_pk': parlamentar_pk, + 'autoria': autor_list, + 'coautoria': coautor_list, + 'nome_parlamentar': nome_parlamentar + }) + + def get_data_filicao(parlamentar): return parlamentar.filiacao_set.order_by('-data').first().data.strftime('%d/%m/%Y') @@ -927,20 +1030,22 @@ class MesaDiretoraView(FormView): legislatura=legislatura).order_by("data_inicio") year = timezone.now().year - month = timezone.now().month sessao_atual = sessoes.filter(data_inicio__year__lte=year).exclude( data_inicio__gt=timezone.now()).order_by('-data_inicio').first() - mesa = sessao_atual.composicaomesa_set.all().order_by( - 'cargo_id') if sessao_atual else [] + mesa_diretora = sessao_atual.mesadiretora_set.order_by( + '-data_inicio').first() if sessao_atual else None + + composicao_mesa = ComposicaoMesa.objects.select_related('cargo', 'parlamentar').filter( + mesa_diretora=mesa_diretora).order_by('cargo_id') - cargos_ocupados = [m.cargo for m in mesa] + cargos_ocupados = [m.cargo for m in composicao_mesa] cargos = CargoMesa.objects.all() cargos_vagos = list(set(cargos) - set(cargos_ocupados)) parlamentares = legislatura.mandato_set.all() - parlamentares_ocupados = [m.parlamentar for m in mesa] + parlamentares_ocupados = [m.parlamentar for m in composicao_mesa] parlamentares_vagos = list( set( [p.parlamentar for p in parlamentares if p.parlamentar.ativo]) - set( @@ -957,7 +1062,7 @@ class MesaDiretoraView(FormView): 'legislatura_selecionada': legislatura, 'sessoes': sessoes, 'sessao_selecionada': sessao_atual, - 'composicao_mesa': mesa, + 'composicao_mesa': composicao_mesa, 'parlamentares': parlamentares_vagos, 'cargos_vagos': cargos_vagos }) @@ -970,6 +1075,8 @@ def altera_field_mesa(request): operação (Legislatura/Sessão/Inclusão/Remoção), atualizando os campos após cada alteração """ + # TODO: Adicionar opção de selecionar mesa diretora no CRUD + logger = logging.getLogger(__name__) legislatura = request.GET['legislatura'] sessoes = SessaoLegislativa.objects.filter( @@ -998,9 +1105,29 @@ def altera_field_mesa(request): "Selecionado o ID da primeira sessão.".format(year)) sessao_selecionada = sessoes.first() + mesa_diretora = request.GET.get('mesa_diretora') + + # Mesa nao deve ser informada ainda + if not mesa_diretora: + # Cria nova mesa diretora ou retorna a primeira + mesa_diretora, _ = MesaDiretora.objects.get_or_create( + sessao_legislativa=sessao_selecionada) + + # TODO: quando a mesa for criada explicitamente em tabelas auxiliares, + # deve-se somente tentar recuperar a mesa, e caso nao exista + # retornar o erro abaixo + # return JsonResponse({'msg': ('Nenhuma mesa encontrada na sessão!')}) + else: + try: + mesa_diretora = MesaDiretora.objects.get( + id=mesa_diretora, sessao_legislativa=sessao_selecionada) + except ObjectDoesNotExist: + mesa_diretora = MesaDiretora.objects.filter( + sessao_legislativa=sessao_selecionada).first() + # Atualiza os componentes da view após a mudança - composicao_mesa = ComposicaoMesa.objects.filter( - sessao_legislativa=sessao_selecionada).order_by('cargo_id') + composicao_mesa = ComposicaoMesa.objects.select_related('cargo', 'parlamentar').filter( + mesa_diretora=mesa_diretora).order_by('cargo_id') cargos_ocupados = [m.cargo for m in composicao_mesa] cargos = CargoMesa.objects.all() @@ -1041,14 +1168,14 @@ def insere_parlamentar_composicao(request): if request.user.has_perm( '%s.add_%s' % ( AppConfig.label, ComposicaoMesa._meta.model_name)): - composicao = ComposicaoMesa() try: - logger.debug( - "user=" + username + ". Tentando obter SessaoLegislativa com id={}.".format(request.POST['sessao'])) - composicao.sessao_legislativa = SessaoLegislativa.objects.get( - id=int(request.POST['sessao'])) + # logger.debug( + # "user=" + username + ". Tentando obter SessaoLegislativa com id={}.".format(request.POST['sessao'])) + mesa_diretora, _ = MesaDiretora.objects.get_or_create( + sessao_legislativa_id=int(request.POST['sessao'])) + composicao.mesa_diretora = mesa_diretora except MultiValueDictKeyError: logger.error( "user=" + username + ". 'MultiValueDictKeyError', nenhuma sessão foi inserida!") @@ -1071,12 +1198,11 @@ def insere_parlamentar_composicao(request): composicao.cargo = CargoMesa.objects.get( id=int(request.POST['cargo'])) parlamentar_ja_inserido = ComposicaoMesa.objects.filter( - sessao_legislativa_id=composicao.sessao_legislativa.id, - cargo_id=composicao.cargo.id).exists() + mesa_diretora=mesa_diretora, + cargo=composicao.cargo).exists() if parlamentar_ja_inserido: return JsonResponse({'msg': ('Parlamentar já inserido!', 0)}) - composicao.save() except MultiValueDictKeyError: @@ -1102,8 +1228,8 @@ def remove_parlamentar_composicao(request): logger = logging.getLogger(__name__) username = request.user.username if request.POST and request.user.has_perm( - '%s.delete_%s' % ( - AppConfig.label, ComposicaoMesa._meta.model_name)): + '%s.delete_%s' % ( + AppConfig.label, ComposicaoMesa._meta.model_name)): if 'composicao_mesa' in request.POST: try: @@ -1112,8 +1238,10 @@ def remove_parlamentar_composicao(request): composicao = ComposicaoMesa.objects.get( id=request.POST['composicao_mesa']) except ObjectDoesNotExist: - logger.error("user=" + username + ". ComposicaoMesa com id={} não encontrada, portanto não pode ser removida." - .format(request.POST['composicao_mesa'])) + logger.error( + "user=" + username + + ". ComposicaoMesa com id={} não encontrada, portanto não pode ser removida." + .format(request.POST['composicao_mesa'])) return JsonResponse( {'msg': ( 'Composição da Mesa não pôde ser removida!', 0)}) @@ -1185,9 +1313,12 @@ def altera_field_mesa_public_view(request): da Mesa Diretora para usuários anônimos, atualizando os campos após cada alteração """ + + # TODO: Adicionar opção de selecionar mesa diretora no CRUD + logger = logging.getLogger(__name__) username = request.user.username - legislatura = request.GET.get('legislatura') + legislatura = request.GET['legislatura'] if legislatura: legislatura = Legislatura.objects.get(id=legislatura) else: @@ -1202,23 +1333,46 @@ def altera_field_mesa_public_view(request): # Verifica se já tem uma sessão selecionada. Ocorre quando é alterado o # campo de sessão - sessao_selecionada = request.GET.get('sessao') + sessao_selecionada = request.GET['sessao'] if not sessao_selecionada: - try: - year = timezone.now().year - logger.info( - f"user={username}. Tentando obter sessões com data_inicio.ano = {year}.") - sessao_selecionada = sessoes.get(data_inicio__year=year).id - except ObjectDoesNotExist: + year = timezone.now().year + logger.info( + f"user={username}. Tentando obter sessões com data_inicio.ano = {year}.") + sessao_selecionada = sessoes.filter(data_inicio__year=year).first() + if sessao_selecionada is None: logger.error(f"user={username}. Sessões não encontradas com com data_inicio.ano = {year}. " "Selecionado o id da primeira sessão.") - sessao_selecionada = sessoes.first().id + sessao_selecionada = sessoes.first() + else: + sessao_selecionada = SessaoLegislativa.objects.get( + id=sessao_selecionada) # Atualiza os componentes da view após a mudança lista_sessoes = [(s.id, s.__str__()) for s in sessoes] + # Pegar Mesas diretoras da sessao + mesa_diretora = request.GET.get('mesa_diretora') + + # Mesa nao deve ser informada ainda + if not mesa_diretora: + try: + mesa_diretora = sessao_selecionada.mesadiretora_set.first() + except ObjectDoesNotExist: + logger.error( + f"user={username}. Mesa não encontrada com sessão Nº {sessao_selecionada.id}. ") + else: + # Cria nova mesa diretora ou retorna a primeira + mesa_diretora, _ = MesaDiretora.objects.get_or_create( + sessao_legislativa=sessao_selecionada) + + # TODO: quando a mesa for criada explicitamente em tabelas auxiliares, + # deve-se somente tentar recuperar a mesa, e caso nao exista + # retornar o erro abaixo + # logger.error(f"user={username}. Mesa Nº {mesa_diretora} não encontrada na sessão Nº {sessao_selecionada.id}. " + # "Selecionada a mesa com o primeiro id na sessão") + composicao_mesa = ComposicaoMesa.objects.select_related('cargo', 'parlamentar').filter( - sessao_legislativa=sessao_selecionada).order_by('cargo_id') + mesa_diretora=mesa_diretora).order_by('cargo_id') cargos_ocupados = list(composicao_mesa.values_list( 'cargo__id', 'cargo__descricao')) parlamentares_ocupados = list(composicao_mesa.values_list( @@ -1227,7 +1381,7 @@ def altera_field_mesa_public_view(request): lista_fotos = [] lista_partidos = [] - sessao = SessaoLegislativa.objects.get(id=sessao_selecionada) + sessao = SessaoLegislativa.objects.get(id=sessao_selecionada.id) for p in parlamentares_ocupados: parlamentar = Parlamentar.objects.get(id=p[0]) lista_partidos.append( @@ -1257,7 +1411,8 @@ def altera_field_mesa_public_view(request): 'lista_cargos': cargos_ocupados, 'lista_sessoes': lista_sessoes, 'lista_fotos': lista_fotos, - 'sessao_selecionada': sessao_selecionada, + 'sessao_selecionada': sessao_selecionada.id, + 'mesa_diretora': mesa_diretora.id, 'msg': ('', 1) }) @@ -1266,7 +1421,7 @@ class VincularParlamentarView(PermissionRequiredMixin, FormView): logger = logging.getLogger(__name__) form_class = VincularParlamentarForm template_name = 'parlamentares/vincular_parlamentar.html' - permission_required = ('parlamentares.add_parlamentar', ) + permission_required = ('parlamentares.add_parlamentar',) def get_success_url(self): return reverse('sapl.parlamentares:parlamentar_list') @@ -1350,7 +1505,6 @@ class BlocoMembroCrud(MasterDetailCrud): def get_sessoes_legislatura(request): - legislatura_id = request.GET['legislatura'] json_response = {'sessoes_legislativas': []} diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 0d938480d..58223f21c 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -20,6 +20,7 @@ from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper, from sapl.materia.models import (MateriaLegislativa, TipoMateriaLegislativa, UnidadeTramitacao) +from sapl.protocoloadm.models import VinculoDocAdminMateria from sapl.utils import (AnoNumeroOrderingFilter, autor_label, autor_modal, choice_anos_com_documentoadministrativo, choice_anos_com_materias, timing, @@ -793,7 +794,7 @@ class TramitacaoAdmForm(ModelForm): ip=tramitacao.ip, ultima_edicao=tramitacao.ultima_edicao )) - ## TODO: BULK UPDATE não envia Signal para Tramitacao + # TODO: BULK UPDATE não envia Signal para Tramitacao TramitacaoAdministrativo.objects.bulk_create(lista_tramitacao) return tramitacao @@ -915,7 +916,7 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm): da.tramitacao = False if nova_tram_principal.status.indicador == "F" else True da.save() - ## TODO: refatorar? + # TODO: refatorar? return nova_tram_principal @@ -1089,7 +1090,8 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): 'restrito', 'user', 'ip', - 'ultima_edicao' + 'ultima_edicao', + 'autor' ] widgets = {'protocolo': forms.HiddenInput(), @@ -1137,9 +1139,10 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): tipo = TipoDocumentoAdministrativo.objects.get( id=tipo_documento) raise ValidationError( - _('{}/{} ({}) já existente!'.format(numero_documento, - ano_documento, - tipo))) + _('{}/{} ({}) já existente! ' + 'Você diferenciar preenchendo o campo complemento'.format(numero_documento, + ano_documento, + tipo))) # campos opcionais, mas que se informados devem ser válidos if numero_protocolo and ano_protocolo: @@ -1210,7 +1213,7 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): [('tipo', 3), ('numero', 3), ('complemento', 3), ('ano', 3)]) row2 = to_row( - [('data', 4), ('numero_protocolo', 4), ('ano_protocolo', 4)]) + [('data', 3), ('numero_protocolo', 3), ('ano_protocolo', 3), ('autor', 3)]) row3 = to_row( [('assunto', 12)]) @@ -1693,7 +1696,7 @@ class TramitacaoEmLoteAdmForm(ModelForm): ip=tramitacao.ip, ultima_edicao=tramitacao.ultima_edicao )) - ## TODO: BULK UPDATE não envia Signal para Tramitacao + # TODO: BULK UPDATE não envia Signal para Tramitacao TramitacaoAdministrativo.objects.bulk_create(lista_tramitacao) return tramitacao @@ -1731,3 +1734,100 @@ class TramitacaoEmLoteAdmFilterSet(django_filters.FilterSet): self.form.helper.layout = Layout( Fieldset(_('Tramitação em Lote'), row1, row2, form_actions(label=_('Pesquisar')))) + + +class VinculoDocAdminMateriaForm(ModelForm): + + logger = logging.getLogger(__name__) + + tipo = forms.ModelChoiceField( + label='Tipo', + required=True, + queryset=TipoMateriaLegislativa.objects.all(), + empty_label='Selecione', + ) + + numero = forms.IntegerField(label='Número', required=True) + + ano = forms.CharField(label='Ano', required=True) + + class Meta: + model = VinculoDocAdminMateria + fields = ['tipo', 'numero', 'ano', 'data_anexacao', 'data_desanexacao'] + + def __init__(self, *args, **kwargs): + return super().__init__(*args, **kwargs) + + def clean(self): + super().clean() + + if not self.is_valid(): + return self.cleaned_data + + cleaned_data = self.cleaned_data + + data_anexacao = cleaned_data['data_anexacao'] + data_desanexacao = cleaned_data['data_desanexacao'] if cleaned_data['data_desanexacao'] else data_anexacao + + if data_anexacao > data_desanexacao: + self.logger.error( + "Data de anexação posterior à data de desanexação.") + raise ValidationError( + _("Data de anexação posterior à data de desanexação.")) + + try: + self.logger.info("Tentando obter objeto MateriaLegislativa (numero={}, ano={}, tipo={})." + .format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) + materia = MateriaLegislativa.objects.get( + numero=cleaned_data['numero'], + ano=cleaned_data['ano'], + tipo=cleaned_data['tipo']) + except ObjectDoesNotExist: + msg = _('A {} {}/{} não existe no cadastro de matérias legislativas.' + .format(cleaned_data['tipo'], cleaned_data['numero'], cleaned_data['ano'])) + self.logger.warning( + "A matéria a ser anexada não existe no cadastro de matérias legislativas.") + raise ValidationError(msg) + + if VinculoDocAdminMateria.objects.filter( + documento=self.instance.documento, materia=materia + ).exclude(pk=self.instance.pk).exists(): + self.logger.error( + "Matéria já se encontra vinculada a este documento.") + raise ValidationError( + _('Matéria já se encontra vinculada a este documento')) + + cleaned_data['materia'] = materia + + return cleaned_data + + def save(self, commit=False): + vinculo = super().save(commit) + vinculo.materia = self.cleaned_data['materia'] + vinculo.save() + return vinculo + + +class VinculoDocAdminMateriaEmLoteFilterSet(django_filters.FilterSet): + + class Meta(FilterOverridesMetaMixin): + model = MateriaLegislativa + fields = ['tipo', 'data_apresentacao'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.filters['tipo'].label = 'Tipo de Matéria' + self.filters['data_apresentacao'].label = 'Data (Inicial - Final)' + + self.form.fields['tipo'].required = True + self.form.fields['data_apresentacao'].required = True + + row1 = to_row([('tipo', 12)]) + row2 = to_row([('data_apresentacao', 12)]) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Pesquisa de Matérias'), + row1, row2, form_actions(label='Pesquisar'))) diff --git a/sapl/protocoloadm/migrations/0038_auto_20211025_1657.py b/sapl/protocoloadm/migrations/0038_auto_20211025_1657.py new file mode 100644 index 000000000..f2693082a --- /dev/null +++ b/sapl/protocoloadm/migrations/0038_auto_20211025_1657.py @@ -0,0 +1,26 @@ +# Generated by Django 2.2.24 on 2021-10-25 19:57 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('protocoloadm', '0037_auto_20210209_1047'), + ] + + operations = [ + migrations.AddField( + model_name='protocolo', + name='de_proposicao', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='protocolo', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'), + ), + ] diff --git a/sapl/protocoloadm/migrations/0039_auto_20211201_1201.py b/sapl/protocoloadm/migrations/0039_auto_20211201_1201.py new file mode 100644 index 000000000..773557f59 --- /dev/null +++ b/sapl/protocoloadm/migrations/0039_auto_20211201_1201.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.24 on 2021-12-01 15:01 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0038_auto_20211025_1657'), + ] + + operations = [ + migrations.AlterField( + model_name='documentoadministrativo', + name='autor', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='base.Autor', verbose_name='Autoria'), + ), + ] diff --git a/sapl/protocoloadm/migrations/0040_auto_20220321_0934.py b/sapl/protocoloadm/migrations/0040_auto_20220321_0934.py new file mode 100644 index 000000000..65b839de8 --- /dev/null +++ b/sapl/protocoloadm/migrations/0040_auto_20220321_0934.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2022-03-21 12:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0039_auto_20211201_1201'), + ] + + operations = [ + migrations.AlterField( + model_name='documentoadministrativo', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano'), + ), + migrations.AlterField( + model_name='protocolo', + name='ano', + field=models.PositiveSmallIntegerField(choices=[(2023, 2023), (2022, 2022), (2021, 2021), (2020, 2020), (2019, 2019), (2018, 2018), (2017, 2017), (2016, 2016), (2015, 2015), (2014, 2014), (2013, 2013), (2012, 2012), (2011, 2011), (2010, 2010), (2009, 2009), (2008, 2008), (2007, 2007), (2006, 2006), (2005, 2005), (2004, 2004), (2003, 2003), (2002, 2002), (2001, 2001), (2000, 2000), (1999, 1999), (1998, 1998), (1997, 1997), (1996, 1996), (1995, 1995), (1994, 1994), (1993, 1993), (1992, 1992), (1991, 1991), (1990, 1990), (1989, 1989), (1988, 1988), (1987, 1987), (1986, 1986), (1985, 1985), (1984, 1984), (1983, 1983), (1982, 1982), (1981, 1981), (1980, 1980), (1979, 1979), (1978, 1978), (1977, 1977), (1976, 1976), (1975, 1975), (1974, 1974), (1973, 1973), (1972, 1972), (1971, 1971), (1970, 1970), (1969, 1969), (1968, 1968), (1967, 1967), (1966, 1966), (1965, 1965), (1964, 1964), (1963, 1963), (1962, 1962), (1961, 1961), (1960, 1960), (1959, 1959), (1958, 1958), (1957, 1957), (1956, 1956), (1955, 1955), (1954, 1954), (1953, 1953), (1952, 1952), (1951, 1951), (1950, 1950), (1949, 1949), (1948, 1948), (1947, 1947), (1946, 1946), (1945, 1945), (1944, 1944), (1943, 1943), (1942, 1942), (1941, 1941), (1940, 1940), (1939, 1939), (1938, 1938), (1937, 1937), (1936, 1936), (1935, 1935), (1934, 1934), (1933, 1933), (1932, 1932), (1931, 1931), (1930, 1930), (1929, 1929), (1928, 1928), (1927, 1927), (1926, 1926), (1925, 1925), (1924, 1924), (1923, 1923), (1922, 1922), (1921, 1921), (1920, 1920), (1919, 1919), (1918, 1918), (1917, 1917), (1916, 1916), (1915, 1915), (1914, 1914), (1913, 1913), (1912, 1912), (1911, 1911), (1910, 1910), (1909, 1909), (1908, 1908), (1907, 1907), (1906, 1906), (1905, 1905), (1904, 1904), (1903, 1903), (1902, 1902), (1901, 1901), (1900, 1900), (1899, 1899), (1898, 1898), (1897, 1897), (1896, 1896), (1895, 1895), (1894, 1894), (1893, 1893), (1892, 1892), (1891, 1891), (1890, 1890)], verbose_name='Ano do Protocolo'), + ), + ] diff --git a/sapl/protocoloadm/migrations/0041_auto_20220804_2239.py b/sapl/protocoloadm/migrations/0041_auto_20220804_2239.py new file mode 100644 index 000000000..0e67fbc46 --- /dev/null +++ b/sapl/protocoloadm/migrations/0041_auto_20220804_2239.py @@ -0,0 +1,35 @@ +# Generated by Django 2.2.28 on 2022-08-05 01:39 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0081_auto_20220321_0934'), + ('protocoloadm', '0040_auto_20220321_0934'), + ] + + operations = [ + migrations.CreateModel( + name='VinculoDocAdminMateria', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('data_anexacao', models.DateField(verbose_name='Data Anexação')), + ('data_desanexacao', models.DateField(blank=True, null=True, verbose_name='Data Desanexação')), + ('documento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materialegislativa_vinculada_set', to='protocoloadm.DocumentoAdministrativo', verbose_name='Documento Administrativo')), + ('materia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documentoadministrativo_vinculado_set', to='materia.MateriaLegislativa', verbose_name='Matéria Legislativa')), + ], + options={ + 'verbose_name': 'Vinculo entre Documento Administrativo e Matéria Legislativa', + 'verbose_name_plural': 'Vinculos entre Documento Administrativo e Matéria Legislativa', + 'ordering': ('id',), + }, + ), + migrations.AddField( + model_name='documentoadministrativo', + name='materiasvinculadas', + field=models.ManyToManyField(blank=True, related_name='docadmsvinculados', through='protocoloadm.VinculoDocAdminMateria', to='materia.MateriaLegislativa'), + ), + ] diff --git a/sapl/protocoloadm/migrations/0042_auto_20220805_1236.py b/sapl/protocoloadm/migrations/0042_auto_20220805_1236.py new file mode 100644 index 000000000..cc667daba --- /dev/null +++ b/sapl/protocoloadm/migrations/0042_auto_20220805_1236.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.28 on 2022-08-05 15:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0081_auto_20220321_0934'), + ('protocoloadm', '0041_auto_20220804_2239'), + ] + + operations = [ + migrations.AlterField( + model_name='documentoadministrativo', + name='materiasvinculadas', + field=models.ManyToManyField(blank=True, related_name='docadmvinculados', through='protocoloadm.VinculoDocAdminMateria', to='materia.MateriaLegislativa'), + ), + migrations.AlterUniqueTogether( + name='vinculodocadminmateria', + unique_together={('documento', 'materia')}, + ), + ] diff --git a/sapl/protocoloadm/models.py b/sapl/protocoloadm/models.py index 5e6142f86..b64809bf0 100644 --- a/sapl/protocoloadm/models.py +++ b/sapl/protocoloadm/models.py @@ -1,11 +1,15 @@ +import re + from django.db import models from django.utils import timezone +from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ from model_utils import Choices import reversion -from sapl.base.models import Autor -from sapl.materia.models import TipoMateriaLegislativa, UnidadeTramitacao +from sapl.base.models import Autor, AppConfig as SaplAppConfig +from sapl.materia.models import TipoMateriaLegislativa, UnidadeTramitacao,\ + MateriaLegislativa from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, texto_upload_path, get_settings_auth_user_model, OverwriteStorage) @@ -83,7 +87,16 @@ class Protocolo(models.Model): verbose_name=_('IP'), help_text=_('Endereço IP da estação de trabalho do usuário que está realizando Protocolo e ' 'informando data e hora manualmente.')) - # Não foi utilizado auto_now_add=True em timestamp porque ele usa datetime.now que não é timezone aware. + user = models.ForeignKey( + get_settings_auth_user_model(), + verbose_name=_('Usuário'), + on_delete=models.PROTECT, + null=True, + blank=True + ) + de_proposicao = models.BooleanField(default=False) + # Não foi utilizado auto_now_add=True em timestamp porque ele usa + # datetime.now que não é timezone aware. timestamp = models.DateTimeField( null=True, blank=True, @@ -152,7 +165,7 @@ class DocumentoAdministrativo(models.Model): numero = models.PositiveIntegerField(verbose_name=_('Número')) complemento = models.CharField(max_length=10, blank=True, - verbose_name=_('Complemento')) + verbose_name=_('Complemento')) ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'), choices=RANGE_ANOS) @@ -167,7 +180,7 @@ class DocumentoAdministrativo(models.Model): interessado = models.CharField( max_length=50, blank=True, verbose_name=_('Interessado')) autor = models.ForeignKey(Autor, blank=True, null=True, - on_delete=models.PROTECT) + on_delete=models.PROTECT, verbose_name=_('Autoria')) dias_prazo = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Dias Prazo')) data_fim_prazo = models.DateField( @@ -206,6 +219,17 @@ class DocumentoAdministrativo(models.Model): ) ) + materiasvinculadas = models.ManyToManyField( + MateriaLegislativa, + blank=True, + through='VinculoDocAdminMateria', + related_name='docadmvinculados', + through_fields=( + 'documento', + 'materia' + ) + ) + user = models.ForeignKey( get_settings_auth_user_model(), verbose_name=_('Usuário'), @@ -227,13 +251,73 @@ class DocumentoAdministrativo(models.Model): class Meta: verbose_name = _('Documento Administrativo') verbose_name_plural = _('Documentos Administrativos') - ordering = ('id',) + ordering = ('ano', 'numero', 'id',) + + @classmethod + def mask_to_str(cls, values, mask): + erro = set() + pattern = '({[^{}]+}|{[ /.-]*})' + campos_escolhidos = re.findall(pattern, mask) + campos_permitidos = { + '{.}', '{/}', '{-}', + '{sigla}', + '{nome}', + '{numero}', + '{ano}', + '{complemento}', + '{assunto}', + } + condicionais = { + '{.}': '.', + '{/}': '/', + '{-}': '-', + } - def __str__(self): - return _('%(tipo)s - %(assunto)s') % { - 'tipo': self.tipo, 'assunto': self.assunto + erro = set(campos_escolhidos) - campos_permitidos + + if erro: + mask = '{sigla} Nº {numero}/{ano}{-}{complemento} - {nome}' + campos_escolhidos = re.findall(pattern, mask) + + for i, k in enumerate(campos_escolhidos): + if k in values.keys(): + if i > 0 and campos_escolhidos[i - 1] in condicionais: + mask = mask.replace( + campos_escolhidos[i - 1], + condicionais[campos_escolhidos[i - 1]]if values[k] else '', 1) + mask = mask.replace(k, values[k], 1) + elif k in condicionais: + if i > 0 and campos_escolhidos[i - 1] in condicionais: + mask = mask.replace( + campos_escolhidos[i - 1], + '', 1) + if i + 1 == len(campos_escolhidos): + mask = mask.replace(k, '', 1) + + return mask, erro + + @cached_property + def _identificacao_de_documento(self): + mask = SaplAppConfig.attr('identificacao_de_documentos') + + values = { + '{sigla}': self.tipo.sigla, + '{nome}': self.tipo.descricao, + '{numero}': f'{self.numero:0>3}', + '{ano}': f'{self.ano}', + '{complemento}': self.complemento, + '{assunto}': self.assunto } + return DocumentoAdministrativo.mask_to_str(values, mask)[0] + + def __str__(self): + return self._identificacao_de_documento + + @property + def epigrafe(self): + return str(self) + def delete(self, using=None, keep_parents=False): texto_integral = self.texto_integral result = super().delete(using=using, keep_parents=keep_parents) @@ -428,6 +512,37 @@ class Anexado(models.Model): } +@reversion.register() +class VinculoDocAdminMateria(models.Model): + documento = models.ForeignKey( + DocumentoAdministrativo, related_name='materialegislativa_vinculada_set', + on_delete=models.CASCADE, + verbose_name=_('Documento Administrativo') + ) + materia = models.ForeignKey( + MateriaLegislativa, related_name='documentoadministrativo_vinculado_set', + on_delete=models.CASCADE, + verbose_name=_('Matéria Legislativa') + ) + data_anexacao = models.DateField(verbose_name=_('Data Anexação')) + data_desanexacao = models.DateField( + blank=True, null=True, verbose_name=_('Data Desanexação') + ) + + class Meta: + verbose_name = _( + 'Vinculo entre Documento Administrativo e Matéria Legislativa') + verbose_name_plural = _( + 'Vinculos entre Documento Administrativo e Matéria Legislativa') + ordering = ('id',) + unique_together = ( + ('documento', 'materia'), + ) + + def __str__(self): + return f'Vinculo: {self.documento} - {self.materia}' + + @reversion.register() class AcompanhamentoDocumento(models.Model): usuario = models.CharField(max_length=50) diff --git a/sapl/protocoloadm/urls.py b/sapl/protocoloadm/urls.py index 2e3e07ac1..0d0290ac5 100644 --- a/sapl/protocoloadm/urls.py +++ b/sapl/protocoloadm/urls.py @@ -25,7 +25,9 @@ from sapl.protocoloadm.views import (AcompanhamentoDocumentoView, AnexadoCrud, DocumentoAnexadoEmLoteView, PrimeiraTramitacaoEmLoteAdmView, TramitacaoEmLoteAdmView, - apaga_protocolos_view) + apaga_protocolos_view, + VinculoDocAdminMateriaCrud, + VinculoDocAdminMateriaEmLoteView) from .apps import AppConfig @@ -34,18 +36,21 @@ app_name = AppConfig.name urlpatterns_documento_administrativo = [ url(r'^docadm/', include(DocumentoAdministrativoCrud.get_urls() + - AnexadoCrud.get_urls() + + AnexadoCrud.get_urls() + TramitacaoAdmCrud.get_urls() + - DocumentoAcessorioAdministrativoCrud.get_urls())), + DocumentoAcessorioAdministrativoCrud.get_urls() + + VinculoDocAdminMateriaCrud.get_urls())), url(r'^docadm/pesq-doc-adm', PesquisarDocumentoAdministrativoView.as_view(), name='pesq_doc_adm'), url(r'^docadm/texto_integral/(?P\d+)$', doc_texto_integral, name='doc_texto_integral'), - + url(r'^docadm/(?P\d+)/anexado_em_lote', DocumentoAnexadoEmLoteView.as_view(), name='anexado_em_lote'), + url(r'^docadm/(?P\d+)/vinculo-em-lote', VinculoDocAdminMateriaEmLoteView.as_view(), + name='vinculodocadminmateria_em_lote'), ] urlpatterns_protocolo = [ diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 35cb9ba2b..2b1346f7b 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -35,7 +35,10 @@ from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud, make_pagination, from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa, UnidadeTramitacao from sapl.materia.views import gerar_pdf_impressos from sapl.parlamentares.models import Legislatura, Parlamentar -from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo +from sapl.protocoloadm.forms import VinculoDocAdminMateriaForm,\ + VinculoDocAdminMateriaEmLoteFilterSet +from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo,\ + VinculoDocAdminMateria from sapl.relatorios.views import relatorio_doc_administrativos from sapl.utils import (create_barcode, get_base_url, get_client_ip, get_mime_type_from_file_extension, lista_anexados, @@ -599,6 +602,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, def get_initial(self): initial = super().get_initial() + initial['user'] = self.request.user.username initial['user_data_hora_manual'] = self.request.user.username initial['ip_data_hora_manual'] = get_client_ip(self.request) initial['data'] = timezone.localdate(timezone.now()) @@ -663,6 +667,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, protocolo.ano = timezone.now().year protocolo.assunto_ementa = self.request.POST['assunto'] + protocolo.user = self.request.user if form.cleaned_data['data_hora_manual'] == 'True': protocolo.timestamp = None @@ -811,6 +816,7 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): def get_initial(self): initial = super().get_initial() + initial['user'] = self.request.user.username initial['user_data_hora_manual'] = self.request.user.username initial['ip_data_hora_manual'] = get_client_ip(self.request) initial['data'] = timezone.localdate(timezone.now()) @@ -882,6 +888,7 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): protocolo.numero_paginas = self.request.POST['numero_paginas'] protocolo.observacao = self.request.POST['observacao'] protocolo.assunto_ementa = self.request.POST['assunto_ementa'] + protocolo.user = self.request.user if form.cleaned_data['data_hora_manual'] == 'True': protocolo.timestamp = None @@ -1118,38 +1125,39 @@ class DocumentoAnexadoEmLoteView(PermissionRequiredMixin, FilterView): return context qr = self.request.GET.copy() - context['temp_object_list'] = context['object_list'].order_by( - 'numero', '-ano' - ) - - context['object_list'] = [] - for obj in context['temp_object_list']: - if not obj.pk == int(context['root_pk']): - documento_principal = DocumentoAdministrativo.objects.get( - id=context['root_pk']) - documento_anexado = obj - is_anexado = Anexado.objects.filter(documento_principal=documento_principal, - documento_anexado=documento_anexado).exists() - if not is_anexado: - ciclico = False - anexados_anexado = Anexado.objects.filter( - documento_principal=documento_anexado) - - while anexados_anexado and not ciclico: - anexados = [] - - for anexo in anexados_anexado: - - if documento_principal == anexo.documento_anexado: - ciclico = True - else: - for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado): - anexados.append(a) - - anexados_anexado = anexados - - if not ciclico: - context['object_list'].append(obj) + if not len(qr): + context['object_list'] = [] + else: + context['temp_object_list'] = context['object_list'].order_by( + 'numero', '-ano') + context['object_list'] = [] + for obj in context['temp_object_list']: + if not obj.pk == int(context['root_pk']): + documento_principal = DocumentoAdministrativo.objects.get( + id=context['root_pk']) + documento_anexado = obj + is_anexado = Anexado.objects.filter(documento_principal=documento_principal, + documento_anexado=documento_anexado).exists() + if not is_anexado: + ciclico = False + anexados_anexado = Anexado.objects.filter( + documento_principal=documento_anexado) + + while anexados_anexado and not ciclico: + anexados = [] + + for anexo in anexados_anexado: + + if documento_principal == anexo.documento_anexado: + ciclico = True + else: + for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado): + anexados.append(a) + + anexados_anexado = anexados + + if not ciclico: + context['object_list'].append(obj) context['numero_res'] = len(context['object_list']) @@ -1294,7 +1302,6 @@ class TramitacaoAdmCrud(MasterDetailCrud): return initial - class ListView(DocumentoAdministrativoMixin, MasterDetailCrud.ListView): def get_queryset(self): @@ -1745,3 +1752,154 @@ def apaga_protocolos_view(request): return JsonResponse({'type': 'success', 'msg': ''}) else: return JsonResponse({'type': 'error', 'msg': 'Senha Incorreta'}) + + +class VinculoDocAdminMateriaCrud(MasterDetailCrud): + model = VinculoDocAdminMateria + parent_field = 'documento' + help_topic = 'vinculodocadminmateria' + public = [RP_LIST, RP_DETAIL] + + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['data_anexacao', ('materia', 'materia__ementa')] + + @property + def verbose_name(self): + return _('Vinculo') + + @property + def verbose_name_plural(self): + return _('Vinculos') + + @property + def title(self): + return self.object.documento.epigrafe + + class CreateView(MasterDetailCrud.CreateView): + form_class = VinculoDocAdminMateriaForm + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = VinculoDocAdminMateriaForm + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.object.documento + return context + + def get_initial(self): + initial = super(UpdateView, self).get_initial() + initial['tipo'] = self.object.materia.tipo.id + initial['numero'] = self.object.materia.numero + initial['ano'] = self.object.materia.ano + return initial + + class DetailView(MasterDetailCrud.DetailView): + + @property + def layout_key(self): + return 'VinculoDocAdminMateriaDetail' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.object.documento.epigrafe + return context + + +class VinculoDocAdminMateriaEmLoteView(PermissionRequiredMixin, FilterView): + filterset_class = VinculoDocAdminMateriaEmLoteFilterSet + template_name = 'protocoloadm/em_lote/vinculodocadminmateria.html' + permission_required = ('protocoloadm.add_documentoadministrativo',) + + def get_context_data(self, **kwargs): + context = super(VinculoDocAdminMateriaEmLoteView, + self).get_context_data(**kwargs) + + context['root_pk'] = self.kwargs['pk'] + + context['subnav_template_name'] = 'protocoloadm/subnav.yaml' + + context['title'] = _('Matérias Vinculadas em Lote') + + # Verifica se os campos foram preenchidos + if not self.request.GET.get('tipo', " "): + msg = _('Por favor, selecione um tipo de matéria.') + messages.add_message(self.request, messages.ERROR, msg) + + if not self.request.GET.get('data_apresentacao_0', " ") or not self.request.GET.get('data_apresentacao_1', " "): + msg = _('Por favor, preencha as datas.') + messages.add_message(self.request, messages.ERROR, msg) + + return context + + if not self.request.GET.get('data_apresentacao_0', " ") or not self.request.GET.get('data_apresentacao_1', " "): + msg = _('Por favor, preencha as datas.') + messages.add_message(self.request, messages.ERROR, msg) + return context + + qr = self.request.GET.copy() + if not len(qr): + context['object_list'] = [] + else: + context['object_list'] = context['object_list'].order_by( + 'numero', '-ano') + documento = DocumentoAdministrativo.objects.get( + pk=self.kwargs['pk']) + not_list = [self.kwargs['pk']] + \ + [m for m in documento.materiasvinculadas.values_list( + 'id', flat=True)] + context['object_list'] = context['object_list'].exclude( + pk__in=not_list) + + context['numero_res'] = len(context['object_list']) + + context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' + + context['show_results'] = show_results_filter_set(qr) + + return context + + def post(self, request, *args, **kwargs): + marcadas = request.POST.getlist('materia_id') + + data_anexacao = datetime.strptime( + request.POST['data_anexacao'], "%d/%m/%Y").date() + + if request.POST['data_desanexacao'] == '': + data_desanexacao = None + v_data_desanexacao = data_anexacao + else: + data_desanexacao = datetime.strptime( + request.POST['data_desanexacao'], "%d/%m/%Y").date() + v_data_desanexacao = data_desanexacao + + if len(marcadas) == 0: + msg = _('Nenhuma máteria foi selecionada.') + messages.add_message(request, messages.ERROR, msg) + + if data_anexacao > v_data_desanexacao: + msg = _('Data de anexação posterior à data de desanexação.') + messages.add_message(request, messages.ERROR, msg) + + return self.get(request, self.kwargs) + + if data_anexacao > v_data_desanexacao: + msg = _('Data de anexação posterior à data de desanexação.') + messages.add_message(request, messages.ERROR, msg) + return self.get(request, self.kwargs) + + documento = DocumentoAdministrativo.objects.get(pk=kwargs['pk']) + for materia in MateriaLegislativa.objects.filter(id__in=marcadas): + + v = VinculoDocAdminMateria() + v.documento = documento + v.materia = materia + v.data_anexacao = data_anexacao + v.data_desanexacao = data_desanexacao + v.save() + + msg = _('Matéria(s) vinculadas(s).') + messages.add_message(request, messages.SUCCESS, msg) + + success_url = reverse('sapl.protocoloadm:vinculodocadminmateria_list', + kwargs={'pk': kwargs['pk']}) + return HttpResponseRedirect(success_url) diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py index 0ede61f97..5d3f259b0 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py @@ -399,8 +399,23 @@ def ocorrencias(lst_ocorrencias): tmp += '\t\t\n' return tmp +def consideracoes(lst_consideracoes): + tmp = '' + if lst_consideracoes: + tmp += '\t\tConsideracoes Finais\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + for consideracoes in lst_consideracoes: + tmp += '\t\t' + \ + str(consideracoes.conteudo) + '\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + return tmp + -def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, lst_ocorrencias): +def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, lst_ocorrencias, lst_consideracoes): """ """ arquivoPdf = str(int(time.time() * 100)) + ".pdf" @@ -437,7 +452,8 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ 'oradores_exped': oradores_expediente(lst_oradores_expediente), 'oradores_o_d': oradores_ordemdia(lst_oradores_ordemdia), 'oradores_expli': oradores(lst_oradores), - 'ocorr_sessao': ocorrencias(lst_ocorrencias) + 'ocorr_sessao': ocorrencias(lst_ocorrencias), + 'cons_finais': consideracoes(lst_consideracoes) } if ordenacao: @@ -456,6 +472,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += dict_ord_template[ordenacao.decimo_segundo] tmp += dict_ord_template[ordenacao.decimo_terceiro] tmp += dict_ord_template[ordenacao.decimo_quarto] + tmp += dict_ord_template[ordenacao.decimo_quinto] except KeyError as e: logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " "configuração de ordenação. Utilizando ordenação padrão.") @@ -473,6 +490,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) + tmp += consideracoes(lst_consideracoes) else: tmp += inf_basicas(inf_basicas_dic) @@ -489,6 +507,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) + tmp += consideracoes(lst_consideracoes) tmp += '\t\n' tmp += '\n' diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py index 5eef2d912..9315d5429 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py @@ -277,7 +277,7 @@ if context.REQUEST['data'] != '': # return lst_votacao sessao = session.id caminho = context.pdf_sessao_plenaria_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, - lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores) + lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_ocorrencias, lst_consideracoes) if caminho == 'aviso': response.redirect('mensagem_emitir_proc') else: diff --git a/sapl/relatorios/urls.py b/sapl/relatorios/urls.py index ee96a76d7..41b1de4f3 100644 --- a/sapl/relatorios/urls.py +++ b/sapl/relatorios/urls.py @@ -31,9 +31,9 @@ urlpatterns = [ url(r'^relatorios/(?P\d+)/(?P\d+)/etiqueta-protocolo$', relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'), - # Url utilizada no arquivo: templates/sessao/pauta_sessao_filter.html - url(r'^relatorios/pauta-sessao/(?P\d+)/$', - relatorio_pauta_sessao, name='relatorio_pauta_sessao'), + # # Url utilizada no arquivo: templates/sessao/pauta_sessao_filter.html + # url(r'^relatorios/pauta-sessao/(?P\d+)/$', + # relatorio_pauta_sessao, name='relatorio_pauta_sessao'), url(r'^relatorios/(?P\d+)/resumo_ata$', resumo_ata_pdf, name='resumo_ata_pdf'), diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 6b1f5b114..2ad08eea6 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -3,17 +3,17 @@ import html import logging import re import tempfile -import unidecode from django.core.exceptions import ObjectDoesNotExist from django.http import Http404, HttpResponse -from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ from django.template.loader import render_to_string +from django.utils import timezone from django.utils.html import strip_tags +from django.utils.translation import ugettext_lazy as _ +import unidecode +from weasyprint import HTML, CSS -from sapl.settings import MEDIA_URL -from sapl.base.models import Autor, CasaLegislativa +from sapl.base.models import Autor, CasaLegislativa, AppConfig as SaplAppConfig from sapl.comissoes.models import Comissao from sapl.materia.models import (Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao, ConfigEtiquetaMateriaLegislativa) @@ -25,16 +25,19 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, OcorrenciaSessao, - RegistroVotacao, VotoParlamentar, OradorOrdemDia, TipoExpediente, ResumoOrdenacao) -from sapl.settings import STATIC_ROOT -from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data, create_barcode - + RegistroVotacao, VotoParlamentar, OradorOrdemDia, + ConsideracoesFinais, TipoExpediente, ResumoOrdenacao) from sapl.sessao.views import (get_identificacao_basica, get_mesa_diretora, get_presenca_sessao, get_expedientes, get_materias_expediente, get_oradores_expediente, get_presenca_ordem_do_dia, get_materias_ordem_do_dia, get_oradores_ordemdia, - get_oradores_explicacoes_pessoais, get_ocorrencias_da_sessao, get_assinaturas) + get_oradores_explicacoes_pessoais, get_consideracoes_finais, + get_ocorrencias_da_sessao, get_assinaturas, + get_correspondencias) +from sapl.settings import MEDIA_URL +from sapl.settings import STATIC_ROOT +from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data, create_barcode from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, @@ -42,8 +45,6 @@ from .templates import (pdf_capa_processo_gerar, pdf_ordem_dia_gerar, pdf_pauta_sessao_gerar, pdf_protocolo_gerar, pdf_sessao_plenaria_gerar) -from weasyprint import HTML, CSS - def get_kwargs_params(request, fields): kwargs = {} @@ -112,7 +113,7 @@ def get_materias(mats): for materia in mats: dic = {} dic['titulo'] = materia.tipo.sigla + " " + materia.tipo.descricao \ - + " " + str(materia.numero) + "/" + str(materia.ano) + + " " + str(materia.numero) + "/" + str(materia.ano) dic['txt_ementa'] = materia.ementa dic['nom_autor'] = ', '.join( @@ -508,7 +509,7 @@ def is_empty(value): return True if not txt.strip() else False -def get_sessao_plenaria(sessao, casa): +def get_sessao_plenaria(sessao, casa, user): inf_basicas_dic = { "num_sessao_plen": str(sessao.numero), "nom_sessao": sessao.tipo.nome, @@ -535,7 +536,8 @@ def get_sessao_plenaria(sessao, casa): for composicao in IntegranteMesa.objects.select_related('parlamentar', 'cargo')\ .filter(sessao_plenaria=sessao)\ .order_by('cargo_id'): - partido_sigla = Filiacao.objects.filter(parlamentar=composicao.parlamentar).first() + partido_sigla = Filiacao.objects.filter( + parlamentar=composicao.parlamentar).first() sigla = '' if not partido_sigla else partido_sigla.partido.sigla lst_mesa.append({ 'nom_parlamentar': composicao.parlamentar.nome_parlamentar, @@ -545,7 +547,8 @@ def get_sessao_plenaria(sessao, casa): # Lista de presença na sessão lst_presenca_sessao = [] - presenca = SessaoPlenariaPresenca.objects.filter(sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') + presenca = SessaoPlenariaPresenca.objects.filter( + sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') for parlamentar in [p.parlamentar for p in presenca]: lst_presenca_sessao.append({ "nom_parlamentar": parlamentar.nome_parlamentar, @@ -554,7 +557,8 @@ def get_sessao_plenaria(sessao, casa): # Lista de ausencias na sessão lst_ausencia_sessao = [] - ausencia = JustificativaAusencia.objects.filter(sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') + ausencia = JustificativaAusencia.objects.filter( + sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') for ausente in ausencia: lst_ausencia_sessao.append({ "parlamentar": ausente.parlamentar, @@ -562,9 +566,34 @@ def get_sessao_plenaria(sessao, casa): "tipo": "Matéria" if ausente.ausencia == 1 else "Sessão" }) + # Exibe as Correspondencias + lst_correspondencias = [] + qs = sessao.correspondencia_set.all() + is_anon = user.is_anonymous + is_ostensivo = SaplAppConfig.attr('documentos_administrativos') == 'O' + if is_anon and not is_ostensivo: + qs = qs.none() + elif is_anon: + qs = qs.filter(documento__restrito=False) + for c in qs: + d = c.documento + lst_correspondencias.append( + { + 'id': d.id, + 'tipo': c.get_tipo_display(), + 'epigrafe': d.epigrafe, + 'data': d.data.strftime('%d/%m/%Y'), + 'interessado': d.interessado, + 'assunto': d.assunto, + 'restrito': d.restrito, + 'is_ostensivo': is_ostensivo + } + ) + # Exibe os Expedientes lst_expedientes = [] - expedientes = ExpedienteSessao.objects.filter(sessao_plenaria=sessao).order_by('tipo__nome') + expedientes = ExpedienteSessao.objects.filter( + sessao_plenaria=sessao).order_by('tipo__nome') for e in expedientes: conteudo = e.conteudo if not is_empty(conteudo): @@ -572,9 +601,11 @@ def get_sessao_plenaria(sessao, casa): # https://github.com/interlegis/sapl/issues/1046 conteudo = re.sub('style=".*?"', '', conteudo) conteudo = re.sub('class=".*?"', '', conteudo) - conteudo = re.sub('align=".*?"', '', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('align=".*?"', '', conteudo) conteudo = re.sub('', '

', conteudo) - conteudo = re.sub('', '
', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -612,12 +643,15 @@ def get_sessao_plenaria(sessao, casa): "votacao_observacao": ' ' } - numeracao = Numeracao.objects.filter(materia=expediente_materia.materia).first() + numeracao = Numeracao.objects.filter( + materia=expediente_materia.materia).first() if numeracao: - dic_expediente_materia["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) + dic_expediente_materia["des_numeracao"] = ( + str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) autoria = materia.autoria_set.all() - dic_expediente_materia['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor' + dic_expediente_materia['num_autores'] = 'Autores' if len( + autoria) > 1 else 'Autor' if autoria: for a in autoria: if a.autor.nome: @@ -630,14 +664,19 @@ def get_sessao_plenaria(sessao, casa): materia=expediente_materia.materia).first() rp = expediente_materia.retiradapauta_set.filter( materia=expediente_materia.materia).first() + rl = expediente_materia.registroleitura_set.filter( + materia=expediente_materia.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') \ + resultado = _('Matéria não lida') \ if expediente_materia.tipo_votacao == 4 \ else _('Matéria não votada') resultado_observacao = _(' ') @@ -652,7 +691,7 @@ def get_sessao_plenaria(sessao, casa): # Lista dos votos nominais das matérias do Expediente lst_expediente_materia_vot_nom = [] - materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter(sessao_plenaria=sessao,tipo_votacao=2)\ + materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter(sessao_plenaria=sessao, tipo_votacao=2)\ .order_by('-materia') for mevn in materias_expediente_votacao_nominal: @@ -672,8 +711,10 @@ def get_sessao_plenaria(sessao, casa): # Lista dos oradores do Expediente lst_oradores_expediente = [] for orador_expediente in OradorExpediente.objects.filter(sessao_plenaria=sessao).order_by('numero_ordem'): - parlamentar = Parlamentar.objects.get(id=orador_expediente.parlamentar.id) - partido_sigla = Filiacao.objects.filter(parlamentar=parlamentar).first() + parlamentar = Parlamentar.objects.get( + id=orador_expediente.parlamentar.id) + partido_sigla = Filiacao.objects.filter( + parlamentar=parlamentar).first() lst_oradores_expediente.append({ "num_ordem": orador_expediente.numero_ordem, "nom_parlamentar": parlamentar.nome_parlamentar, @@ -709,7 +750,8 @@ def get_sessao_plenaria(sessao, casa): numeracao = materia.numeracao_set.first() if numeracao: - dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) + dic_votacao["des_numeracao"] = ( + str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) materia_em_tramitacao = materia.materiaemtramitacao_set.first() dic_votacao.update({ @@ -736,14 +778,19 @@ def get_sessao_plenaria(sessao, casa): materia=votacao.materia).first() rp = votacao.retiradapauta_set.filter( materia=votacao.materia).first() + rl = votacao.registroleitura_set.filter( + materia=votacao.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if \ + resultado = _('Matéria não lida') if \ votacao.tipo_votacao == 4 else _('Matéria não votada') resultado_observacao = _(' ') @@ -777,11 +824,14 @@ def get_sessao_plenaria(sessao, casa): # Lista dos oradores da Ordem do Dia lst_oradores_ordemdia = [] - oradores_ordem_dia = OradorOrdemDia.objects.filter(sessao_plenaria=sessao).order_by('numero_ordem') + oradores_ordem_dia = OradorOrdemDia.objects.filter( + sessao_plenaria=sessao).order_by('numero_ordem') for orador_ordemdia in oradores_ordem_dia: - parlamentar_orador = Parlamentar.objects.get(id=orador_ordemdia.parlamentar.id) - sigla_partido = Filiacao.objects.filter(parlamentar=parlamentar_orador).first() + parlamentar_orador = Parlamentar.objects.get( + id=orador_ordemdia.parlamentar.id) + sigla_partido = Filiacao.objects.filter( + parlamentar=parlamentar_orador).first() lst_oradores_ordemdia.append({ "num_ordem": orador_ordemdia.numero_ordem, @@ -794,17 +844,18 @@ def get_sessao_plenaria(sessao, casa): lst_oradores = [] for orador in Orador.objects.select_related('parlamentar').filter(sessao_plenaria=sessao).order_by('numero_ordem'): parlamentar = orador.parlamentar - partido_sigla = orador.parlamentar.filiacao_set.select_related('partido', 'parlamentar').first() + partido_sigla = orador.parlamentar.filiacao_set.select_related( + 'partido', 'parlamentar').first() lst_oradores.append({ "num_ordem": orador.numero_ordem, "nom_parlamentar": parlamentar.nome_parlamentar, + "observacao": orador.observacao, "sgl_partido": "" if not partido_sigla else partido_sigla.partido.sigla }) # Ocorrências da Sessão lst_ocorrencias = [] ocorrencias = OcorrenciaSessao.objects.filter(sessao_plenaria=sessao) - for o in ocorrencias: conteudo = o.conteudo @@ -821,11 +872,32 @@ def get_sessao_plenaria(sessao, casa): lst_ocorrencias.append(o) + # Ocorrências da Sessão + lst_consideracoes = [] + consideracoes = ConsideracoesFinais.objects.filter(sessao_plenaria=sessao) + + for c in consideracoes: + conteudo = c.conteudo + + # unescape HTML codes + # https://github.com/interlegis/sapl/issues/1046 + conteudo = re.sub('style=".*?"', '', conteudo) + conteudo = html.unescape(conteudo) + + # escape special character '&' + # https://github.com/interlegis/sapl/issues/1009 + conteudo = conteudo.replace('&', '&') + + c.conteudo = conteudo + + lst_consideracoes.append(c) + return (inf_basicas_dic, cont_mult_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, + lst_correspondencias, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, @@ -835,13 +907,15 @@ def get_sessao_plenaria(sessao, casa): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) + lst_ocorrencias, + lst_consideracoes) def get_turno(materia): descricao_turno = '' descricao_tramitacao = '' - tramitacoes = materia.tramitacao_set.order_by('-data_tramitacao', '-id').all() + tramitacoes = materia.tramitacao_set.order_by( + '-data_tramitacao', '-id').all() tramitacoes_turno = tramitacoes.exclude(turno="") if tramitacoes: @@ -850,7 +924,8 @@ def get_turno(materia): if t[0] == tramitacoes_turno.first().turno: descricao_turno = str(t[1]) break - descricao_tramitacao = tramitacoes.first().status.descricao if tramitacoes.first().status else 'Não informada' + descricao_tramitacao = tramitacoes.first( + ).status.descricao if tramitacoes.first().status else 'Não informada' return descricao_turno, descricao_tramitacao @@ -886,6 +961,7 @@ def relatorio_sessao_plenaria(request, pk): lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, + lst_correspondencias, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, @@ -895,7 +971,8 @@ def relatorio_sessao_plenaria(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) = get_sessao_plenaria(sessao, casa) + lst_ocorrencias, + lst_consideracoes) = get_sessao_plenaria(sessao, casa, request.user) for idx in range(len(lst_expedientes)): txt_expedientes = lst_expedientes[idx]['txt_expediente'] @@ -911,6 +988,7 @@ def relatorio_sessao_plenaria(request, pk): lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, + lst_correspondencias, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, @@ -920,7 +998,8 @@ def relatorio_sessao_plenaria(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) + lst_ocorrencias, + lst_consideracoes) response.write(pdf) return response @@ -936,10 +1015,10 @@ def get_protocolos(prots): ts = timezone.localtime(protocolo.timestamp) if protocolo.timestamp: dic['data'] = ts.strftime("%d/%m/%Y") + ' - Horário:' + \ - ts.strftime("%H:%m") + ts.strftime("%H:%m") else: dic['data'] = protocolo.data.strftime("%d/%m/%Y") + ' - Horário:' \ - + protocolo.hora.strftime("%H:%m") + + protocolo.hora.strftime("%H:%m") dic['txt_assunto'] = protocolo.assunto_ementa @@ -1030,7 +1109,7 @@ def relatorio_etiqueta_protocolo(request, nro, ano): protocolo = Protocolo.objects.filter(numero=nro, ano=ano) - m = MateriaLegislativa.objects.filter(numero_protocolo=nro,ano=ano) + m = MateriaLegislativa.objects.filter(numero_protocolo=nro, ano=ano) protocolo_data = get_etiqueta_protocolos(protocolo) @@ -1067,7 +1146,7 @@ def get_etiqueta_protocolos(prots): for materia in MateriaLegislativa.objects.filter( numero_protocolo=p.numero, ano=p.ano): dic['num_materia'] = materia.tipo.sigla + ' ' + \ - str(materia.numero) + '/' + str(materia.ano) + str(materia.numero) + '/' + str(materia.ano) dic['natureza'] = '' if p.tipo_processo == 0: @@ -1079,7 +1158,7 @@ def get_etiqueta_protocolos(prots): for documento in DocumentoAdministrativo.objects.filter( protocolo=p): dic['num_documento'] = documento.tipo.sigla + ' ' + \ - str(documento.numero) + '/' + str(documento.ano) + str(documento.numero) + '/' + str(documento.ano) dic['ident_processo'] = dic['num_materia'] or dic['num_documento'] @@ -1145,7 +1224,7 @@ def get_pauta_sessao(sessao, casa): dic_expediente_materia = {} dic_expediente_materia["tipo_materia"] = materia.tipo.sigla + \ - ' - ' + materia.tipo.descricao + ' - ' + materia.tipo.descricao dic_expediente_materia["num_ordem"] = str( expediente_materia.numero_ordem) dic_expediente_materia["id_materia"] = str( @@ -1189,7 +1268,7 @@ def get_pauta_sessao(sessao, casa): id=votacao.materia.id).first() dic_votacao = {} dic_votacao["tipo_materia"] = materia.tipo.sigla + \ - ' - ' + materia.tipo.descricao + ' - ' + materia.tipo.descricao dic_votacao["num_ordem"] = votacao.numero_ordem dic_votacao["id_materia"] = str( materia.numero) + "/" + str(materia.ano) @@ -1231,9 +1310,11 @@ def get_pauta_sessao(sessao, casa): # https://github.com/interlegis/sapl/issues/1046 conteudo = re.sub('style=".*?"', '', conteudo) conteudo = re.sub('class=".*?"', '', conteudo) - conteudo = re.sub('align=".*?"', '', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('align=".*?"', '', conteudo) conteudo = re.sub('', '

', conteudo) - conteudo = re.sub('', '
', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -1263,7 +1344,8 @@ def make_pdf(base_url, main_template, header_template, main_css='', header_css=' # Template of header html = HTML(base_url=base_url, string=header_template) - header = html.render(stylesheets=[CSS(string='@page {size:A4; margin:1cm;}')]) + header = html.render( + stylesheets=[CSS(string='@page {size:A4; margin:1cm;}')]) header_page = header.pages[0] header_body = get_page_body(header_page._page_box.all_children()) @@ -1289,24 +1371,29 @@ def resumo_ata_pdf(request, pk): context.update(get_identificacao_basica(sessao_plenaria)) context.update(get_mesa_diretora(sessao_plenaria)) context.update(get_presenca_sessao(sessao_plenaria)) + context.update(get_correspondencias(sessao_plenaria, request.user)) context.update(get_expedientes(sessao_plenaria)) context.update(get_materias_expediente(sessao_plenaria)) context.update(get_oradores_expediente(sessao_plenaria)) context.update(get_presenca_ordem_do_dia(sessao_plenaria)) context.update(get_materias_ordem_do_dia(sessao_plenaria)) context.update(get_oradores_ordemdia(sessao_plenaria)) - context.update(get_oradores_explicacoes_pessoais(sessao_plenaria)) context.update(get_ocorrencias_da_sessao(sessao_plenaria)) + context.update(get_consideracoes_finais(sessao_plenaria)) + context.update(get_oradores_explicacoes_pessoais(sessao_plenaria)) context.update(get_assinaturas(sessao_plenaria)) context.update({'object': sessao_plenaria}) context.update({'data': dt.today().strftime('%d/%m/%Y')}) context.update({'rodape': rodape}) - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} + header_context = {"casa": casa, + 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} html_template = render_to_string('relatorios/relatorio_ata.html', context) - html_header = render_to_string('relatorios/header_ata.html', header_context) + html_header = render_to_string( + 'relatorios/header_ata.html', header_context) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1324,12 +1411,15 @@ def cria_relatorio(request, context, html_string, header_info=""): context.update({'data': dt.today().strftime('%d/%m/%Y')}) context.update({'rodape': rodape}) - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL, 'info': header_info} + header_context = {"casa": casa, 'logotipo': casa.logotipo, + 'MEDIA_URL': MEDIA_URL, 'info': header_info} html_template = render_to_string(html_string, context) - html_header = render_to_string('relatorios/header_ata.html', header_context) + html_header = render_to_string( + 'relatorios/header_ata.html', header_context) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1409,7 +1499,7 @@ def relatorio_pauta_sessao_weasy(obj, request, context): return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html', info) -def relatorio_sessao_plenaria_pdf(request, pk): +def relatorio_sessao_plenaria_pdf(request, pk): base_url = request.build_absolute_uri() logger = logging.getLogger(__name__) username = request.user.username @@ -1434,6 +1524,7 @@ def relatorio_sessao_plenaria_pdf(request, pk): lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, + lst_correspondencias, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, @@ -1443,10 +1534,12 @@ def relatorio_sessao_plenaria_pdf(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) = get_sessao_plenaria(sessao, casa) + lst_ocorrencias, + lst_consideracoes) = get_sessao_plenaria(sessao, casa, request.user) dict_ord_template = { 'cont_mult': 'conteudo_multimidia.html', + 'correspondencia': 'correspondencias.html', 'exp': 'expedientes.html', 'id_basica': 'identificacao_basica.html', 'lista_p': 'lista_presenca_sessao.html', @@ -1459,28 +1552,31 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'oradores_exped': 'oradores_expediente.html', 'oradores_o_d': 'oradores_ordemdia.html', 'oradores_expli': 'oradores_explicacoes.html', - 'ocorr_sessao': 'ocorrencias_sessao.html' + 'ocorr_sessao': 'ocorrencias_da_sessao.html', + 'cons_finais': 'consideracoes_finais.html' } context = { - "inf_basicas_dic": inf_basicas_dic, - "cont_mult_dic": cont_mult_dic, - "lst_mesa": lst_mesa, - "lst_expediente_materia_vot_nom": lst_expediente_materia_vot_nom, - "lst_presenca_sessao": lst_presenca_sessao, - "lst_ausencia_sessao": lst_ausencia_sessao, - "lst_expedientes": lst_expedientes, - "lst_expediente_materia": lst_expediente_materia, - "lst_oradores_expediente": lst_oradores_expediente, - "lst_presenca_ordem_dia": lst_presenca_ordem_dia, - "lst_votacao": lst_votacao, - "lst_oradores_ordemdia": lst_oradores_ordemdia, - "lst_votacao_vot_nom": lst_votacao_vot_nom, - "lst_oradores": lst_oradores, - "lst_ocorrencias": lst_ocorrencias, - "rodape": rodape, - "data": dt.today().strftime('%d/%m/%Y') - } + "inf_basicas_dic": inf_basicas_dic, + "cont_mult_dic": cont_mult_dic, + "lst_mesa": lst_mesa, + "lst_expediente_materia_vot_nom": lst_expediente_materia_vot_nom, + "lst_presenca_sessao": lst_presenca_sessao, + "lst_ausencia_sessao": lst_ausencia_sessao, + "lst_correspondencias": lst_correspondencias, + "lst_expedientes": lst_expedientes, + "lst_expediente_materia": lst_expediente_materia, + "lst_oradores_expediente": lst_oradores_expediente, + "lst_presenca_ordem_dia": lst_presenca_ordem_dia, + "lst_votacao": lst_votacao, + "lst_oradores_ordemdia": lst_oradores_ordemdia, + "lst_votacao_vot_nom": lst_votacao_vot_nom, + "lst_oradores": lst_oradores, + "lst_ocorrencias": lst_ocorrencias, + "lst_consideracoes": lst_consideracoes, + "rodape": rodape, + "data": dt.today().strftime('%d/%m/%Y') + } ordenacao = ResumoOrdenacao.objects.get_or_create()[0] try: @@ -1498,7 +1594,9 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro], 'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo], 'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro], - 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto] + 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto], + 'decimo_quinto_ordenacao': dict_ord_template[ordenacao.decimo_quinto], + 'decimo_sexto_ordenacao': dict_ord_template[ordenacao.decimo_sexto] }) except KeyError as e: # self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " @@ -1508,19 +1606,22 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'segundo_ordenacao': 'conteudo_multimidia.html', 'terceiro_ordenacao': 'mesa_diretora.html', 'quarto_ordenacao': 'lista_presenca_sessao.html', - 'quinto_ordenacao': 'expedientes.html', - 'sexto_ordenacao': 'materias_expediente.html', - 'setimo_ordenacao': 'votos_nominais_expediente.html', - 'oitavo_ordenacao': 'oradores_expediente.html', - 'nono_ordenacao': 'lista_presenca_ordemdia.html', - 'decimo_ordenacao': 'materias_ordemdia.html', - 'decimo_primeiro_ordenacao': 'votos_nominais_ordemdia.html', - 'decimo_segundo_ordenacao': 'oradores_ordemdia.html', - 'decimo_terceiro_ordenacao': 'oradores_explicacoes.html', - 'decimo_quarto_ordenacao': 'ocorrencias_sessao.html' + 'quinto_ordenacao': 'correspondencias.html', + 'sexto_ordenacao': 'expedientes.html', + 'setimo_ordenacao': 'materias_expediente.html', + 'oitavo_ordenacao': 'votos_nominais_expediente.html', + 'nono_ordenacao': 'oradores_expediente.html', + 'decimo_ordenacao': 'lista_presenca_ordemdia.html', + 'decimo_primeiro_ordenacao': 'materias_ordemdia.html', + 'decimo_segundo_ordenacao': 'votos_nominais_ordemdia.html', + 'decimo_terceiro_ordenacao': 'oradores_ordemdia.html', + 'decimo_quarto_ordenacao': 'oradores_explicacoes.html', + 'decimo_quinto_ordenacao': 'ocorrencias_da_sessao.html', + 'decimo_sexto_ordenacao': 'consideracoes_finais.html' }) - html_template = render_to_string('relatorios/relatorio_sessao_plenaria.html', context) + html_template = render_to_string( + 'relatorios/relatorio_sessao_plenaria.html', context) info = "Resumo da {}ª Reunião {} \ da {}ª Sessão Legislativa da {} \ @@ -1535,7 +1636,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): "logotipo": casa.logotipo, "info": info}) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1548,32 +1650,35 @@ def relatorio_sessao_plenaria_pdf(request, pk): def gera_etiqueta_ml(materia_legislativa, base_url): confg = ConfigEtiquetaMateriaLegislativa.objects.first() - ml_info = unidecode.unidecode("{}/{}-{}".format(materia_legislativa.numero, - materia_legislativa.ano, - materia_legislativa.tipo.sigla)) + ml_info = unidecode.unidecode("{}/{}-{}".format(materia_legislativa.numero, + materia_legislativa.ano, + materia_legislativa.tipo.sigla)) base64_data = create_barcode(ml_info, 100, 500) barcode = 'data:image/png;base64,{0}'.format(base64_data) max_ementa_size = 240 ementa = materia_legislativa.ementa - ementa = ementa if len(ementa) < max_ementa_size else ementa[:max_ementa_size]+"..." + ementa = ementa if len( + ementa) < max_ementa_size else ementa[:max_ementa_size] + "..." context = { 'numero': materia_legislativa.numero, 'ano': materia_legislativa.ano, 'tipo': materia_legislativa.tipo, - 'data_apresentacao':materia_legislativa.data_apresentacao, + 'data_apresentacao': materia_legislativa.data_apresentacao, 'autores': materia_legislativa.autores.all(), - 'ementa':ementa, + 'ementa': ementa, 'largura': confg.largura, - 'altura':confg.largura, + 'altura': confg.largura, 'barcode': barcode } - main_template = render_to_string('relatorios/etiqueta_materia_legislativa.html', context) + main_template = render_to_string( + 'relatorios/etiqueta_materia_legislativa.html', context) html = HTML(base_url=base_url, string=main_template) - main_doc = html.render(stylesheets=[CSS(string="@page {{size: {}cm {}cm;}}".format(confg.largura,confg.altura))]) + main_doc = html.render(stylesheets=[CSS( + string="@page {{size: {}cm {}cm;}}".format(confg.largura, confg.altura))]) pdf_file = main_doc.write_pdf() return pdf_file @@ -1582,7 +1687,7 @@ def gera_etiqueta_ml(materia_legislativa, base_url): def etiqueta_materia_legislativa(request, pk): base_url = request.build_absolute_uri() materia_legislativa = MateriaLegislativa.objects.get(pk=pk) - + pdf_file = gera_etiqueta_ml(materia_legislativa, base_url) response = HttpResponse(content_type='application/pdf;') @@ -1590,4 +1695,4 @@ def etiqueta_materia_legislativa(request, pk): response['Content-Transfer-Encoding'] = 'binary' response.write(pdf_file) - return response \ No newline at end of file + return response diff --git a/sapl/rules/__init__.py b/sapl/rules/__init__.py index 780e64311..7984f6ef5 100644 --- a/sapl/rules/__init__.py +++ b/sapl/rules/__init__.py @@ -3,7 +3,37 @@ from django.utils.translation import ugettext_lazy as _ default_app_config = 'sapl.rules.apps.AppConfig' """ -Os cinco radicais de permissão completa são: +Todas as permissões do django framework seguem o padrão + + [app_label].[radical_de_permissao]_[model] + +ou seja, em sapl.norma.NormaJuridica, por exemplo, o django framework cria +três permissões registadas na classe Permission: + + definição uso + + - add_normajuridica norma.add_normajuridica + - change_normajuridica norma.change_normajuridica + - delete_normajuridica norma.delete_normajuridica + + - view_normajuridica norma.view_normajuridica + # o radical .view_ não existia no django quando a app rules foi criada + # e portanto não é utilizada + +No SAPL foram acrescidas em todos os models as duas regras abaixo, adicionadas +com o Signal post_migrate `create_proxy_permissions` +localizado em sapl.rules.apps.py. + + - list_normajuridica norma.list_normajuridica + - detail_normajuridica norma.detail_normajuridica + +Tanto o Crud implementado em sapl.crud.base.py quanto o Signal post_migrate +`update_groups` que é responsável por ler o mapa do +arquivo (sapl.rules.map_rules.py) e criar os grupos definidos na regra de +negócio trabalham com os cinco radiais de permissão +e com qualquer outro tipo de permissão customizada, nesta ordem de precedência. + +Os cinco radicais de permissão são, portanto: RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE =\ '.list_', '.detail_', '.add_', '.change_', '.delete_', @@ -12,13 +42,21 @@ Tanto a app crud quanto a app rules estão sempre ligadas a um model. Ao lidar com permissões, sempre é analisado se é apenas um radical ou permissão completa, sendo apenas um radical, a permissão completa é montada com base no model associado. + +NESTE ARQUIVO ESTÃO DEFINIDOS OS RADICAIS E OS GRUPOS DEFAULT DO SAPL + """ -RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE =\ +RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE = \ '.list_', '.detail_', '.add_', '.change_', '.delete_', +__base__ = [RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE] +__listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE] + +__perms_publicas__ = {RP_LIST, RP_DETAIL} SAPL_GROUP_ADMINISTRATIVO = _("Operador Administrativo") +SAPL_GROUP_AUDIENCIA = _("Operador de Audiência") SAPL_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo") SAPL_GROUP_COMISSOES = _("Operador de Comissões") SAPL_GROUP_MATERIA = _("Operador de Matéria") diff --git a/sapl/rules/group_administrativo.py b/sapl/rules/group_administrativo.py new file mode 100644 index 000000000..7e4577b74 --- /dev/null +++ b/sapl/rules/group_administrativo.py @@ -0,0 +1,17 @@ + +from sapl.materia import models as materia +from sapl.protocoloadm import models as protocoloadm +from sapl.rules import SAPL_GROUP_ADMINISTRATIVO, __base__, __perms_publicas__ + +rules_group_administrativo = { + 'group': SAPL_GROUP_ADMINISTRATIVO, + 'rules': [ + (materia.MateriaLegislativa, [ + 'can_access_impressos'], __perms_publicas__), + (protocoloadm.DocumentoAdministrativo, __base__, set()), + (protocoloadm.Anexado, __base__, set()), + (protocoloadm.DocumentoAcessorioAdministrativo, __base__, set()), + (protocoloadm.TramitacaoAdministrativo, __base__, set()), + (protocoloadm.VinculoDocAdminMateria, __base__, set()) + ] +} diff --git a/sapl/rules/group_anonymous.py b/sapl/rules/group_anonymous.py new file mode 100644 index 000000000..47c7a14be --- /dev/null +++ b/sapl/rules/group_anonymous.py @@ -0,0 +1,14 @@ + +from sapl.materia import models as materia +from sapl.protocoloadm import models as protocoloadm +from sapl.rules import SAPL_GROUP_ANONYMOUS, RP_ADD, RP_DELETE + +# não possui efeito e é usada nos testes que verificam se todos os models estão +# neste arquivo rules.py +rules_group_anonymous = { + 'group': SAPL_GROUP_ANONYMOUS, + 'rules': [ + (materia.AcompanhamentoMateria, [RP_ADD, RP_DELETE], set()), + (protocoloadm.AcompanhamentoDocumento, [RP_ADD, RP_DELETE], set()), + ] +} diff --git a/sapl/rules/group_audiencia.py b/sapl/rules/group_audiencia.py new file mode 100644 index 000000000..870dc05c7 --- /dev/null +++ b/sapl/rules/group_audiencia.py @@ -0,0 +1,10 @@ +from sapl.audiencia import models as audiencia +from sapl.rules import SAPL_GROUP_AUDIENCIA, __base__, __perms_publicas__ +rules_group_audiencia = { + 'group': SAPL_GROUP_AUDIENCIA, + 'rules': [ + (audiencia.AudienciaPublica, __base__, __perms_publicas__), + (audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), + (audiencia.AnexoAudienciaPublica, __base__, __perms_publicas__), + ] +} diff --git a/sapl/rules/group_autor.py b/sapl/rules/group_autor.py new file mode 100644 index 000000000..a555074a2 --- /dev/null +++ b/sapl/rules/group_autor.py @@ -0,0 +1,13 @@ +from sapl.compilacao import models as compilacao +from sapl.materia import models as materia +from sapl.rules import SAPL_GROUP_AUTOR, __base__, __perms_publicas__ +rules_group_autor = { + 'group': SAPL_GROUP_AUTOR, + 'rules': [ + (materia.Proposicao, __base__, set()), + (materia.HistoricoProposicao, __base__, set()), + (compilacao.Dispositivo, __base__ + [ + 'change_your_dispositivo_edicao_dinamica', + ], __perms_publicas__) + ] +} diff --git a/sapl/rules/group_comissoes.py b/sapl/rules/group_comissoes.py new file mode 100644 index 000000000..980cbd0eb --- /dev/null +++ b/sapl/rules/group_comissoes.py @@ -0,0 +1,16 @@ + +from sapl.comissoes import models as comissoes +from sapl.materia import models as materia +from sapl.rules import SAPL_GROUP_COMISSOES, __base__, __perms_publicas__ +rules_group_comissoes = { + 'group': SAPL_GROUP_COMISSOES, + 'rules': [ + (materia.PautaReuniao, __base__, __perms_publicas__), + (comissoes.Comissao, __base__, __perms_publicas__), + (comissoes.Composicao, __base__, __perms_publicas__), + (comissoes.Participacao, __base__, __perms_publicas__), + (materia.Relatoria, __base__, __perms_publicas__), + (comissoes.Reuniao, __base__, __perms_publicas__), + (comissoes.DocumentoAcessorio, __base__, __perms_publicas__), + ] +} diff --git a/sapl/rules/group_geral.py b/sapl/rules/group_geral.py new file mode 100644 index 000000000..59d78cc48 --- /dev/null +++ b/sapl/rules/group_geral.py @@ -0,0 +1,117 @@ +from sapl.audiencia import models as audiencia +from sapl.base import models as base +from sapl.comissoes import models as comissoes +from sapl.compilacao import models as compilacao +from sapl.lexml import models as lexml +from sapl.materia import models as materia +from sapl.norma import models as norma +from sapl.parlamentares import models as parlamentares +from sapl.protocoloadm import models as protocoloadm +from sapl.rules import SAPL_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \ + __listdetailchange__ +from sapl.sessao import models as sessao + +rules_group_geral = { + 'group': SAPL_GROUP_GERAL, + 'rules': [ + (base.AppConfig, __base__ + [ + 'menu_sistemas', + 'view_tabelas_auxiliares' + ], set()), + + (base.CasaLegislativa, __listdetailchange__ + + [RP_ADD], __perms_publicas__), + (base.TipoAutor, __base__, __perms_publicas__), + (base.Autor, __base__, __perms_publicas__), + (base.OperadorAutor, __base__, __perms_publicas__), + (base.AuditLog, __base__, set()), + + (protocoloadm.StatusTramitacaoAdministrativo, __base__, set()), + (protocoloadm.TipoDocumentoAdministrativo, __base__, set()), + + (comissoes.CargoComissao, __base__, __perms_publicas__), + (comissoes.TipoComissao, __base__, __perms_publicas__), + (comissoes.Periodo, __base__, __perms_publicas__), + + (materia.AssuntoMateria, __base__, + __perms_publicas__), + (materia.MateriaAssunto, __base__, + __perms_publicas__), + (materia.MateriaLegislativa, [ + 'can_access_impressos'], __perms_publicas__), + (materia.TipoProposicao, __base__, __perms_publicas__), + (materia.TipoMateriaLegislativa, __base__, __perms_publicas__), + (materia.RegimeTramitacao, __base__, __perms_publicas__), + (materia.Origem, __base__, __perms_publicas__), + (materia.TipoDocumento, __base__, __perms_publicas__), + (materia.Orgao, __base__, __perms_publicas__), + (materia.TipoFimRelatoria, __base__, __perms_publicas__), + (materia.Parecer, __base__, __perms_publicas__), + (materia.StatusTramitacao, __base__, __perms_publicas__), + (materia.UnidadeTramitacao, __base__, __perms_publicas__), + (materia.ConfigEtiquetaMateriaLegislativa, __base__, set()), + + (norma.AssuntoNorma, __base__, __perms_publicas__), + (norma.TipoNormaJuridica, __base__, __perms_publicas__), + (norma.TipoVinculoNormaJuridica, __base__, __perms_publicas__), + (norma.NormaEstatisticas, __base__, __perms_publicas__), + + (parlamentares.Legislatura, __base__, __perms_publicas__), + (parlamentares.SessaoLegislativa, __base__, __perms_publicas__), + (parlamentares.Coligacao, __base__, __perms_publicas__), + (parlamentares.ComposicaoColigacao, __base__, __perms_publicas__), + (parlamentares.Partido, __base__, __perms_publicas__), + (parlamentares.NivelInstrucao, __base__, __perms_publicas__), + (parlamentares.MesaDiretora, __base__, __perms_publicas__), + (parlamentares.SituacaoMilitar, __base__, __perms_publicas__), + (parlamentares.Parlamentar, __base__, __perms_publicas__), + (parlamentares.TipoDependente, __base__, __perms_publicas__), + (parlamentares.Dependente, __base__, __perms_publicas__), + (parlamentares.Filiacao, __base__, __perms_publicas__), + (parlamentares.TipoAfastamento, __base__, __perms_publicas__), + (parlamentares.Mandato, __base__, __perms_publicas__), + (parlamentares.CargoMesa, __base__, __perms_publicas__), + (parlamentares.ComposicaoMesa, __base__, __perms_publicas__), + (parlamentares.Frente, __base__, __perms_publicas__), + (parlamentares.FrenteCargo, __base__, __perms_publicas__), + (parlamentares.FrenteParlamentar, __base__, __perms_publicas__), + (parlamentares.Votante, __base__, __perms_publicas__), + (parlamentares.Bloco, __base__, __perms_publicas__), + (parlamentares.BlocoCargo, __base__, __perms_publicas__), + (parlamentares.BlocoMembro, __base__, __perms_publicas__), + + (sessao.CargoBancada, __base__, __perms_publicas__), + (sessao.Bancada, __base__, __perms_publicas__), + (sessao.TipoSessaoPlenaria, __base__, __perms_publicas__), + (sessao.TipoResultadoVotacao, __base__, __perms_publicas__), + (sessao.TipoExpediente, __base__, __perms_publicas__), + (sessao.TipoJustificativa, __base__, __perms_publicas__), + (sessao.JustificativaAusencia, __base__, __perms_publicas__), + (sessao.ResumoOrdenacao, __base__, __perms_publicas__), + (sessao.TipoRetiradaPauta, __base__, __perms_publicas__), + + (lexml.LexmlProvedor, __base__, set()), + (lexml.LexmlPublicador, __base__, set()), + + (compilacao.VeiculoPublicacao, __base__, __perms_publicas__), + (compilacao.TipoTextoArticulado, __base__, __perms_publicas__), + (compilacao.TipoNota, __base__, __perms_publicas__), + (compilacao.TipoVide, __base__, __perms_publicas__), + (compilacao.TipoPublicacao, __base__, __perms_publicas__), + + # este model é um espelho do model integrado e sua edição pode + # confundir Autores, operadores de matéria e/ou norma. + # Por isso está adicionado apenas para o operador geral + (compilacao.TextoArticulado, + __base__ + ['lock_unlock_textoarticulado'], set()), + + # estes tres models são complexos e a principio apenas o admin tem perm + (compilacao.TipoDispositivo, [], set()), + (compilacao.TipoDispositivoRelationship, [], set()), + (compilacao.PerfilEstruturalTextoArticulado, [], set()), + + (audiencia.AudienciaPublica, __base__, __perms_publicas__), + (audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), + + ] +} diff --git a/sapl/rules/group_materia.py b/sapl/rules/group_materia.py new file mode 100644 index 000000000..c5e855a82 --- /dev/null +++ b/sapl/rules/group_materia.py @@ -0,0 +1,36 @@ + +from sapl.compilacao import models as compilacao +from sapl.materia import models as materia +from sapl.norma import models as norma +from sapl.rules import SAPL_GROUP_MATERIA, __base__, __perms_publicas__ + +rules_group_materia = { + 'group': SAPL_GROUP_MATERIA, + 'rules': [ + (materia.Anexada, __base__, __perms_publicas__), + (materia.Autoria, __base__, __perms_publicas__), + (materia.DespachoInicial, __base__, __perms_publicas__), + (materia.DocumentoAcessorio, __base__, __perms_publicas__), + (materia.MateriaAssunto, __base__, __perms_publicas__), + (materia.AssuntoMateria, __base__, __perms_publicas__), + + (materia.MateriaLegislativa, __base__ + + ['can_access_impressos'], __perms_publicas__), + (materia.Numeracao, __base__, __perms_publicas__), + (materia.Tramitacao, __base__, __perms_publicas__), + (materia.MateriaEmTramitacao, __base__, __perms_publicas__), + (norma.LegislacaoCitada, __base__, __perms_publicas__), + (norma.AutoriaNorma, __base__, __perms_publicas__), + (compilacao.Dispositivo, __base__ + [ + 'change_dispositivo_edicao_dinamica', + + # TODO: adicionar 'change_dispositivo_registros_compilacao' + # quando testes forem feitos para permtir que matérias possam + # ser vinculadas a outras matérias via registro de compilação. + # Normalmente emendas e/ou projetos substitutivos podem alterar + # uma matéria original. + # Fazer esse registro de compilação ofereceria + # um autografo eletrônico pronto para ser convertido em Norma. + ], __perms_publicas__) + ] +} diff --git a/sapl/rules/group_norma.py b/sapl/rules/group_norma.py new file mode 100644 index 000000000..13a201fd0 --- /dev/null +++ b/sapl/rules/group_norma.py @@ -0,0 +1,28 @@ +from sapl.compilacao import models as compilacao +from sapl.norma import models as norma +from sapl.rules import SAPL_GROUP_NORMA, __base__, __perms_publicas__ + +rules_group_norma = { + 'group': SAPL_GROUP_NORMA, + 'rules': [ + (norma.NormaJuridica, __base__, __perms_publicas__), + (norma.NormaRelacionada, __base__, __perms_publicas__), + (norma.AnexoNormaJuridica, __base__, __perms_publicas__), + (norma.AutoriaNorma, __base__, __perms_publicas__), + (norma.NormaEstatisticas, __base__, __perms_publicas__), + + # Publicacao está com permissão apenas para norma e não para matéria + # e proposições apenas por análise do contexto, não é uma limitação + # da ferramenta. + (compilacao.Publicacao, __base__, __perms_publicas__), + (compilacao.Vide, __base__, __perms_publicas__), + (compilacao.Nota, __base__, __perms_publicas__), + (compilacao.Dispositivo, __base__ + [ + 'view_dispositivo_notificacoes', + 'change_dispositivo_edicao_dinamica', + 'change_dispositivo_edicao_avancada', + 'change_dispositivo_registros_compilacao', + 'change_dispositivo_de_vigencia_global' + ], __perms_publicas__) + ] +} diff --git a/sapl/rules/group_painel.py b/sapl/rules/group_painel.py new file mode 100644 index 000000000..4e2504a86 --- /dev/null +++ b/sapl/rules/group_painel.py @@ -0,0 +1,10 @@ +from sapl.painel import models as painel +from sapl.rules import SAPL_GROUP_PAINEL, __base__, __perms_publicas__ + +rules_group_painel = { + 'group': SAPL_GROUP_PAINEL, + 'rules': [ + (painel.Painel, __base__, __perms_publicas__), + (painel.Cronometro, __base__, __perms_publicas__), + ] +} diff --git a/sapl/rules/group_protocolo.py b/sapl/rules/group_protocolo.py new file mode 100644 index 000000000..de23e5de7 --- /dev/null +++ b/sapl/rules/group_protocolo.py @@ -0,0 +1,26 @@ +from sapl.compilacao import models as compilacao +from sapl.materia import models as materia +from sapl.protocoloadm import models as protocoloadm +from sapl.rules import SAPL_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \ + __perms_publicas__ + +rules_group_protocolo = { + 'group': SAPL_GROUP_PROTOCOLO, + 'rules': [ + (protocoloadm.Protocolo, __base__ + ['action_anular_protocolo'], set()), + (protocoloadm.DocumentoAdministrativo, [RP_ADD] + __listdetailchange__, set()), + (protocoloadm.DocumentoAcessorioAdministrativo, __listdetailchange__, set()), + + (materia.MateriaLegislativa, __listdetailchange__, __perms_publicas__), + (materia.MateriaLegislativa, ['can_access_impressos'], __perms_publicas__), + (materia.DocumentoAcessorio, __listdetailchange__, __perms_publicas__), + (materia.Anexada, __base__, __perms_publicas__), + (materia.Autoria, __base__, __perms_publicas__), + + (materia.Proposicao, ['detail_proposicao_enviada', + 'detail_proposicao_devolvida', + 'detail_proposicao_incorporada'], set()), # TODO: tratar em sapl.api questão de que proposições incorporadas serem públicas + (materia.HistoricoProposicao, __base__, set()), + (compilacao.TextoArticulado, ['view_restricted_textoarticulado'], __perms_publicas__) + ] +} diff --git a/sapl/rules/group_sessao.py b/sapl/rules/group_sessao.py new file mode 100644 index 000000000..5bc217f05 --- /dev/null +++ b/sapl/rules/group_sessao.py @@ -0,0 +1,27 @@ + +from sapl.rules import SAPL_GROUP_SESSAO, __perms_publicas__, __base__ +from sapl.sessao import models as sessao + +rules_group_sessao = { + 'group': SAPL_GROUP_SESSAO, + 'rules': [ + (sessao.SessaoPlenaria, __base__, __perms_publicas__), + (sessao.SessaoPlenariaPresenca, __base__, __perms_publicas__), + (sessao.ExpedienteMateria, __base__, __perms_publicas__), + (sessao.OcorrenciaSessao, __base__, __perms_publicas__), + (sessao.IntegranteMesa, __base__, __perms_publicas__), + (sessao.ExpedienteSessao, __base__, __perms_publicas__), + (sessao.Orador, __base__, __perms_publicas__), + (sessao.OradorExpediente, __base__, __perms_publicas__), + (sessao.OradorOrdemDia, __base__, __perms_publicas__), + (sessao.OrdemDia, __base__, __perms_publicas__), + (sessao.PresencaOrdemDia, __base__, __perms_publicas__), + (sessao.RegistroVotacao, __base__, __perms_publicas__), + (sessao.VotoParlamentar, __base__, __perms_publicas__), + (sessao.JustificativaAusencia, __base__, __perms_publicas__), + (sessao.RetiradaPauta, __base__, __perms_publicas__), + (sessao.RegistroLeitura, __base__, __perms_publicas__), + (sessao.ConsideracoesFinais, __base__, __perms_publicas__), + (sessao.Correspondencia, __base__, __perms_publicas__) + ] +} diff --git a/sapl/rules/group_votante.py b/sapl/rules/group_votante.py new file mode 100644 index 000000000..430c1ea29 --- /dev/null +++ b/sapl/rules/group_votante.py @@ -0,0 +1,10 @@ + +from sapl.parlamentares import models as parlamentares +from sapl.rules import SAPL_GROUP_VOTANTE + +rules_group_votante = { + 'group': SAPL_GROUP_VOTANTE, + 'rules': [ + (parlamentares.Votante, ['can_vote'], set()) + ] +} diff --git a/sapl/rules/map_rules.py b/sapl/rules/map_rules.py index e4aa467dc..fb59e1e36 100644 --- a/sapl/rules/map_rules.py +++ b/sapl/rules/map_rules.py @@ -1,347 +1,74 @@ -""" -Todas as permissões do django framework seguem o padrão - - [app_label].[radical_de_permissao]_[model] - -ou seja, em sapl.norma.NormaJuridica, por exemplo, o django framework cria -três permissões registadas na classe Permission: - - definição uso - - - add_normajuridica norma.add_normajuridica - - change_normajuridica norma.change_normajuridica - - delete_normajuridica norma.delete_normajuridica - -No SAPL foram acrescidas em todos os models as duas regras abaixo, adicionadas -com o Signal post_migrate `create_proxy_permissions` -localizado em sapl.rules.apps.py. - - - list_normajuridica norma.list_normajuridica - - detail_normajuridica norma.detail_normajuridica - -Tanto o Crud implementado em sapl.crud.base.py quanto o Signal post_migrate -`update_groups` que é responsável por ler o mapa deste -arquivo (sapl.rules.map_rules.py) e criar os grupos definidos na regra de -negócio trabalham com os cinco radiais de permissão -e com qualquer outro tipo de permissão customizada, nesta ordem de precedência. - -""" -from sapl.audiencia import models as audiencia -from sapl.base import models as base -from sapl.comissoes import models as comissoes -from sapl.compilacao import models as compilacao -from sapl.lexml import models as lexml -from sapl.materia import models as materia -from sapl.norma import models as norma -from sapl.painel import models as painel -from sapl.parlamentares import models as parlamentares -from sapl.protocoloadm import models as protocoloadm -from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST, - SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_ANONYMOUS, - SAPL_GROUP_AUTOR, SAPL_GROUP_COMISSOES, - SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL, - SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA, - SAPL_GROUP_PAINEL, - SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO, - SAPL_GROUP_VOTANTE) -from sapl.sessao import models as sessao - +from sapl.rules import SAPL_GROUP_LOGIN_SOCIAL +from sapl.rules.group_administrativo import rules_group_administrativo +from sapl.rules.group_anonymous import rules_group_anonymous +from sapl.rules.group_audiencia import rules_group_audiencia +from sapl.rules.group_autor import rules_group_autor +from sapl.rules.group_comissoes import rules_group_comissoes +from sapl.rules.group_geral import rules_group_geral +from sapl.rules.group_materia import rules_group_materia +from sapl.rules.group_norma import rules_group_norma +from sapl.rules.group_painel import rules_group_painel +from sapl.rules.group_protocolo import rules_group_protocolo +from sapl.rules.group_sessao import rules_group_sessao +from sapl.rules.group_votante import rules_group_votante -__base__ = [RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE] -__listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE] - -__perms_publicas__ = {RP_LIST, RP_DETAIL} - - -rules_group_administrativo = { - 'group': SAPL_GROUP_ADMINISTRATIVO, - 'rules': [ - (materia.MateriaLegislativa, [ - 'can_access_impressos'], __perms_publicas__), - # TODO: tratar em sapl.api a questão de ostencivo e restritivo - (protocoloadm.DocumentoAdministrativo, __base__, set()), - (protocoloadm.Anexado, __base__, set()), - (protocoloadm.DocumentoAcessorioAdministrativo, __base__, set()), - (protocoloadm.TramitacaoAdministrativo, __base__, set()), - ] -} - -rules_group_audiencia = { - 'group': SAPL_GROUP_GERAL, - 'rules': [ - (audiencia.AudienciaPublica, __base__, __perms_publicas__), - (audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), - (audiencia.AnexoAudienciaPublica, __base__, __perms_publicas__), - ] -} - - -rules_group_protocolo = { - 'group': SAPL_GROUP_PROTOCOLO, - 'rules': [ - (protocoloadm.Protocolo, __base__ + [ - 'action_anular_protocolo'], set()), - (protocoloadm.DocumentoAdministrativo, - [RP_ADD] + __listdetailchange__, set()), - (protocoloadm.DocumentoAcessorioAdministrativo, __listdetailchange__, set()), - - (materia.MateriaLegislativa, __listdetailchange__, __perms_publicas__), - (materia.MateriaLegislativa, [ - 'can_access_impressos'], __perms_publicas__), - (materia.DocumentoAcessorio, __listdetailchange__, __perms_publicas__), - (materia.Anexada, __base__, __perms_publicas__), - (materia.Autoria, __base__, __perms_publicas__), - - (materia.Proposicao, ['detail_proposicao_enviada', - 'detail_proposicao_devolvida', - 'detail_proposicao_incorporada'], set()), # TODO: tratar em sapl.api questão de que proposições incorporadas serem públicas - (materia.HistoricoProposicao, __base__, set()), - (compilacao.TextoArticulado, [ - 'view_restricted_textoarticulado'], __perms_publicas__) - ] -} - -rules_group_comissoes = { - 'group': SAPL_GROUP_COMISSOES, - 'rules': [ - (materia.PautaReuniao, __base__, __perms_publicas__), - (comissoes.Comissao, __base__, __perms_publicas__), - (comissoes.Composicao, __base__, __perms_publicas__), - (comissoes.Participacao, __base__, __perms_publicas__), - (materia.Relatoria, __base__, __perms_publicas__), - (comissoes.Reuniao, __base__, __perms_publicas__), - (comissoes.DocumentoAcessorio, __base__, __perms_publicas__), - ] -} - -rules_group_materia = { - 'group': SAPL_GROUP_MATERIA, - 'rules': [ - (materia.Anexada, __base__, __perms_publicas__), - (materia.Autoria, __base__, __perms_publicas__), - (materia.DespachoInicial, __base__, __perms_publicas__), - (materia.DocumentoAcessorio, __base__, __perms_publicas__), - (materia.MateriaAssunto, __base__, __perms_publicas__), - (materia.AssuntoMateria, __base__, __perms_publicas__), - - (materia.MateriaLegislativa, __base__ + - ['can_access_impressos'], __perms_publicas__), - (materia.Numeracao, __base__, __perms_publicas__), - (materia.Tramitacao, __base__, __perms_publicas__), - (materia.MateriaEmTramitacao, __base__, __perms_publicas__), - (norma.LegislacaoCitada, __base__, __perms_publicas__), - (norma.AutoriaNorma, __base__, __perms_publicas__), - (compilacao.Dispositivo, __base__ + [ - 'change_dispositivo_edicao_dinamica', - - # TODO: adicionar 'change_dispositivo_registros_compilacao' - # quando testes forem feitos para permtir que matérias possam - # ser vinculadas a outras matérias via registro de compilação. - # Normalmente emendas e/ou projetos substitutivos podem alterar - # uma matéria original. - # Fazer esse registro de compilação ofereceria - # um autografo eletrônico pronto para ser convertido em Norma. - ], __perms_publicas__) - ] +rules_group_login_social = { + 'group': SAPL_GROUP_LOGIN_SOCIAL, + 'rules': [] } +""" +ESTRUTURA DAS RULES DEFINIDAS NOS ARQUIVOS GROUP_[DEFINICAO].PY -rules_group_norma = { - 'group': SAPL_GROUP_NORMA, - 'rules': [ - (norma.NormaJuridica, __base__, __perms_publicas__), - (norma.NormaRelacionada, __base__, __perms_publicas__), - (norma.AnexoNormaJuridica, __base__, __perms_publicas__), - (norma.AutoriaNorma, __base__, __perms_publicas__), - (norma.NormaEstatisticas, __base__, __perms_publicas__), - - # Publicacao está com permissão apenas para norma e não para matéria - # e proposições apenas por análise do contexto, não é uma limitação - # da ferramenta. - (compilacao.Publicacao, __base__, __perms_publicas__), - (compilacao.Vide, __base__, __perms_publicas__), - (compilacao.Nota, __base__, __perms_publicas__), - (compilacao.Dispositivo, __base__ + [ - 'view_dispositivo_notificacoes', - 'change_dispositivo_edicao_dinamica', - 'change_dispositivo_edicao_avancada', - 'change_dispositivo_registros_compilacao', - 'change_dispositivo_de_vigencia_global' - ], __perms_publicas__) - ] -} +todos as rules de groups são um dicionario com duas chaves: 'group' e 'rules' -rules_group_sessao = { - 'group': SAPL_GROUP_SESSAO, - 'rules': [ - (sessao.SessaoPlenaria, __base__, __perms_publicas__), - (sessao.SessaoPlenariaPresenca, __base__, __perms_publicas__), - (sessao.ExpedienteMateria, __base__, __perms_publicas__), - (sessao.OcorrenciaSessao, __base__, __perms_publicas__), - (sessao.IntegranteMesa, __base__, __perms_publicas__), - (sessao.ExpedienteSessao, __base__, __perms_publicas__), - (sessao.Orador, __base__, __perms_publicas__), - (sessao.OradorExpediente, __base__, __perms_publicas__), - (sessao.OradorOrdemDia, __base__, __perms_publicas__), - (sessao.OrdemDia, __base__, __perms_publicas__), - (sessao.PresencaOrdemDia, __base__, __perms_publicas__), - (sessao.RegistroVotacao, __base__, __perms_publicas__), - (sessao.VotoParlamentar, __base__, __perms_publicas__), - (sessao.JustificativaAusencia, __base__, __perms_publicas__), - (sessao.RetiradaPauta, __base__, __perms_publicas__), - (sessao.RegistroLeitura, __base__, __perms_publicas__), - ] -} +'group' precisa ser um dos grupos definidos em sapl.rules.__init__.py -rules_group_painel = { - 'group': SAPL_GROUP_PAINEL, - 'rules': [ - (painel.Painel, __base__, __perms_publicas__), - (painel.Cronometro, __base__, __perms_publicas__), - ] -} +'rules' é uma lista de tuplas de três posições, onde + 0 - de que model se trata + 1 - list - quais permissões possui um usuário ligado ao grupo para o model da posição 0 + - também indica ao CRUD que sua subclasse ligada a um radical precisa exigir credencial + 2 - set - indica a API quais permissões são públicas, ou seja, + se está no set é um o acesso ao endpoint é público -rules_group_autor = { - 'group': SAPL_GROUP_AUTOR, - 'rules': [ - (materia.Proposicao, __base__, set()), - (materia.HistoricoProposicao, __base__, set()), - (compilacao.Dispositivo, __base__ + [ - 'change_your_dispositivo_edicao_dinamica', - ], __perms_publicas__) - ] -} +exemplo: -rules_group_votante = { - 'group': SAPL_GROUP_VOTANTE, +rules_group_exemplo = { + 'group': SAPL_GROUP_EXEMPLO, 'rules': [ - (parlamentares.Votante, ['can_vote'], set()) + ( + model_exemplo1, + ( RP_LIST, RP_DETAIL ), + set() + ), + ( + model_exemplo2, + (RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE), + {RP_LIST, RP_DETAIL} + ), ] } -rules_group_geral = { - 'group': SAPL_GROUP_GERAL, - 'rules': [ - (base.AppConfig, __base__ + [ - 'menu_sistemas', - 'view_tabelas_auxiliares' - ], set()), - - (base.CasaLegislativa, __listdetailchange__ + - [RP_ADD], __perms_publicas__), - (base.TipoAutor, __base__, __perms_publicas__), - (base.Autor, __base__, __perms_publicas__), - (base.OperadorAutor, __base__, __perms_publicas__), - (base.AuditLog, __base__, set()), - - (protocoloadm.StatusTramitacaoAdministrativo, __base__, set()), - (protocoloadm.TipoDocumentoAdministrativo, __base__, set()), - - (comissoes.CargoComissao, __base__, __perms_publicas__), - (comissoes.TipoComissao, __base__, __perms_publicas__), - (comissoes.Periodo, __base__, __perms_publicas__), - - (materia.AssuntoMateria, __base__, - __perms_publicas__), # não há implementação - (materia.MateriaAssunto, __base__, - __perms_publicas__), # não há implementação - (materia.MateriaLegislativa, [ - 'can_access_impressos'], __perms_publicas__), - (materia.TipoProposicao, __base__, __perms_publicas__), - (materia.TipoMateriaLegislativa, __base__, __perms_publicas__), - (materia.RegimeTramitacao, __base__, __perms_publicas__), - (materia.Origem, __base__, __perms_publicas__), - (materia.TipoDocumento, __base__, __perms_publicas__), - (materia.Orgao, __base__, __perms_publicas__), - (materia.TipoFimRelatoria, __base__, __perms_publicas__), - (materia.Parecer, __base__, __perms_publicas__), - (materia.StatusTramitacao, __base__, __perms_publicas__), - (materia.UnidadeTramitacao, __base__, __perms_publicas__), - (materia.ConfigEtiquetaMateriaLegislativa, __base__, set()), - - - (norma.AssuntoNorma, __base__, __perms_publicas__), - (norma.TipoNormaJuridica, __base__, __perms_publicas__), - (norma.TipoVinculoNormaJuridica, __base__, __perms_publicas__), - (norma.NormaEstatisticas, __base__, __perms_publicas__), +rules_group_exemplo['rules'][0] + 1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO + só podem acessar o que está em rules_group_exemplo['rules'][0][1], ou seja, + listar e ver os detalhes de model_exemplo1 - (parlamentares.Legislatura, __base__, __perms_publicas__), - (parlamentares.SessaoLegislativa, __base__, __perms_publicas__), - (parlamentares.Coligacao, __base__, __perms_publicas__), - (parlamentares.ComposicaoColigacao, __base__, __perms_publicas__), - (parlamentares.Partido, __base__, __perms_publicas__), - (parlamentares.NivelInstrucao, __base__, __perms_publicas__), - (parlamentares.SituacaoMilitar, __base__, __perms_publicas__), - (parlamentares.Parlamentar, __base__, __perms_publicas__), - (parlamentares.TipoDependente, __base__, __perms_publicas__), - (parlamentares.Dependente, __base__, __perms_publicas__), - (parlamentares.Filiacao, __base__, __perms_publicas__), - (parlamentares.TipoAfastamento, __base__, __perms_publicas__), - (parlamentares.Mandato, __base__, __perms_publicas__), - (parlamentares.CargoMesa, __base__, __perms_publicas__), - (parlamentares.ComposicaoMesa, __base__, __perms_publicas__), - (parlamentares.Frente, __base__, __perms_publicas__), - (parlamentares.FrenteCargo, __base__, __perms_publicas__), - (parlamentares.FrenteParlamentar, __base__, __perms_publicas__), - (parlamentares.Votante, __base__, __perms_publicas__), - (parlamentares.Bloco, __base__, __perms_publicas__), - (parlamentares.BlocoCargo, __base__, __perms_publicas__), - (parlamentares.BlocoMembro, __base__, __perms_publicas__), + 1 significa também que o crud exigirá tais credenciais no listview e detailview + 2 set() diz que, na API, não existe acesso anônimo - (sessao.CargoBancada, __base__, __perms_publicas__), - (sessao.Bancada, __base__, __perms_publicas__), - (sessao.TipoSessaoPlenaria, __base__, __perms_publicas__), - (sessao.TipoResultadoVotacao, __base__, __perms_publicas__), - (sessao.TipoExpediente, __base__, __perms_publicas__), - (sessao.TipoJustificativa, __base__, __perms_publicas__), - (sessao.JustificativaAusencia, __base__, __perms_publicas__), - (sessao.ResumoOrdenacao, __base__, __perms_publicas__), - (sessao.TipoRetiradaPauta, __base__, __perms_publicas__), +-------------------------- - (lexml.LexmlProvedor, __base__, set()), - (lexml.LexmlPublicador, __base__, set()), +rules_group_exemplo['rules'][1] + 1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO + podem acessar o que está em rules_group_exemplo['rules'][1][1], ou seja, + listar, ver detalhes, editar, apagar e adicionar registros de model_exemplo2 - (compilacao.VeiculoPublicacao, __base__, __perms_publicas__), - (compilacao.TipoTextoArticulado, __base__, __perms_publicas__), - (compilacao.TipoNota, __base__, __perms_publicas__), - (compilacao.TipoVide, __base__, __perms_publicas__), - (compilacao.TipoPublicacao, __base__, __perms_publicas__), + 1 significa também que o crud exigirá tais credenciais em todos as suas views - # este model é um espelho do model integrado e sua edição pode - # confundir Autores, operadores de matéria e/ou norma. - # Por isso está adicionado apenas para o operador geral - (compilacao.TextoArticulado, - __base__ + ['lock_unlock_textoarticulado'], set()), + 2 {RP_LIST, RP_DETAIL} diz que, na API, só list e detail pode ser acessado sem credencial. - # estes tres models são complexos e a principio apenas o admin tem perm - (compilacao.TipoDispositivo, [], set()), - (compilacao.TipoDispositivoRelationship, [], set()), - (compilacao.PerfilEstruturalTextoArticulado, [], set()), - - (audiencia.AudienciaPublica, __base__, __perms_publicas__), - (audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), - - - - - ] -} - - -# não possui efeito e é usada nos testes que verificam se todos os models estão -# neste arquivo rules.py -rules_group_anonymous = { - 'group': SAPL_GROUP_ANONYMOUS, - 'rules': [ - (materia.AcompanhamentoMateria, [RP_ADD, RP_DELETE], set()), - (protocoloadm.AcompanhamentoDocumento, [RP_ADD, RP_DELETE], set()), - ] -} - -rules_group_login_social = { - 'group': SAPL_GROUP_LOGIN_SOCIAL, - 'rules': [] -} +""" rules_group_geral['rules'] = (rules_group_geral['rules'] + rules_group_administrativo['rules'] + @@ -354,7 +81,6 @@ rules_group_geral['rules'] = (rules_group_geral['rules'] + rules_group_painel['rules'] + rules_group_login_social['rules']) - rules_patterns = [ rules_group_audiencia, rules_group_administrativo, @@ -368,11 +94,10 @@ rules_patterns = [ rules_group_autor, rules_group_votante, - rules_group_anonymous, # anotação para validação do teste de rules + rules_group_anonymous, # anotação para validação do teste de rules rules_group_login_social # TODO não implementado ] - rules_patterns_public = {} @@ -381,13 +106,13 @@ def _get_registration_key(model): for rules_group in rules_patterns: - for rules in rules_group['rules']: - key = _get_registration_key(rules[0]) + for rs in rules_group['rules']: + key = _get_registration_key(rs[0]) if key not in rules_patterns_public: rules_patterns_public[key] = set() - r = set(map(lambda x, m=rules[0]: '{}{}{}'.format( + r = set(map(lambda x, m=rs[0]: '{}{}{}'.format( m._meta.app_label, x, - m._meta.model_name), rules[2])) + m._meta.model_name), rs[2])) rules_patterns_public[key] = rules_patterns_public[key] | r diff --git a/sapl/rules/tests/test_rules.py b/sapl/rules/tests/test_rules.py index e1ed7f7e4..75baaacc9 100644 --- a/sapl/rules/tests/test_rules.py +++ b/sapl/rules/tests/test_rules.py @@ -1,10 +1,10 @@ -import pytest from django.apps import apps from django.conf import settings from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType from django.utils import six from django.utils.translation import ugettext_lazy as _ +import pytest from sapl.base.models import CasaLegislativa from sapl.compilacao.models import (PerfilEstruturalTextoArticulado, @@ -12,7 +12,7 @@ from sapl.compilacao.models import (PerfilEstruturalTextoArticulado, TipoDispositivoRelationship) from sapl.materia.models import AcompanhamentoMateria from sapl.protocoloadm.models import AcompanhamentoDocumento -from sapl.rules import SAPL_GROUPS, map_rules +from sapl.rules import __base__, SAPL_GROUPS, map_rules, RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE from sapl.test_urls import create_perms_post_migrate from scripts.lista_permissions_in_decorators import \ lista_permissions_in_decorators @@ -56,29 +56,29 @@ def test_models_in_rules_patterns(model_item): # __falsos_positivos__ __fp__in__test_permission_of_models_in_rules_patterns = { - map_rules.RP_ADD: [CasaLegislativa, + RP_ADD: [CasaLegislativa, TipoDispositivo, TipoDispositivoRelationship, PerfilEstruturalTextoArticulado], - map_rules.RP_CHANGE: [AcompanhamentoMateria, + RP_CHANGE: [AcompanhamentoMateria, AcompanhamentoDocumento, TipoDispositivo, TipoDispositivoRelationship, PerfilEstruturalTextoArticulado], - map_rules.RP_DELETE: [CasaLegislativa, + RP_DELETE: [CasaLegislativa, TipoDispositivo, TipoDispositivoRelationship, PerfilEstruturalTextoArticulado], - map_rules.RP_LIST: [AcompanhamentoMateria, + RP_LIST: [AcompanhamentoMateria, AcompanhamentoDocumento, TipoDispositivo, TipoDispositivoRelationship, PerfilEstruturalTextoArticulado], - map_rules.RP_DETAIL: [AcompanhamentoMateria, + RP_DETAIL: [AcompanhamentoMateria, AcompanhamentoDocumento, TipoDispositivo, TipoDispositivoRelationship, @@ -92,7 +92,7 @@ __fp__in__test_permission_of_models_in_rules_patterns = { def test_permission_of_models_in_rules_patterns(model_item): create_perms_post_migrate(model_item._meta.app_config) - permissions = map_rules.__base__ + list( + permissions = __base__ + list( filter( lambda perm: not perm.startswith( 'detail_') and not perm.startswith('list_'), @@ -186,7 +186,7 @@ def test_permission_required_of_views_exists(url_item): if hasattr(view, 'permission_required'): if isinstance(view.permission_required, six.string_types): - perms = (view.permission_required, ) + perms = (view.permission_required,) else: perms = view.permission_required diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index cbfcbb2e4..42a51ed5d 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -1,8 +1,8 @@ -import django_filters - -from crispy_forms.layout import Button, Fieldset, HTML, Layout from datetime import datetime +import logging +import re +from crispy_forms.layout import Button, Fieldset, HTML, Layout from django import forms from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist, ValidationError @@ -11,20 +11,26 @@ from django.db.models import Q from django.forms import ModelForm from django.forms.widgets import CheckboxSelectMultiple from django.utils.translation import ugettext_lazy as _ +import django_filters from sapl.base.models import Autor, TipoAutor -from sapl.crispy_layout_mixin import (form_actions, to_row, +from sapl.crispy_layout_mixin import (form_actions, to_row, SaplFormHelper, SaplFormLayout) from sapl.materia.forms import MateriaLegislativaFilterSet from sapl.materia.models import (MateriaLegislativa, StatusTramitacao, TipoMateriaLegislativa) from sapl.parlamentares.models import Mandato, Parlamentar +from sapl.protocoloadm.models import TipoDocumentoAdministrativo,\ + DocumentoAdministrativo +from sapl.sessao.models import Correspondencia from sapl.utils import (autor_label, autor_modal, choice_anos_com_sessaoplenaria, FileFieldCheckMixin, + FilterOverridesMetaMixin, MateriaPesquisaOrderingFilter, RANGE_DIAS_MES, RANGE_MESES, - timezone, validar_arquivo) + TIME_PATTERN, timezone, validar_arquivo) +import sapl.utils from .models import (Bancada, ExpedienteMateria, JustificativaAusencia, OcorrenciaSessao, Orador, @@ -32,18 +38,22 @@ from .models import (Bancada, ExpedienteMateria, ORDENACAO_RESUMO, PresencaOrdemDia, RegistroLeitura, ResumoOrdenacao, RetiradaPauta, SessaoPlenaria, SessaoPlenariaPresenca, - TipoResultadoVotacao, TipoRetiradaPauta) + TipoResultadoVotacao, TipoRetiradaPauta, Tramitacao) MES_CHOICES = RANGE_MESES DIA_CHOICES = RANGE_DIAS_MES +def tramitacao_select_validation(): + return True + + class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): class Meta: model = SessaoPlenaria - exclude = ['cod_andamento_sessao'] + exclude = ['cod_andamento_sessao', 'correspondencias'] def clean(self): super(SessaoPlenariaForm, self).clean() @@ -65,7 +75,7 @@ class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): "para a Legislatura, Sessão Legislativa e Tipo informados. " "Favor escolher um número distinto.") - qs = tipo.queryset_tipo_numeracao(leg, sl, abertura) + qs = tipo.build_predicados_queryset(leg, sl, abertura) qs &= Q(numero=num) if SessaoPlenaria.objects.filter(qs).exclude(pk=instance.pk).exists(): @@ -85,8 +95,7 @@ class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): encerramento_entre_leg = True encerramento_entre_sl = True - - ## Sessões Extraordinárias podem estar fora da sessão legislativa + # Sessões Extraordinárias podem estar fora da sessão legislativa descricao_tipo = tipo.nome.lower() if "extraordinária" in descricao_tipo or "especial" in descricao_tipo: # Ignora checagem de limites para Sessão Legislativa @@ -102,7 +111,6 @@ class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): raise ValidationError("A data de abertura e encerramento da Sessão " "Plenária deve estar compreendida entre a " "data de abertura e encerramento da Sessão Legislativa") - upload_pauta = self.cleaned_data.get('upload_pauta', False) upload_ata = self.cleaned_data.get('upload_ata', False) @@ -110,13 +118,23 @@ class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): if upload_pauta: validar_arquivo(upload_pauta, "Pauta da Sessão") - + if upload_ata: validar_arquivo(upload_ata, "Ata da Sessão") if upload_anexo: validar_arquivo(upload_anexo, "Anexo da Sessão") + hora_inicio = self.cleaned_data['hora_inicio'] + if not re.match(sapl.utils.TIME_PATTERN, hora_inicio): + raise ValidationError(f'Formato ou valores de horário de ' + f'abertura errados: {hora_inicio}') + + hora_fim = self.cleaned_data['hora_fim'] + if hora_fim and not re.match(sapl.utils.TIME_PATTERN, hora_fim): + raise ValidationError(f'Formato ou valores de horário de ' + f'encerramento errados: {hora_fim}.') + return self.cleaned_data @@ -285,6 +303,12 @@ class BancadaForm(ModelForm): return bancada +class DependentChoiceField(forms.ChoiceField): + + def validate(self, value): + return True + + class ExpedienteMateriaForm(ModelForm): _model = ExpedienteMateria @@ -297,6 +321,10 @@ class ExpedienteMateriaForm(ModelForm): empty_label='Selecione', widget=forms.Select(attrs={'autocomplete': 'off'})) + tramitacao_select = DependentChoiceField( + label=_('Situação de Pauta'), + widget=forms.Select()) + numero_materia = forms.CharField( label='Número Matéria', required=True, widget=forms.TextInput(attrs={'autocomplete': 'off'})) @@ -317,7 +345,7 @@ class ExpedienteMateriaForm(ModelForm): class Meta: model = ExpedienteMateria fields = ['data_ordem', 'numero_ordem', 'tipo_materia', 'observacao', - 'numero_materia', 'ano_materia', 'tipo_votacao'] + 'numero_materia', 'ano_materia', 'tramitacao_select', 'tipo_votacao'] def clean_numero_ordem(self): sessao = self.instance.sessao_plenaria @@ -340,8 +368,6 @@ class ExpedienteMateriaForm(ModelForm): if not self.is_valid(): return cleaned_data - sessao = self.instance.sessao_plenaria - try: materia = MateriaLegislativa.objects.get( numero=self.cleaned_data['numero_materia'], @@ -354,11 +380,27 @@ class ExpedienteMateriaForm(ModelForm): else: cleaned_data['materia'] = materia + try: + if materia.tramitacao_set.exists() and self.cleaned_data['tramitacao_select']: + tramitacao = materia.tramitacao_set.get( + pk=self.cleaned_data['tramitacao_select']) + cleaned_data['tramitacao'] = tramitacao + except ObjectDoesNotExist: + raise ValidationError( + _('Tramitação selecionada não existe para a Matéria: %(value)s'), + code='invalid', + params={'value': self.cleaned_data['tramitacao_select']}, + ) + return cleaned_data def save(self, commit=False): expediente = super(ExpedienteMateriaForm, self).save(commit) expediente.materia = self.cleaned_data['materia'] + if 'tramitacao' in self.cleaned_data and self.cleaned_data['tramitacao']: + expediente.tramitacao = self.cleaned_data['tramitacao'] + else: + expediente.tramitacao = None expediente.save() return expediente @@ -529,7 +571,7 @@ class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): queryset=StatusTramitacao.objects.all(), label=_('Status da Matéria')) - class Meta: + class Meta(FilterOverridesMetaMixin): model = MateriaLegislativa fields = ['tramitacao__status', 'numero', @@ -605,7 +647,8 @@ class OradorForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['parlamentar'].queryset = \ - Parlamentar.objects.filter(ativo=True).order_by('nome_parlamentar') + Parlamentar.objects.filter( + mandato__legislatura__sessaoplenaria=self.initial['id_sessao'], ativo=True).order_by('nome_parlamentar') def clean(self): super(OradorForm, self).clean() @@ -642,12 +685,9 @@ class OradorForm(ModelForm): class OradorExpedienteForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - id_sessao = int(self.initial['id_sessao']) - sessao = SessaoPlenaria.objects.get(id=id_sessao) - legislatura_vigente = sessao.legislatura self.fields['parlamentar'].queryset = \ - Parlamentar.objects.filter(mandato__legislatura=legislatura_vigente, - ativo=True).order_by('nome_parlamentar') + Parlamentar.objects.filter( + mandato__legislatura__sessaoplenaria=self.initial['id_sessao'], ativo=True).order_by('nome_parlamentar') def clean(self): super(OradorExpedienteForm, self).clean() @@ -682,12 +722,9 @@ class OradorExpedienteForm(ModelForm): class OradorOrdemDiaForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - id_sessao = int(self.initial['id_sessao']) - sessao = SessaoPlenaria.objects.get(id=id_sessao) - legislatura_vigente = sessao.legislatura self.fields['parlamentar'].queryset = \ - Parlamentar.objects.filter(mandato__legislatura=legislatura_vigente, - ativo=True).order_by('nome_parlamentar') + Parlamentar.objects.filter( + mandato__legislatura__sessaoplenaria=self.initial['id_sessao'], ativo=True).order_by('nome_parlamentar') def clean(self): super(OradorOrdemDiaForm, self).clean() @@ -782,6 +819,14 @@ class ResumoOrdenacaoForm(forms.Form): label='14°', choices=ORDENACAO_RESUMO ) + decimo_quinto = forms.ChoiceField( + label='15°', + choices=ORDENACAO_RESUMO + ) + decimo_sexto = forms.ChoiceField( + label='16°', + choices=ORDENACAO_RESUMO + ) def __init__(self, *args, **kwargs): row1 = to_row( @@ -813,13 +858,19 @@ class ResumoOrdenacaoForm(forms.Form): row14 = to_row( [('decimo_quarto', 12)] ) + row15 = to_row( + [('decimo_quinto', 12)] + ) + row16 = to_row( + [('decimo_sexto', 12)] + ) self.helper = SaplFormHelper() self.helper.layout = Layout( Fieldset(_(''), row1, row2, row3, row4, row5, row6, row7, row8, row9, row10, - row11, row12, row13, row14, + row11, row12, row13, row14, row15, row16, form_actions(label='Atualizar')) ) @@ -861,6 +912,8 @@ class ResumoOrdenacaoForm(forms.Form): ordenacao.decimo_segundo = cleaned_data['decimo_segundo'] ordenacao.decimo_terceiro = cleaned_data['decimo_terceiro'] ordenacao.decimo_quarto = cleaned_data['decimo_quarto'] + ordenacao.decimo_quinto = cleaned_data['decimo_quinto'] + ordenacao.decimo_sexto = cleaned_data['decimo_sexto'] ordenacao.save() @@ -975,7 +1028,8 @@ class JustificativaAusenciaForm(ModelForm): class OrdemExpedienteLeituraForm(forms.ModelForm): - observacao = forms.CharField(required=False, label='Observação', widget=forms.Textarea,) + observacao = forms.CharField( + required=False, label='Observação', widget=forms.Textarea,) class Meta: model = RegistroLeitura @@ -983,7 +1037,7 @@ class OrdemExpedienteLeituraForm(forms.ModelForm): 'ordem', 'expediente', 'observacao', - 'user', + 'user', 'ip'] widgets = {'materia': forms.HiddenInput(), 'ordem': forms.HiddenInput(), @@ -995,14 +1049,14 @@ class OrdemExpedienteLeituraForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - + instance = self.initial['instance'] if instance: self.instance = instance.first() self.fields['observacao'].initial = self.instance.observacao row1 = to_row( - [('observacao', 12)]) + [('observacao', 12)]) actions = [HTML('Cancelar Leitura')] @@ -1011,11 +1065,115 @@ class OrdemExpedienteLeituraForm(forms.ModelForm): self.helper.form_method = 'POST' self.helper.layout = Layout( Fieldset(_('Leitura de Matéria'), - HTML(''' + HTML(''' Matéria: {{materia}}
Ementa: {{materia.ementa}}
'''), row1, form_actions(more=actions), - ) - ) \ No newline at end of file + ) + ) + + +class CorrespondenciaForm(ModelForm): + + logger = logging.getLogger(__name__) + + tipo_documento = forms.ModelChoiceField( + label='Tipo do Documento', + required=True, + queryset=TipoDocumentoAdministrativo.objects.all(), + empty_label='Selecione', + ) + + numero_documento = forms.IntegerField(label='Número', required=True) + + ano_documento = forms.CharField(label='Ano', required=True) + + class Meta: + model = Correspondencia + fields = ['tipo', 'numero_ordem', 'observacao', + 'tipo_documento', 'numero_documento', 'ano_documento'] + + def __init__(self, *args, **kwargs): + return super().__init__(*args, **kwargs) + + def clean(self): + super().clean() + + if not self.is_valid(): + return self.cleaned_data + + cleaned_data = self.cleaned_data + try: + self.logger.info("Tentando obter objeto Documento Administrativo (numero={}, ano={}, tipo={})." + .format(cleaned_data['numero_documento'], cleaned_data['ano_documento'], cleaned_data['tipo_documento'])) + documento = DocumentoAdministrativo.objects.filter( + numero=cleaned_data['numero_documento'], + ano=cleaned_data['ano_documento'], + tipo=cleaned_data['tipo_documento']).order_by('-id').first() + if not documento: + raise ObjectDoesNotExist() + + except ObjectDoesNotExist: + msg = _('{} {}/{} não existe no cadastro de documentos administrativos.' + .format(cleaned_data['tipo_documento'], cleaned_data['numero_documento'], cleaned_data['ano_documento'])) + self.logger.warning( + "O Documento Administrativo não existe no cadastro.") + raise ValidationError(msg) + + if Correspondencia.objects.filter( + sessao_plenaria=self.instance.sessao_plenaria, documento=documento + ).exclude(pk=self.instance.pk).exists(): + self.logger.error( + "Documento Administrativo já se encontra nesta Sessão.") + raise ValidationError( + _('Documento Administrativo já se encontra nesta Sessão.')) + + cleaned_data['documento'] = documento + + return cleaned_data + + def clean_numero_ordem(self): + sessao = self.instance.sessao_plenaria + + numero_ordem_exists = Correspondencia.objects.filter( + sessao_plenaria=sessao, + numero_ordem=self.cleaned_data['numero_ordem']).exists() + + if numero_ordem_exists and not self.instance.pk: + msg = _('Esse número de ordem já existe.') + raise ValidationError(msg) + + return self.cleaned_data['numero_ordem'] + + def save(self, commit=False): + correspondencia = super().save(commit) + correspondencia.documento = self.cleaned_data['documento'] + correspondencia.save() + return correspondencia + + +class CorrespondenciaEmLoteFilterSet(django_filters.FilterSet): + + class Meta(FilterOverridesMetaMixin): + model = DocumentoAdministrativo + fields = ['tipo', 'data'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.filters['tipo'].label = 'Tipo do documento' + self.filters['data'].label = 'Data (Inicial - Final)' + + self.form.fields['tipo'].required = True + self.form.fields['data'].required = True + + row1 = to_row([('tipo', 12)]) + row2 = to_row([('data', 12)]) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Pesquisa de Documentos Administrativos'), + row1, row2, form_actions(label='Pesquisar'))) diff --git a/sapl/sessao/migrations/0056_ConsideracoesFinais.py b/sapl/sessao/migrations/0056_ConsideracoesFinais.py new file mode 100644 index 000000000..bda571b08 --- /dev/null +++ b/sapl/sessao/migrations/0056_ConsideracoesFinais.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.20 on 2021-08-05 13:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0055_auto_20210304_1221'), + ] + + operations = [ + migrations.CreateModel( + name='ConsideracoesFinais', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('conteudo', models.TextField(blank=True, verbose_name='Considerações Finais da Sessão Plenária')), + ('sessao_plenaria', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria')), + ], + options={ + 'verbose_name': 'Consideração Final da Sessão Plenária', + 'verbose_name_plural': 'Considerações Finais da Sessão Plenária', + 'ordering': ('id',), + }, + ), + ] diff --git a/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py b/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py new file mode 100644 index 000000000..add1ebf57 --- /dev/null +++ b/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.20 on 2021-08-11 13:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0056_ConsideracoesFinais'), + ] + + operations = [ + migrations.AddField( + model_name='resumoordenacao', + name='decimo_quinto', + field=models.CharField(default='cons_finais', max_length=50), + ), + ] diff --git a/sapl/sessao/migrations/0058_corrige_data_ordem.py b/sapl/sessao/migrations/0058_corrige_data_ordem.py new file mode 100644 index 000000000..6122c7c54 --- /dev/null +++ b/sapl/sessao/migrations/0058_corrige_data_ordem.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations +from django.db.models import F + + +def corrige_data_ordem_em_item_de_sessao(apps, schema_editor): + SessaoPlenaria = apps.get_model("sessao", "SessaoPlenaria") + OrdemDia = apps.get_model("sessao", "OrdemDia") + ExpedienteMateria = apps.get_model("sessao", "ExpedienteMateria") + + for m in (OrdemDia, ExpedienteMateria): + + p1 = {f'{m._meta.model_name}__isnull': False} + p2 = {f'{m._meta.model_name}__data_ordem': F('data_inicio')} + + sps = SessaoPlenaria.objects.filter( + **p1 + ).exclude( + **p2 + ).distinct().all().values('id', 'data_inicio') + + for sp in sps: + m.objects.filter( + sessao_plenaria_id=sp['id'] + ).exclude( + data_ordem=F('sessao_plenaria__data_inicio') + ).update(data_ordem=sp['data_inicio']) + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0057_resumoordenacao_decimo_quinto'), + ] + + operations = [ + migrations.RunPython(corrige_data_ordem_em_item_de_sessao), + ] diff --git a/sapl/sessao/migrations/0059_sessaoplenaria_data_ultima_atualizacao.py b/sapl/sessao/migrations/0059_sessaoplenaria_data_ultima_atualizacao.py new file mode 100644 index 000000000..08e7f0840 --- /dev/null +++ b/sapl/sessao/migrations/0059_sessaoplenaria_data_ultima_atualizacao.py @@ -0,0 +1,26 @@ +# Generated by Django 2.2.24 on 2021-10-22 00:36 + +from django.core.management import call_command +from django.db import migrations, models + + +def update_solr(*args, **kwargs): + call_command('update_index', 'sessao', verbosity=3, batchsize=100) + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0058_corrige_data_ordem'), + ] + + operations = [ + migrations.AddField( + model_name='sessaoplenaria', + name='data_ultima_atualizacao', + field=models.DateTimeField( + auto_now=True, null=True, verbose_name='Data'), + ), + #migrations.RunPython(update_solr), + + ] diff --git a/sapl/sessao/migrations/0060_auto_20220224_1245.py b/sapl/sessao/migrations/0060_auto_20220224_1245.py new file mode 100644 index 000000000..bc00e6ec5 --- /dev/null +++ b/sapl/sessao/migrations/0060_auto_20220224_1245.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2022-02-24 15:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0059_sessaoplenaria_data_ultima_atualizacao'), + ] + + operations = [ + migrations.AlterField( + model_name='tiposessaoplenaria', + name='tipo_numeracao', + field=models.PositiveIntegerField(choices=[(1, 'Quinzenal'), (2, 'Mensal'), (5, 'Semestral'), (10, 'Anual'), (11, 'Sessão Legislativa'), (12, 'Legislatura'), (99, 'Numeração Única')], default=11, verbose_name='Tipo de Numeração'), + ), + ] diff --git a/sapl/sessao/migrations/0060_auto_20220321_0934.py b/sapl/sessao/migrations/0060_auto_20220321_0934.py new file mode 100644 index 000000000..034e1ad98 --- /dev/null +++ b/sapl/sessao/migrations/0060_auto_20220321_0934.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2022-03-21 12:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0059_sessaoplenaria_data_ultima_atualizacao'), + ] + + operations = [ + migrations.AlterField( + model_name='tiposessaoplenaria', + name='tipo_numeracao', + field=models.PositiveIntegerField(choices=[(1, 'Quinzenal'), (2, 'Mensal'), (5, 'Semestral'), (10, 'Anual'), (11, 'Sessão Legislativa'), (12, 'Legislatura'), (99, 'Numeração Única')], default=11, verbose_name='Tipo de Numeração'), + ), + ] diff --git a/sapl/sessao/migrations/0061_sessaoplenaria_publicar_pauta.py b/sapl/sessao/migrations/0061_sessaoplenaria_publicar_pauta.py new file mode 100644 index 000000000..1e8949d3b --- /dev/null +++ b/sapl/sessao/migrations/0061_sessaoplenaria_publicar_pauta.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.24 on 2022-04-05 16:07 + +from django.db import migrations, models + +from sapl.utils import YES_NO_CHOICES + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0060_auto_20220224_1245'), + ] + + operations = [ + migrations.AddField( + model_name='sessaoplenaria', + name='publicar_pauta', + field=models.BooleanField(blank=True, default=False, null=True, choices=YES_NO_CHOICES, verbose_name='Publicar Pauta?'), + ), + ] diff --git a/sapl/sessao/migrations/0062_auto_20220405_1307.py b/sapl/sessao/migrations/0062_auto_20220405_1307.py new file mode 100644 index 000000000..65d4e0253 --- /dev/null +++ b/sapl/sessao/migrations/0062_auto_20220405_1307.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.24 on 2022-04-05 16:07 + +from django.db import migrations + +def publicar_pauta_true_sessoes_existentes(apps, schema_editor): + SessaoPlenaria = apps.get_model('sessao', 'SessaoPlenaria') + SessaoPlenaria.objects.filter(publicar_pauta=False).update(publicar_pauta=True) + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0061_sessaoplenaria_publicar_pauta'), + ] + + operations = [ + migrations.RunPython(publicar_pauta_true_sessoes_existentes), + ] diff --git a/sapl/sessao/migrations/0063_merge_20220609_0838.py b/sapl/sessao/migrations/0063_merge_20220609_0838.py new file mode 100644 index 000000000..e5d5956aa --- /dev/null +++ b/sapl/sessao/migrations/0063_merge_20220609_0838.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.28 on 2022-06-09 11:38 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0060_auto_20220321_0934'), + ('sessao', '0062_auto_20220405_1307'), + ] + + operations = [ + ] diff --git a/sapl/sessao/migrations/0064_auto_20220713_2335.py b/sapl/sessao/migrations/0064_auto_20220713_2335.py new file mode 100644 index 000000000..0c0c34866 --- /dev/null +++ b/sapl/sessao/migrations/0064_auto_20220713_2335.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.28 on 2022-07-14 02:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0081_auto_20220321_0934'), + ('sessao', '0063_merge_20220609_0838'), + ] + + operations = [ + migrations.AddField( + model_name='expedientemateria', + name='tramitacao', + field=models.ForeignKey(blank=True, default='', null=True, on_delete=django.db.models.deletion.PROTECT, to='materia.Tramitacao', verbose_name='Situação Atual'), + ), + migrations.AddField( + model_name='ordemdia', + name='tramitacao', + field=models.ForeignKey(blank=True, default='', null=True, on_delete=django.db.models.deletion.PROTECT, to='materia.Tramitacao', verbose_name='Situação Atual'), + ), + ] diff --git a/sapl/sessao/migrations/0065_correspondencia.py b/sapl/sessao/migrations/0065_correspondencia.py new file mode 100644 index 000000000..125a1d70b --- /dev/null +++ b/sapl/sessao/migrations/0065_correspondencia.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.28 on 2022-08-13 16:50 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0042_auto_20220805_1236'), + ('sessao', '0064_auto_20220713_2335'), + ] + + operations = [ + migrations.CreateModel( + name='Correspondencia', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('observacao', models.TextField(blank=True, verbose_name='Observação')), + ('numero_ordem', models.PositiveIntegerField(verbose_name='Nº Ordem')), + ('tipo', models.PositiveIntegerField(choices=[(1, 'Recebida'), (2, 'Enviada')], default=1, verbose_name='Tipo da Correspondência')), + ('documento', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='protocoloadm.DocumentoAdministrativo', verbose_name='Documento Administrativo')), + ('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria')), + ], + options={ + 'verbose_name': 'Correspondência', + 'verbose_name_plural': 'Correspondências', + 'ordering': ('numero_ordem',), + }, + ), + ] diff --git a/sapl/sessao/migrations/0066_auto_20220813_1431.py b/sapl/sessao/migrations/0066_auto_20220813_1431.py new file mode 100644 index 000000000..9ddde02c6 --- /dev/null +++ b/sapl/sessao/migrations/0066_auto_20220813_1431.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.28 on 2022-08-13 17:31 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0042_auto_20220805_1236'), + ('sessao', '0065_correspondencia'), + ] + + operations = [ + migrations.AddField( + model_name='sessaoplenaria', + name='correspondencias', + field=models.ManyToManyField(blank=True, related_name='sessoesplenarias', through='sessao.Correspondencia', to='protocoloadm.DocumentoAdministrativo'), + ), + migrations.AlterField( + model_name='correspondencia', + name='sessao_plenaria', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='correspondencia_set', to='sessao.SessaoPlenaria'), + ), + ] diff --git a/sapl/sessao/migrations/0067_auto_20220813_2233.py b/sapl/sessao/migrations/0067_auto_20220813_2233.py new file mode 100644 index 000000000..1ec771b19 --- /dev/null +++ b/sapl/sessao/migrations/0067_auto_20220813_2233.py @@ -0,0 +1,98 @@ +# Generated by Django 2.2.28 on 2022-08-14 01:33 + +from django.db import migrations, models + + +def insere_correspondencia_antes_de_exp(apps, schema_editor): + ResumoOrdenacao = apps.get_model('sessao', 'ResumoOrdenacao') + ordenacao = ResumoOrdenacao.objects.get_or_create()[0] + fields = list(map(lambda x: x.name, ResumoOrdenacao._meta.get_fields())) + fields.reverse() + + for i, f in enumerate(fields): + setattr(ordenacao, f, getattr(ordenacao, fields[i + 1])) + + if i + 2 == len(fields): + return + + if getattr(ordenacao, f) == 'exp': + setattr(ordenacao, fields[i + 1], 'correspondencia') + ordenacao.save() + return + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0066_auto_20220813_1431'), + ] + + operations = [ + migrations.AddField( + model_name='resumoordenacao', + name='decimo_sexto', + field=models.CharField(default='cons_finais', max_length=50), + ), + migrations.AlterField( + model_name='correspondencia', + name='tipo', + field=models.PositiveIntegerField(choices=[(1, 'Recebida'), (2, 'Enviada'), ( + 2, 'Interna')], default=1, verbose_name='Tipo da Correspondência'), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo', + field=models.CharField(default='lista_p_o_d', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo_primeiro', + field=models.CharField(default='mat_o_d', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo_quarto', + field=models.CharField(default='oradores_expli', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo_quinto', + field=models.CharField(default='ocorr_sessao', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo_segundo', + field=models.CharField(default='v_n_mat_o_d', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='decimo_terceiro', + field=models.CharField(default='oradores_o_d', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='nono', + field=models.CharField(default='oradores_exped', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='oitavo', + field=models.CharField(default='v_n_mat_exp', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='quinto', + field=models.CharField(default='correspondencia', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='setimo', + field=models.CharField(default='mat_exp', max_length=50), + ), + migrations.AlterField( + model_name='resumoordenacao', + name='sexto', + field=models.CharField(default='exp', max_length=50), + ), + migrations.RunPython(insere_correspondencia_antes_de_exp) + ] diff --git a/sapl/sessao/migrations/0068_auto_20220816_1237.py b/sapl/sessao/migrations/0068_auto_20220816_1237.py new file mode 100644 index 000000000..d1f2f7670 --- /dev/null +++ b/sapl/sessao/migrations/0068_auto_20220816_1237.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.24 on 2022-08-16 15:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0067_auto_20220813_2233'), + ] + + operations = [ + migrations.AlterField( + model_name='correspondencia', + name='tipo', + field=models.PositiveIntegerField(choices=[(1, 'Recebida'), (2, 'Enviada'), (3, 'Interna')], default=1, verbose_name='Tipo da Correspondência'), + ), + migrations.AlterField( + model_name='expedientemateria', + name='tramitacao', + field=models.ForeignKey(blank=True, default='', null=True, on_delete=django.db.models.deletion.PROTECT, to='materia.Tramitacao', verbose_name='Situação de Pauta'), + ), + migrations.AlterField( + model_name='ordemdia', + name='tramitacao', + field=models.ForeignKey(blank=True, default='', null=True, on_delete=django.db.models.deletion.PROTECT, to='materia.Tramitacao', verbose_name='Situação de Pauta'), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 47019abdb..0a1b8e06d 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -2,7 +2,7 @@ from operator import xor from django.core.exceptions import ValidationError from django.db import models -from django.db.models import Q +from django.db.models import Q, F from django.utils import timezone, formats from django.utils.translation import ugettext_lazy as _ from model_utils import Choices @@ -10,8 +10,10 @@ import reversion from sapl.base.models import Autor from sapl.materia.models import MateriaLegislativa +from sapl.materia.models import Tramitacao from sapl.parlamentares.models import (CargoMesa, Legislatura, Parlamentar, Partido, SessaoLegislativa) +from sapl.protocoloadm.models import DocumentoAdministrativo from sapl.utils import (YES_NO_CHOICES, SaplGenericRelation, get_settings_auth_user_model, restringe_tipos_de_arquivo_txt, texto_upload_path, @@ -80,6 +82,7 @@ class TipoSessaoPlenaria(models.Model): TIPO_NUMERACAO_CHOICES = Choices( (1, 'quizenal', 'Quinzenal'), (2, 'mensal', 'Mensal'), + (5, 'semestral', 'Semestral'), (10, 'anual', 'Anual'), (11, 'sessao_legislativa', 'Sessão Legislativa'), (12, 'legislatura', 'Legislatura'), @@ -102,7 +105,7 @@ class TipoSessaoPlenaria(models.Model): def __str__(self): return self.nome - def queryset_tipo_numeracao(self, legislatura, sessao_legislativa, data): + def build_predicados_queryset(self, legislatura, sessao_legislativa, data): qs = Q(tipo=self) tnc = self.TIPO_NUMERACAO_CHOICES @@ -115,6 +118,13 @@ class TipoSessaoPlenaria(models.Model): qs &= Q(sessao_legislativa=sessao_legislativa) elif self.tipo_numeracao == tnc.anual: qs &= Q(data_inicio__year=data.year) + elif self.tipo_numeracao == tnc.semestral: + m = data.month + p = { + 'data_inicio__year': data.year, + f'data_inicio__month__{"gt" if m > 6 else "lte"}': 6 + } + qs &= Q(**p) elif self.tipo_numeracao in (tnc.mensal, tnc.quizenal): qs &= Q(data_inicio__year=data.year, data_inicio__month=data.month) @@ -229,6 +239,27 @@ class SessaoPlenaria(models.Model): tema_solene = models.TextField( blank=True, max_length=500, verbose_name=_('Tema da Sessão Solene')) + data_ultima_atualizacao = models.DateTimeField( + blank=True, null=True, auto_now=True, verbose_name=_('Data')) + + publicar_pauta = models.BooleanField( + null=True, + blank=True, + default=False, + choices=YES_NO_CHOICES, + verbose_name=_('Publicar Pauta?')) + + correspondencias = models.ManyToManyField( + DocumentoAdministrativo, + blank=True, + through='Correspondencia', + related_name='sessoesplenarias', + through_fields=( + 'sessao_plenaria', + 'documento' + ) + ) + class Meta: verbose_name = _('Sessão Plenária') verbose_name_plural = _('Sessões Plenárias') @@ -249,6 +280,9 @@ class SessaoPlenaria(models.Model): formats.date_format(self.data_inicio, 'F') ) + if self.tipo.tipo_numeracao == tnc.semestral: + base += f' do {1 if self.data_inicio.month <= 6 else 2}º Semestre' + if self.tipo.tipo_numeracao <= tnc.anual: base += ' de {}'.format(self.data_inicio.year) @@ -277,7 +311,7 @@ class SessaoPlenaria(models.Model): upload_pauta = self.upload_pauta upload_ata = self.upload_ata upload_anexo = self.upload_anexo - + result = super().delete(using=using, keep_parents=keep_parents) if upload_pauta: @@ -311,10 +345,18 @@ class SessaoPlenaria(models.Model): self.upload_ata = upload_ata self.upload_anexo = upload_anexo - return models.Model.save(self, force_insert=force_insert, - force_update=force_update, - using=using, - update_fields=update_fields) + models.Model.save(self, force_insert=force_insert, + force_update=force_update, + using=using, + update_fields=update_fields) + + self.ordemdia_set.exclude( + data_ordem=F('sessao_plenaria__data_inicio') + ).update(data_ordem=self.data_inicio) + + self.expedientemateria_set.exclude( + data_ordem=F('sessao_plenaria__data_inicio') + ).update(data_ordem=self.data_inicio) @reversion.register() @@ -331,6 +373,12 @@ class AbstractOrdemDia(models.Model): materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT, verbose_name=_('Matéria')) + tramitacao = models.ForeignKey(Tramitacao, + on_delete=models.PROTECT, + verbose_name=_('Situação de Pauta'), + blank=True, + default='', + null=True) data_ordem = models.DateField(verbose_name=_('Data da Sessão')) observacao = models.TextField( blank=True, verbose_name=_('Observação')) @@ -427,6 +475,22 @@ class OcorrenciaSessao(models.Model): # OcorrenciaSessaoPlenaria return '%s - %s' % (self.sessao_plenaria, self.conteudo) +@reversion.register() +class ConsideracoesFinais(models.Model): # ConsideracoesFinaisSessaoPlenaria + sessao_plenaria = models.OneToOneField(SessaoPlenaria, + on_delete=models.PROTECT) + conteudo = models.TextField( + blank=True, verbose_name=_('Considerações Finais da Sessão Plenária')) + + class Meta: + verbose_name = _('Consideração Final da Sessão Plenária') + verbose_name_plural = _('Considerações Finais da Sessão Plenária') + ordering = ('id',) + + def __str__(self): + return '%s - %s' % (self.sessao_plenaria, self.conteudo) + + @reversion.register() class IntegranteMesa(models.Model): # MesaSessaoPlenaria sessao_plenaria = models.ForeignKey(SessaoPlenaria, @@ -481,6 +545,7 @@ class AbstractOrador(models.Model): # Oradores return result + @reversion.register() class Orador(AbstractOrador): # Oradores @@ -677,6 +742,7 @@ ORDENACAO_RESUMO = [ ('cont_mult', 'Conteúdo Multimídia'), ('mesa_d', 'Mesa Diretora'), ('lista_p', 'Lista de Presença'), + ('correspondencia', 'Correspondências'), ('exp', 'Expedientes'), ('mat_exp', 'Matérias do Expediente'), ('v_n_mat_exp', 'Votações Nominais - Matérias do Expediente'), @@ -686,7 +752,8 @@ ORDENACAO_RESUMO = [ ('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia'), ('oradores_o_d', 'Oradores da Ordem do Dia'), ('oradores_expli', 'Oradores das Explicações Pessoais'), - ('ocorr_sessao', 'Ocorrências da Sessão') + ('ocorr_sessao', 'Ocorrências da Sessão'), + ('cons_finais', 'Considerações Finais') ] @@ -752,6 +819,14 @@ class ResumoOrdenacao(models.Model): max_length=50, default=ORDENACAO_RESUMO[13][0] ) + decimo_quinto = models.CharField( + max_length=50, + default=ORDENACAO_RESUMO[14][0] + ) + decimo_sexto = models.CharField( + max_length=50, + default=ORDENACAO_RESUMO[15][0] + ) class Meta: verbose_name = _('Ordenação do Resumo de uma Sessão') @@ -948,7 +1023,7 @@ class RegistroLeitura(models.Model): def __str__(self): return _('Leitura - ' 'Matéria: %(materia)s') % { - 'materia': self.materia} + 'materia': self.materia} def clean(self): """Exatamente um dos campos ordem ou expediente deve estar preenchido. @@ -959,4 +1034,44 @@ class RegistroLeitura(models.Model): raise ValidationError( 'RegistroLeitura deve ter exatamente um dos campos ' 'ordem ou expediente preenchido. Ambos estão preenchidos: ' - '{}, {}'. format(self.ordem, self.expediente)) \ No newline at end of file + '{}, {}'. format(self.ordem, self.expediente)) + + +@reversion.register() +class Correspondencia(models.Model): + TIPO_CHOICES = Choices( + (1, 'recebida', 'Recebida'), + (2, 'enviada', 'Enviada'), + (3, 'interna', 'Interna'), + ) + + sessao_plenaria = models.ForeignKey( + SessaoPlenaria, + on_delete=models.CASCADE, + related_name='correspondencia_set', + verbose_name=_('Sessão Plenária')) + documento = models.ForeignKey( + DocumentoAdministrativo, + on_delete=models.PROTECT, + verbose_name=_('Documento Administrativo')) + + observacao = models.TextField( + blank=True, verbose_name=_('Observação')) + + numero_ordem = models.PositiveIntegerField(verbose_name=_('Nº Ordem')) + + tipo = models.PositiveIntegerField( + verbose_name=_('Tipo da Correspondência'), + choices=TIPO_CHOICES, default=1) + + class Meta: + verbose_name = _('Correspondência') + verbose_name_plural = _('Correspondências') + ordering = ('numero_ordem',) + + @property + def assunto(self): + return self.documento.assunto + + def __str__(self): + return _('Correspondência: {}').format(self.documento) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 2630e6515..8464c2d78 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -4,7 +4,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, AdicionarVariasMateriasOrdemDia, BancadaCrud, CargoBancadaCrud, ExpedienteMateriaCrud, ExpedienteView, JustificativaAusenciaCrud, - OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, + OcorrenciaSessaoView, ConsideracoesFinaisView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, MesaView, OradorCrud, OradorExpedienteCrud, PainelView, PautaSessaoDetailView, PautaSessaoView, @@ -36,7 +36,9 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, OrdemDiaLeituraView, retirar_leitura, TransferenciaMateriasExpediente, TransferenciaMateriasOrdemDia, - filtra_materias_copia_sessao_ajax, verifica_materia_sessao_plenaria_ajax) + filtra_materias_copia_sessao_ajax, verifica_materia_sessao_plenaria_ajax, + recuperar_tramitacao, CorrespondenciaEmLoteView, + CorrespondenciaCrud, recuperar_documento) from .apps import AppConfig @@ -51,7 +53,13 @@ urlpatterns = [ JustificativaAusenciaCrud.get_urls() + MateriaOrdemDiaCrud.get_urls() + OradorOrdemDiaCrud.get_urls() + - RetiradaPautaCrud.get_urls())), + RetiradaPautaCrud.get_urls() + + CorrespondenciaCrud.get_urls() + )), + + + url(r'^sessao/(?P\d+)/correspondencia-em-lote', CorrespondenciaEmLoteView.as_view(), + name='correspondencia_em_lote'), url(r'^sessao/(?P\d+)/mesa$', MesaView.as_view(), name='mesa'), @@ -67,7 +75,9 @@ urlpatterns = [ remove_parlamentar_composicao, name='remove_parlamentar_composicao'), + url(r'^sessao/recuperar-documento/', recuperar_documento), url(r'^sessao/recuperar-materia/', recuperar_materia), + url(r'^sessao/recuperar-tramitacao/', recuperar_tramitacao), url(r'^sessao/recuperar-numero-sessao/', recuperar_numero_sessao_view, name='recuperar_numero_sessao_view' @@ -79,8 +89,8 @@ urlpatterns = [ sessao_legislativa_legislatura_ajax, name='sessao_legislativa_legislatura_ajax_view'), url(r'^sessao/filtra-materias-copia-sessao-ajax/', - filtra_materias_copia_sessao_ajax, - name='filtra_materias_copia_sessao_ajax_view'), + filtra_materias_copia_sessao_ajax, + name='filtra_materias_copia_sessao_ajax_view'), url(r'^sessao/verifica-materia-sessao-plenaria-ajax/', verifica_materia_sessao_plenaria_ajax, name='verifica_materia_sessao_plenaria_ajax_view'), @@ -89,7 +99,8 @@ urlpatterns = [ abrir_votacao, name="abrir_votacao"), - url(r'^sessao/(?P\d+)/reordena/(?P[\w\-]+)/(?P\d+)/$', reordena_materias, name="reordena_materias"), + url(r'^sessao/(?P\d+)/reordena/(?P[\w\-]+)/(?P\d+)/$', + reordena_materias, name="reordena_materias"), url(r'^sistema/sessao-plenaria/tipo/', include(TipoSessaoCrud.get_urls())), @@ -128,6 +139,8 @@ urlpatterns = [ ExpedienteView.as_view(), name='expediente'), url(r'^sessao/(?P\d+)/ocorrencia_sessao$', OcorrenciaSessaoView.as_view(), name='ocorrencia_sessao'), + url(r'^sessao/(?P\d+)/consideracoes_finais$', + ConsideracoesFinaisView.as_view(), name='consideracoes_finais'), url(r'^sessao/(?P\d+)/presenca$', PresencaView.as_view(), name='presenca'), url(r'^sessao/(?P\d+)/painel$', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 566965746..97ec4be36 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1,19 +1,23 @@ - -import logging from collections import OrderedDict +from datetime import datetime +import json +import logging from re import sub +from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import permission_required from django.contrib.auth.mixins import PermissionRequiredMixin from django.core.exceptions import ObjectDoesNotExist -from django.urls import reverse from django.db.models import Max, Q from django.http import JsonResponse from django.http.response import Http404, HttpResponseRedirect +from django.urls import reverse +from django.urls.base import reverse_lazy from django.utils import timezone from django.utils.datastructures import MultiValueDictKeyError from django.utils.decorators import method_decorator +from django.utils.encoding import force_text from django.utils.html import strip_tags from django.utils.translation import ugettext_lazy as _ from django.views.decorators.csrf import csrf_exempt @@ -22,6 +26,7 @@ from django.views.generic.base import RedirectView from django.views.generic.detail import DetailView from django.views.generic.edit import FormMixin from django_filters.views import FilterView +import pytz from sapl.base.models import AppConfig as AppsAppConfig from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, @@ -33,8 +38,13 @@ from sapl.materia.models import (Autoria, TipoMateriaLegislativa, from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato, Parlamentar, SessaoLegislativa) +from sapl.protocoloadm.models import TipoDocumentoAdministrativo,\ + DocumentoAdministrativo from sapl.sessao.apps import AppConfig -from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm, OrdemExpedienteLeituraForm +from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm, OrdemExpedienteLeituraForm,\ + CorrespondenciaForm, CorrespondenciaEmLoteFilterSet +from sapl.sessao.models import Correspondencia +from sapl.settings import TIME_ZONE from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, @@ -44,7 +54,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm) from .models import (Bancada, CargoBancada, CargoMesa, - ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa, + ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, ConsideracoesFinais, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, @@ -86,7 +96,8 @@ def reordena_materias(request, pk, tipo, ordenacao): "ordemdia": "sapl.sessao:ordemdia_list" } - materias = TIPOS_MATERIAS[tipo].objects.filter(sessao_plenaria_id=pk).order_by(*TIPOS_ORDENACAO[ordenacao]) + materias = TIPOS_MATERIAS[tipo].objects.filter( + sessao_plenaria_id=pk).order_by(*TIPOS_ORDENACAO[ordenacao]) update_list = [] for numero, materia in enumerate(materias, 1): @@ -102,11 +113,12 @@ def verifica_presenca(request, model, spk, is_leitura=False): if not model.objects.filter(sessao_plenaria_id=spk).exists(): username = request.user.username if is_leitura: - text = 'Leitura não pode ser feita sem presenças' + text = 'Leitura não pode ser feita sem presenças' else: text = 'Votação não pode ser aberta sem presenças' - - logger.error("user={}. {} (sessao_plenaria_id={}).".format(username,text, spk)) + + logger.error("user={}. {} (sessao_plenaria_id={}).".format( + username, text, spk)) msg = _(text) messages.add_message(request, messages.ERROR, msg) return False @@ -129,14 +141,20 @@ def verifica_votacoes_abertas(request): v.__str__())) username = request.user.username logger.info('user=' + username + '. Já existem votações ou leituras abertas nas seguintes Sessões: ' + - ', '.join(msg_abertas) + '. Para abrir ' - 'outra, termine ou feche as votações ou leituras abertas.') + ', '.join(msg_abertas) + '. Estas votações ou leituras foram fechadas.') msg = _('Já existem votações ou leituras abertas nas seguintes Sessões: ' + - ', '.join(msg_abertas) + '. Para abrir ' - 'outra, termine ou feche as votações ou leituras abertas.') + ', '.join(msg_abertas) + '. Estas votações ou leituras foram fechadas.') messages.add_message(request, messages.INFO, msg) - return False + for sessao in votacoes_abertas: + ordens = sessao.ordemdia_set.filter(votacao_aberta=True) + expediente = sessao.expedientemateria_set.filter(votacao_aberta=True) + for o in ordens: + o.votacao_aberta = False + o.save() + for e in expediente: + e.votacao_aberta = False + e.save() return True @@ -182,7 +200,7 @@ def abrir_votacao(request, pk, spk): is_leitura = materia_votacao.tipo_votacao == 4 if (verifica_presenca(request, presenca_model, spk, is_leitura) and verifica_votacoes_abertas(request) and - verifica_sessao_iniciada(request, spk, is_leitura)): + verifica_sessao_iniciada(request, spk, is_leitura)): materia_votacao.votacao_aberta = True sessao = SessaoPlenaria.objects.get(id=spk) sessao.painel_aberto = True @@ -204,17 +222,22 @@ def customize_link_materia(context, pk, has_permission, is_expediente): for i, row in enumerate(context['rows']): materia = context['object_list'][i].materia obj = context['object_list'][i] - url_materia = reverse('sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id}) + url_materia = reverse( + 'sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id}) numeracao = materia.numeracao_set.first() if materia.numeracao_set.first() else "-" - autoria = materia.autoria_set.filter(primeiro_autor=True) + todos_autoria = materia.autoria_set.all() + autoria = todos_autoria.filter(primeiro_autor=True) autor = ', '.join([str(a.autor) for a in autoria]) if autoria else "-" - num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-" - data_inicio_sessao = SessaoPlenaria.objects.get(id=pk).data_inicio + todos_autores = ', '.join([str(a.autor) + for a in todos_autoria]) if autoria else "-" + num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-" + sessao_plenaria = SessaoPlenaria.objects.get(id=pk) + data_sessao = sessao_plenaria.data_fim if sessao_plenaria.data_fim else sessao_plenaria.data_inicio tramitacao = Tramitacao.objects\ .select_related('materia', 'status', 'materia__tipo')\ - .filter(materia=materia, turno__isnull=False, data_tramitacao__lte=data_inicio_sessao)\ + .filter(materia=materia, turno__isnull=False, data_tramitacao__lte=data_sessao)\ .exclude(turno__exact='')\ .order_by('-data_tramitacao', '-id')\ .first() @@ -228,20 +251,28 @@ def customize_link_materia(context, pk, has_permission, is_expediente): .select_related("materia", "tramitacao")\ .filter(materia=materia)\ .first() - - title_materia = f"""{row[1][0]}
- Processo: {numeracao}
- Autor: {autor}
- Protocolo: {num_protocolo}
- Turno: {turno}
+ # idUnica para cada materia + idAutor = "autor" + str(i) + idAutores = "autores" + str(i) + title_materia = f"""

+ {row[1][0]}
+ Processo: {numeracao}
+ Autor: {autor}
+ + Protocolo: {num_protocolo}
+ Turno: {turno}
+
""" # Na linha abaixo, o segundo argumento é None para não colocar # url em toda a string de title_materia context['rows'][i][1] = (title_materia, None) - exist_resultado = obj.registrovotacao_set.filter(materia=obj.materia).exists() - exist_retirada = obj.retiradapauta_set.filter(materia=obj.materia).exists() - exist_leitura = obj.registroleitura_set.filter(materia=obj.materia).exists() + exist_resultado = obj.registrovotacao_set.filter( + materia=obj.materia).exists() + exist_retirada = obj.retiradapauta_set.filter( + materia=obj.materia).exists() + exist_leitura = obj.registroleitura_set.filter( + materia=obj.materia).exists() if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or\ (obj.tipo_votacao == 4 and not exist_leitura): @@ -301,7 +332,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente): page_number = "" if 'page' in context: - #url += "?page={}".format(context['page']) + # url += "?page={}".format(context['page']) page_number = "" % context['page'] if has_permission: @@ -559,7 +590,7 @@ def filtra_materias_copia_sessao_ajax(request): } for opcao in lista_materias_disponiveis_copia ] - return JsonResponse({ 'materias': lista_materias }) + return JsonResponse({'materias': lista_materias}) class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): @@ -571,7 +602,8 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): TransferenciaMateriasSessaoAbstract, self ).get_context_data(**kwargs) - sessao_plenaria_atual = SessaoPlenaria.objects.get(pk=self.kwargs['pk']) + sessao_plenaria_atual = SessaoPlenaria.objects.get( + pk=self.kwargs['pk']) context['subnav_template_name'] = 'sessao/subnav.yaml' context['root_pk'] = self.kwargs['pk'] @@ -627,7 +659,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): messages.add_message(request, messages.ERROR, msg) msg_c = _( - 'Se o problema persistir, entre em contato com o suporte do ' \ + 'Se o problema persistir, entre em contato com o suporte do ' 'Interlegis.' ) messages.add_message(request, messages.WARNING, msg_c) @@ -642,7 +674,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): numero_ordem = exp.last().numero_ordem if exp.exists() else 0 for num_ordem, expediente in enumerate( ExpedienteMateria.objects.filter(id__in=marcadas), - numero_ordem+1 + numero_ordem + 1 ): lista_expediente.append( ExpedienteMateria( @@ -662,7 +694,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): o = OrdemDia.objects.filter(sessao_plenaria=sessao) numero_ordem = o.last().numero_ordem if o.exists() else 0 for num_ordem, ordemdia in enumerate( - OrdemDia.objects.filter(id__in=marcadas), numero_ordem+1 + OrdemDia.objects.filter(id__in=marcadas), numero_ordem + 1 ): lista_ordemdia.append( OrdemDia( @@ -693,7 +725,7 @@ class TransferenciaMateriasExpediente(TransferenciaMateriasSessaoAbstract): listagem_url = 'sapl.sessao:expedientemateria_list' model = ExpedienteMateria - permission_required = ('sessao.change_expedientemateria', ) + permission_required = ('sessao.change_expedientemateria',) class TransferenciaMateriasOrdemDia(TransferenciaMateriasSessaoAbstract): @@ -704,7 +736,7 @@ class TransferenciaMateriasOrdemDia(TransferenciaMateriasSessaoAbstract): listagem_url = 'sapl.sessao:ordemdia_list' model = OrdemDia - permission_required = ('sessao.change_ordemdia', ) + permission_required = ('sessao.change_ordemdia',) class TipoExpedienteCrud(CrudAux): @@ -732,7 +764,7 @@ class MateriaOrdemDiaCrud(MasterDetailCrud): class BaseMixin(MasterDetailCrud.BaseMixin): list_field_names = ['numero_ordem', 'materia', - ('materia__ementa', '', 'observacao'), + ('materia__ementa', '', 'tramitacao', 'observacao'), 'resultado'] class CreateView(MasterDetailCrud.CreateView): @@ -768,6 +800,7 @@ class MateriaOrdemDiaCrud(MasterDetailCrud): context["tipo_materia_salvo"] = self.object.materia.tipo.id context["numero_materia_salvo"] = self.object.materia.numero context["ano_materia_salvo"] = self.object.materia.ano + context["tramitacao_salvo"] = None if not self.object.tramitacao else self.object.tramitacao.id return context @@ -778,6 +811,7 @@ class MateriaOrdemDiaCrud(MasterDetailCrud): initial['numero_materia'] = self.object.materia.numero initial['ano_materia'] = self.object.materia.ano initial['numero_ordem'] = self.object.numero_ordem + initial['tramitacao'] = None if not self.object.tramitacao else self.object.tramitacao.id return initial @@ -818,6 +852,33 @@ def recuperar_materia(request): return response +def recuperar_tramitacao(request): + tipo = request.GET['tipo_materia'] + numero = request.GET['numero_materia'] + ano = request.GET['ano_materia'] + + try: + materia = MateriaLegislativa.objects.get(tipo_id=tipo, + ano=ano, + numero=numero) + tramitacao = {} + for obj in materia.tramitacao_set.all(): + tramitacao[obj.id] = { + 'status': obj.status.descricao, + 'texto': obj.texto, + 'data_tramitacao': obj.data_tramitacao.strftime('%d/%m/%Y'), + 'unidade_tramitacao_local': str(obj.unidade_tramitacao_local), + 'unidade_tramitacao_destino': str(obj.unidade_tramitacao_destino) + + } + + response = JsonResponse(tramitacao) + except ObjectDoesNotExist: + response = JsonResponse({'id': 0}) + + return response + + class ExpedienteMateriaCrud(MasterDetailCrud): model = ExpedienteMateria parent_field = 'sessao_plenaria' @@ -882,6 +943,7 @@ class ExpedienteMateriaCrud(MasterDetailCrud): context["tipo_materia_salvo"] = self.object.materia.tipo.id context["numero_materia_salvo"] = self.object.materia.numero context["ano_materia_salvo"] = self.object.materia.ano + context["tramitacao_salvo"] = self.object.tramitacao.id if self.object.tramitacao is not None else '' return context @@ -892,6 +954,7 @@ class ExpedienteMateriaCrud(MasterDetailCrud): initial['numero_materia'] = self.object.materia.numero initial['ano_materia'] = self.object.materia.ano initial['numero_ordem'] = self.object.numero_ordem + initial['tramitacao'] = self.object.tramitacao.id if self.object.tramitacao is not None else '' return initial @@ -925,7 +988,6 @@ class OradorCrud(MasterDetailCrud): form_class = OradorForm template_name = 'sessao/oradores_create.html' - def get_initial(self): return {'id_sessao': self.kwargs['pk']} @@ -937,7 +999,8 @@ class OradorCrud(MasterDetailCrud): if tipo_sessao.nome == "Solene": context.update( {'subnav_template_name': 'sessao/subnav-solene.yaml'}) - ultimo_orador = Orador.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = Orador.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1009,7 +1072,8 @@ class OradorExpedienteCrud(OradorCrud): if tipo_sessao.nome == "Solene": context.update( {'subnav_template_name': 'sessao/subnav-solene.yaml'}) - ultimo_orador = OradorExpediente.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = OradorExpediente.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1074,6 +1138,7 @@ class OradorExpedienteCrud(OradorCrud): class OradorOrdemDiaCrud(OradorCrud): model = OradorOrdemDia + class CreateView(MasterDetailCrud.CreateView): form_class = OradorOrdemDiaForm template_name = 'sessao/oradores_create.html' @@ -1087,7 +1152,8 @@ class OradorOrdemDiaCrud(OradorCrud): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - ultimo_orador = OradorOrdemDia.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = OradorOrdemDia.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1122,9 +1188,9 @@ class BancadaCrud(CrudAux): def recuperar_numero_sessao_view(request): try: - tipo = TipoSessaoPlenaria.objects.get(pk=request.GET.get('tipo', '0')) - sl = request.GET.get('sessao_legislativa', '0') - l = request.GET.get('legislatura', '0') + tipo = TipoSessaoPlenaria.objects.get(pk=request.GET.get('tipo')) + sl = request.GET.get('sessao_legislativa') + l = request.GET.get('legislatura') data = request.GET.get('data_inicio', timezone.now()) if isinstance(data, str): @@ -1134,7 +1200,7 @@ def recuperar_numero_sessao_view(request): data = timezone.now().date() sessao = SessaoPlenaria.objects.filter( - tipo.queryset_tipo_numeracao( + tipo.build_predicados_queryset( l, sl, data )).last() @@ -1833,7 +1899,9 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView): 'decimo_primeiro': self.get_tupla(ordenacao.decimo_primeiro), 'decimo_segundo': self.get_tupla(ordenacao.decimo_segundo), 'decimo_terceiro': self.get_tupla(ordenacao.decimo_terceiro), - 'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto) + 'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto), + 'decimo_quinto': self.get_tupla(ordenacao.decimo_quinto), + 'decimo_sexto': self.get_tupla(ordenacao.decimo_sexto) } return initial @@ -1913,9 +1981,40 @@ def get_presenca_sessao(sessao_plenaria): 'justificativa_ausencia': ausentes_sessao}) +def get_correspondencias(sessao_plenaria, user): + qs = sessao_plenaria.correspondencia_set.all() + + is_anon = user.is_anonymous + is_ostensivo = AppsAppConfig.attr( + 'documentos_administrativos') == 'O' + + if is_anon and not is_ostensivo: + qs = qs.none() + + if is_anon: + qs = qs.filter(documento__restrito=False) + + results = [] + for c in qs: + d = c.documento + results.append( + { + 'id': d.id, + 'tipo': c.get_tipo_display(), + 'epigrafe': str(d), + 'data': d.data.strftime('%d/%m/%Y'), + 'interessado': d.interessado, + 'assunto': d.assunto, + 'restrito': d.restrito, + 'is_ostensivo': is_ostensivo + } + ) + return {'correspondencias': results} + + def get_expedientes(sessao_plenaria): expediente = ExpedienteSessao.objects.filter( - sessao_plenaria_id=sessao_plenaria.id).order_by('tipo__nome') + sessao_plenaria_id=sessao_plenaria.id).order_by('tipo__ordenacao', 'tipo__nome') expedientes = [] for e in expediente: tipo = TipoExpediente.objects.get(id=e.tipo_id) @@ -1929,23 +2028,45 @@ def get_materias_expediente(sessao_plenaria): materias_expediente = [] for m in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria_id=sessao_plenaria.id): tramitacao = '' - for aux_tramitacao in Tramitacao.objects.filter(materia=m.materia).order_by('-data_tramitacao', '-id'): + data_sessao = sessao_plenaria.data_fim if sessao_plenaria.data_fim else sessao_plenaria.data_inicio + for aux_tramitacao in Tramitacao.objects.filter(materia=m.materia, data_tramitacao__lte=data_sessao).order_by('-data_tramitacao', '-id'): if aux_tramitacao.turno: tramitacao = aux_tramitacao break rv = m.registrovotacao_set.filter(materia=m.materia).first() rp = m.retiradapauta_set.filter(materia=m.materia).first() + rl = m.registroleitura_set.filter(materia=m.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada') + resultado = _('Matéria não lida') if m.tipo_votacao == 4 else _( + 'Matéria não votada') resultado_observacao = '' + voto_nominal = [] + if m.tipo_votacao == 2: + for voto in VotoParlamentar.objects.filter(expediente=m.id): + voto_nominal.append( + (voto.parlamentar.nome_completo, voto.voto)) + + voto = RegistroVotacao.objects.filter(expediente=m.id).last() + if voto: + voto_sim = voto.numero_votos_sim + voto_nao = voto.numero_votos_nao + voto_abstencoes = voto.numero_abstencoes + else: + voto_sim = " Não Informado" + voto_nao = " Não Informado" + voto_abstencoes = " Não Informado" + materia_em_tramitacao = m.materia.materiaemtramitacao_set.first() materias_expediente.append({ 'ementa': m.materia.ementa, @@ -1958,7 +2079,12 @@ def get_materias_expediente(sessao_plenaria): 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)], 'numero_protocolo': m.materia.numero_protocolo, 'numero_processo': m.materia.numeracao_set.last(), - 'observacao_materia': m.materia.observacao, + 'tipo_votacao': m.TIPO_VOTACAO_CHOICES[m.tipo_votacao], + 'voto_sim': voto_sim, + 'voto_nao': voto_nao, + 'voto_abstencoes': voto_abstencoes, + 'voto_nominal': voto_nominal, + 'observacao_materia': m.materia.observacao, 'observacao': m.observacao }) @@ -2029,11 +2155,27 @@ def get_assinaturas(sessao_plenaria): return context +def get_assinaturas_presidente(sessao_plenaria): + mesa_dia = get_mesa_diretora(sessao_plenaria)['mesa'] + + presidente_dia = [m['parlamentar'] + for m in mesa_dia if m['cargo'].descricao == 'Presidente'] + presidente_dia = presidente_dia[0] if presidente_dia else '' + + context = {} + assinatura_presidente = [ + {'parlamentar': presidente_dia, 'cargo': "Presidente"}] + context.update({'assinatura_mesa': assinatura_presidente}) + + return context + + def get_materias_ordem_do_dia(sessao_plenaria): materias_ordem = [] for o in OrdemDia.objects.filter(sessao_plenaria_id=sessao_plenaria.id): tramitacao = '' - for aux_tramitacao in Tramitacao.objects.filter(materia=o.materia).order_by('-data_tramitacao', '-id'): + data_sessao = sessao_plenaria.data_fim if sessao_plenaria.data_fim else sessao_plenaria.data_inicio + for aux_tramitacao in Tramitacao.objects.filter(materia=o.materia, data_tramitacao__lte=data_sessao).order_by('-data_tramitacao', '-id'): if aux_tramitacao.turno: tramitacao = aux_tramitacao break @@ -2041,20 +2183,26 @@ def get_materias_ordem_do_dia(sessao_plenaria): # Verificar resultado rv = o.registrovotacao_set.filter(materia=o.materia).first() rp = o.retiradapauta_set.filter(materia=o.materia).first() + rl = o.registroleitura_set.filter(materia=o.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if o.tipo_votacao == 4 else _('Matéria não votada') + resultado = _('Matéria não lida') if o.tipo_votacao == 4 else _( + 'Matéria não votada') resultado_observacao = '' voto_nominal = [] if o.tipo_votacao == 2: for voto in VotoParlamentar.objects.filter(ordem=o.id): - voto_nominal.append((voto.parlamentar.nome_completo, voto.voto)) + voto_nominal.append( + (voto.parlamentar.nome_completo, voto.voto)) voto = RegistroVotacao.objects.filter(ordem=o.id).last() if voto: @@ -2084,7 +2232,7 @@ def get_materias_ordem_do_dia(sessao_plenaria): 'voto_nao': voto_nao, 'voto_abstencoes': voto_abstencoes, 'voto_nominal': voto_nominal, - 'observacao': o.observacao + 'observacao': o.observacao }) return {'materias_ordem': materias_ordem} @@ -2128,10 +2276,15 @@ def get_oradores_explicacoes_pessoais(sessao_plenaria): sigla = '' else: sigla = partido_sigla.partido.sigla + observacao = orador.observacao + url_discurso = orador.url_discurso + oradores = { 'numero_ordem': orador.numero_ordem, 'parlamentar': parlamentar, - 'sgl_partido': sigla + 'sgl_partido': sigla, + 'observacao': observacao, + 'url_discurso': url_discurso } oradores_explicacoes.append(oradores) context = {'oradores_explicacoes': oradores_explicacoes} @@ -2145,6 +2298,13 @@ def get_ocorrencias_da_sessao(sessao_plenaria): return context +def get_consideracoes_finais(sessao_plenaria): + consideracoes_finais = ConsideracoesFinais.objects.filter( + sessao_plenaria_id=sessao_plenaria.id) + context = {'consideracoes_finais': consideracoes_finais} + return context + + class ResumoView(DetailView): template_name = 'sessao/resumo.html' model = SessaoPlenaria @@ -2185,6 +2345,9 @@ class ResumoView(DetailView): # Presença Sessão context.update(get_presenca_sessao(self.object)) # ===================================================================== + # Correspondências + context.update(get_correspondencias(self.object, self.request.user)) + # ===================================================================== # Expedientes context.update(get_expedientes(self.object)) # ===================================================================== @@ -2229,12 +2392,16 @@ class ResumoView(DetailView): # Ocorrẽncias da Sessão context.update(get_ocorrencias_da_sessao(self.object)) # ===================================================================== + # Consideracoes Finais da Sessão + context.update(get_consideracoes_finais(self.object)) + # ===================================================================== # Indica a ordem com a qual o template será renderizado dict_ord_template = { 'cont_mult': 'conteudo_multimidia.html', + 'correspondencia': 'correspondencias.html', 'exp': 'expedientes.html', 'id_basica': 'identificacao_basica.html', - 'lista_p': 'lista_presenca.html', + 'lista_p': 'lista_presenca_sessao.html', 'lista_p_o_d': 'lista_presenca_ordem_dia.html', 'mat_exp': 'materias_expediente.html', 'v_n_mat_exp': 'votos_nominais_materias_expediente.html', @@ -2244,7 +2411,8 @@ class ResumoView(DetailView): 'oradores_exped': 'oradores_expediente.html', 'oradores_o_d': 'oradores_ordemdia.html', 'oradores_expli': 'oradores_explicacoes.html', - 'ocorr_sessao': 'ocorrencias_da_sessao.html' + 'ocorr_sessao': 'ocorrencias_da_sessao.html', + 'cons_finais': 'consideracoes_finais.html' } ordenacao = ResumoOrdenacao.objects.get_or_create()[0] @@ -2263,7 +2431,9 @@ class ResumoView(DetailView): 'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro], 'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo], 'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro], - 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto] + 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto], + 'decimo_quinto_ordenacao': dict_ord_template[ordenacao.decimo_quinto], + 'decimo_sexto_ordenacao': dict_ord_template[ordenacao.decimo_sexto] }) except KeyError as e: self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " @@ -2272,17 +2442,19 @@ class ResumoView(DetailView): 'primeiro_ordenacao': 'identificacao_basica.html', 'segundo_ordenacao': 'conteudo_multimidia.html', 'terceiro_ordenacao': 'mesa_diretora.html', - 'quarto_ordenacao': 'lista_presenca.html', - 'quinto_ordenacao': 'expedientes.html', - 'sexto_ordenacao': 'materias_expediente.html', - 'setimo_ordenacao': 'votos_nominais_materias_expediente.html', - 'oitavo_ordenacao': 'oradores_expediente.html', - 'nono_ordenacao': 'lista_presenca_ordem_dia.html', - 'decimo_ordenacao': 'materias_ordem_dia.html', - 'decimo_primeiro_ordenacao': 'votos_nominais_materias_ordem_dia.html', - 'decimo_segundo_ordenacao': 'oradores_ordemdia.html', - 'decimo_terceiro_ordenacao': 'oradores_explicacoes.html', - 'decimo_quarto_ordenacao': 'ocorrencias_da_sessao.html' + 'quarto_ordenacao': 'lista_presenca_sessao.html', + 'quinto_ordenacao': 'correspondencias.html', + 'sexto_ordenacao': 'expedientes.html', + 'setimo_ordenacao': 'materias_expediente.html', + 'oitavo_ordenacao': 'votos_nominais_materias_expediente.html', + 'nono_ordenacao': 'oradores_expediente.html', + 'decimo_ordenacao': 'lista_presenca_ordem_dia.html', + 'decimo_primeiro_ordenacao': 'materias_ordem_dia.html', + 'decimo_segundo_ordenacao': 'votos_nominais_materias_ordem_dia.html', + 'decimo_terceiro_ordenacao': 'oradores_ordemdia.html', + 'decimo_quarto_ordenacao': 'oradores_explicacoes.html', + 'decimo_quinto_ordenacao': 'ocorrencias_da_sessao.html', + 'decimo_sexto_ordenacao': 'consideracoes_finais.html' }) sessao = context['object'] @@ -2300,7 +2472,6 @@ class ResumoView(DetailView): class ResumoAtaView(ResumoView): template_name = 'sessao/resumo_ata.html' logger = logging.getLogger(__name__) - logger.debug('Gerando Resumo.') class ExpedienteView(FormMixin, DetailView): @@ -2396,7 +2567,7 @@ class ExpedienteView(FormMixin, DetailView): class OcorrenciaSessaoView(FormMixin, DetailView): - template_name = 'sessao/ocorrencia_sessao.html' + template_name = 'sessao/ocorrencias_da_sessao.html' form_class = OcorrenciaSessaoForm model = SessaoPlenaria @@ -2461,6 +2632,74 @@ class OcorrenciaSessaoView(FormMixin, DetailView): return reverse('sapl.sessao:ocorrencia_sessao', kwargs={'pk': pk}) +class ConsideracoesFinaisView(FormMixin, DetailView): + template_name = 'sessao/consideracoes_finais.html' + form_class = OcorrenciaSessaoForm + model = SessaoPlenaria + + logger = logging.getLogger(__name__) + + def get_context_data(self, **kwargs): + context = FormMixin.get_context_data(self, **kwargs) + context['title'] = 'Considerações Finais (%s)' % ( + self.object) + sessao = context['object'] + tipo_sessao = sessao.tipo + if tipo_sessao.nome == "Solene": + context.update( + {'subnav_template_name': 'sessao/subnav-solene.yaml'}) + return context + + def delete(self): + ConsideracoesFinais.objects.filter( + sessao_plenaria=self.object).delete() + + username = self.request.user.username + self.logger.info('user=' + username + '. ConsideracoesFinais com SessaoPlenaria de id={} deletada.' + .format(self.object.id)) + + msg = _('Registro deletado com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + def save(self, form): + conteudo = form.cleaned_data['conteudo'] + + ConsideracoesFinais.objects.filter( + sessao_plenaria=self.object).delete() + + consideracao = ConsideracoesFinais() + consideracao.sessao_plenaria_id = self.object.id + consideracao.conteudo = conteudo + consideracao.save() + + msg = _('Registro salvo com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + username = self.request.user.username + self.logger.info( + 'user=' + username + '. consideracoesFinais de sessao_plenaria_id={} atualizada com sucesso.'.format(self.object.id)) + + @method_decorator(permission_required('sessao.add_consideracoesfinais')) + def post(self, request, *args, **kwargs): + self.object = self.get_object() + form = OcorrenciaSessaoForm(request.POST) + + if not form.is_valid(): + return self.form_invalid(form) + + if request.POST.get('delete'): + self.delete() + + elif request.POST.get('save'): + self.save(form) + + return self.form_valid(form) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('sapl.sessao:consideracoes_finais', kwargs={'pk': pk}) + + class VotacaoEditView(SessaoPermissionMixin): ''' @@ -3415,7 +3654,8 @@ class VotacaoExpedienteView(SessaoPermissionMixin): self.logger.error("user=" + username + ". " + str(e)) return self.form_invalid(form) else: - expediente = ExpedienteMateria.objects.get(id=expediente_id) + expediente = ExpedienteMateria.objects.get( + id=expediente_id) resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) expediente.resultado = resultado.nome @@ -3544,7 +3784,8 @@ class PautaSessaoView(TemplateView): template_name = "sessao/pauta_inexistente.html" def get(self, request, *args, **kwargs): - sessao = SessaoPlenaria.objects.order_by("-data_inicio").first() + sessao = SessaoPlenaria.objects.filter( + publicar_pauta=True).order_by("-data_inicio").first() if not sessao: return self.render_to_response({}) @@ -3566,7 +3807,8 @@ class PautaSessaoDetailView(DetailView): # ===================================================================== # Identificação Básica abertura = self.object.data_inicio.strftime('%d/%m/%Y') - encerramento = self.object.data_fim.strftime('%d/%m/%Y') if self.object.data_fim else "" + encerramento = self.object.data_fim.strftime( + '%d/%m/%Y') if self.object.data_fim else "" hora_inicio = self.object.hora_inicio hora_fim = self.object.hora_fim @@ -3577,6 +3819,7 @@ class PautaSessaoDetailView(DetailView): _(f'Encerramento: {encerramento} - {hora_fim}') ] }) + context.update(get_assinaturas_presidente(self.object)) # ===================================================================== # Matérias Expediente materias_expediente = [] @@ -3592,7 +3835,14 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() + sessao_plenaria = SessaoPlenaria.objects.get(id=self.object.id) + data_sessao = sessao_plenaria.data_inicio.strftime("%Y-%m-%d ") + data_hora_sessao = datetime.strptime( + data_sessao + sessao_plenaria.hora_inicio, "%Y-%m-%d %H:%M") + data_hora_sessao_utc = pytz.timezone(TIME_ZONE).localize( + data_hora_sessao).astimezone(pytz.utc) + ultima_tramitacao = m.materia.tramitacao_set.filter(timestamp__lt=data_hora_sessao_utc).order_by( + '-data_tramitacao', '-id').first() if m.tramitacao is None else m.tramitacao numeracao = m.materia.numeracao_set.first() materias_expediente.append({ @@ -3608,6 +3858,32 @@ class PautaSessaoDetailView(DetailView): 'autor': [str(x.autor) for x in m.materia.autoria_set.select_related('autor').all()] }) context.update({'materia_expediente': materias_expediente}) + + # ===================================================================== + # Correspondencias + correspondencias = [] + qs = self.object.correspondencia_set.all() + is_anon = request.user.is_anonymous + is_ostensivo = AppsAppConfig.attr('documentos_administrativos') == 'O' + if is_anon and not is_ostensivo: + qs = qs.none() + elif is_anon: + qs = qs.filter(documento__restrito=False) + for c in qs: + d = c.documento + correspondencias.append( + { + 'id': d.id, + 'tipo': c.get_tipo_display(), + 'epigrafe': str(d), + 'data': d.data.strftime('%d/%m/%Y'), + 'interessado': d.interessado, + 'assunto': d.assunto, + 'restrito': d.restrito, + 'is_ostensivo': is_ostensivo + } + ) + context.update({'correspondencias': correspondencias}) # ===================================================================== # Expedientes expedientes = [] @@ -3642,7 +3918,14 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() + sessao_plenaria = SessaoPlenaria.objects.get(id=self.object.id) + data_sessao = sessao_plenaria.data_inicio.strftime("%Y-%m-%d ") + data_hora_sessao = datetime.strptime( + data_sessao + sessao_plenaria.hora_inicio, "%Y-%m-%d %H:%M") + data_hora_sessao_utc = pytz.timezone(TIME_ZONE).localize( + data_hora_sessao).astimezone(pytz.utc) + ultima_tramitacao = o.materia.tramitacao_set.filter(timestamp__lt=data_hora_sessao_utc).order_by( + '-data_tramitacao', '-id').first() if o.tramitacao is None else o.tramitacao numeracao = o.materia.numeracao_set.first() materias_ordem.append({ @@ -3703,6 +3986,9 @@ class PesquisarSessaoPlenariaView(FilterView): context['page_range'] = make_pagination( page_obj.number, paginator.num_pages) + context['USE_SOLR'] = settings.USE_SOLR if hasattr( + settings, 'USE_SOLR') else False + return context def get(self, request, *args, **kwargs): @@ -3741,7 +4027,13 @@ class PesquisarPautaSessaoView(PesquisarSessaoPlenariaView): template_name = 'sessao/pauta_sessao_filter.html' logger = logging.getLogger(__name__) - logger.debug('Pesquisa de PautaSessao.') + + def get_filterset_kwargs(self, filterset_class): + kwargs = super().get_filterset_kwargs(filterset_class) + qs = kwargs.get('queryset') + qs = qs.filter(publicar_pauta=True) + kwargs['queryset'] = qs + return kwargs def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -3767,12 +4059,18 @@ def verifica_materia_sessao_plenaria_ajax(request): is_materia_presente = ExpedienteMateria.objects.filter( sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada ).exists() + is_materia_presente_any_sessao = ExpedienteMateria.objects.filter( + materia=id_materia_selecionada + ).exists() elif tipo_materia_sessao == MATERIAS_ORDEMDIA: is_materia_presente = OrdemDia.objects.filter( sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada ).exists() + is_materia_presente_any_sessao = OrdemDia.objects.filter( + materia=id_materia_selecionada + ).exists() - return JsonResponse({ 'is_materia_presente': is_materia_presente }) + return JsonResponse({'is_materia_presente': is_materia_presente, 'is_materia_presente_any_sessao': is_materia_presente_any_sessao}) class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin, @@ -4707,7 +5005,7 @@ class AbstractLeituraView(FormView): page = '' if 'page' in self.request.GET: page = '?page={}'.format(self.request.GET['page']) - + pk = self.kwargs['pk'] if self.expediente: url = reverse('sapl.sessao:expedientemateria_list', @@ -4726,8 +5024,8 @@ class AbstractLeituraView(FormView): 'pk': self.kwargs['pk'], 'iso': 1 if not self.expediente else 0, 'oid': self.kwargs['oid'], - }, - ) + page + }, + ) + page return url @@ -4763,3 +5061,244 @@ def retirar_leitura(request, pk, iso, oid): ordem_expediente.votacao_aberta = False ordem_expediente.save() return HttpResponseRedirect(succ_url) + + +def recuperar_documento(request): + tipo = request.GET['tipo_documento'] + numero = request.GET['numero_documento'] + ano = request.GET['ano_documento'] + + is_ostensivo = AppsAppConfig.attr('documentos_administrativos') == 'O' + + qs = DocumentoAdministrativo.objects.order_by('-id') + qs = qs.filter(tipo_id=tipo, ano=ano, numero=numero) + + is_anon = request.user.is_anonymous + is_restrito = qs.filter(restrito=True).exists() + if is_anon and not is_ostensivo or is_anon and is_restrito or not qs.exists(): + return JsonResponse({'detail': 'Documento administrativo não encontrado.'}) + + d = qs.first() + return JsonResponse( + { + 'id': d.id, + 'epigrafe': str(d), + 'data': d.data.strftime('%d/%m/%Y'), + 'assunto': d.assunto, + 'restrito': d.restrito, + 'is_ostensivo': is_ostensivo + } + ) + + +class CorrespondenciaCrud(MasterDetailCrud): + model = Correspondencia + parent_field = 'sessao_plenaria' + help_topic = 'sessaoplenaria_correspondencia' + public = [RP_LIST, RP_DETAIL] + + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['numero_ordem', + ('documento__data', 'documento__interessado'), 'documento'] + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + s = SessaoPlenaria.objects.get(pk=context['root_pk']) + context.update({ + 'subnav_template_name': 'sessao/subnav-solene.yaml' + if s.tipo.nome == "Solene" else 'sessao/subnav.yaml'}) + + return context + + @property + def verbose_name(self): + return _('Correspondência') + + @property + def verbose_name_plural(self): + return _('Correspondências') + + @property + def title(self): + return self.object.sessao_plenaria + + class ListView(MasterDetailCrud.ListView): + + def get_queryset(self): + qs = super().get_queryset() + + is_anon = self.request.user.is_anonymous + is_ostensivo = AppsAppConfig.attr( + 'documentos_administrativos') == 'O' + + if is_anon and not is_ostensivo: + return qs.none() + + if is_anon: + return qs.filter(documento__restrito=False) + + return qs + + def hook_header_numero_ordem(self, *args, **kwargs): + return force_text(_('Ordem / Tipo')) if not self.request.user.is_anonymous else force_text(_('Tipo')) + + def hook_numero_ordem(self, obj, ss, url): + if not self.request.user.is_anonymous: + return f'{obj.numero_ordem} - {obj.get_tipo_display()}', url + else: + return f'{obj.get_tipo_display()}', url + + class CreateView(MasterDetailCrud.CreateView): + form_class = CorrespondenciaForm + + def get_initial(self): + initial = super().get_initial() + max_numero_ordem = Correspondencia.objects.filter( + sessao_plenaria=self.kwargs['pk']).aggregate( + Max('numero_ordem'))['numero_ordem__max'] + initial['numero_ordem'] = ( + max_numero_ordem if max_numero_ordem else 0) + 1 + + return initial + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = CorrespondenciaForm + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.object.documento + return context + + def get_initial(self): + initial = super().get_initial() + initial['tipo_documento'] = self.object.documento.tipo.id + initial['numero_documento'] = self.object.documento.numero + initial['ano_documento'] = self.object.documento.ano + + return initial + + class DetailView(MasterDetailCrud.DetailView): + + @property + def layout_key(self): + return 'CorrespondenciaDetail' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.object.sessao_plenaria + return context + + def hook_header_sessao_plenaria(self, *args, **kwargs): + return _('Sessão Plenária') + + def hook_documento(self, obj, verbose_name=None, field_display=None): + d = obj.documento + url = reverse( + 'sapl.protocoloadm:documentoadministrativo_detail', + kwargs={'pk': d.id} + ) + return ( + verbose_name, + f'{d}
{d.assunto}' + ) + + def get_object(self, queryset=None): + + obj = super().get_object(queryset=queryset) + + is_anon = self.request.user.is_anonymous + is_ostensivo = AppsAppConfig.attr( + 'documentos_administrativos') == 'O' + + if is_anon and not is_ostensivo: + raise Http404() + + if is_anon and obj.documento.restrito: + raise Http404() + + return obj + + +class CorrespondenciaEmLoteView(PermissionRequiredMixin, FilterView): + filterset_class = CorrespondenciaEmLoteFilterSet + template_name = 'sessao/em_lote/correspondencia.html' + permission_required = ('sessao.add_correspondencia',) + + def get_queryset(self): + qs = super().get_queryset() + return qs.filter(sessao_plenaria_id=self.kwargs['pk']) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + s = SessaoPlenaria.objects.get(pk=self.kwargs['pk']) + + context['root_pk'] = self.kwargs['pk'] + context['title'] = _( + 'Correspondencias em Lote ({})').format(s) + + # Verifica se os campos foram preenchidos + msg = None + if not self.request.GET.get('tipo', " "): + msg = _('Por favor, selecione um tipo de documento administrativo.') + messages.add_message(self.request, messages.ERROR, msg) + + if not self.request.GET.get('data_0', " ") or not self.request.GET.get('data_1', " "): + msg = _('Por favor, preencha as datas.') + messages.add_message(self.request, messages.ERROR, msg) + + if msg: + return context + + qr = self.request.GET.copy() + if not len(qr): + context['object_list'] = [] + else: + context['object_list'] = context['object_list'].order_by( + 'numero', '-ano') + sessao_plenaria = SessaoPlenaria.objects.get( + pk=self.kwargs['pk']) + not_list = [self.kwargs['pk']] + \ + [m for m in sessao_plenaria.correspondencias.values_list( + 'id', flat=True)] + context['object_list'] = context['object_list'].exclude( + pk__in=not_list) + + context['numero_res'] = len(context['object_list']) + + context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' + + context['show_results'] = show_results_filter_set(qr) + + return context + + def post(self, request, *args, **kwargs): + marcados = request.POST.getlist('documento_id') + + if len(marcados) == 0: + msg = _('Nenhum documento foi selecionado.') + messages.add_message(request, messages.ERROR, msg) + return self.get(request, self.kwargs) + + sessao_plenaria = SessaoPlenaria.objects.get(pk=kwargs['pk']) + + max_numero_ordem = Correspondencia.objects.filter( + sessao_plenaria=self.kwargs['pk']).aggregate( + Max('numero_ordem'))['numero_ordem__max'] or 0 + + for documento in DocumentoAdministrativo.objects.filter( + id__in=marcados + ).values_list('id', flat=True): + max_numero_ordem += 1 + c = Correspondencia() + c.numero_ordem = max_numero_ordem + c.sessao_plenaria = sessao_plenaria + c.documento_id = documento + c.tipo = request.POST.get('tipo') + c.save() + + msg = _('Correspondencias adicionadas.') + messages.add_message(request, messages.SUCCESS, msg) + + success_url = reverse('sapl.sessao:correspondencia_list', + kwargs={'pk': kwargs['pk']}) + return HttpResponseRedirect(success_url) diff --git a/sapl/settings.py b/sapl/settings.py index 7bb5a25c9..0ad1389cd 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -22,13 +22,13 @@ from dj_database_url import parse as db_url from easy_thumbnails.conf import Settings as thumbnail_settings from unipath import Path +logging.captureWarnings(True) host = socket.gethostbyname_ex(socket.gethostname())[0] BASE_DIR = Path(__file__).ancestor(1) PROJECT_DIR = Path(__file__).ancestor(2) - # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = config('SECRET_KEY', default='') # SECURITY WARNING: don't run with debug turned on in production! @@ -41,14 +41,13 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.162-RC6' +SAPL_VERSION = '3.1.163-RC6' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' else: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' - # SAPL business apps in dependency order SAPL_APPS = ( 'sapl.audiencia', @@ -81,7 +80,7 @@ INSTALLED_APPS = ( 'crispy_forms', 'floppyforms', - 'drf_yasg', + 'drf_spectacular', 'rest_framework', 'rest_framework.authtoken', 'django_filters', @@ -93,6 +92,7 @@ INSTALLED_APPS = ( 'reversion_compare', 'haystack', + 'django.contrib.postgres', 'speedinfo', 'webpack_loader', @@ -139,7 +139,7 @@ MIDDLEWARE = [ 'whitenoise.middleware.WhiteNoiseMiddleware', ] if DEBUG: - INSTALLED_APPS += ('debug_toolbar', ) + INSTALLED_APPS += ('debug_toolbar',) MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware', ] INTERNAL_IPS = ('127.0.0.1') @@ -160,12 +160,23 @@ REST_FRAMEWORK = { 'rest_framework.authentication.TokenAuthentication', "rest_framework.authentication.SessionAuthentication", ), + + 'DEFAULT_SCHEMA_CLASS': 'sapl.api.core.schema.Schema', + "DEFAULT_PAGINATION_CLASS": "sapl.api.pagination.StandardPagination", + "DEFAULT_FILTER_BACKENDS": ( "rest_framework.filters.SearchFilter", 'django_filters.rest_framework.DjangoFilterBackend', ), } + +SPECTACULAR_SETTINGS = { + 'TITLE': 'Sapl API - docs', + 'DESCRIPTION': 'Sapl API - Docs', + 'VERSION': '1.0.0', +} + CACHES = { 'default': { 'BACKEND': 'speedinfo.backends.proxy_cache', @@ -174,7 +185,6 @@ CACHES = { } } - ROOT_URLCONF = 'sapl.urls' TEMPLATES = [ @@ -201,7 +211,6 @@ TEMPLATES = [ }, ] - WSGI_APPLICATION = 'sapl.wsgi.application' # Database @@ -273,7 +282,7 @@ WEBPACK_LOADER = { 'DEFAULT': { 'CACHE': not DEBUG, 'BUNDLE_DIR_NAME': 'sapl/static/sapl/frontend', - 'STATS_FILE': PROJECT_DIR.child('frontend').child(f'{"dev-" if DEBUG else ""}webpack-stats.json'), + 'STATS_FILE': PROJECT_DIR.child('frontend').child(f'{"dev-" if DEBUG else ""}webpack-stats.json'), 'POLL_INTERVAL': 0.1, 'TIMEOUT': None, 'IGNORE': [r'.+\.hot-update.js', r'.+\.map'] @@ -283,7 +292,6 @@ if DEBUG and not WEBPACK_LOADER['DEFAULT']['STATS_FILE'].exists(): WEBPACK_LOADER['DEFAULT']['STATS_FILE'] = PROJECT_DIR.child( 'frontend').child(f'webpack-stats.json') - STATIC_URL = '/static/' STATIC_ROOT = PROJECT_DIR.child("collected_static") @@ -313,9 +321,21 @@ FORM_RENDERER = 'django.forms.renderers.DjangoTemplates' # suprime texto de ajuda default do django-filter FILTERS_HELP_TEXT_FILTER = False +LOGGING_CONSOLE_VERBOSE = config( + 'LOGGING_CONSOLE_VERBOSE', cast=bool, default=False) + LOGGING = { 'version': 1, 'disable_existing_loggers': False, + + 'filters': { + 'require_debug_false': { + '()': 'django.utils.log.RequireDebugFalse', + }, + 'require_debug_true': { + '()': 'django.utils.log.RequireDebugTrue', + }, + }, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s ' + host + ' %(pathname)s %(name)s:%(funcName)s:%(lineno)d %(message)s' @@ -328,8 +348,15 @@ LOGGING = { 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', + 'filters': ['require_debug_true'], 'formatter': 'simple', }, + 'console_verbose': { + 'level': 'DEBUG', + 'class': 'logging.StreamHandler', + 'filters': ['require_debug_true'], + 'formatter': 'verbose', + }, 'applogfile': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', @@ -341,12 +368,12 @@ LOGGING = { }, 'loggers': { 'sapl': { - 'handlers': ['applogfile'], - 'level': 'INFO', + 'handlers': ['applogfile'] + ['console_verbose'] if LOGGING_CONSOLE_VERBOSE else [], + 'level': 'DEBUG' if LOGGING_CONSOLE_VERBOSE else 'INFO', 'propagate': True, }, 'django': { - 'handlers': ['applogfile'], + 'handlers': ['applogfile'] + ['console_verbose'] if LOGGING_CONSOLE_VERBOSE else [], 'level': 'ERROR', 'propagate': True, }, @@ -358,15 +385,4 @@ PASSWORD_HASHERS = [ 'sapl.hashers.ZopeSHA1PasswordHasher', ] - -def remove_warnings(): - import warnings - warnings.filterwarnings( - 'ignore', module='floppyforms', - message='Unable to import floppyforms.gis' - ) - - LOGOUT_REDIRECT_URL = '/login' - -remove_warnings() diff --git a/sapl/static/sapl/css/relatorio.css b/sapl/static/sapl/css/relatorio.css index 5411b70b5..c3489dfe2 100644 --- a/sapl/static/sapl/css/relatorio.css +++ b/sapl/static/sapl/css/relatorio.css @@ -1,7 +1,7 @@ @page{ margin-top: 5.2cm; size: A4 portrait; -} +} h2.gray-title{ color: gray; @@ -13,11 +13,11 @@ h2.gray-title{ h3 { font-size: 10pt; break-after: avoid-page; - page-break-after: avoid; + page-break-after: avoid; } p, a { - font-size: 10pt; + font-size: 10pt; text-align: justify; text-justify: inter-word; } @@ -68,6 +68,7 @@ table.grayTable { } table.grayTable td, table.grayTable th { border: 1px solid #000000; + padding: 5px; } table.grayTable tbody td { font-size: 10px; @@ -91,4 +92,4 @@ table.grayTable thead th { } table.grayTable thead th:first-child { border-left: none; -} \ No newline at end of file +} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css b/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css new file mode 100644 index 000000000..42bac7c09 --- /dev/null +++ b/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css @@ -0,0 +1,13 @@ +.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit;background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:2px solid #eee;border-radius:10px;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox.tox-tinymce-inline{border:none;box-shadow:none;overflow:initial}.tox.tox-tinymce-inline .tox-editor-container{overflow:initial}.tox.tox-tinymce-inline .tox-editor-header{background-color:#fff;border:2px solid #eee;border-radius:10px;box-shadow:none;overflow:hidden}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #eee;border-radius:6px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#eee;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(0,108,231,.1);border-color:#006ce7;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar,.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#006ce7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#006ce7;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button:before{border-radius:6px;bottom:-1px;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #006ce7,0 0 0 3px rgba(0,108,231,.25);content:"";left:-1px;opacity:0;pointer-events:none;position:absolute;right:-1px;top:-1px}.tox .tox-button[disabled]{background-color:#006ce7;background-image:none;border-color:#006ce7;box-shadow:none;color:hsla(0,0%,100%,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:focus-visible:not(:disabled):before{opacity:1}.tox .tox-button:hover:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-position:0 0;background-repeat:repeat;border-radius:6px;border-style:solid;border-width:1px;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary,.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none}.tox .tox-button--secondary[disabled]{color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled),.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:rgba(34,47,62,.5)}.tox .tox-button--naked:focus:not(:disabled),.tox .tox-button--naked:hover:not(:disabled){background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:rgba(34,47,62,.18);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:6px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:3px;width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg,.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#006ce7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg,.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg,.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:6px;box-shadow:inset 0 0 0 1px #006ce7;padding:3px}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#e3e3e3;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#fcfcfc;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none}.tox .tox-collection__group-heading,.tox .tox-collection__item{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;border-radius:3px;color:#222f3e;display:flex}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--grid .tox-collection__item,.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#cce2fa;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled),.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;flex:1;font-style:normal;font-weight:400;word-break:break-all}.tox .tox-collection__item-accessory,.tox .tox-collection__item-label{display:inline-block;font-size:14px;line-height:24px;text-transform:none}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);height:24px}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret:after{content:"";font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark,.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #e3e3e3;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:28px;margin:6px 1px 5px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid transparent}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid transparent}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(180deg,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{flex-direction:column}.tox .tox-rgb-form,.tox .tox-rgb-form div{display:flex;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-hue-slider,.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-hue-slider,.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:5px 0 6px 11px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px -4px}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:inset 0 0 0 1px hsla(0,0%,50%,.3);transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{fill:#222f3e;height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#cce2fa}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:#222f3e;font-size:12px;line-height:18px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:none}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay:after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient:after{background:linear-gradient(hsla(0,0%,100%,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__avatar img{border-radius:50%;height:36px;-o-object-fit:cover;object-fit:cover;vertical-align:middle;width:36px}.tox .tox-user__name{color:#222f3e;font-size:14px;font-style:normal;font-weight:700;line-height:18px;text-transform:none}.tox:not([dir=rtl]) .tox-user__avatar img,.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name,.tox[dir=rtl] .tox-user__avatar img,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:hsla(0,0%,100%,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog,.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{border-color:#eee;border-radius:10px;border-style:solid;border-width:0;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;max-height:calc(100vh - 16px);width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:-webkit-grab;cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:-webkit-grabbing;cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:20px;margin:0}.tox .tox-dialog__body,.tox .tox-dialog__title{font-style:normal;font-weight:400;line-height:1.3;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;font-size:16px;min-width:0;text-align:left}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(0,108,231,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #006ce7;color:#006ce7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#006ce7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:active,.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px}.tox .tox-dialog__body-content .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:none;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:hsla(0,0%,100%,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #eee}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__iframe.tox-dialog__iframe--opaque{background:#fff}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #eee;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #eee}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{background-color:#fff;border-bottom:none;box-shadow:0 2px 2px -2px rgba(34,47,62,.1),0 8px 8px -4px rgba(34,47,62,.07);padding:4px 0;transition:box-shadow .5s}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header{border-top:1px solid #e3e3e3;box-shadow:none}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:#fff;box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15);padding:4px 0}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header{box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{box-sizing:border-box;max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#006ce7;cursor:pointer}.tox .tox-color-input span:before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 0),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 0),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 0);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:6px;box-sizing:border-box;content:"";height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - 4px)}.tox .tox-form__grid--3col>.tox-form__group{width:calc(33.33333% - 4px)}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - 4px)}.tox .tox-form__controls-h-stack,.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column}.tox .tox-form__group--stretched .tox-textarea{flex:1}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#006ce7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-imagepreview{background-color:#666;height:380px;overflow:hidden;position:relative;width:100%}.tox .tox-imagepreview.tox-imagepreview__loaded{overflow:auto}.tox .tox-imagepreview__container{display:flex;left:100vw;position:absolute;top:100vw}.tox .tox-imagepreview__image{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools .tox-spacer{flex:1}.tox .tox-image-tools .tox-bar{align-items:center;display:flex;height:60px;justify-content:center}.tox .tox-image-tools .tox-imagepreview,.tox .tox-image-tools .tox-imagepreview+.tox-bar{margin-top:8px}.tox .tox-image-tools .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-image-tools .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-image-tools .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-image-tools .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-image-tools .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-image-tools .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-image-tools .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#eee;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px -4px}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(0,108,231,.5);border-color:rgba(0,108,231,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n),.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid transparent;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0 4px}.tox .tox-menu.tox-collection.tox-collection--grid,.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:8px}@media only screen and (min-width:768px){.tox .tox-menu .tox-collection__item-label{overflow-wrap:break-word;word-break:normal}}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height=%2739px%27 viewBox=%270 0 40 39px%27 width=%2740%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Crect x=%270%27 y=%2738px%27 width=%27100%27 height=%271%27 fill=%27transparent%27/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 11px 0 12px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid transparent}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:5px 1px 6px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity .15s ease-in}.tox .tox-notification,.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#517342}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f5cccc;border-color:#f0b3b3;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#77181f}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fff5cc;border-color:#fff0b3;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#7a6e25}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d6e7fb;border-color:#c1dbf9;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#2a64a6}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{align-self:center;color:#222f3e;font-size:14px;grid-column-end:3;grid-column-start:2;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{align-self:center;grid-column-end:2;grid-column-start:1;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{align-self:start;grid-column-end:4;grid-column-start:3;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification .tox-progress-bar{grid-column-end:4;grid-column-start:1;grid-row-end:3;grid-row-start:2;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition:after,.tox .tox-pop--transition:before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop:after,.tox .tox-pop:before{border-style:solid;content:"";display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset:after,.tox .tox-pop.tox-pop--inset:before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom:after,.tox .tox-pop.tox-pop--bottom:before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom:after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom:before{border-color:#eee transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top:after,.tox .tox-pop.tox-pop--top:before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top:after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top:before{border-color:transparent transparent #eee transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left:after,.tox .tox-pop.tox-pop--left:before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left:after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left:before{border-color:transparent #eee transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right:after,.tox .tox-pop.tox-pop--right:before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right:after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right:before{border-color:transparent transparent transparent #eee;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left:after,.tox .tox-pop.tox-pop--align-left:before{left:20px}.tox .tox-pop.tox-pop--align-right:after,.tox .tox-pop.tox-pop--align-right:before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane,.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #eee;border-radius:6px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#006ce7;border:2px solid #0054b4;border-radius:6px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-form__controls-h-stack>.tox-slider:not(:first-of-type){-webkit-margin-start:8px;margin-inline-start:8px}.tox .tox-form__controls-h-stack>.tox-form__group+.tox-slider,.tox .tox-form__controls-h-stack>.tox-slider+.tox-form__group{-webkit-margin-start:32px;margin-inline-start:32px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{-webkit-animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:first-child{-webkit-animation-delay:-.32s;animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes tam-bouncing-dots{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes tam-bouncing-dots{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #e3e3e3;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:14px;font-weight:400;height:25px;overflow:hidden;padding:0 8px;position:relative;text-transform:none}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){color:#222f3e;cursor:pointer}.tox .tox-statusbar__branding svg{fill:rgba(34,47,62,.8);height:1.14em;vertical-align:-.28em;width:3.6em}.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg,.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg{fill:#222f3e}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-bottom:3px;padding-left:1ch;padding-right:3px}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.5)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px 1px 5px 1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:2ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{background-color:hsla(0,0%,100%,.6);bottom:0;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn,.tox .tox-throbber__busy-spinner{align-items:center;display:flex;justify-content:center}.tox .tox-tbtn{background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;margin:6px 1px 5px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus,.tox .tox-tbtn:hover{background:#cce2fa;border:0;box-shadow:none}.tox .tox-tbtn:hover{color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:42px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:56px;width:68px}.tox .tox-tbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke{background:#f7f7f7}.tox .tox-tbtn--bespoke+.tox-tbtn--bespoke{-webkit-margin-start:4px;margin-inline-start:4px}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:6px 1px 5px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:inset 0 0 0 1px #cce2fa}.tox .tox-split-button:focus{background:#cce2fa;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox.tox-platform-touch .tox-split-button .tox-tbtn--select{padding:0 0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background-color:#fff;background-image:repeating-linear-gradient(#e3e3e3 0 1px,transparent 1px 39px);background-position:center top 40px;background-repeat:no-repeat;background-size:calc(100% - 22px) calc(100% - 41px);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0;transform:perspective(1px)}.tox .tox-toolbar-overlord>.tox-toolbar,.tox .tox-toolbar-overlord>.tox-toolbar__overflow,.tox .tox-toolbar-overlord>.tox-toolbar__primary{background-position:center top 0;background-size:calc(100% - 22px) 100%}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord{border-top:1px solid transparent;margin-top:0;padding-bottom:1px;padding-top:1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child,.tox .tox-toolbar-overlord .tox-toolbar__primary{background-position:center top 39px}.tox .tox-editor-header>.tox-toolbar--scrolling,.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;background-position:center top 43px;background-size:calc(100% - 16px) calc(100% - 51px);border:none;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);padding:4px 0}.tox-pop .tox-pop__dialog .tox-toolbar{background-position:center top 43px;background-size:calc(100% - 22px) calc(100% - 51px);padding:4px 0}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 11px 0 12px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid transparent}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid transparent}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:6px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:hsla(0,0%,100%,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-top:8px solid #222f3e;bottom:0}.tox .tox-tooltip--down .tox-tooltip__arrow,.tox .tox-tooltip--up .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;top:0}.tox .tox-tooltip--right .tox-tooltip__arrow{border-left:8px solid #222f3e;right:0}.tox .tox-tooltip--left .tox-tooltip__arrow,.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-top:8px solid transparent;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-right:8px solid #222f3e;left:0}.tox .tox-well{border:1px solid #eee;border-radius:6px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #eee;border-radius:6px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading:before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__body-content .tox-collection,.tox .tox-dialog__content-js{display:flex;flex:1} + +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf) format("truetype")}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands;font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;font-display:block;src:url(/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf) format("truetype")}.fa-regular,.far{font-family:Font Awesome\ 6 Free;font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;font-display:block;src:url(/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf) format("truetype")}.fa-solid,.fas{font-family:Font Awesome\ 6 Free;font-weight:900}@font-face{font-family:Font Awesome\ 5 Brands;font-display:block;font-weight:400;src:url(/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 5 Free;font-display:block;font-weight:900;src:url(/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 5 Free;font-display:block;font-weight:400;src:url(/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2) format("woff2"),url(/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:FontAwesome;font-display:block;src:url(data:font/woff2;base64,d09GMgABAAAAABKoAAoAAAAAJCwAABJgAwEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAATgCJAQgBmADgRwAghzKuSjLUAWJAAcghRUSEVW1HwKgkbJw/n4/vdPyPdnSaGRpRjiTXW8MUi0lS6ZYyia3Gx3Gx9kjzBGnxC4lKXMKxCoA/DXFL7JLYPtfr7P+XAnU6largQUkOwuwrYmwIJDW7AueTdGbshkPY5iAKKOxXwjxczPzQsr1nxPvL2f883OpZ+EHqstITjggOzk349//KfwkJ3LD3LjEKV/a5dIrpIDgRqhyV6KDAYCaAyCFwkxvakLNWLnHYNllGqiISm37dwYQoIQqrHzyHcXN/Iy/Q0X5HwCa/LJ89X0vS7NCGWEBADqA+EHZAbCYFQBKPpsBKHltph8kSfVK4ClACL5NIIcv44/wRaAC4EV4JwCsh3v7OxyAZwIooJYqLYp2/RbOvPryi6EYn/mXJ+DhjwXkeA0BgCfwbQDQAMDR9xIK0P/ZYbHZLB3yNuQg49Az/C1PT4UjsJUc5B7tSFE+PigARMm3swMQzKHuXQeGx2ksZolLAOBDCbU/dT6UUQeAU9CAMtTGZ47Xx3eOnzIejZ87fsH4RePXjN87fv/4w+MfjH82/u34D5PKJJqcmpw/uWhy1eSmyS2T2yaPm7x88q+/HPjLE2YzgPGZ4/XxHeMn1+FquA+X25zcNnn0r8UL/hn+Br7Ld/iT+RP5E/jD+Sa/md/A1/gKP8ZjTtlf2C/Y99l32VfY59hn2WfYu9kL2FFmWu+Fcc70jztCBZgVOMICfJiDQ9CAhwFgMyRa4PhS9Ju9LB04S0kcESfJSNLnilNXogw3pwWjlFKGedihxnXXja776HXxddfF1330OiwoZdNs27BglD5h+rft7Yu2t1e20dxe2d4eMH72xfaNq3AMQMZJ90sjzdJMSCE1crhtUZh0szTrplmcxIlGNCKkkO+sLiS1mqKk6WWXpami1OpJUjUYM+aqrovoutWwuN9czlZXj0E+Vppedmx1NVtumuZfT0LVddfMicwKBbCAiwBaPkctCpM4GURBX0iRpNHGOEuz/iAKkPtfbWM8WFrDVAoZ9AdRnMRrmPZ7dRREI1HQH6RZWkcRKKBvEKqqFm4ucKIZQ2JWyLqhEZ7cjJaqUrKh6xsms/DmhBPNWNeNChkaGuELt6DFzA29qJChphC+sIkWMzd0fcNkFm4ucKJoQ1KpkCFVCV/YRIuZGxDhKh2SyuLA/bsLDkEKkMVRN+SYxFFINBII2U+ztI1ZOlhqI0Ya0epItMCvo+j31lCKLM0GcfIDwzKNS2qGpWkeKmI3oITVLqFUotwNdJ3VL6VUGnBf2/Z8VOQ7KL2kRhUa7EgFPc+uXWKYliHxQMLjUHpJjREqdgMF152qwgAgQ0ff751VGd58HHUJnUQ/3w10zULOFOkN8vTuEfVmx2zPQ0V8EKODoAoNdoXSQNQ/2JHKXHHBbiFARqaG8iywTUhB/nO3bhj6XYam8eVlTjQjberdhkZec3lL17cq3MICLV65AE+2ZTaDNZxhDiFAi2hJfBInocKJWZpvNvoE/7llMlYgY+YWIVsm41jEi+rvb1iGiFa2zIlq3E0qhs4Tbsy+ArgHVWjD2XA13Afg9WRXBI6QzZ4UgU+0qBknceIsZWlf9mRXzKO/VoX4JKZX9Uk3aY/oSTGPGaykwShFji/iHhamW6EUSCkbpaEc3SjWNkZpnpsa9yhl0w9yTLIqZIgbjNKCUlYyPGeUbhZi94IBI0pZcsAmo7Rxdn/HwnpCdDqDGM4CkP1elg6WkvgIhkk8cJaydBWTLWhEI46QQrZm6CeOQqLNoy/FKgZCijVMB0vJJkry4HCL1SpitbqIr36RyRiis/UIGTNfREijv3qEXIcYpVitLs5gsVrFyW5FI3xY5WOsc6IZu8QwCD94Gy04BdAKSVebx6bTR/xRmmmWZoOlJI48xqCWB0Bt5XSfbDQH1sBG1XWRUnb3urNw+FuUGpZlfHPxAJRmsRsJ0HWr0/3SNm4ySjFHz7MXv2lYlkHptw4zsioR/oj+LlWzCWvIohDjXlexJ0Xg+EQ7gslPM83SzImTOMFrCZyP9VFR/3DrNeREq+i+PwdzmI2LK9oEgCBnBS5iAXMArSwaLMkULuTGFzAK+kF/gJJda1ZqCyiCQ1mzgadP37534xk+43hpqdRonDzvxv19rQbzda2DcDXcCdDSSPfLP07iRJai84kI2ZKijkIGQgoZ+FJk6Rqma5hmDJQk0g34l411FFnaxngN0zaGkUY00m2R8f9Moo7pIE66CmAYrpwYDk+shCHGfxemK9Q6cGIekXOk1DygK2ROl8jKzD9q85AoKtcMY47pRGfc5swoqer6YBDgkw6aqlq2NWdewQNF5ajRv7rckcSh8wsuMZzEJFpJP1CpsjI7pPuszJD4ZWLTklom5YpZsQPfc/wyLiR5y1ArFavnlHXGlo9BGQBAARxBAAehAwMAFLIrZKARjTTjJE4GaZZmTRIF/YEUsitkkD2yGjQHTfyBzyxEi/nTzdhO4p49GtmvOaZjhBngiMuBINJ63mjs5YAiPcTsV/gF3IPzAFqBRsSMJCFSEO0IoiTp9+qYJUTDEOSOUafrc5RZorIQ0btB2khklkoR4BeUYEcY8sN1wWZxN1DQUzXLqK2vi0VpsBPQMtL5dSCbdwSi59q14bDGveBpOwLR9ezauSXgYCjR2oEXOxUuo1pG3QphtfVhjZGKp3fySmMdXIrj0IeL4A4AL+336ooIfK5oUdhW4sHSmiLTfrcn2GiVS5KhJDJLVFmrUKr0DHO0/q2oqsJiVY1ZbLikXE7Yh7nns4ix6TMOnwKfHN4zd8/cdOVEUNL1UnCCkG2NeMvyPmpZ1/Ez9cpasBZTxiLme3z6jMgB4JOP3TN3z9xKtei+gzMIlnW9AWTLOaTkOAIfDkMPVuBMGMJ1AGMq9IWcD+I06w/ipDVPPR1Xh6BGLQT9RIGeFAXqwLjvREIKOSDcIo6QQqaZeu3c/9CzXaXsKorb8RC9Mkcsc+aV05xHG2MxHaHrVvNUIcciOEKOrlvd79QbiI1653jEYw/ROwc9V1FcDztl+0XoutUZ1AdPZlqNS1ElL/LMYrldodCpN0zP7BrvOxxHYR2uhfvgyRxQCEmX99Nijo8cuvQYJ1maxBzDbtw1Lkrulgr4k17WLYpFSC79Ss1kjHJpIFDKKJnWWdO9oJIj0kK1BabqJNAmFso2jz3qihrCGaXTPRvIwouDCvFeguh6BpGqA6j6YMJcuRpshsQHYQDgNWUr30ZdhmuSQ6I2B3ESc7QYIrM0GzQJXa2BuVLrbTUWL6bKLt3NGrAx1JAff0ipZRlGcT4nZZoFqJKSDUkK+3VHYjgCgE3lBWR8vFKYdOOBLgoKbNys6TQdHM08mNVcPidVe+QX7U0LzHFmak5HVddBdJ0qjmatqkG0V9zEfFoAlMCeFbiFk2e0oP3EnhM5fewoQd4R05lRZWt/Hx+Me3pbgg9NUEDOvqgsYAG1B5FWLC+FKCCaGBkiztI1Jc1EHUmvjsn3YxsdfMKruVo2HjqomJb57OeYponVh4yyyl5zDuGcnHM9Ue/xFXrVYyw1xZZUGDMefB2junb++ZpO2eseNBhT5PMtROv5vy8tP86kVzqlyv3T7wECzAossIA2gNcXUshAI2wLRCsYzWjd8kSTaUKcxIRcH7xoTCLZ2J2prSwsnjwahq6mli3TNDXD8+ZCKRABXbcKC4Uc75xcXFBQiJZlmppaLpuBaaGQYcemc8u3oEYiZipEYTJUolVMMyeRvNi8T42nCB+ikOEYVd/iOHnj4XELp2PjBZk0ETaixaw7hTazt2zIKk6ctBwmpJCOPC+KK8tiJfKdIZTi7G1CFkPb3lkxHT/BZjlEWOAe+HB8pSAlQebX0HvYX0MkD8XF8uW0iAvz+FXClsLl/KrjTE+LpzJE41FChSTTn4q0zo5f5SAwtq46ZgpO6ml/I+g4bhsJ8s2oHgaGZtRRctwgHmgwg80N7Ilp0ojCiGbcmhFWtA6zyP8yZaysa/tXRKlUfavQdNO0pZzkDNPZnM0X+KPLPu2jvJCf3VScm1rhinNnjqKOHVtaYqe5LaXQdHOcKRbJth2wy2nbnCsgBXYwoT/SGBVs4H48DLhOUG88m0K/6a9VjAzlhAiTC0uYsUz5gBkcAmyvyCj013zTRQjyvmfDYLiOzs4EEXB8DOdWekIpcQ8nYUmbsyRbPaGk4ET83h8GNyjGiy9e1jhXcb3zYv52UT+4KfJ5sZlOpaSUkrF7WVpKJVOp9AuzWc8RYkvYNuckKlQttWX67YrFjbW3aO/6bD5P+qLiPIZm3MlMPzzOZse2lIaRSkmlhJFmhpT2Ec/zM35SdjDRNmiMS7CKy3AjBsCq5YwFay7F5PnksudNO1Sk1soqoy9YqngE1jHasOsTPKI456bFzzydIvGUyTm3PTD95BdhfCh5OqYwy8k/jdtSTNDaU/BBqJCinorp3O6isIz8ZtEtne6nR5H865D5Te+XHD9SA1cvoQ37FZIBAf1N9ZKnIXCw7NMJ5eYaKxHLXELm5/2kw2vxTUxojDKehWtxGojK6y8Xf44wEWnBu0jChYiczcMUXMeNHNdga34Y5XWdHWOG6wRFYzSC/B8q0eulbWlddFO+yTS5aUkza5eVIpqdXV2dnaVMZqbsaJrjaJozQyqb9aSeMni+m9gjVOwlVsdLEHQcfN/klsWZmZOVfGF2dXa2gfCFoiP6ddvlaNOvbOUEN3OGlHauRpzbZDTYnP8oR4Tlg6+Qp+8pyCRaU8GyyHNOr67vrpIMwj4spOLhut2WQbZiD2D1Vq4iU9ctMqXXMdd7I0VCmD2LyVLvnzTI3KMIb03g2RpoA/PAqs8xx5JbFDyWqzQgZapzcl/pgUK/FOpfOQOfa5pS2V9rhVHJq29UYPSvoZVReu0qfVHZZT9EoSZCLWoaLZJ18Sf0Ehpj06fqv0hRKNSqZqgYBW0RLPtIx3WYq46QZ6pucCpKreinaEZhUN9SnO/b0krphmG/9uDsRnNlJUWCK5ubREYY3rKlOHehsx3eCpwrl+kjVcq6Ydi2tFL+4t3Zx6hcbpk2N0lwZd4SBBrn6j0MvIi1tGVCIwL9bIl8ZV6N6qOBZ+I6IB9GgbNMyriupPBUjVjJgt3iFh3XzV+7wYJo/FfzwnMKnLlq2alzNGyL9eilOojLga2bmsoQZZS2paksUVZpHcpk6Hs7H8oR5RR3KaYGmssu25xkiDIB5McYbEIHNEYORcxiESWPZFSlVM4QM33ga+RWIuYHzHcrUd4vMfpfz5TTA8vc4davmBDsV5K/8NlvuPnFtzxxy4tufMOJF72f7n7//x61rEez6h+m+Q+V3X7kkdu3t29/5JHpFz75SSAFOvilBrqIFTRxFe4EyGB1g9UN5rgGM5jhOkEYhZEThJF1X33NZ5ZHfQwWpNlNuLa9Xi6TFslCQdc1Ld2orOQb7Rxk7upeSkCDtvRSKbpNm3Nt8cV5F4Iu0vxCrda+KfLnFzQ9naZcLpun+YVatd2u1RYW6E9Fd4HgXC1qUfQjy3vgWXgV/kbX0WP0bc3UHtP+o9+rf0b/eep5qW+m2+mvGvczyR5m72K/M0PzZebnzL/wDf4O0RBftXpSk1X5oHyd/IR9zH7C/qG6E4BDCgQAAOZwEYT1v24VwU9WIzQwHItTOo7iZ9lTcFQaDcSUgTI+v07gGKeKD1hwcW8elcUimSTXhjUdlOIAmtpOnCLcQK+nNCh6IaXjbu0X2VNwVBqnNJ0ycJX2OCVwL61SFqr0PSqLtt66m3JQ9MI7e11vv3vSH3nn41HiDePhhXOdXa+/HQ+8UTfxOoNTXhLH5872k+rt3Z0L5zq718SDxDux3x3F57veXtO7Mj4/7CT9k/1z/eS53u3dnQvnOru9JBmO2rXa6XiQdPbhv4Pqdnz+7u7uqB8PvChcr15aX28F9UbLO1QrAvtMbS+s1quNw1fGw+fu9nd6iXdo+7DXfsA18SApWHyviUiBHceWHG/LfPAbijvRQxce9tHFSfgYwcN5xBghgYchYgxxAefQwS489LGNGAN4GKELdWYdDHAKHhLEiHEOZ9FHgipuRxc7pck1JcMSeDjRWtgIMc63Ld5DEx6uTNMeooMEfZxEH+fqqum58M7D95AgwRAjtFFDDadrV3dOpIqrtfO4G13sYoQ+5j/zCCHWUcWlqGMdLQSoo4EWPBzC06SmwdrwEKKKOqpo4DD+xkM8F7voYwfHQ+fhELZxGF7faZoo5LRxD01Q4988Ttfsx/uURaMFPMX8DwMDAAAA) format("woff2"),url(/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} + +/*! jQuery UI - v1.12.0 - 2016-07-08 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #aed0ea}.ui-widget-content{border:1px solid #ddd;background:#f2f5f7 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAIpJREFUKM/tz6ENwkAUgOE/DYYJUA0KZkFUIetxqKJZgQUYguJBIQDVAQhhAESTtnf33r0mMAGakKA+/RHPZv01AYA/n2jxSMKeExXqLO9n6CI+rUYusbANkmptE8JKl/GIP8gjZviBzPWGy0OlBd0uZDqkG/u7lMlrzZaSdupTGdE0zoXw7eZP8Qbj00P2LE1L9gAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMDFydjoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDBAL86GAAAAAElFTkSuQmCC) 50% top repeat-x;color:#362b36}.ui-widget-content a{color:#362b36}.ui-widget-header{border:1px solid #aed0ea;background:#deedf7 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAMFJREFUKM/lkD1qwgAYQB8fuHQpgpBO7eDgUByFdO0RuiX0Dj1DzqD0BmZyd9RFTKd2Kc2UQEUL5qdtSJOYCJ+Dh1Do9JYHDx7ZrFrsXwQA/g0CEipRG5cPwdYxvqjFGJ/vVTnYG6R1MW1C0nZhNq6ooQ4e8fVfr+kTdfLnOmF7kbfqiWihT8z5KrJVfcsmzh52kei7PjIVNXDwjsqMz/XPTfUrmDriTfQKh6WodazfMeSV8D7tVpcEQZKU5akvnTkO8y9eZNHr5WMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #aed0ea;background:#d7ebf9 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAJhJREFUSMftzyEOggAYBeD33mZz02pwYxo1GDQT5BBsJr0RBzA4TkAyOzwBBTcx6BwGHEESSPAUTsOfvvzhHr38dy4AAAzDMIxvgzQtirrGyX9Om644QoCpuOQOM2RO2Wu2uMTltcmkkAld6cgrPDHmDZ4UMoGLfF4NWgePfXVuV9KGERbimAEmwgFrDEUHfXT+Im0YhvFDPkIzLk7A/EzKAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwMXJ2OgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMEAvzoYAAAAASUVORK5CYII=) 50% 50% repeat-x;font-weight:700;color:#2779aa}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#2779aa;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #74b2e2;background:#e4f1fb url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAJxJREFUSMftz60KwmAYhuHnedEkiFGwujC2uGTRYjAurAp6Ip6BmCyLO4gVk8XgYTiTf3yD/cD2gcFjEA1vutoNN16Hamf3AgCAoiiK8m2QZcY0Da5h7rY9YYENxsIBt3CFHmL4wjVTBLjNi1n7wP1Ydq2D57Q826VwxRQBjNQTe0K+qC+2EnqM6X9ijjBhhKFghD46fzGtKIryQ95Jgy/jpWK+ggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMDFydjoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDBAL86GAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:700;color:#0070a3}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#0070a3;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #2694e8;background:#3baae3 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAI5JREFUSMdjSJq6e/fLJiYGBgYGBoZRapQapUapUYrm1M1l79//SmRi7GZczWjBxFLJ2MRQz8Ryh2kNYx8Tix3TdYbZTKwsTLqM2yHUDibWdOYIhqNMbOlM4YzH0ORYFjIxMaxkYrVjus44m6G4/7DE6/dMTIGMjIyhTIzJDNoMfIPD06PUKDVKjVIDRwEAMuIhVFSEkAcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:700;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#2694e8;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #f9dd34;background:#ffef8f url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAHNJREFUKM/lkM0Jg2AQBYdXyJc+tI/EJnKyEFvwbkuBCHoQ9CDiMfA8rCGCBSSQ0zD72B8WeynquwDgj/CiEzC5FDBSfswDNwG9s0AuoAtrnQIXAS1JwPNdTALv2cM69+3DBq4HG+OIWOvZlYCV5vtf+mlsEsU1wS9R7TYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% top repeat-x;color:#363636}.ui-state-checked{border:1px solid #f9dd34;background:#ffef8f}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#cd0a0a;color:#fff}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEVyp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp8/Wi14BAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-button .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEU9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLP5vvMoAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,.ui-state-default .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOjN4uvkAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-button:active .ui-icon,.ui-state-active .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQffChMXNR3//v8QAAAYOklEQVR42u1dbYxdx1l+jhMpKsHBfLkmcbKSfzQBIUu+SyQUhGQUoWt+BBWVwLUjPhqjdarSqgjIbqy7P8Kadu+CQlIXaV05kD83u1oXpbg/WFObVKYxFu6uA6U4pWratUO35k9p/pAi4Zcf52s+3vk459y79+7OPKPde+95Z+bMzPucOWfed2ZOQogIGbtGXYCI0SISIHBEAsjogNAZdSG2EpEAIjpYArAUEgUGTYDRXz8d1H2uTdV/FCYK5DmPvo6DBImhQ0QdgiGUgDVOxyKHJX2etmOMYz83rGndNbCfvzzqruM2CnoVzZXzIUDH2Tzm9Hlacw4uArjO7lMDd87uOm6jUKX5qyihXnofCsKRd5Oy++bsquM2CnoVmygQzuvXpwepfwX79ABuJXMtEEAP4BvqPwPU74D9c3A/A8CR1qTeAJ4BBhFG3zSdBgSz34I6BQFGXccBhiT6AiR0sISjWB51MbYOkQCBI1oCA0ckQOCIBAgckQCBIxIgcEQCBI5IgMAR5wOoaUdd/q2GZux0edPIaW23G0rNploZfAyXEbbJfACXLzIv+44yBVdvADcB3Dm4crf5E22N3/EqXV1vZV72HeoMcjd/lSaul9pvSorbXVyXnvZAAgF2yGwAdT6Ar8e+XhO7+w/f+QAda9nq3qAC7wH8Q6dmE/vQyx7cObjo6XMDCfYZYBBh9I3TdD7AqMu/xSG6gwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHJEAgePuURdg7EBIRnjuHPXLULH8dzdLPpRGGGUJyFmCVEl1yuhOOYKay7cAgshCrgqZAdlZzWqSqqh7Dlf5U9Un1lzc5Kib2q8GPrEqpN0lRXBVP/GogDl94tFAPlUwX6E+vYetDonyWe0cucTdAvYa2glEjtSA6yKWyi/eAnyrTwaJu5GSAXTwNgW476JNSkBF6oSVimfnzpJfXuYykEVuz7usnf0yEEuZAFUfAsnj6nHF8mFnvWvcT7mJR+42BfnkW7cFbJegT97uNtDkVYaBZRfnE4uX2btAN4Ptebi6WL8u2nUFuc7u8xBZF26Ku+VSCVR3cOijgO19/hrDyDgfIHBES2DgiAQIHJEAgSMSIHBEAgSOSIDAEQkQOEQCdEAY9fJol61wuPBpAR+PaL104nqNuqieVloV47N4su7yLr8UfjnXW/vjt6zMtwX49HmMjneqqnXoWFvAvjBOLmXKFq153MV0xWlSfZ9YbgXULbdPC5hiiKsSORL5tK3fXu2dBgTQ1k7Wbf7qG0b7UaA+/dxbuPuowC8PTgE69OZv0gPJOZMzBk8ALY7sCyC4fX0A73RU7z1JhbR+JSjnIpj88a7z29K7zu9Krd97zaV0efzhlHLp01feADDsdqzO5UiAqqOAsgHqeKwSIQ8+d5I+beevg7Lc9R6y7Gc/mknzGUdHK7dBUrirE4PUljOwnElsm12rpax0C6hyH+/UyMP1EObTgbpLZ87H3oX63cHzuO6dlureguwPgfa0cinTK63i6f1O5Noiwq7EJqmrNEU1Avo8QfjTry4BfHKulEecDyAif3FcfF9ARCiIpuDAEQkQOCIBAkckQOCIBAgckQCDxjYbVqnzAVywecx9qt7JDVBjiuals61OGse6K3Ywu93IZivzsT7l5zDZ7HwtjU0tca6cqYZUtsXVSz+CUBqCRGaabGE2f5W4NNKW3uaJ83Hz2D1yrhzSGGTw1NkWuIrntaevk/vIwD8DLBk6ebu/qrw1LNWYWJYuy3R1krY9DMjb15dUOMqdlzu/e2XzWKLsAVI7eNmEtlX4nKz0Rmc5V0ibS/2WQLsXb9ffQsKmRlcP4Z+zbY+ALUbZAywLfuY6RVs2+qnzBnB5+937Z9iRCD0I30PIn1yMwVzF3Bnk3mNM1C/fApaLQnEdeNrBE2wTEmyTFo4y3/RGAuzXrx1JUQJ+SoW96cubkHl3kTxmUlEqxqg7oWY4qPCcbZusIcezvTGk2X78Pr5uqinzeT4nxyhiEDMGtjREd7CMsematwqRAIEjmoIDRyRA4IgECByRAIEjEiBwjB8B2g3tgRGVoBLAz5dtc9mQl9QUo43VLRmJj3ofhLFBte3ifbaTTnCkQXlWkZOkbY1Xd8v6EnU8ljsQMgHsVmq7tTu/qttYZSmQX/MJxKWJJdKu/0gRY9WQPv9Wb1N1sfdZQoS0QYT632Qtt813aRNRm/j183LOxMrTHExlIGsJ2fXvReho8m1mtR+uL8BvdbudSelcmyO4YJWbfPau37ajukSNJ852yOsb1BpAE8QpYQl0NakwT2XwmxBhnlSmEsg0JYMvoWv7BJngCSiqP0X5wgixyUwKLidG+bx2gYPPbvZHcAGkPUfks4n4Xfnl8vi8NiICQLVRAAmjAH7GjW0A6JIfKaSrABLtRpIIZ+ceVu3zicSdMaLyBfi/MEKeFVt+HzTMTxHN0MFSVL2OcZsPMCz1RxgwbgSI2GKMny8gYksRCRA4IgECRyRA4NhJBOgWlobuUPI/gFYWDoy6qgMEgUCLmXNkgxZruxUuNXSyEF2THDXdium7ztTdmjmn4QCBpomIaDr7ZSsBf46pTDplOIdZ7koJOqsE+xkKLeWNf5561CuIoKqxPG4mSLn6fcW6sshEkr6iwr5FvXoTu+RyCV1NwzV1i6aJqEUtIpqmlqUF+HPosLWQv0SMseJdxyJGagcgLAAA/kHqHC4I3cQXcAPAj+BEcewmJpSuJLcSngPwJOvKmSy+rzHumq/g54Tfr+IpSQokOFbI1HXGhFnMCb9nMWdcv2tyZk1Kv9UStrCGSewH8LP4U0xinckhwSYA4KdQb4VRWituDbVZIsY4V7Q7d/4pnJF+S28Pz1W/qkbIcAPAdXwPr1mK38o+nzTGuM+S+lXckAig4gxEV/IZgYopTgEFBWZxSqKD2IDmhrwPrxfff4ktw368HwnutZTy9y0y1SPJy/kXUCdMLtUolqv/z/FH4uHSG7jqyOA6vqfFkYvwE5kvj5j5PCl+3JL/MXzFev7LKF3GZ3BZI0BJgVmcYnNoK5966X7dWtIZ/C0+DeDjmGHTfxfAt4TvOmYxV/xtLXL1v4z3yRS42zMDTv0qfgwAsAt3jDH2AADOsjJXD5BTADiDy8Y4CWAcAzyqfKq4D3+VfXuakT6AHoB5ADPo4QntFqB6UusuM3XvkuCK8Qp+VzuWqv8c3gfgowCQ3fS9CcD1EGoF9zjz+KHi26Qmc/UAwIFM8ZdxAG8z8i7exiKAy+ga+gA7fhgfL76p6GAC5zGFGQB3gTCDey0TSmZxilXShPBnQgsuuGL8DkOAEzgD4Emcy56jFjCdCvwJoELn973ONJ/OPicZmasHSJWeUuBtZiTeleRcL7Bf+eSaCJhBep3Lt5gJzAP4bPF73nAbSDHXoItfaxiDn9PxWSCjACCoH8UwsO0YRrmHMJck+aXK42zVDjDYYWA+SCo/TaXosqNtDtWGuW5531h7nxhiDfn880FgTzw6Pu7gLoCfFn7fqNWNNwUBOCFc6YPPPcVopqZM4Yx09SPOBwgeO8kXEFEDkQCBIxIgcEQCBI5IgJ2F1wV/hhdkArRBcC3MNoMKR0bToUUX3KSOWWH4OqtJF5Vh76IiX1HkK8x5pwT51BDkAPAlR/v00KvdboezYEcfffSLX0KbtImoS11K1/fKYYNamRnhIk3TImsGuZYZIlbomiK3e7LV0GXjzwqebCKiWdYQkgc9vduQk8aZpuls4sfg5Xmc1KijSnqFQa6tmmsy7RCtELLatZm8bxER0S1r6+bGpD4dJ4ivjm1nVjBiKUDCyyJ87GD88nCiv8n+zhsbqEvpBJSuIX/Ty1ddCiYC/SeBbhPoHTItMJ/OJNMWOazyw9SiwwZ53vx96lduwRwrrHxFS73Cnn+RiPrULi2Jojs4d1LOYbbWRi3ick7ec/gn+DY2cB2bWMN32BhdzGE/nsE7Q7ADfgv345vYi2/iAXzbGCu1pc9Y5ZB96hLexbrRXdPPXDHHWOkRqdVM+6zwsy1+0uMIAPwKgN34bQBAGxdQ9ADXtDl11yr3AGIHZ+oBzhPRBSJ6nb1CukTs1T+oHuDfCfQNAv0rtZjzf8zRA+RyWOXmHqAvlU69BfSEUqfoVarflyXZl5kWPE7H9bOrp+hmRNCbfxAEeJ4+TK/QM9lfFfXLs+JMBEj3J2ln90tV/jUi+rfs74Ymz+tnuoeX8pMOOZ++vPem4ZmKBFDddfozgE07Iv2k42oG4qcsa9EioeBQj4lhJ4Dur6uifrV6dgLw8qfpG/Qh2qAP0X/QJxT5Ma10UwOVl+qHMcgqblvlJumt7EFQlfcpv/dv1CUAHCHfI6jtGZ9XsHnK9qzSwNwooF1UnSeImYAp/tBRuiZyONTv43LPKcCNAF6gO9mD3wrdoRcYApynvp7W9/RuhcrPofwzqG3Ssl39KgVmNalrWrddTmR/lUVTed+pftcwsKRA25C6XAtwVktt7IF83cHTDcwTEVXQA2SP/YCQmn6eUg/H+QCBI/oCAkckQOCIBAgckQCBIzwCpG5jbkzTK8ZGH/PIZzd7lLDdnqqFMeF0MUaedoxYXcaMuqmbhDYRrWff142j5YtFHdWR8p8R0Rk6Qx+hjxDRJ7SUaeucz37tFkJ65CR9hoiep+eJ6DN0UktfWkI5a4e8MJ9IXYivy10x9IX8rJ1HruAGLdIivWehgEu9wyRAPyvXNGtUSbGeqZ8vRW4OOc6aun6+CD9DnC10nRazEvQZCrnseLmXok28Gcx+pEzdNuST2hq7mTeH241dTFE4q8QIG8XV855RiaMkQG7L4s+Rq7381HO4aFER0V7aT7tpN+2nvaxCFglE1Ct8+rbriyeAeQ8RorSP6BZtrBMA0iwKnQBpriuFTZYjwG/RsSxkcvEZ4O8ArOMQruOV2vcS/XvlO1ERVKQ++mPCdxEtXAcAHAIAXGd88m08bi3D/+D7AIDv44OM9ApOgAB0cAzq9hUpJoXAY87wPS3/HIA5tDCJSXZGQRtPAFgEcJzN3b7dd4JVzGA/JvAgHsSD+WF5cWiq/pY2nw4QlzXV2ylYVWj1CSc9HMzU/yr7ENfCulX9q9K6/AVF/jW8WywIPYMrWvpfQA/As3gIvPqB+/Bu5TqVeKD4PA/gV5kYfwwgXbR6AsA7mpxQ0kq/fLoAvgPg/3AX9uOTuJQeFt8X8APckzXdBh5y7LgPp1x/H0AVKXeGacwX32cYCvwLDhbf3yk5DkBVP6fAafym8Osv8bLl7BzB0q0x/hcA8C67Bc4RaZ6V+oKL35OOE15W5PJ8oet4Tpm1lW7hn06WnWO28yecBLABIPULZNLyFjCDe/AD/DMWsYGHmC623Gid33JdPMrFSJRgl3JnmM+UV34Xkas/vRHsxy1Jmqt/AUeQsNdvD5/DoSzo6gfmcR1fAHAJwCFmhyDgAv4eX8Ju3MNOx5p1bLCxB3twFnvwo9l/Ow4xx9KL6CAOgr+gJnAXJjCBCQAnldt18WToGgaO+yjgFuVzY7lHpJ7jDOu0QivsdCpkqYl6mct2XZObf6lHp7QYrmEg0XEt8KOAlWyvMP0hcLEIRM/powC/MEoC2EObygnRt0i1A+jP3ebS8+VPRxfvUZvyiRm7tbRL9Dx1LK1EBJrKghqjlY0C0v/qNnRbYAeIAfQEXaWr9IRB2qfzBa3atJuhmG0YCPLZSnLLQ5wPEDjC8wVESIgECByRAIFDJcAiawUEgNN4s3hyeBOnR13wiMFAfgh8Cw8D+Doe0eK9ptnHP49fG3XhI5pD7AFewsMAgIfxkhLrdKH+0kL3QbYX2ARlO2Zz+O+sB3FPMR/HSeibwuhps3l2YwJhTPgWUeZnfksZLa5Jo9sca8y40m4Iso+Sy9BjrXbu5VWuGC450WYxPt9sUP5tFMqvL0kKfslQcZexw908bWeMfJmkTIFm+2jm8hepRS8ac/Cr3Q4lwFtERQ+g9gFyxW3NsEKmZWGi+jcYSa/45NTvVg4yxbczInDyF7NvL1py2AyTAD1SISrAnwB85y3ndJuZr5enM6nflwClpZ6T5xZ2fXeAEmYCdIlokzZpk8bGkDs4AnAKrkMAV8iVpKs/VbtJ/ePQA2wK598k7IwgK6C8BchquMoS4CqToasHMAWxB+LTj/4ZwE3BbRi4qumVfIGVvsBk6Gocs9R29csKHt0oII0zcqUNngCbrILFJljSpEtGNbqeAUyyur3H1oYdRgB/d/A8fhGPZd+v4B+tb8zYyaj7LqAxRZwPEDiiNzBwRAIEjkiAwBEJEDgiAQJHJICKHqi2dBtCJABhwzERgzCoV0KMCtdwzSrv4dna0u0JxUpHtGGxxoneAFWSp2sbc+jRRuYI6tGGJQcQsuVNsnxFyqmOu7bnMDb3PFLnLTD+NkuvwDefSYU2Aojp9GbuFWlS5blyMBPAlN6HADap3dGjS3eISdhUSX5ah4sAqQrL37IUhEJ5rhxMBDCndxOgqorNUm7x5TYN/EPgTSzgN2rcT25iARNIFycvCDbzBAvZ0Qks4KZHDia40m8NdpI3QGP5Tn4GcIXgnwE2HNUyE2A7BPIgSK+BdFuG6A1U0cOzli7eLt2GiAQIHNESGDgiAQJHJEDgiAQIHJEAgUMlAAkvFo8IACUB2vg8AGAvnkabjZtaDi4apBHbEjkB2lgtth99GKuskmewgCt4HKse77VTzQsrigFqZYvlESZkLbZORP9EIKIvUvpyBJPxsE0b5H6niOvNo9x++cOUx2AIuVKJbhMI9EXqEeg2md5OvU7HKXXKto2Z8jvVtugwtbL/h7UF2kSHibIYaeDlZJW3ir/WTrPZDyuk7wt4FMBXAQC/DAD4Kh7Ho7igdBYzOIhjOAtgCqv4qCa34xEA9wMA9mEX9mnyfQD2YR92AbjDjE7uz/4eAXCHyX8fgA9k8g/E0Y0vUl9AG6v4L7y/OHobe3GEVXAbq7iJCazjEOsUoWynen23+j+Qfv8FZnFqC+URJmRdwQaVi6b7xG/ikrpCF4noOC0aZ93wtwD53eL6fKNhy2MwhPxL+q6A23SRbhMZHvLEyRA9hgBEZgLEMKahdAdP48PZPoFfx1+P5T59EUNAnA8QOOLTcuCIBAgckQCBIxIgcJQEcL0PoKl8Hm8U8jeY9/4NWz7s+o1aXhdZnq+Ritek8WJTuWubuWHLh12/Uctrh/TjNHE4XURrKndtNDls+bDrN2p5g5DeAh4rOgTxla2PMd9EqPLl4tWyy8b0iSW9K381h2Gkd9XfVX57+u9KL8U1pbfJxVLwta6I1BBUWoMS7Zcs5woivk98CcBR6cjg8vdJ785fjFE1fcLkBUt+fPoyF11+DgDwpLH98qPP4ZMYzCJVAnE7/MpH/OT5fbe8H6tyUn5XzZ/PDZ6/3fmTNf/m7QPts5o8f+Pvc8wZa4a7B8ChEneE/3W46OoR7BCXo9fJIRE+66Qnj7S6o1zG5yyyk/gUPoX86h8QBn0L6AN4CvVvAc27eHP59BzqdeG2/G3lKxVPteQpBUT1D+wW4HofQCkXocqXKHcZLyly8aVTJdYYOTnlqJH+Kpueq5+r/mL5q6aXby/V5flNQJc3HgVckfiQ4wrzTYQq7yDfQ6xjTE+W9K781RyGkd5Vf1f5bekJck9VVQ5A6vz5WldFxoSdbogZtSFq2PLaofw6T28Umb9B81rUpvLT9GYhf5MxYgxbPuz6jVpeM8QJIYEjegMDRyRA4IgECByRAIEjEiBwRAIEDtEZpDsdZYy7PKIGZG/gZPFtjY3dVB4xdtBvAc1Ut+bModmVmzTOIUKCSgCXAtewZpVPYk3oB3S4FChOieJANX39EQaoBJgErAqcxKRVvoZJK0EI9gkTpPnEZLgmVERUhH4LmKyRi5zankOz69dFoIiKEJ1Bo36Kj6OAESB6AwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHNuXAJ1oEBoEZAI0t7MRuiB0h17uDpZwdOhnCQAyAY5mf6OG6+pO1b886mLuBMgEWMr+RgvX1R3VP0D49gCEjvZXDcyqJBapes00zNUfnwEGAnlG0BKWscReWwmAZeWvGma9YuXqP2qVL8dngIFBuig72Z8eiDraHx+vS/zrWnToccT8YZTDcv4YGq0NpMYTLgizmGNf1qCPDNQ45dW/xJZBvvrjM8Bg4NkD+AZzD+CTtsrVb4oXQ6WgqqDpqx6aEMAWOPXHm8DACdC8BxhWyNWtfsbQMMQZQYFj+/oCIgaC/wcZyXzt5t67NgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMC0xOVQyMzo1MzoyOSswMjowMLU6Y9MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDDEZ9tvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-button .ui-state-highlight.ui-icon,.ui-state-highlight .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8p2Tp3AAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98KExc1Hf/+/xAAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDC1OmPTAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTE5VDIzOjUzOjI5KzAyOjAwxGfbbwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQffChMXNR3//v8QAAAYOklEQVR42u1dbYxdx1l+jhMpKsHBfLkmcbKSfzQBIUu+SyQUhGQUoWt+BBWVwLUjPhqjdarSqgjIbqy7P8Kadu+CQlIXaV05kD83u1oXpbg/WFObVKYxFu6uA6U4pWratUO35k9p/pAi4Zcf52s+3vk459y79+7OPKPde+95Z+bMzPucOWfed2ZOQogIGbtGXYCI0SISIHBEAsjogNAZdSG2EpEAIjpYArAUEgUGTYDRXz8d1H2uTdV/FCYK5DmPvo6DBImhQ0QdgiGUgDVOxyKHJX2etmOMYz83rGndNbCfvzzqruM2CnoVzZXzIUDH2Tzm9Hlacw4uArjO7lMDd87uOm6jUKX5qyihXnofCsKRd5Oy++bsquM2CnoVmygQzuvXpwepfwX79ABuJXMtEEAP4BvqPwPU74D9c3A/A8CR1qTeAJ4BBhFG3zSdBgSz34I6BQFGXccBhiT6AiR0sISjWB51MbYOkQCBI1oCA0ckQOCIBAgckQCBIxIgcEQCBI5IgMAR5wOoaUdd/q2GZux0edPIaW23G0rNploZfAyXEbbJfACXLzIv+44yBVdvADcB3Dm4crf5E22N3/EqXV1vZV72HeoMcjd/lSaul9pvSorbXVyXnvZAAgF2yGwAdT6Ar8e+XhO7+w/f+QAda9nq3qAC7wH8Q6dmE/vQyx7cObjo6XMDCfYZYBBh9I3TdD7AqMu/xSG6gwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHJEAgePuURdg7EBIRnjuHPXLULH8dzdLPpRGGGUJyFmCVEl1yuhOOYKay7cAgshCrgqZAdlZzWqSqqh7Dlf5U9Un1lzc5Kib2q8GPrEqpN0lRXBVP/GogDl94tFAPlUwX6E+vYetDonyWe0cucTdAvYa2glEjtSA6yKWyi/eAnyrTwaJu5GSAXTwNgW476JNSkBF6oSVimfnzpJfXuYykEVuz7usnf0yEEuZAFUfAsnj6nHF8mFnvWvcT7mJR+42BfnkW7cFbJegT97uNtDkVYaBZRfnE4uX2btAN4Ptebi6WL8u2nUFuc7u8xBZF26Ku+VSCVR3cOijgO19/hrDyDgfIHBES2DgiAQIHJEAgSMSIHBEAgSOSIDAEQkQOEQCdEAY9fJol61wuPBpAR+PaL104nqNuqieVloV47N4su7yLr8UfjnXW/vjt6zMtwX49HmMjneqqnXoWFvAvjBOLmXKFq153MV0xWlSfZ9YbgXULbdPC5hiiKsSORL5tK3fXu2dBgTQ1k7Wbf7qG0b7UaA+/dxbuPuowC8PTgE69OZv0gPJOZMzBk8ALY7sCyC4fX0A73RU7z1JhbR+JSjnIpj88a7z29K7zu9Krd97zaV0efzhlHLp01feADDsdqzO5UiAqqOAsgHqeKwSIQ8+d5I+beevg7Lc9R6y7Gc/mknzGUdHK7dBUrirE4PUljOwnElsm12rpax0C6hyH+/UyMP1EObTgbpLZ87H3oX63cHzuO6dlureguwPgfa0cinTK63i6f1O5Noiwq7EJqmrNEU1Avo8QfjTry4BfHKulEecDyAif3FcfF9ARCiIpuDAEQkQOCIBAkckQOCIBAgckQCDxjYbVqnzAVywecx9qt7JDVBjiuals61OGse6K3Ywu93IZivzsT7l5zDZ7HwtjU0tca6cqYZUtsXVSz+CUBqCRGaabGE2f5W4NNKW3uaJ83Hz2D1yrhzSGGTw1NkWuIrntaevk/vIwD8DLBk6ebu/qrw1LNWYWJYuy3R1krY9DMjb15dUOMqdlzu/e2XzWKLsAVI7eNmEtlX4nKz0Rmc5V0ibS/2WQLsXb9ffQsKmRlcP4Z+zbY+ALUbZAywLfuY6RVs2+qnzBnB5+937Z9iRCD0I30PIn1yMwVzF3Bnk3mNM1C/fApaLQnEdeNrBE2wTEmyTFo4y3/RGAuzXrx1JUQJ+SoW96cubkHl3kTxmUlEqxqg7oWY4qPCcbZusIcezvTGk2X78Pr5uqinzeT4nxyhiEDMGtjREd7CMsematwqRAIEjmoIDRyRA4IgECByRAIEjEiBwjB8B2g3tgRGVoBLAz5dtc9mQl9QUo43VLRmJj3ofhLFBte3ifbaTTnCkQXlWkZOkbY1Xd8v6EnU8ljsQMgHsVmq7tTu/qttYZSmQX/MJxKWJJdKu/0gRY9WQPv9Wb1N1sfdZQoS0QYT632Qtt813aRNRm/j183LOxMrTHExlIGsJ2fXvReho8m1mtR+uL8BvdbudSelcmyO4YJWbfPau37ajukSNJ852yOsb1BpAE8QpYQl0NakwT2XwmxBhnlSmEsg0JYMvoWv7BJngCSiqP0X5wgixyUwKLidG+bx2gYPPbvZHcAGkPUfks4n4Xfnl8vi8NiICQLVRAAmjAH7GjW0A6JIfKaSrABLtRpIIZ+ceVu3zicSdMaLyBfi/MEKeFVt+HzTMTxHN0MFSVL2OcZsPMCz1RxgwbgSI2GKMny8gYksRCRA4IgECRyRA4NhJBOgWlobuUPI/gFYWDoy6qgMEgUCLmXNkgxZruxUuNXSyEF2THDXdium7ztTdmjmn4QCBpomIaDr7ZSsBf46pTDplOIdZ7koJOqsE+xkKLeWNf5561CuIoKqxPG4mSLn6fcW6sshEkr6iwr5FvXoTu+RyCV1NwzV1i6aJqEUtIpqmlqUF+HPosLWQv0SMseJdxyJGagcgLAAA/kHqHC4I3cQXcAPAj+BEcewmJpSuJLcSngPwJOvKmSy+rzHumq/g54Tfr+IpSQokOFbI1HXGhFnMCb9nMWdcv2tyZk1Kv9UStrCGSewH8LP4U0xinckhwSYA4KdQb4VRWituDbVZIsY4V7Q7d/4pnJF+S28Pz1W/qkbIcAPAdXwPr1mK38o+nzTGuM+S+lXckAig4gxEV/IZgYopTgEFBWZxSqKD2IDmhrwPrxfff4ktw368HwnutZTy9y0y1SPJy/kXUCdMLtUolqv/z/FH4uHSG7jqyOA6vqfFkYvwE5kvj5j5PCl+3JL/MXzFev7LKF3GZ3BZI0BJgVmcYnNoK5966X7dWtIZ/C0+DeDjmGHTfxfAt4TvOmYxV/xtLXL1v4z3yRS42zMDTv0qfgwAsAt3jDH2AADOsjJXD5BTADiDy8Y4CWAcAzyqfKq4D3+VfXuakT6AHoB5ADPo4QntFqB6UusuM3XvkuCK8Qp+VzuWqv8c3gfgowCQ3fS9CcD1EGoF9zjz+KHi26Qmc/UAwIFM8ZdxAG8z8i7exiKAy+ga+gA7fhgfL76p6GAC5zGFGQB3gTCDey0TSmZxilXShPBnQgsuuGL8DkOAEzgD4Emcy56jFjCdCvwJoELn973ONJ/OPicZmasHSJWeUuBtZiTeleRcL7Bf+eSaCJhBep3Lt5gJzAP4bPF73nAbSDHXoItfaxiDn9PxWSCjACCoH8UwsO0YRrmHMJck+aXK42zVDjDYYWA+SCo/TaXosqNtDtWGuW5531h7nxhiDfn880FgTzw6Pu7gLoCfFn7fqNWNNwUBOCFc6YPPPcVopqZM4Yx09SPOBwgeO8kXEFEDkQCBIxIgcEQCBI5IgJ2F1wV/hhdkArRBcC3MNoMKR0bToUUX3KSOWWH4OqtJF5Vh76IiX1HkK8x5pwT51BDkAPAlR/v00KvdboezYEcfffSLX0KbtImoS11K1/fKYYNamRnhIk3TImsGuZYZIlbomiK3e7LV0GXjzwqebCKiWdYQkgc9vduQk8aZpuls4sfg5Xmc1KijSnqFQa6tmmsy7RCtELLatZm8bxER0S1r6+bGpD4dJ4ivjm1nVjBiKUDCyyJ87GD88nCiv8n+zhsbqEvpBJSuIX/Ty1ddCiYC/SeBbhPoHTItMJ/OJNMWOazyw9SiwwZ53vx96lduwRwrrHxFS73Cnn+RiPrULi2Jojs4d1LOYbbWRi3ick7ec/gn+DY2cB2bWMN32BhdzGE/nsE7Q7ADfgv345vYi2/iAXzbGCu1pc9Y5ZB96hLexbrRXdPPXDHHWOkRqdVM+6zwsy1+0uMIAPwKgN34bQBAGxdQ9ADXtDl11yr3AGIHZ+oBzhPRBSJ6nb1CukTs1T+oHuDfCfQNAv0rtZjzf8zRA+RyWOXmHqAvlU69BfSEUqfoVarflyXZl5kWPE7H9bOrp+hmRNCbfxAEeJ4+TK/QM9lfFfXLs+JMBEj3J2ln90tV/jUi+rfs74Ymz+tnuoeX8pMOOZ++vPem4ZmKBFDddfozgE07Iv2k42oG4qcsa9EioeBQj4lhJ4Dur6uifrV6dgLw8qfpG/Qh2qAP0X/QJxT5Ma10UwOVl+qHMcgqblvlJumt7EFQlfcpv/dv1CUAHCHfI6jtGZ9XsHnK9qzSwNwooF1UnSeImYAp/tBRuiZyONTv43LPKcCNAF6gO9mD3wrdoRcYApynvp7W9/RuhcrPofwzqG3Ssl39KgVmNalrWrddTmR/lUVTed+pftcwsKRA25C6XAtwVktt7IF83cHTDcwTEVXQA2SP/YCQmn6eUg/H+QCBI/oCAkckQOCIBAgckQCBIzwCpG5jbkzTK8ZGH/PIZzd7lLDdnqqFMeF0MUaedoxYXcaMuqmbhDYRrWff142j5YtFHdWR8p8R0Rk6Qx+hjxDRJ7SUaeucz37tFkJ65CR9hoiep+eJ6DN0UktfWkI5a4e8MJ9IXYivy10x9IX8rJ1HruAGLdIivWehgEu9wyRAPyvXNGtUSbGeqZ8vRW4OOc6aun6+CD9DnC10nRazEvQZCrnseLmXok28Gcx+pEzdNuST2hq7mTeH241dTFE4q8QIG8XV855RiaMkQG7L4s+Rq7381HO4aFER0V7aT7tpN+2nvaxCFglE1Ct8+rbriyeAeQ8RorSP6BZtrBMA0iwKnQBpriuFTZYjwG/RsSxkcvEZ4O8ArOMQruOV2vcS/XvlO1ERVKQ++mPCdxEtXAcAHAIAXGd88m08bi3D/+D7AIDv44OM9ApOgAB0cAzq9hUpJoXAY87wPS3/HIA5tDCJSXZGQRtPAFgEcJzN3b7dd4JVzGA/JvAgHsSD+WF5cWiq/pY2nw4QlzXV2ylYVWj1CSc9HMzU/yr7ENfCulX9q9K6/AVF/jW8WywIPYMrWvpfQA/As3gIvPqB+/Bu5TqVeKD4PA/gV5kYfwwgXbR6AsA7mpxQ0kq/fLoAvgPg/3AX9uOTuJQeFt8X8APckzXdBh5y7LgPp1x/H0AVKXeGacwX32cYCvwLDhbf3yk5DkBVP6fAafym8Osv8bLl7BzB0q0x/hcA8C67Bc4RaZ6V+oKL35OOE15W5PJ8oet4Tpm1lW7hn06WnWO28yecBLABIPULZNLyFjCDe/AD/DMWsYGHmC623Gid33JdPMrFSJRgl3JnmM+UV34Xkas/vRHsxy1Jmqt/AUeQsNdvD5/DoSzo6gfmcR1fAHAJwCFmhyDgAv4eX8Ju3MNOx5p1bLCxB3twFnvwo9l/Ow4xx9KL6CAOgr+gJnAXJjCBCQAnldt18WToGgaO+yjgFuVzY7lHpJ7jDOu0QivsdCpkqYl6mct2XZObf6lHp7QYrmEg0XEt8KOAlWyvMP0hcLEIRM/powC/MEoC2EObygnRt0i1A+jP3ebS8+VPRxfvUZvyiRm7tbRL9Dx1LK1EBJrKghqjlY0C0v/qNnRbYAeIAfQEXaWr9IRB2qfzBa3atJuhmG0YCPLZSnLLQ5wPEDjC8wVESIgECByRAIFDJcAiawUEgNN4s3hyeBOnR13wiMFAfgh8Cw8D+Doe0eK9ptnHP49fG3XhI5pD7AFewsMAgIfxkhLrdKH+0kL3QbYX2ARlO2Zz+O+sB3FPMR/HSeibwuhps3l2YwJhTPgWUeZnfksZLa5Jo9sca8y40m4Iso+Sy9BjrXbu5VWuGC450WYxPt9sUP5tFMqvL0kKfslQcZexw908bWeMfJmkTIFm+2jm8hepRS8ac/Cr3Q4lwFtERQ+g9gFyxW3NsEKmZWGi+jcYSa/45NTvVg4yxbczInDyF7NvL1py2AyTAD1SISrAnwB85y3ndJuZr5enM6nflwClpZ6T5xZ2fXeAEmYCdIlokzZpk8bGkDs4AnAKrkMAV8iVpKs/VbtJ/ePQA2wK598k7IwgK6C8BchquMoS4CqToasHMAWxB+LTj/4ZwE3BbRi4qumVfIGVvsBk6Gocs9R29csKHt0oII0zcqUNngCbrILFJljSpEtGNbqeAUyyur3H1oYdRgB/d/A8fhGPZd+v4B+tb8zYyaj7LqAxRZwPEDiiNzBwRAIEjkiAwBEJEDgiAQJHJICKHqi2dBtCJABhwzERgzCoV0KMCtdwzSrv4dna0u0JxUpHtGGxxoneAFWSp2sbc+jRRuYI6tGGJQcQsuVNsnxFyqmOu7bnMDb3PFLnLTD+NkuvwDefSYU2Aojp9GbuFWlS5blyMBPAlN6HADap3dGjS3eISdhUSX5ah4sAqQrL37IUhEJ5rhxMBDCndxOgqorNUm7x5TYN/EPgTSzgN2rcT25iARNIFycvCDbzBAvZ0Qks4KZHDia40m8NdpI3QGP5Tn4GcIXgnwE2HNUyE2A7BPIgSK+BdFuG6A1U0cOzli7eLt2GiAQIHNESGDgiAQJHJEDgiAQIHJEAgUMlAAkvFo8IACUB2vg8AGAvnkabjZtaDi4apBHbEjkB2lgtth99GKuskmewgCt4HKse77VTzQsrigFqZYvlESZkLbZORP9EIKIvUvpyBJPxsE0b5H6niOvNo9x++cOUx2AIuVKJbhMI9EXqEeg2md5OvU7HKXXKto2Z8jvVtugwtbL/h7UF2kSHibIYaeDlZJW3ir/WTrPZDyuk7wt4FMBXAQC/DAD4Kh7Ho7igdBYzOIhjOAtgCqv4qCa34xEA9wMA9mEX9mnyfQD2YR92AbjDjE7uz/4eAXCHyX8fgA9k8g/E0Y0vUl9AG6v4L7y/OHobe3GEVXAbq7iJCazjEOsUoWynen23+j+Qfv8FZnFqC+URJmRdwQaVi6b7xG/ikrpCF4noOC0aZ93wtwD53eL6fKNhy2MwhPxL+q6A23SRbhMZHvLEyRA9hgBEZgLEMKahdAdP48PZPoFfx1+P5T59EUNAnA8QOOLTcuCIBAgckQCBIxIgcJQEcL0PoKl8Hm8U8jeY9/4NWz7s+o1aXhdZnq+Ritek8WJTuWubuWHLh12/Uctrh/TjNHE4XURrKndtNDls+bDrN2p5g5DeAh4rOgTxla2PMd9EqPLl4tWyy8b0iSW9K381h2Gkd9XfVX57+u9KL8U1pbfJxVLwta6I1BBUWoMS7Zcs5woivk98CcBR6cjg8vdJ785fjFE1fcLkBUt+fPoyF11+DgDwpLH98qPP4ZMYzCJVAnE7/MpH/OT5fbe8H6tyUn5XzZ/PDZ6/3fmTNf/m7QPts5o8f+Pvc8wZa4a7B8ChEneE/3W46OoR7BCXo9fJIRE+66Qnj7S6o1zG5yyyk/gUPoX86h8QBn0L6AN4CvVvAc27eHP59BzqdeG2/G3lKxVPteQpBUT1D+wW4HofQCkXocqXKHcZLyly8aVTJdYYOTnlqJH+Kpueq5+r/mL5q6aXby/V5flNQJc3HgVckfiQ4wrzTYQq7yDfQ6xjTE+W9K781RyGkd5Vf1f5bekJck9VVQ5A6vz5WldFxoSdbogZtSFq2PLaofw6T28Umb9B81rUpvLT9GYhf5MxYgxbPuz6jVpeM8QJIYEjegMDRyRA4IgECByRAIEjEiBwRAIEDtEZpDsdZYy7PKIGZG/gZPFtjY3dVB4xdtBvAc1Ut+bModmVmzTOIUKCSgCXAtewZpVPYk3oB3S4FChOieJANX39EQaoBJgErAqcxKRVvoZJK0EI9gkTpPnEZLgmVERUhH4LmKyRi5zankOz69dFoIiKEJ1Bo36Kj6OAESB6AwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHNuXAJ1oEBoEZAI0t7MRuiB0h17uDpZwdOhnCQAyAY5mf6OG6+pO1b886mLuBMgEWMr+RgvX1R3VP0D49gCEjvZXDcyqJBapes00zNUfnwEGAnlG0BKWscReWwmAZeWvGma9YuXqP2qVL8dngIFBuig72Z8eiDraHx+vS/zrWnToccT8YZTDcv4YGq0NpMYTLgizmGNf1qCPDNQ45dW/xJZBvvrjM8Bg4NkD+AZzD+CTtsrVb4oXQ6WgqqDpqx6aEMAWOPXHm8DACdC8BxhWyNWtfsbQMMQZQYFj+/oCIgaC/wcZyXzt5t67NgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMC0xOVQyMzo1MzoyOSswMjowMLU6Y9MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTAtMTlUMjM6NTM6MjkrMDI6MDDEZ9tvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:6px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:6px}.ui-widget-overlay{background:#eee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAAAAAD5BTvyAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgBwgUCTBBMMWUAAAAhElEQVRIx+3VMQrAIAyF4Wcmz+Y5e4Yey7E4dhGxIqWQf+iQN4ePgJKXrkM9rWhJPrXJ+5yx3AAproMcJxnLSalWkpseheFaMZZbNvRzD5DgJpDhBkhxHeQ4yVhOMpbbfGwfl09juc2G3lNhLLeAxCEzlotO8XPRKdEp0Snf5qJTftgpN3jsoxwYW8JUAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwMXJ2OgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMEAvzoYAAAAASUVORK5CYII=) 50% 50% repeat;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{box-shadow:-7px -7px 7px #000} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css.gz b/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css.gz new file mode 100644 index 000000000..f0e35d842 Binary files /dev/null and b/sapl/static/sapl/frontend/css/chunk-vendors.9904f9d0.css.gz differ diff --git a/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css b/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css deleted file mode 100644 index b586be240..000000000 --- a/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css +++ /dev/null @@ -1,126 +0,0 @@ -/*! - * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-brands-400.e2ca6541.eot);src:url(../fonts/fa-brands-400.e2ca6541.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.f075c50f.woff2) format("woff2"),url(../fonts/fa-brands-400.ad527cc5.woff) format("woff"),url(../fonts/fa-brands-400.8300bd7f.ttf) format("truetype"),url(../img/fa-brands-400.2f122423.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-regular-400.b01516c1.eot);src:url(../fonts/fa-regular-400.b01516c1.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.4a74738e.woff2) format("woff2"),url(../fonts/fa-regular-400.3c6879c4.woff) format("woff"),url(../fonts/fa-regular-400.49f00693.ttf) format("truetype"),url(../img/fa-regular-400.3602b7e8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(../fonts/fa-solid-900.8ac31674.eot);src:url(../fonts/fa-solid-900.8ac31674.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.8e1ed89b.woff2) format("woff2"),url(../fonts/fa-solid-900.4451e1d8.woff) format("woff"),url(../fonts/fa-solid-900.205f07b3.ttf) format("truetype"),url(../img/fa-solid-900.664de393.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900} - -/*! - * jQuery UI CSS Framework 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/category/theming/ - */ - -/*! - * jQuery UI Draggable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -/*! - * jQuery UI Resizable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -/*! - * jQuery UI Button 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/button/#theming - */ - -/*! - * jQuery UI Checkboxradio 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/checkboxradio/#theming - */ - -/*! - * jQuery UI Controlgroup 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/controlgroup/#theming - */ - - -/*! - * jQuery UI Dialog 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/dialog/#theming - */ - -/*! - * jQuery UI Sortable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -/*! - * jQuery UI Datepicker 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/datepicker/#theming - */ - -/*! - * jQuery UI Autocomplete 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/autocomplete/#theming - */ - -/*! - * jQuery UI Menu 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/menu/#theming - */ - -/*! jQuery UI - v1.12.0 - 2016-07-08 -* http://jqueryui.com -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px -* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #aed0ea}.ui-widget-content{border:1px solid #ddd;background:#f2f5f7 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAIpJREFUKM/tz6ENwkAUgOE/DYYJUA0KZkFUIetxqKJZgQUYguJBIQDVAQhhAESTtnf33r0mMAGakKA+/RHPZv01AYA/n2jxSMKeExXqLO9n6CI+rUYusbANkmptE8JKl/GIP8gjZviBzPWGy0OlBd0uZDqkG/u7lMlrzZaSdupTGdE0zoXw7eZP8Qbj00P2LE1L9gAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMDFydjoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDBAL86GAAAAAElFTkSuQmCC) 50% top repeat-x;color:#362b36}.ui-widget-content a{color:#362b36}.ui-widget-header{border:1px solid #aed0ea;background:#deedf7 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAMFJREFUKM/lkD1qwgAYQB8fuHQpgpBO7eDgUByFdO0RuiX0Dj1DzqD0BmZyd9RFTKd2Kc2UQEUL5qdtSJOYCJ+Dh1Do9JYHDx7ZrFrsXwQA/g0CEipRG5cPwdYxvqjFGJ/vVTnYG6R1MW1C0nZhNq6ooQ4e8fVfr+kTdfLnOmF7kbfqiWihT8z5KrJVfcsmzh52kei7PjIVNXDwjsqMz/XPTfUrmDriTfQKh6WodazfMeSV8D7tVpcEQZKU5akvnTkO8y9eZNHr5WMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #aed0ea;background:#d7ebf9 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAJhJREFUSMftzyEOggAYBeD33mZz02pwYxo1GDQT5BBsJr0RBzA4TkAyOzwBBTcx6BwGHEESSPAUTsOfvvzhHr38dy4AAAzDMIxvgzQtirrGyX9Om644QoCpuOQOM2RO2Wu2uMTltcmkkAld6cgrPDHmDZ4UMoGLfF4NWgePfXVuV9KGERbimAEmwgFrDEUHfXT+Im0YhvFDPkIzLk7A/EzKAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwMXJ2OgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMEAvzoYAAAAASUVORK5CYII=) 50% 50% repeat-x;font-weight:700;color:#2779aa}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#2779aa;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #74b2e2;background:#e4f1fb url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAJxJREFUSMftz60KwmAYhuHnedEkiFGwujC2uGTRYjAurAp6Ip6BmCyLO4gVk8XgYTiTf3yD/cD2gcFjEA1vutoNN16Hamf3AgCAoiiK8m2QZcY0Da5h7rY9YYENxsIBt3CFHmL4wjVTBLjNi1n7wP1Ydq2D57Q826VwxRQBjNQTe0K+qC+2EnqM6X9ijjBhhKFghD46fzGtKIryQ95Jgy/jpWK+ggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMDFydjoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDBAL86GAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:700;color:#0070a3}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#0070a3;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #2694e8;background:#3baae3 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAI5JREFUSMdjSJq6e/fLJiYGBgYGBoZRapQapUapUYrm1M1l79//SmRi7GZczWjBxFLJ2MRQz8Ryh2kNYx8Tix3TdYbZTKwsTLqM2yHUDibWdOYIhqNMbOlM4YzH0ORYFjIxMaxkYrVjus44m6G4/7DE6/dMTIGMjIyhTIzJDNoMfIPD06PUKDVKjVIDRwEAMuIhVFSEkAcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:700;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#2694e8;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #f9dd34;background:#ffef8f url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AcIFAkwQTDFlAAAAHNJREFUKM/lkM0Jg2AQBYdXyJc+tI/EJnKyEFvwbkuBCHoQ9CDiMfA8rCGCBSSQ0zD72B8WeynquwDgj/CiEzC5FDBSfswDNwG9s0AuoAtrnQIXAS1JwPNdTALv2cM69+3DBq4HG+OIWOvZlYCV5vtf+mlsEsU1wS9R7TYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMDhUMjA6MDk6NDgrMDI6MDAxcnY6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwQC/OhgAAAABJRU5ErkJggg==) 50% top repeat-x;color:#363636}.ui-state-checked{border:1px solid #f9dd34;background:#ffef8f}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#cd0a0a;color:#fff}.ui-state-error-text,.ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error-text,.ui-widget-header .ui-state-error a{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{background-image:url(../img/ui-icons_72a7cf_256x240.55a4c5ce.png)}.ui-button .ui-icon{background-image:url(../img/ui-icons_3d80b3_256x240.24fcd129.png)}.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,.ui-state-default .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(../img/ui-icons_2694e8_256x240.274157b3.png)}.ui-button:active .ui-icon,.ui-state-active .ui-icon{background-image:url(../img/ui-icons_ffffff_256x240.bb2a88be.png)}.ui-button .ui-state-highlight.ui-icon,.ui-state-highlight .ui-icon{background-image:url(../img/ui-icons_2e83ff_256x240.602e5d4d.png)}.ui-state-error-text .ui-icon,.ui-state-error .ui-icon{background-image:url(../img/ui-icons_ffffff_256x240.bb2a88be.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:6px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:6px}.ui-widget-overlay{background:#eee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAAAAAD5BTvyAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgBwgUCTBBMMWUAAAAhElEQVRIx+3VMQrAIAyF4Wcmz+Y5e4Yey7E4dhGxIqWQf+iQN4ePgJKXrkM9rWhJPrXJ+5yx3AAproMcJxnLSalWkpseheFaMZZbNvRzD5DgJpDhBkhxHeQ4yVhOMpbbfGwfl09juc2G3lNhLLeAxCEzlotO8XPRKdEp0Snf5qJTftgpN3jsoxwYW8JUAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTA4VDIwOjA5OjQ4KzAyOjAwMXJ2OgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0wOFQyMDowOTo0OCswMjowMEAvzoYAAAAASUVORK5CYII=) 50% 50% repeat;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{box-shadow:-7px -7px 7px #000}.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit;background:transparent;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;z-index:1300}.tox-tinymce-aux :focus,.tox-tinymce :focus{outline:none}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar,.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-position:0 0;background-repeat:repeat;border-radius:3px;border-style:solid;border-width:1px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:none;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button,.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none}.tox .tox-button[disabled]{color:hsla(0,0%,100%,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled),.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-position:0 0;background-repeat:repeat;border-radius:3px;border-style:solid;border-width:1px;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:none;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary,.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none}.tox .tox-button--secondary[disabled]{color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled),.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:focus:not(:disabled),.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:3px;width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg,.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg,.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg,.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:3px}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none}.tox .tox-collection__group-heading,.tox .tox-collection__item{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--grid .tox-collection__item,.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled),.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;flex:1;-ms-flex-preferred-size:auto;font-style:normal;font-weight:400;word-break:break-all}.tox .tox-collection__item-accessory,.tox .tox-collection__item-label{display:inline-block;font-size:14px;line-height:24px;text-transform:none}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);height:24px}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret:after{content:"";font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark,.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:none;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(180deg,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{flex-direction:column}.tox .tox-rgb-form,.tox .tox-rgb-form div{display:flex;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-hue-slider,.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-hue-slider,.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:inset 0 0 0 1px hsla(0,0%,49.8%,.3);transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:none;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:none}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay:after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient:after{background:linear-gradient(hsla(0,0%,100%,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:hsla(0,0%,100%,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog,.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:-webkit-grab;cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:-webkit-grabbing;cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:20px;margin:0}.tox .tox-dialog__body,.tox .tox-dialog__title{font-style:normal;font-weight:400;line-height:1.3;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;min-width:0;text-align:left}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:active,.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px}.tox .tox-dialog__body-content .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:hsla(0,0%,100%,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter,.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span:before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 0),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 0),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 0);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:"";height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - 4px)}.tox .tox-form__grid--3col>.tox-form__group{width:calc(33.33333% - 4px)}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - 4px)}.tox .tox-form__controls-h-stack,.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:none;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:none}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:none;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;filter:alpha(opacity=50);opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider,.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider,.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--grid,.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:transparent;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:none;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity .15s ease-in}.tox .tox-notification,.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a,.tox .tox-notification--warning p,.tox .tox-notification--warn p{color:#222f3e}.tox .tox-notification--warning svg,.tox .tox-notification--warn svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info a,.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop:after,.tox .tox-pop:before{border-style:solid;content:"";display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom:after,.tox .tox-pop.tox-pop--bottom:before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom:after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom:before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top:after,.tox .tox-pop.tox-pop--top:before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top:after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top:before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left:after,.tox .tox-pop.tox-pop--left:before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left:after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left:before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right:after,.tox .tox-pop.tox-pop--right:before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right:after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right:before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left:after,.tox .tox-pop.tox-pop--align-left:before{left:20px}.tox .tox-pop.tox-pop--align-right:after,.tox .tox-pop.tox-pop--align-right:before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane,.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{-webkit-animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:first-child{-webkit-animation-delay:-.32s;animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes tam-bouncing-dots{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes tam-bouncing-dots{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount,.tox .tox-statusbar a{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{background-color:hsla(0,0%,100%,.6);bottom:0;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn,.tox .tox-throbber__busy-spinner{align-items:center;display:flex;justify-content:center}.tox .tox-tbtn{background:transparent;border:0;border-radius:3px;box-shadow:none;color:#222f3e;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;margin:2px 0 3px 0;outline:none;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus,.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn--disabled svg,.tox .tox-tbtn:disabled:hover svg,.tox .tox-tbtn:disabled svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled:hover svg,.tox .tox-tbtn--enabled svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:inset 0 0 0 1px #dee0e2}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:transparent;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:hsla(0,0%,100%,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-top:8px solid #222f3e;bottom:0}.tox .tox-tooltip--down .tox-tooltip__arrow,.tox .tox-tooltip--up .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;top:0}.tox .tox-tooltip--right .tox-tooltip__arrow{border-left:8px solid #222f3e;right:0}.tox .tox-tooltip--left .tox-tooltip__arrow,.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-top:8px solid transparent;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-right:8px solid #222f3e;left:0}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading:before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__body-content .tox-collection,.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel,.tox .tox-image-tools__sidebar{height:60px} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css.gz b/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css.gz deleted file mode 100644 index d0570c4fe..000000000 Binary files a/sapl/static/sapl/frontend/css/chunk-vendors.e8d8c6de.css.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css b/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css deleted file mode 100644 index bcf13138c..000000000 --- a/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css +++ /dev/null @@ -1 +0,0 @@ -a:link:after,a:visited:after{content:""}.test_import:nth-child(2n){background-color:#ccc}#wait_message{display:block;position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,86.3%,.75);z-index:99}#wait_message #msg{position:relative;margin:20% auto;padding:1.2em 2em;max-width:600px;text-align:center;font-size:1.5em;color:#677;border:1px solid #eee;background-color:#fff!important;-webkit-box-shadow:0 1px 2px #999;box-shadow:0 1px 2px #999}.text-center{text-align:center}.cp-notify{z-index:10000;position:fixed;top:2em;left:50%;min-width:600px;-webkit-transform:translate(-50%);transform:translate(-50%);opacity:.97}.cp-notify,.cp-notify.hide{-webkit-transition:all .4s ease;transition:all .4s ease}.cp-notify.hide{opacity:0;top:-1000px;display:block!important}.cp-notify .message{padding:1em;border:2px solid rgba(0,0,0,.1);border-radius:4px;color:rgba(0,0,0,.6);line-height:1em;font-size:1.3em;text-align:center;-webkit-box-shadow:0 0 100px rgba(0,0,0,.2);box-shadow:0 0 100px rgba(0,0,0,.2)}.cp .vigencia-active{margin-top:30px;display:block}.cp .cp-linha-vigencias{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;list-style:none;margin:4rem 0 3rem;padding:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cp .cp-linha-vigencias ul{list-style:none;margin:0;padding:0}.cp .cp-linha-vigencias>li{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:0;background:#000;height:2px;text-align:center;max-width:4rem}.cp .cp-linha-vigencias>li .circle{display:block;width:10px;line-height:0;background:#000;height:10px;margin:-5px auto 0;border-radius:50%}.cp .cp-linha-vigencias>li>a{position:absolute;white-space:nowrap;line-height:1rem;text-align:center}.cp .cp-linha-vigencias>li:nth-child(2n)>a{top:100%;margin-top:5px}.cp .cp-linha-vigencias>li:nth-child(odd)>a{bottom:100%;margin-bottom:5px}.cp .cp-linha-vigencias>li ul{z-index:1;position:absolute;display:none;background:#fff;margin:30px 0;border:1px solid #aaa;-webkit-box-shadow:0 0 10px #aaa;box-shadow:0 0 10px #aaa;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cp .cp-linha-vigencias>li ul:before{content:" ";width:2px;height:30px;position:absolute;display:block;background-color:#aaa;bottom:100%;left:50%;margin-left:-1px}.cp .cp-linha-vigencias>li ul li{text-align:left}.cp .cp-linha-vigencias>li ul a{display:block;white-space:nowrap;line-height:2rem;padding:0 10px;font-size:1rem}.cp .cp-linha-vigencias>li ul a:hover{background:#eee}.cp .cp-linha-vigencias>li.active .circle{display:block;width:20px;line-height:0;background:#aaa;height:20px;margin:-10px auto 0}.cp .cp-linha-vigencias>li.active:not(:last-child)>a{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);margin-bottom:25px;font-weight:700}.cp .cp-linha-vigencias>li.active:first-child>a,.cp .cp-linha-vigencias>li.active:last-child>a{-webkit-transform:rotate(0deg);transform:rotate(0deg);margin-bottom:15px;font-weight:700}.cp .cp-linha-vigencias>li.active>a{margin-bottom:5px}.cp .cp-linha-vigencias>li.active:nth-child(2n)>a{bottom:100%;top:auto}.cp .cp-linha-vigencias>li.active ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cp .cp-linha-vigencias>li.active ul li{text-align:left;width:100%}.cp .cp-vigencias .nav-link{padding:.5rem}.cp .cp-vigencias .dropdown-toggle:after{zoom:.8;margin:0}.cp .cp-vigencias .dropdown-menu{margin-left:.5rem}.cp .cp-vigencias .dropdown-item{padding:0}.cp .cp-vigencias .dropdown-item a{line-height:1;padding:.7rem}.cp .desativado .dpt-link,.cp .desativado .dpt-link *,.cp .desativado .dtxt,.cp .desativado .dtxt *,.cp .dpt .dptt>a.desativado .dpt-link,.cp .dpt .dptt>a.desativado .dpt-link *,.cp .dpt .dptt>a.desativado .dtxt,.cp .dpt .dptt>a.desativado .dtxt *{text-decoration:line-through;color:#999!important}.cp .desativado .dpt-link * table,.cp .desativado .dpt-link * table td,.cp .desativado .dpt-link table,.cp .desativado .dpt-link table td,.cp .desativado .dtxt * table,.cp .desativado .dtxt * table td,.cp .desativado .dtxt table,.cp .desativado .dtxt table td,.cp .dpt .dptt>a.desativado .dpt-link * table,.cp .dpt .dptt>a.desativado .dpt-link * table td,.cp .dpt .dptt>a.desativado .dpt-link table,.cp .dpt .dptt>a.desativado .dpt-link table td,.cp .dpt .dptt>a.desativado .dtxt * table,.cp .dpt .dptt>a.desativado .dtxt * table td,.cp .dpt .dptt>a.desativado .dtxt table,.cp .dpt .dptt>a.desativado .dtxt table td{border:1px dotted #ccc}.cp .desativado .dpt-img img,.cp .dpt .dptt>a.desativado .dpt-img img{-webkit-filter:grayscale(100%) contrast(110%);filter:grayscale(100%) contrast(110%);opacity:.5}.cp a{text-decoration:none;cursor:pointer}.cp .diff .desativado,.cp .diff .desativado *,.cp .diff .dpt .dptt>a.desativado,.cp .diff .dpt .dptt>a.desativado *,.cp .dpt .diff .dptt>a.desativado,.cp .dpt .diff .dptt>a.desativado *{text-decoration:line-through;color:#ddd!important;font-size:90%}.cp .diff .added{color:#04de2c}.cp .dpt{font-size:1em;position:relative}.cp .dpt.indent{padding-left:1em}.cp .dpt .dpt-img{text-align:center}.cp .dpt .dpt-img img{max-width:100%}.cp .dpt .ementa{padding:2em 0 2em 35%;font-weight:700}.cp .dpt .anexo,.cp .dpt .capitulo,.cp .dpt .disp_finais,.cp .dpt .disp_gerais,.cp .dpt .disp_preliminares,.cp .dpt .disp_transitorias,.cp .dpt .itemsecao,.cp .dpt .livro,.cp .dpt .parte,.cp .dpt .secao,.cp .dpt .subsecao,.cp .dpt .titulo,.cp .dpt .titulo_generico{text-align:center;margin-bottom:1em;font-size:1.5em;margin-top:3em;font-weight:700;font-variant:small-caps}.cp .dpt .titulo{margin-top:2em}.cp .dpt .capitulo{margin-top:1.5em;font-size:1.15em}.cp .dpt .secao{margin-top:1.2em;margin-bottom:.7em;font-weight:700;font-size:1.15em}.cp .dpt .itemsecao,.cp .dpt .subsecao{margin-top:1em;margin-bottom:.6em;font-weight:700;font-size:1.15em}.cp .dpt .artigo{font-size:1.15em;float:left}.cp .dpt .artigo .dptt{position:relative}.cp .dpt .caput,.cp .dpt .texto_n_estruturado{margin-top:.3333em;font-size:1.15em}.cp .dpt .paragrafo{font-size:1.1em;margin-top:.2222em}.cp .dpt .inciso{font-size:1.1em;margin-top:.1667em}.cp .dpt .alinea,.cp .dpt .item{font-size:1em;margin-top:2px}.cp .dpt .assinatura,.cp .dpt .fecho_lei{margin-top:.6em;font-size:1.15em}.cp .dpt .page-break{page-break-before:always}.cp .dpt .bloco_alteracao{padding-left:10%;font-style:italic;color:#018}.cp .dpt .bloco_alteracao a{text-decoration:underline}.cp .dpt .bloco_alteracao a,.cp .dpt .bloco_alteracao table,.cp .dpt .bloco_alteracao table td{color:#018!important}.cp .dpt .bloco_alteracao .desativado,.cp .dpt .bloco_alteracao .desativado a,.cp .dpt .bloco_alteracao .desativado table,.cp .dpt .bloco_alteracao .desativado table td,.cp .dpt .bloco_alteracao .dptt>a.desativado{text-decoration:line-through;color:#999!important}.cp .dpt .card-header{font-size:1.7rem}.cp .dpt .dn{font-weight:400;position:relative;font-size:80%}.cp .dpt .dn p,.cp .dpt .dn ul{font-weight:400;margin:0 0 0 0;list-style:none;padding:0}.cp .dpt .dn .dnl{display:block;text-align:left!important}.cp .dpt .dn .dnl *{display:inline}.cp .dpt .dn .dnl .bullet{padding:0 .333em;display:inline-block}.cp .dpt .dn .dnl .dnli{min-height:2.5em}.cp .dpt .dn .dnl .dnli:hover ul{font-size:1rem;clip:auto;opacity:1;background:hsla(0,0%,90.2%,.9)}.cp .dpt .dn .dnl .dnli:hover ul,.cp .dpt .dn .dnl .dnli ul{-webkit-transition:opacity .5s linear,clip 0s .3s;transition:opacity .5s linear,clip 0s .3s}.cp .dpt .dn .dnl .dnli ul{clip:rect(0,0,0,0);opacity:0;position:absolute;background:transparent;right:0;padding:.2em .5em 0 .5em;border:1px solid #c7e3d3;border-top:0;font-size:1.5rem}.cp .dpt .dn .dnl .dnli ul li{display:table-cell;color:#aaa}.cp .dpt .dn .dnl .dnli ul li:hover{color:#787}.cp .dpt .dn .dnl .dnli ul li .nowner,.cp .dpt .dn .dnl .dnli ul li:hover a{color:#27ae60!important}.cp .dpt .dn .dnl .dnli .ntitulo{font-size:.8rem;font-weight:700;color:#03a203;text-decoration:none}.cp .dpt .dn .dnl .dnli .ntitulo a{color:#294!important}.cp .dpt .dn .dnl .dnli .ntexto{font-variant:normal;font-size:.8rem;color:#018801}.cp .dpt .dn .dnl .dnli .ntexto a{color:#03a203!important}.cp .dpt .dn .dnl:hover,.cp .dpt .dn .dnl:hover *{display:block}.cp .dpt .dn .dnl:hover>.bullet{display:none}.cp .dpt .dn .dnl:hover .dnli{margin-top:.5em;border-top:1px solid #c7e3d3}.cp .dpt .dptt{clear:left}.cp .dpt .dptt>a{color:#000}.cp .dpt .dptt>a.nota-alteracao{color:#02baf2;font-size:.75em}.cp .dpt .dptt>a.nota-alteracao:hover{text-decoration:underline}.cp .dpt .dptt .dne{position:absolute;display:block;right:0;left:0;top:0;height:0;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:right;transform-origin:right;-webkit-transition:all .3s ease;transition:all .3s ease;border-top:1px solid #2980b9}.cp .dpt .dptt .dne ul.btns-action{list-style:none;padding:0;position:absolute;right:0;background-color:#2980b9}.cp .dpt .dptt .dne ul.btns-action li{float:left}.cp .dpt .dptt .dne ul.btns-action li:hover{background-color:rgba(0,0,0,.1)}.cp .dpt .dptt .dne ul.btns-action li a{color:#fff;padding:.15em 1em 0;display:inline-block}.cp .dpt .dptt .dne-nota{position:relative;-webkit-transform:scaleX(1);transform:scaleX(1);height:auto;border-top:0}.cp .dpt .dptt .dne-nota ul.btns-action{display:none}.cp .dpt .dptt .dne-nota .dne-form{margin:1em -2em 0;text-align:left;font-size:1rem}.cp .dpt .dptt:hover .dne{height:.1667rem;-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-delay:1s;transition-delay:1s}.cp .dpt .dptt:hover .dne-nota{height:auto;-webkit-transition-delay:0s;transition-delay:0s}.cp .tipo-vigencias{margin-bottom:-6px;opacity:.8;list-style:none;position:fixed;bottom:0;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%);margin:0;padding:0;z-index:1000;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.cp .tipo-vigencias div a{color:#fff}.cp .tipo-vigencias:hover,.cp:hover{opacity:1}.cp .revogado{color:#800}.cp .revogado .dpt-link{color:#999!important}.cp .omissis a{text-decoration:none!important}.cp-print .cp-linha-vigencias{display:none!important}.cp.cpe .desativado,.cp.cpe .dpt .dptt>a.desativado{text-decoration:line-through;color:#999!important}.cp.cpe .desativado table,.cp.cpe .desativado table td,.cp.cpe .dpt .dptt>a.desativado table,.cp.cpe .dpt .dptt>a.desativado table td{border:1px dotted #ccc}.cp.cpe a.nota-alteracao{color:#02baf2!important;font-size:.8rem}.cp.cpe .btn-sm{line-height:1rem}.cp.cpe .btn-outline-primary{background-color:#fff}.cp.cpe .btn-outline-primary:hover{background-color:#02baf2}.cp.cpe .dpt{display:block}.cp.cpe .dpt>.dpt-actions-fixed{position:absolute;right:-1em;top:-.8em;z-index:3;opacity:0}.cp.cpe .dpt>.dpt-actions-fixed.bottom{top:auto;bottom:3px;right:2px}.cp.cpe .dpt>.dpt-actions-fixed .activate{display:none}.cp.cpe .dpt>.dpt-actions-fixed .deactivate{display:inline}.cp.cpe .dpt>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary{color:#333}.cp.cpe .dpt>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary:hover{color:#fff;background-color:#02baf2}.cp.cpe .dpt>.dpt-actions,.cp.cpe .dpt>.dpt-actions-bottom{display:none}.cp.cpe .dpt>.dpt-text{cursor:text;min-height:30px;border:1px solid transparent}.cp.cpe .dpt>.dpt-text.hover-fixed,.cp.cpe .dpt>.dpt-text:hover{background-color:rgba(0,0,0,.01);color:#2980b9;border:1px solid #eee;-webkit-transition:color .3s ease;transition:color .3s ease}.cp.cpe .dpt>.dpt-text.artigo{float:none}.cp.cpe .dpt>.dpt-text a.link-rotulo{color:#000}.cp.cpe .dpt:hover>.dpt-actions-fixed{opacity:1}.cp.cpe .dpt:hover>.dpt-actions-fixed:hover~.dpt-text{background-color:rgba(0,0,0,.01);color:#2980b9;border:1px solid #eee;-webkit-transition:color .3s ease;transition:color .3s ease}.cp.cpe .dpt .semtexto{font-weight:700;color:#9aaed6}.cp.cpe .dpt .semtexto:hover{color:#5f76a4}.cp.cpe .dpt-alts{margin:0;margin-bottom:1em;padding:0;background-color:transparent;min-height:100px;border:2px dashed #fff}.cp.cpe .dpt-alts:hover{border-color:#d9ddde}.cp.cpe .dpt-alts:empty{border-color:#ddd}.cp.cpe .dpt-alts.drag{width:100%!important;border-color:#d9ddde}.cp.cpe .dpt-alts.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe .dpt-alts .dpt{width:100%!important;-webkit-box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);padding:0;margin:0;background-color:#edf0f1;height:auto!important;min-height:2em;z-index:1}.cp.cpe .dpt-alts .dpt:not(:first-child){border-top:1px solid #fff}.cp.cpe .dpt-alts .dpt>.dpt-text{padding:.3em 1em;margin-top:0;margin-bottom:0}.cp.cpe .dpt-alts .dpt>.dpt-text a.link-rotulo{text-decoration:underline}.cp.cpe .dpt-alts .dpt-selected.dpt{margin:0 -.5em}.cp.cpe .dpt-selected.dpt{width:auto!important;margin:1em -.5em;border:1px solid #ddd!important;padding:0;background-color:#fafafa;border-radius:3px;z-index:4}.cp.cpe .dpt-selected.dpt>.dpt-text{border:1px solid transparent}.cp.cpe .dpt-selected.dpt>.dpt-text:hover{border:1px solid transparent;background-color:transparent}.cp.cpe .dpt-selected.dpt>.dpt-form{margin:0 1rem}.cp.cpe .dpt-selected.dpt>.dpt-actions,.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom{display:table;background-color:#e5e5e5;padding:.8rem .6rem .2rem .6rem;margin-bottom:0;width:100%}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom>.btn-action,.cp.cpe .dpt-selected.dpt>.dpt-actions>.btn-action{display:table-cell;float:none}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom .btns-excluir .btn-danger,.cp.cpe .dpt-selected.dpt>.dpt-actions .btns-excluir .btn-danger{display:inline-block;opacity:.3;color:#fff}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom .btns-excluir .btn-danger:hover,.cp.cpe .dpt-selected.dpt>.dpt-actions .btns-excluir .btn-danger:hover{opacity:1}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom{margin:0;padding-bottom:.8rem}.cp.cpe .dpt-selected .dpt-block{border-top:1px solid #e5e5e5!important;opacity:.6;-webkit-transition:opacity .4s ease;transition:opacity .4s ease}.cp.cpe .dpt-selected .dpt-block:hover{opacity:1}.cp.cpe .dpt-selected .dpt-text{opacity:.7;margin:0;padding:.7em}.cp.cpe .dpt-selected .dpt-text:hover{opacity:1;background-color:#f5f5f5}.cp.cpe .dpt-selected .dpt-alts{margin:1em}.cp.cpe .dpt-selected .dpt-alts .dpt{-webkit-box-shadow:0 0 0;box-shadow:0 0 0}.cp.cpe .dpt-selected>.dpt-actions-fixed{opacity:1;top:-15px;right:.5em}.cp.cpe .dpt-selected>.dpt-actions-fixed .activate{display:inline}.cp.cpe .dpt-selected>.dpt-actions-fixed .deactivate{display:none}.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit{padding:0 6px;line-height:1.2rem}.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary,.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary:hover{background-color:#fad46b;border:1px solid #444}.cp.cpe .dpt-selected .btns-tipos-editor{padding:0}.cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left{right:auto!important;left:0;padding:0}.cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left:before{content:"";position:absolute;background-color:transparent;width:100%;height:3px;top:-3px;display:inline-block}.cp.cpe .dpt-selected .dropdown-menu li{line-height:1}.cp.cpe .dpt-selected .dropdown-menu li a{display:block;line-height:1.5rem;padding:0 .5rem;white-space:nowrap}.cp.cpe .dpt-selected .dropdown-menu li a:hover{background-color:#f0f0f0}.cp.cpe .dpt-selected .dropdown-menu li:not(:last-child){border-bottom:1px solid #f0f0f0}.cp.cpe .dpt-selected .btn-group .radius-right{border-bottom-right-radius:.2rem!important;border-top-right-radius:.2rem!important}.cp.cpe .dpt-selected:hover>.dpt-actions-fixed{opacity:1}.cp.cpe1_old_apagar{margin-bottom:15em}.cp.cpe1_old_apagar .desativado,.cp.cpe1_old_apagar .desativado *,.cp.cpe1_old_apagar .dpt .dptt>a.desativado,.cp.cpe1_old_apagar .dpt .dptt>a.desativado *{text-decoration:line-through;color:#999!important}.cp.cpe1_old_apagar .desativado * table,.cp.cpe1_old_apagar .desativado * table td,.cp.cpe1_old_apagar .desativado table,.cp.cpe1_old_apagar .desativado table td,.cp.cpe1_old_apagar .dpt .dptt>a.desativado * table,.cp.cpe1_old_apagar .dpt .dptt>a.desativado * table td,.cp.cpe1_old_apagar .dpt .dptt>a.desativado table,.cp.cpe1_old_apagar .dpt .dptt>a.desativado table td{border:1px dotted #ccc}.cp.cpe1_old_apagar a{text-decoration:none;cursor:pointer}.cp.cpe1_old_apagar .dpt{position:relative;display:block}.cp.cpe1_old_apagar .dpt .semtexto{font-weight:700;color:#bfd1f6}.cp.cpe1_old_apagar .dpt .artigo{float:none}.cp.cpe1_old_apagar .dpt .caput{margin-top:0}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left,.cp.cpe1_old_apagar .dpt>.actions_right{color:#fff;right:0;position:absolute;opacity:0;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out;z-index:1000}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left a.btn-bloco,.cp.cpe1_old_apagar .dpt>.actions_right a.btn-bloco{background-color:#3498db;color:#fff!important;padding:8px 18px 6px;display:inline-block;line-height:1;float:right}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left a.btn-bloco:hover,.cp.cpe1_old_apagar .dpt>.actions_right a.btn-bloco:hover{opacity:1;background-image:-webkit-gradient(linear,left top,left bottom,from(#1c81c4),to(#0b6dad));background-image:linear-gradient(180deg,#1c81c4,#0b6dad)}.cp.cpe1_old_apagar .dpt-selected .csform .dpt:hover>.actions_left,.cp.cpe1_old_apagar .dpt:hover>.actions_right{opacity:1}.cp.cpe1_old_apagar .dpt .bloco{display:block;clear:both}.cp.cpe1_old_apagar .dpt .bloco :hover{color:#27ae60}.cp.cpe1_old_apagar .dpt .bloco .de{cursor:pointer}.cp.cpe1_old_apagar .dpt .articulacao{border-top:2px solid #e5e5e5;margin:2em 0}.cp.cpe1_old_apagar .dpt .bloco_alteracao{margin:1em 0;padding:0;background-color:transparent;min-height:100px;border:2px dashed #fff}.cp.cpe1_old_apagar .dpt .bloco_alteracao:hover{border-color:#d9ddde}.cp.cpe1_old_apagar .dpt .bloco_alteracao.drag{width:100%!important;border-color:#d9ddde}.cp.cpe1_old_apagar .dpt .bloco_alteracao.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt{width:100%!important;-webkit-box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);padding:.3em 1em;margin:0;background-color:#edf0f1;z-index:1}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt:not(:first-child){border-top:1px solid #fff}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.ui-draggable div{cursor:pointer}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.dpt-comp-selected{-webkit-transition:all .3s ease;transition:all .3s ease;width:auto!important;margin:2em -3.7em;-webkit-box-shadow:0 0 6px rgba(0,0,0,.16),0 6px 12px rgba(0,0,0,.32);box-shadow:0 0 6px rgba(0,0,0,.16),0 6px 12px rgba(0,0,0,.32)}.cp.cpe1_old_apagar .dpt-selected{font-size:1em;border:0 solid #ccc;margin:1em -1.8em 1em -1.8em;padding:2.2em 2.2em 1.6em 2.2em;-webkit-box-shadow:-4px 15px 15px rgba(0,0,0,.1),0 6px 6px rgba(0,0,0,.23);box-shadow:-4px 15px 15px rgba(0,0,0,.1),0 6px 6px rgba(0,0,0,.23);background-image:-webkit-gradient(linear,left top,left bottom,from(#eaeaee),to(#ddd));background-image:linear-gradient(180deg,#eaeaee,#ddd)}.cp.cpe1_old_apagar .dpt-selected ul{list-style:none;margin:0;padding:0}.cp.cpe1_old_apagar .dpt-selected .semtexto{color:#999}.cp.cpe1_old_apagar .dpt-selected .bloco{opacity:.5}.cp.cpe1_old_apagar .dpt-selected .bloco:hover{opacity:1}.cp.cpe1_old_apagar .dpt-selected .bloco a:hover{background:transparent}.cp.cpe1_old_apagar .dpt-selected>.bloco{opacity:1;margin:1em}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao{margin:0;padding:1em;border:0 transparent;background-image:-webkit-gradient(linear,left top,left bottom,from(#eaeaee),to(#ddd));background-image:linear-gradient(180deg,#eaeaee,#ddd)}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao:hover{border-color:transparent}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag{width:100%!important}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt{width:auto!important;-webkit-transition:all .3s ease;transition:all .3s ease;background-color:#fff}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt:not(:first-child){border-top:0 solid #fff}.cp.cpe1_old_apagar .dpt-selected>.dpt{padding:0}.cp.cpe1_old_apagar .dpt-selected>.dpt:last-child{padding-bottom:1em}.cp.cpe1_old_apagar .dpt-selected .csform .dpt-selected>.actions_left a.btn-bloco,.cp.cpe1_old_apagar .dpt-selected>.actions_right a.btn-bloco{display:none}.cp.cpe1_old_apagar .dpt-selected .csform{display:block;clear:both;z-index:9;position:static}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action{-webkit-animation:fadeIn 1s ease-in-out;-moz-animation:fadeIn 1s ease-in-out;-o-animation:fadeIn 1s ease-in-out;opacity:1;position:absolute;display:table;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action a{color:#16407c;display:block;background:transparent;vertical-align:middle;text-align:center;font-weight:400;text-shadow:0 0 10px rgba(0,0,0,.3);padding:.33em .4em}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li{position:relative;display:table-cell;vertical-align:top}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li:hover{background-color:hsla(0,0%,100%,.5)}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li:hover>a{text-shadow:0 0 5px #777;color:#0a5}.cp.cpe1_old_apagar .dpt-selected .csform .label_status{position:absolute;bottom:0;right:0;color:#889;padding:.3em;font-size:80%;text-align:right;z-index:15;display:table}.cp.cpe1_old_apagar .dpt-selected .csform .label_status li{display:table-cell;padding:0 .5em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents{z-index:11;top:0;left:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents a{padding:.62em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div,.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents li{font-size:80%;display:table-cell;vertical-align:middle;border-right:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div{padding:0 .4em;font-stretch:condensed;font-variant:small-caps;font-weight:700;text-shadow:0 0 10px #fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents>li:hover a{color:#16407c;font-weight:400}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top{top:0;right:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top a{padding-right:1em;padding-left:1em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top li{display:table-cell;vertical-align:middle;border-left:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom{top:auto;left:0;bottom:0;display:inline-block;border-top:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a{padding:0 .4em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li{border:0;border-right:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right{top:2.2em;right:0;bottom:0;display:block}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left li,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right li{width:2.2em;display:block;border-bottom:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left li:first-child,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right li:first-child{border-top:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left{right:auto;left:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts{background:transparent;position:relative;z-index:19;display:table;width:100%}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li{display:table-cell}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li:hover>a{background-image:-webkit-gradient(linear,left top,left bottom,from(#1c81c4),to(#0b6dad));background-image:linear-gradient(180deg,#1c81c4,#0b6dad)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a{background-image:-webkit-gradient(linear,left top,left bottom,from(#3498db),to(#2980c9));background-image:linear-gradient(180deg,#3498db,#2980c9);border-right:1px solid #fff;padding:.2em;display:block;color:#fff;text-align:center;white-space:nowrap}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar{text-align:left;background:#a70808;color:#c99;padding-left:1.7em;position:relative}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir:hover,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:hover{background-color:#c70808;color:#ecc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir:before,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{z-index:20;position:absolute;background:url(/static/img/icon_delete_white.png) no-repeat 50% 50%;content:"";top:0;left:0;display:block;color:#000;margin-left:.4em;height:100%;width:2em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar{background:#1f8b4d;color:#fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:hover{background:#2d9c5c;color:#fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{background:url(/static/img/icon_save_white.png) no-repeat 50% 50%}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a span{padding:0 .7em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li:last-child>a{border-right:0 solid #fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li:nth-child(2n) a{background:#3385ca}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li a{border-right:1px solid #fff;display:block;color:#fff;background:#2980c9;font-size:80%;padding:.23em 1em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li a:hover{background:#0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior{table-layout:fixed}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir{display:block;position:static}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{right:.5em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a{background-color:#a70808}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a:hover{background:#c70808}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{border-color:transparent transparent #a70808;right:10%;left:auto}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:hover:before{border-color:transparent transparent #c70808}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo{z-index:2000}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li a,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li:first-child:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li:first-child:hover:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul:after,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li:hover>ul,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li.menu_excluir>ul li:first-child:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li.menu_excluir>ul li:first-child:before{right:auto;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform textarea{margin:0;resize:vertical;min-height:12.6em;border:0;font-size:120%;width:100%}.cp.cpe1_old_apagar .dpt-selected .csform textarea:focus{background:#fff}.cp.cpe1_old_apagar .dpt-selected .csform textarea::-webkit-input-placeholder{color:#c70808;opacity:.6;font-size:80%}.cp.cpe1_old_apagar .dpt-selected .csform textarea:-moz-placeholder,.cp.cpe1_old_apagar .dpt-selected .csform textarea::-moz-placeholder{color:#c70808}.cp.cpe1_old_apagar .dpt-selected .csform textarea:-ms-input-placeholder{color:#c70808;opacity:.6}.cp.cpe1_old_apagar .selected{background-color:hsla(0,0%,100%,.5)}.cp.cpe1_old_apagar .selected a:hover{color:#16407c!important;font-weight:400!important}.lista-dispositivo,.result-busca-dispositivo{padding:0 0 1em;min-height:3em}.lista-dispositivo ul,.result-busca-dispositivo ul{list-style:none;margin:0;padding:1em 0 0;-webkit-transition:all 2s linear;transition:all 2s linear;clear:both;position:relative}.lista-dispositivo ul li,.result-busca-dispositivo ul li{display:table;border-collapse:separate;border-bottom:1px solid #fff;width:100%}.lista-dispositivo ul li.ta_title,.result-busca-dispositivo ul li.ta_title{background-color:rgba(0,0,0,.15);width:100%}.lista-dispositivo ul li:last-child .itemlabel,.result-busca-dispositivo ul li:last-child .itemlabel{margin:0}.lista-dispositivo ul li .iteminput,.result-busca-dispositivo ul li .iteminput{background-color:rgba(0,0,0,.1);border-right:1px solid #fff;display:table-cell;padding:.5em;vertical-align:middle;text-align:center;position:relative}.lista-dispositivo ul li .iteminput input,.result-busca-dispositivo ul li .iteminput input{margin:0}.lista-dispositivo ul li .iteminput .flag,.result-busca-dispositivo ul li .iteminput .flag{position:absolute;top:0;left:0;right:0;line-height:1;background-color:#ccc;color:#fff;cursor:default;font-size:80%}.lista-dispositivo ul li .itemlabel,.result-busca-dispositivo ul li .itemlabel{margin:0;background-color:rgba(0,0,0,.1);display:table-cell;padding:.5em;vertical-align:middle;width:100%}.lista-dispositivo ul li .itemlabel .artigo,.result-busca-dispositivo ul li .itemlabel .artigo{float:none}.lista-dispositivo .label-tip-results,.result-busca-dispositivo .label-tip-results{background-color:rgba(0,0,0,.1);padding:0 5px;top:0;z-index:1;line-height:1.3;color:#00f;font-size:.9em}.lista-dispositivo .nomenclatura_heranca,.result-busca-dispositivo .nomenclatura_heranca{font-size:90%;color:#057dba;display:inline}.lista-dispositivo.controls-radio-checkbox{border:0}.label_vigencia{border-top:1px solid #fff;display:inline-block;color:#555}.label_vigencia span{color:grey}.cp-nav-parents .dropdown-menu{left:0;right:auto;padding:0}.cp-nav-parents .dropdown-menu:before{content:"";position:absolute;top:-11px;width:100%;height:11px}.cp-nav-parents:hover .dropdown-menu{display:block}.cp-nav-parents a.active small{color:#fff!important}.table-notificacoes tbody tr td{border-top:1px solid #fff;padding:5px;vertical-align:middle}.table-notificacoes tbody tr td ul{margin:0}.table-notificacoes tbody tr td ul li:hover{background-color:rgba(0,0,0,.1)}.btn-modal-open{float:right}.modal .modal-content .alert:only-child{margin:0}.class_color_container{background:#ddd!important}.clear{clear:both}.mce-tinymce.mce-container{border:1px solid #ccc!important;margin-right:2px}.mce-btn button:hover{background-color:rgba(0,0,0,.1)!important;text-shadow:0 0 5px #fff;-webkit-box-shadow:0 0 5px #777;box-shadow:0 0 5px #777}.mce-menu{background:#eee!important}.displaynone{display:none!important}@media only screen and (max-width:991.98px){.cp .table,.cp table{width:auto!important;white-space:normal;overflow-x:auto!important}}@media only screen and (max-width:800px){.cp .fixed{z-index:98;position:relative}.cp.cpe1 .dpt-selected{margin:1em 0}.cp.cpe1 .dpt-selected .csform .actions_parents,.cp.cpe1 .dpt-selected .csform .label_status{font-size:80%;position:static!important;display:block!important;padding:0;height:auto!important;left:0;right:auto;text-align:left}.cp.cpe1 .dpt-selected .csform .actions_parents div,.cp.cpe1 .dpt-selected .csform .actions_parents li,.cp.cpe1 .dpt-selected .csform .label_status div,.cp.cpe1 .dpt-selected .csform .label_status li{display:inline-block!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li a{border-right:0!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1 .dpt-selected .csform .actions_inserts>li:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a span{display:none}.cp.cpe1 .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-excluir,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar,.cp.cpe1_old_apagar .cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar{padding-left:0;min-width:1em}.cp.cpe1 .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-excluir:before,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before,.cp.cpe1_old_apagar .cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{width:100%;margin:0}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in,.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_next,.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior{position:static}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in>ul{left:1em!important;right:1em!important;margin-left:0}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in>ul li:first-child:before{left:37%}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_next>ul{left:0!important;right:1em!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior>ul{left:1em!important;right:0!important;margin-left:0;margin-right:.5em}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:before{right:42%;left:auto}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{left:10%!important;right:0!important;margin-left:0;margin-right:.5em}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{right:0;left:auto}}@media only screen and (max-width:575.98px){.cp .cp-linha-vigencias>li{height:1px}.cp .cp-linha-vigencias>li .circle{width:8px;height:8px;margin:-4px auto 0}.cp .cp-linha-vigencias>li>a{font-size:.75rem}.cp .cp-linha-vigencias>li:nth-child(2n)>a{margin-top:4px}.cp .cp-linha-vigencias>li:nth-child(odd)>a{margin-bottom:4px}.cp .cp-linha-vigencias>li ul a{line-height:1.3rem;font-size:.7rem;background:#fff}.cp .cp-linha-vigencias>li.active .circle{width:14px;height:14px;margin:-7px auto 0}.cp .cp-linha-vigencias>li.active:not(:last-child)>a{margin-bottom:15px}.cp .cp-linha-vigencias>li.active:first-child>a,.cp .cp-linha-vigencias>li.active:last-child>a{margin-bottom:10px}}@media print{.button,.cp-linha-vigencias,.cp .vigencias,.dne,.menu-icon,.tipo-vigencias,.toggle-topbar{display:none!important}#btn_font_mais,#btn_font_menos,#btn_impressao{display:none}.container{width:100%}} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css.gz b/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css.gz deleted file mode 100644 index 8d6ef9763..000000000 Binary files a/sapl/static/sapl/frontend/css/compilacao.90ba9ac3.css.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/css/compilacao.991aa842.css b/sapl/static/sapl/frontend/css/compilacao.991aa842.css new file mode 100644 index 000000000..5a7293bbe --- /dev/null +++ b/sapl/static/sapl/frontend/css/compilacao.991aa842.css @@ -0,0 +1 @@ +a:link:after,a:visited:after{content:""}.test_import:nth-child(2n){background-color:#ccc}#wait_message{display:block;position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,86%,.75);z-index:99}#wait_message #msg{position:relative;margin:20% auto;padding:1.2em 2em;max-width:600px;text-align:center;font-size:1.5em;color:#677;border:1px solid #eee;background-color:#fff!important;-webkit-box-shadow:0 1px 2px #999;box-shadow:0 1px 2px #999}.text-center{text-align:center}.cp-notify{z-index:10000;position:fixed;top:2em;left:50%;min-width:600px;-webkit-transform:translate(-50%);transform:translate(-50%);opacity:.97}.cp-notify,.cp-notify.hide{-webkit-transition:all .4s ease;transition:all .4s ease}.cp-notify.hide{opacity:0;top:-1000px;display:block!important}.cp-notify .message{padding:1em;border:2px solid rgba(0,0,0,.1);border-radius:4px;color:rgba(0,0,0,.6);line-height:1em;font-size:1.3em;text-align:center;-webkit-box-shadow:0 0 100px rgba(0,0,0,.2);box-shadow:0 0 100px rgba(0,0,0,.2)}.cp .vigencia-active{margin-top:30px;display:block}.cp .cp-linha-vigencias{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;list-style:none;margin:4rem 0 3rem;padding:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cp .cp-linha-vigencias ul{list-style:none;margin:0;padding:0}.cp .cp-linha-vigencias>li{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:0;background:#000;height:2px;text-align:center;max-width:4rem}.cp .cp-linha-vigencias>li .circle{display:block;width:10px;line-height:0;background:#000;height:10px;margin:-5px auto 0;border-radius:50%}.cp .cp-linha-vigencias>li>a{position:absolute;white-space:nowrap;line-height:1rem;text-align:center}.cp .cp-linha-vigencias>li:nth-child(2n)>a{top:100%;margin-top:5px}.cp .cp-linha-vigencias>li:nth-child(odd)>a{bottom:100%;margin-bottom:5px}.cp .cp-linha-vigencias>li ul{z-index:1;position:absolute;display:none;background:#fff;margin:30px 0;border:1px solid #aaa;-webkit-box-shadow:0 0 10px #aaa;box-shadow:0 0 10px #aaa;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cp .cp-linha-vigencias>li ul:before{content:" ";width:2px;height:30px;position:absolute;display:block;background-color:#aaa;bottom:100%;left:50%;margin-left:-1px}.cp .cp-linha-vigencias>li ul li{text-align:left}.cp .cp-linha-vigencias>li ul a{display:block;white-space:nowrap;line-height:2rem;padding:0 10px;font-size:1rem}.cp .cp-linha-vigencias>li ul a:hover{background:#eee}.cp .cp-linha-vigencias>li.active .circle{display:block;width:20px;line-height:0;background:#aaa;height:20px;margin:-10px auto 0}.cp .cp-linha-vigencias>li.active:not(:last-child)>a{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);margin-bottom:25px;font-weight:700}.cp .cp-linha-vigencias>li.active:first-child>a,.cp .cp-linha-vigencias>li.active:last-child>a{-webkit-transform:rotate(0deg);transform:rotate(0deg);margin-bottom:15px;font-weight:700}.cp .cp-linha-vigencias>li.active>a{margin-bottom:5px}.cp .cp-linha-vigencias>li.active:nth-child(2n)>a{bottom:100%;top:auto}.cp .cp-linha-vigencias>li.active ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cp .cp-linha-vigencias>li.active ul li{text-align:left;width:100%}.cp .cp-vigencias .nav-link{padding:.5rem}.cp .cp-vigencias .dropdown-toggle:after{zoom:.8;margin:0}.cp .cp-vigencias .dropdown-menu{margin-left:.5rem}.cp .cp-vigencias .dropdown-item{padding:0}.cp .cp-vigencias .dropdown-item a{line-height:1;padding:.7rem}.cp .desativado .dpt-link,.cp .desativado .dpt-link *,.cp .desativado .dtxt,.cp .desativado .dtxt *,.cp .dpt .dptt>a.desativado .dpt-link,.cp .dpt .dptt>a.desativado .dpt-link *,.cp .dpt .dptt>a.desativado .dtxt,.cp .dpt .dptt>a.desativado .dtxt *{text-decoration:line-through;color:#999!important}.cp .desativado .dpt-link * table,.cp .desativado .dpt-link * table td,.cp .desativado .dpt-link table,.cp .desativado .dpt-link table td,.cp .desativado .dtxt * table,.cp .desativado .dtxt * table td,.cp .desativado .dtxt table,.cp .desativado .dtxt table td,.cp .dpt .dptt>a.desativado .dpt-link table,.cp .dpt .dptt>a.desativado .dpt-link table td,.cp .dpt .dptt>a.desativado .dtxt table,.cp .dpt .dptt>a.desativado .dtxt table td{border:1px dotted #ccc}.cp .desativado .dpt-img img,.cp .dpt .dptt>a.desativado .dpt-img img{-webkit-filter:grayscale(100%) contrast(110%);filter:grayscale(100%) contrast(110%);opacity:.5}.cp a{text-decoration:none;cursor:pointer}.cp .diff .desativado,.cp .diff .desativado *,.cp .diff .dpt .dptt>a.desativado,.cp .diff .dpt .dptt>a.desativado *,.cp .dpt .diff .dptt>a.desativado,.cp .dpt .diff .dptt>a.desativado *{text-decoration:line-through;color:#ddd!important;font-size:90%}.cp .diff .added{color:#04de2c}.cp .dpt{font-size:1em;position:relative}.cp .dpt.indent{padding-left:1em}.cp .dpt .dpt-img{text-align:center}.cp .dpt .dpt-img img{max-width:100%}.cp .dpt .dtxt{display:inline}.cp .dpt .dtxt :first-child{display:inline!important}.cp .dpt .ementa{padding:2em 0 2em 35%;font-weight:700}.cp .dpt .anexo,.cp .dpt .capitulo,.cp .dpt .disp_finais,.cp .dpt .disp_gerais,.cp .dpt .disp_preliminares,.cp .dpt .disp_transitorias,.cp .dpt .itemsecao,.cp .dpt .livro,.cp .dpt .parte,.cp .dpt .secao,.cp .dpt .subsecao,.cp .dpt .titulo,.cp .dpt .titulo_generico{text-align:center;margin-bottom:1em;font-size:1.5em;margin-top:3em;font-weight:700;font-variant:small-caps}.cp .dpt .titulo{margin-top:2em}.cp .dpt .capitulo{margin-top:1.5em;font-size:1.15em}.cp .dpt .secao{margin-top:1.2em;margin-bottom:.7em;font-weight:700;font-size:1.15em}.cp .dpt .itemsecao,.cp .dpt .subsecao{margin-top:1em;margin-bottom:.6em;font-weight:700;font-size:1.15em}.cp .dpt .artigo{font-size:1.15em;float:left}.cp .dpt .artigo .dptt{position:relative}.cp .dpt .caput,.cp .dpt .texto_n_estruturado{margin-top:.3333em;font-size:1.15em}.cp .dpt .paragrafo{font-size:1.1em;margin-top:.2222em}.cp .dpt .inciso{font-size:1.1em;margin-top:.1667em}.cp .dpt .alinea,.cp .dpt .item{font-size:1em;margin-top:2px}.cp .dpt .assinatura,.cp .dpt .fecho_lei{margin-top:.6em;font-size:1.15em}.cp .dpt .page-break{page-break-before:always}.cp .dpt .bloco_alteracao{padding-left:10%;font-style:italic;color:#018}.cp .dpt .bloco_alteracao a{text-decoration:underline}.cp .dpt .bloco_alteracao a,.cp .dpt .bloco_alteracao table,.cp .dpt .bloco_alteracao table td{color:#018!important}.cp .dpt .bloco_alteracao .desativado,.cp .dpt .bloco_alteracao .desativado a,.cp .dpt .bloco_alteracao .desativado table,.cp .dpt .bloco_alteracao .desativado table td,.cp .dpt .bloco_alteracao .dptt>a.desativado{text-decoration:line-through;color:#999!important}.cp .dpt .card-header{font-size:1.7rem}.cp .dpt .dn{font-weight:400;position:relative;font-size:80%}.cp .dpt .dn p,.cp .dpt .dn ul{font-weight:400;margin:0 0 0 0;list-style:none;padding:0}.cp .dpt .dn .dnl{display:block;text-align:left!important}.cp .dpt .dn .dnl *{display:inline}.cp .dpt .dn .dnl .bullet{padding:0 .333em;display:inline-block}.cp .dpt .dn .dnl .dnli{min-height:2.5em}.cp .dpt .dn .dnl .dnli:hover ul{font-size:1rem;clip:auto;opacity:1;background:hsla(0,0%,90%,.9)}.cp .dpt .dn .dnl .dnli ul,.cp .dpt .dn .dnl .dnli:hover ul{-webkit-transition:opacity .5s linear,clip 0s .3s;transition:opacity .5s linear,clip 0s .3s}.cp .dpt .dn .dnl .dnli ul{clip:rect(0,0,0,0);opacity:0;position:absolute;background:transparent;right:0;padding:.2em .5em 0 .5em;border:1px solid #c7e3d3;border-top:0;font-size:1.5rem}.cp .dpt .dn .dnl .dnli ul li{display:table-cell;color:#aaa}.cp .dpt .dn .dnl .dnli ul li:hover{color:#787}.cp .dpt .dn .dnl .dnli ul li .nowner,.cp .dpt .dn .dnl .dnli ul li:hover a{color:#27ae60!important}.cp .dpt .dn .dnl .dnli .ntitulo{font-size:.8rem;font-weight:700;color:#03a203;text-decoration:none}.cp .dpt .dn .dnl .dnli .ntitulo a{color:#294!important}.cp .dpt .dn .dnl .dnli .ntexto{font-variant:normal;font-size:.8rem;color:#018801}.cp .dpt .dn .dnl .dnli .ntexto a{color:#03a203!important}.cp .dpt .dn .dnl:hover,.cp .dpt .dn .dnl:hover *{display:block}.cp .dpt .dn .dnl:hover>.bullet{display:none}.cp .dpt .dn .dnl:hover .dnli{margin-top:.5em;border-top:1px solid #c7e3d3}.cp .dpt .dptt{clear:left}.cp .dpt .dptt>a{color:#000}.cp .dpt .dptt>a.nota-alteracao{color:#02baf2;font-size:.75em}.cp .dpt .dptt>a.nota-alteracao:hover{text-decoration:underline}.cp .dpt .dptt .dne{position:absolute;display:block;right:0;left:0;top:0;height:0;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:right;transform-origin:right;-webkit-transition:all .3s ease;transition:all .3s ease;border-top:1px solid #2980b9}.cp .dpt .dptt .dne ul.btns-action{list-style:none;padding:0;position:absolute;right:0;background-color:#2980b9}.cp .dpt .dptt .dne ul.btns-action li{float:left}.cp .dpt .dptt .dne ul.btns-action li:hover{background-color:rgba(0,0,0,.1)}.cp .dpt .dptt .dne ul.btns-action li a{color:#fff;padding:.15em 1em 0;display:inline-block}.cp .dpt .dptt .dne-nota{position:relative;-webkit-transform:scaleX(1);transform:scaleX(1);height:auto;border-top:0}.cp .dpt .dptt .dne-nota ul.btns-action{display:none}.cp .dpt .dptt .dne-nota .dne-form{margin:1em -2em 0;text-align:left;font-size:1rem}.cp .dpt .dptt:hover .dne{height:.1667rem;-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-delay:1s;transition-delay:1s}.cp .dpt .dptt:hover .dne-nota{height:auto;-webkit-transition-delay:0s;transition-delay:0s}.cp .tipo-vigencias{margin-bottom:-6px;opacity:.8;list-style:none;position:fixed;bottom:0;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%);margin:0;padding:0;z-index:1000;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.cp .tipo-vigencias div a{color:#fff}.cp .tipo-vigencias:hover,.cp:hover{opacity:1}.cp .revogado{color:#800}.cp .revogado .dpt-link{color:#999!important}.cp .omissis a{text-decoration:none!important}.cp-print .cp-linha-vigencias{display:none!important}.cp.cpe .desativado,.cp.cpe .dpt .dptt>a.desativado{text-decoration:line-through;color:#999!important}.cp.cpe .desativado table,.cp.cpe .desativado table td,.cp.cpe .dpt .dptt>a.desativado table,.cp.cpe .dpt .dptt>a.desativado table td{border:1px dotted #ccc}.cp.cpe a.nota-alteracao{color:#02baf2!important;font-size:.8rem}.cp.cpe .btn-sm{line-height:1rem}.cp.cpe .btn-outline-primary{background-color:#fff}.cp.cpe .btn-outline-primary:hover{background-color:#02baf2}.cp.cpe .dpt{display:block}.cp.cpe .dpt>.dpt-actions-fixed{position:absolute;right:-1em;top:-.8em;z-index:3;opacity:0}.cp.cpe .dpt>.dpt-actions-fixed.bottom{top:auto;bottom:3px;right:2px}.cp.cpe .dpt>.dpt-actions-fixed .activate{display:none}.cp.cpe .dpt>.dpt-actions-fixed .deactivate{display:inline}.cp.cpe .dpt>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary{color:#333}.cp.cpe .dpt>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary:hover{color:#fff;background-color:#02baf2}.cp.cpe .dpt>.dpt-actions,.cp.cpe .dpt>.dpt-actions-bottom{display:none}.cp.cpe .dpt>.dpt-text{cursor:text;min-height:30px;border:1px solid transparent}.cp.cpe .dpt>.dpt-text.hover-fixed,.cp.cpe .dpt>.dpt-text:hover{background-color:rgba(0,0,0,.01);color:#2980b9;border:1px solid #eee;-webkit-transition:color .3s ease;transition:color .3s ease}.cp.cpe .dpt>.dpt-text.artigo{float:none}.cp.cpe .dpt>.dpt-text a.link-rotulo{color:#000}.cp.cpe .dpt:hover>.dpt-actions-fixed{opacity:1}.cp.cpe .dpt:hover>.dpt-actions-fixed:hover~.dpt-text{background-color:rgba(0,0,0,.01);color:#2980b9;border:1px solid #eee;-webkit-transition:color .3s ease;transition:color .3s ease}.cp.cpe .dpt .semtexto{font-weight:700;color:#9aaed6}.cp.cpe .dpt .semtexto:hover{color:#5f76a4}.cp.cpe .dpt-alts{margin:0;margin-bottom:1em;padding:0;background-color:transparent;min-height:100px;border:2px dashed #fff}.cp.cpe .dpt-alts:hover{border-color:#d9ddde}.cp.cpe .dpt-alts:empty{border-color:#ddd}.cp.cpe .dpt-alts.drag{width:100%!important;border-color:#d9ddde}.cp.cpe .dpt-alts.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe .dpt-alts .dpt{width:100%!important;-webkit-box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);padding:0;margin:0;background-color:#edf0f1;height:auto!important;min-height:2em;z-index:1}.cp.cpe .dpt-alts .dpt:not(:first-child){border-top:1px solid #fff}.cp.cpe .dpt-alts .dpt>.dpt-text{padding:.3em 1em;margin-top:0;margin-bottom:0}.cp.cpe .dpt-alts .dpt>.dpt-text a.link-rotulo{text-decoration:underline}.cp.cpe .dpt-alts .dpt-selected.dpt{margin:0 -.5em}.cp.cpe .dpt-selected.dpt{width:auto!important;margin:1em -.5em;border:1px solid #ddd!important;padding:0;background-color:#fafafa;border-radius:3px;z-index:4}.cp.cpe .dpt-selected.dpt>.dpt-text{border:1px solid transparent}.cp.cpe .dpt-selected.dpt>.dpt-text:hover{border:1px solid transparent;background-color:transparent}.cp.cpe .dpt-selected.dpt>.dpt-form{margin:0 1rem}.cp.cpe .dpt-selected.dpt>.dpt-actions,.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom{display:table;background-color:#e5e5e5;padding:.8rem .6rem .2rem .6rem;margin-bottom:0;width:100%}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom>.btn-action,.cp.cpe .dpt-selected.dpt>.dpt-actions>.btn-action{display:table-cell;float:none}.cp.cpe .dpt-selected.dpt>.dpt-actions .btns-excluir .btn-danger,.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom .btns-excluir .btn-danger{display:inline-block;opacity:.3;color:#fff}.cp.cpe .dpt-selected.dpt>.dpt-actions .btns-excluir .btn-danger:hover,.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom .btns-excluir .btn-danger:hover{opacity:1}.cp.cpe .dpt-selected.dpt>.dpt-actions-bottom{margin:0;padding-bottom:.8rem}.cp.cpe .dpt-selected .dpt-block{border-top:1px solid #e5e5e5!important;opacity:.6;-webkit-transition:opacity .4s ease;transition:opacity .4s ease}.cp.cpe .dpt-selected .dpt-block:hover{opacity:1}.cp.cpe .dpt-selected .dpt-text{opacity:.7;margin:0;padding:.7em}.cp.cpe .dpt-selected .dpt-text:hover{opacity:1;background-color:#f5f5f5}.cp.cpe .dpt-selected .dpt-alts{margin:1em}.cp.cpe .dpt-selected .dpt-alts .dpt{-webkit-box-shadow:0 0 0;box-shadow:0 0 0}.cp.cpe .dpt-selected>.dpt-actions-fixed{opacity:1;top:-15px;right:.5em}.cp.cpe .dpt-selected>.dpt-actions-fixed .activate{display:inline}.cp.cpe .dpt-selected>.dpt-actions-fixed .deactivate{display:none}.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit{padding:0 6px;line-height:1.2rem}.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary,.cp.cpe .dpt-selected>.dpt-actions-fixed .btn-dpt-edit.btn-outline-primary:hover{background-color:#fad46b;border:1px solid #444}.cp.cpe .dpt-selected .btns-tipos-editor{padding:0}.cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left{right:auto!important;left:0;padding:0}.cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left:before{content:"";position:absolute;background-color:transparent;width:100%;height:3px;top:-3px;display:inline-block}.cp.cpe .dpt-selected .dropdown-menu li{line-height:1}.cp.cpe .dpt-selected .dropdown-menu li a{display:block;line-height:1.5rem;padding:0 .5rem;white-space:nowrap}.cp.cpe .dpt-selected .dropdown-menu li a:hover{background-color:#f0f0f0}.cp.cpe .dpt-selected .dropdown-menu li:not(:last-child){border-bottom:1px solid #f0f0f0}.cp.cpe .dpt-selected .btn-group .radius-right{border-bottom-right-radius:.2rem!important;border-top-right-radius:.2rem!important}.cp.cpe .dpt-selected:hover>.dpt-actions-fixed{opacity:1}.cp.cpe1_old_apagar{margin-bottom:15em}.cp.cpe1_old_apagar .desativado,.cp.cpe1_old_apagar .desativado *,.cp.cpe1_old_apagar .dpt .dptt>a.desativado,.cp.cpe1_old_apagar .dpt .dptt>a.desativado *{text-decoration:line-through;color:#999!important}.cp.cpe1_old_apagar .desativado * table,.cp.cpe1_old_apagar .desativado * table td,.cp.cpe1_old_apagar .desativado table,.cp.cpe1_old_apagar .desativado table td,.cp.cpe1_old_apagar .dpt .dptt>a.desativado table,.cp.cpe1_old_apagar .dpt .dptt>a.desativado table td{border:1px dotted #ccc}.cp.cpe1_old_apagar a{text-decoration:none;cursor:pointer}.cp.cpe1_old_apagar .dpt{position:relative;display:block}.cp.cpe1_old_apagar .dpt .semtexto{font-weight:700;color:#bfd1f6}.cp.cpe1_old_apagar .dpt .artigo{float:none}.cp.cpe1_old_apagar .dpt .caput{margin-top:0}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left,.cp.cpe1_old_apagar .dpt>.actions_right{color:#fff;right:0;position:absolute;opacity:0;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out;z-index:1000}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left a.btn-bloco,.cp.cpe1_old_apagar .dpt>.actions_right a.btn-bloco{background-color:#3498db;color:#fff!important;padding:8px 18px 6px;display:inline-block;line-height:1;float:right}.cp.cpe1_old_apagar .dpt-selected .csform .dpt>.actions_left a.btn-bloco:hover,.cp.cpe1_old_apagar .dpt>.actions_right a.btn-bloco:hover{opacity:1;background-image:-webkit-gradient(linear,left top,left bottom,from(#1c81c4),to(#0b6dad));background-image:linear-gradient(180deg,#1c81c4,#0b6dad)}.cp.cpe1_old_apagar .dpt-selected .csform .dpt:hover>.actions_left,.cp.cpe1_old_apagar .dpt:hover>.actions_right{opacity:1}.cp.cpe1_old_apagar .dpt .bloco{display:block;clear:both}.cp.cpe1_old_apagar .dpt .bloco :hover{color:#27ae60}.cp.cpe1_old_apagar .dpt .bloco .de{cursor:pointer}.cp.cpe1_old_apagar .dpt .articulacao{border-top:2px solid #e5e5e5;margin:2em 0}.cp.cpe1_old_apagar .dpt .bloco_alteracao{margin:1em 0;padding:0;background-color:transparent;min-height:100px;border:2px dashed #fff}.cp.cpe1_old_apagar .dpt .bloco_alteracao:hover{border-color:#d9ddde}.cp.cpe1_old_apagar .dpt .bloco_alteracao.drag{width:100%!important;border-color:#d9ddde}.cp.cpe1_old_apagar .dpt .bloco_alteracao.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt{width:100%!important;-webkit-box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);padding:.3em 1em;margin:0;background-color:#edf0f1;z-index:1}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt:not(:first-child){border-top:1px solid #fff}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.ui-draggable div{cursor:pointer}.cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.dpt-comp-selected{-webkit-transition:all .3s ease;transition:all .3s ease;width:auto!important;margin:2em -3.7em;-webkit-box-shadow:0 0 6px rgba(0,0,0,.16),0 6px 12px rgba(0,0,0,.32);box-shadow:0 0 6px rgba(0,0,0,.16),0 6px 12px rgba(0,0,0,.32)}.cp.cpe1_old_apagar .dpt-selected{font-size:1em;border:0 solid #ccc;margin:1em -1.8em 1em -1.8em;padding:2.2em 2.2em 1.6em 2.2em;-webkit-box-shadow:-4px 15px 15px rgba(0,0,0,.1),0 6px 6px rgba(0,0,0,.23);box-shadow:-4px 15px 15px rgba(0,0,0,.1),0 6px 6px rgba(0,0,0,.23);background-image:-webkit-gradient(linear,left top,left bottom,from(#eaeaee),to(#ddd));background-image:linear-gradient(180deg,#eaeaee,#ddd)}.cp.cpe1_old_apagar .dpt-selected ul{list-style:none;margin:0;padding:0}.cp.cpe1_old_apagar .dpt-selected .semtexto{color:#999}.cp.cpe1_old_apagar .dpt-selected .bloco{opacity:.5}.cp.cpe1_old_apagar .dpt-selected .bloco:hover{opacity:1}.cp.cpe1_old_apagar .dpt-selected .bloco a:hover{background:transparent}.cp.cpe1_old_apagar .dpt-selected>.bloco{opacity:1;margin:1em}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao{margin:0;padding:1em;border:0 transparent;background-image:-webkit-gradient(linear,left top,left bottom,from(#eaeaee),to(#ddd));background-image:linear-gradient(180deg,#eaeaee,#ddd)}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao:hover{border-color:transparent}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag{width:100%!important}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag .dpt{-webkit-transition-duration:0s!important;transition-duration:0s!important}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt{width:auto!important;-webkit-transition:all .3s ease;transition:all .3s ease;background-color:#fff}.cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt:not(:first-child){border-top:0 solid #fff}.cp.cpe1_old_apagar .dpt-selected>.dpt{padding:0}.cp.cpe1_old_apagar .dpt-selected>.dpt:last-child{padding-bottom:1em}.cp.cpe1_old_apagar .dpt-selected .csform .dpt-selected>.actions_left a.btn-bloco,.cp.cpe1_old_apagar .dpt-selected>.actions_right a.btn-bloco{display:none}.cp.cpe1_old_apagar .dpt-selected .csform{display:block;clear:both;z-index:9;position:static}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action{-webkit-animation:fadeIn 1s ease-in-out;-moz-animation:fadeIn 1s ease-in-out;-o-animation:fadeIn 1s ease-in-out;opacity:1;position:absolute;display:table;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action a{color:#16407c;display:block;background:transparent;vertical-align:middle;text-align:center;font-weight:400;text-shadow:0 0 10px rgba(0,0,0,.3);padding:.33em .4em}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li{position:relative;display:table-cell;vertical-align:top}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li:hover{background-color:hsla(0,0%,100%,.5)}.cp.cpe1_old_apagar .dpt-selected .csform .btns-action>li:hover>a{text-shadow:0 0 5px #777;color:#0a5}.cp.cpe1_old_apagar .dpt-selected .csform .label_status{position:absolute;bottom:0;right:0;color:#889;padding:.3em;font-size:80%;text-align:right;z-index:15;display:table}.cp.cpe1_old_apagar .dpt-selected .csform .label_status li{display:table-cell;padding:0 .5em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents{z-index:11;top:0;left:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents a{padding:.62em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div,.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents li{font-size:80%;display:table-cell;vertical-align:middle;border-right:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div{padding:0 .4em;font-stretch:condensed;font-variant:small-caps;font-weight:700;text-shadow:0 0 10px #fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_parents>li:hover a{color:#16407c;font-weight:400}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top{top:0;right:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top a{padding-right:1em;padding-left:1em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li,.cp.cpe1_old_apagar .dpt-selected .csform .actions_top li{display:table-cell;vertical-align:middle;border-left:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom{top:auto;left:0;bottom:0;display:inline-block;border-top:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a{padding:0 .4em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li{border:0;border-right:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right{top:2.2em;right:0;bottom:0;display:block}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left li,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right li{width:2.2em;display:block;border-bottom:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left li:first-child,.cp.cpe1_old_apagar .dpt-selected .csform .actions_right li:first-child{border-top:1px solid #ccc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_left{right:auto;left:0}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts{background:transparent;position:relative;z-index:19;display:table;width:100%}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li{display:table-cell}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li:hover>a{background-image:-webkit-gradient(linear,left top,left bottom,from(#1c81c4),to(#0b6dad));background-image:linear-gradient(180deg,#1c81c4,#0b6dad)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a{background-image:-webkit-gradient(linear,left top,left bottom,from(#3498db),to(#2980c9));background-image:linear-gradient(180deg,#3498db,#2980c9);border-right:1px solid #fff;padding:.2em;display:block;color:#fff;text-align:center;white-space:nowrap}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar{text-align:left;background:#a70808;color:#c99;padding-left:1.7em;position:relative}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir:hover,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:hover{background-color:#c70808;color:#ecc}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-excluir:before,.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{z-index:20;position:absolute;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAKRWlDQ1BJQ0MgUHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICUS29SFQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvhe6Nr1rz35s3+tdc+56zznbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA+H48PCsiwAe+AAF40wsIAMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMAoAQAYMtjYuMAUC0AYCd/5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA2C0AMElXZkgAsLcAwM4QC7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5JDlFgVsILXEHV1cuHijOSRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYOXy3qvwb/ImJi4/7lz6twQAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4fjw8RaGQudnZ5eTk2ErEQlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmEYtzmj0f8twv//B3TIsRJYrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5EtqF1jA/ZLJxBYdMDi9wAA8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABEoIEqsEEb9MEYLMAGHMEF3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNwDi7CVbgOPXAP+mEInsEovIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFSilQgVUgd8j1yAjmHXEa6kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9jDah59CraA/ajz5DxzDA6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJNgR3QiBhHkFIWExYTthIqCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuIQ8Q3JBKJQzInuZACSbGkVNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHyWwqdYkBxpPhT4ihSympKGeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklLpa2ildMaaBdo92mv6HS6Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnTixnHVDA3MeuY55kPmW9VWCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+OpCdSWq1WqnVDrUxtTZ6k7qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWBNcQmsc3ZfHYqu5j9HbuLPaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRMuTFlXGuqlpeWWKtIq1GrR+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWuLqprpRuhu0R3v26n7pievl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0vx9vxUUNdw0BDpWGVYZfhhJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtMO0zHzczNos3WmTWbPTHXMueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2drSXWu627pxGnuU6TTque1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcNh9kOqx1aHX5ztHIUOlY63prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lLgssulz4umxvG3ci95Ep09XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8Ln5Uwa9+sfk9DT4FntecjL2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+eX4XfQ38j/2T/ev/RAKeAJQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI7JCtIffnmM6RzmkOhVB+6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cxTzmvLUo1Kj6qLmo82je6NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5oc7C9IWnFqkuEiw6lkBMiE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLskbw1eSTFM6Us5bmEJ6mQvEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7Fbou3Lx6VB8lrs5CsBVktCrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLhkralhktXLR1Y5r2sajmyPHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvrC1UK5YV969zX7V1PWC9Z37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp5t4tnlsOlqqX5pcObg3Z2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu0t21Ydf4btHuG3u89jTs1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID/QcjDrbXudTVHdI9VFKP1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfTH3YdZx0vakKa8ppGm1Oa+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+LvncYNuitnvnY87fag9v77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7ucu5quuVxrue56vbV7ZvfpG543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxPvF/0QO1B2UPdh9U/W/7c2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p/KdDz2TPJp4X/qL+y64XFi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3Bd9x3He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8ELrHaAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98KFhAeAjYX6TsAAABuSURBVDjLtZNBDoAgDAQbP0Y0/v8KT9BXjBcPGlFoWXsk3Wm6bA3IQLJgAQkoBszAFoGdkB1Yrw8u2KvGA2v29sC6B341ui2oCSI+PoRhSAXWhEz2d0lWk5gt+X5JICUnIjnakbDdtEABlsGY5AOFFEzNHUegwgAAAABJRU5ErkJggg==) no-repeat 50% 50%;content:"";top:0;left:0;display:block;color:#000;margin-left:.4em;height:100%;width:2em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar{background:#1f8b4d;color:#fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:hover{background:#2d9c5c;color:#fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAKRWlDQ1BJQ0MgUHJvZmlsZQAAeNqdU2dUU+kWPffe9EJLiICUS29SFQggUkKLgBSRJiohCRBKiCGh2RVRwRFFRQQbyKCIA46OgIwVUSwMigrYB+Qhoo6Do4iKyvvhe6Nr1rz35s3+tdc+56zznbPPB8AIDJZIM1E1gAypQh4R4IPHxMbh5C5AgQokcAAQCLNkIXP9IwEA+H48PCsiwAe+AAF40wsIAMBNm8AwHIf/D+pCmVwBgIQBwHSROEsIgBQAQHqOQqYAQEYBgJ2YJlMAoAQAYMtjYuMAUC0AYCd/5tMAgJ34mXsBAFuUIRUBoJEAIBNliEQAaDsArM9WikUAWDAAFGZLxDkA2C0AMElXZkgAsLcAwM4QC7IACAwAMFGIhSkABHsAYMgjI3gAhJkAFEbyVzzxK64Q5yoAAHiZsjy5JDlFgVsILXEHV1cuHijOSRcrFDZhAmGaQC7CeZkZMoE0D+DzzAAAoJEVEeCD8/14zg6uzs42jrYOXy3qvwb/ImJi4/7lz6twQAAA4XR+0f4sL7MagDsGgG3+oiXuBGheC6B194tmsg9AtQCg6dpX83D4fjw8RaGQudnZ5eTk2ErEQlthyld9/mfCX8BX/Wz5fjz89/XgvuIkgTJdgUcE+ODCzPRMpRzPkgmEYtzmj0f8twv//B3TIsRJYrlYKhTjURJxjkSajPMypSKJQpIpxSXS/2Ti3yz7Az7fNQCwaj4Be5EtqF1jA/ZLJxBYdMDi9wAA8rtvwdQoCAOAaIPhz3f/7z/9R6AlAIBmSZJxAABeRCQuVMqzP8cIAABEoIEqsEEb9MEYLMAGHMEF3MEL/GA2hEIkxMJCEEIKZIAccmAprIJCKIbNsB0qYC/UQB00wFFohpNwDi7CVbgOPXAP+mEInsEovIEJBEHICBNhIdqIAWKKWCOOCBeZhfghwUgEEoskIMmIFFEiS5E1SDFSilQgVUgd8j1yAjmHXEa6kTvIADKC/Ia8RzGUgbJRPdQMtUO5qDcahEaiC9BkdDGajxagm9BytBo9jDah59CraA/ajz5DxzDA6BgHM8RsMC7Gw0KxOCwJk2PLsSKsDKvGGrBWrAO7ifVjz7F3BBKBRcAJNgR3QiBhHkFIWExYTthIqCAcJDQR2gk3CQOEUcInIpOoS7QmuhH5xBhiMjGHWEgsI9YSjxMvEHuIQ8Q3JBKJQzInuZACSbGkVNIS0kbSblIj6SypmzRIGiOTydpka7IHOZQsICvIheSd5MPkM+Qb5CHyWwqdYkBxpPhT4ihSympKGeUQ5TTlBmWYMkFVo5pS3aihVBE1j1pCraG2Uq9Rh6gTNHWaOc2DFklLpa2ildMaaBdo92mv6HS6Ed2VHk6X0FfSy+lH6JfoA/R3DA2GFYPHiGcoGZsYBxhnGXcYr5hMphnTixnHVDA3MeuY55kPmW9VWCq2KnwVkcoKlUqVJpUbKi9Uqaqmqt6qC1XzVctUj6leU32uRlUzU+OpCdSWq1WqnVDrUxtTZ6k7qIeqZ6hvVD+kfln9iQZZw0zDT0OkUaCxX+O8xiALYxmzeCwhaw2rhnWBNcQmsc3ZfHYqu5j9HbuLPaqpoTlDM0ozV7NS85RmPwfjmHH4nHROCecop5fzforeFO8p4ikbpjRMuTFlXGuqlpeWWKtIq1GrR+u9Nq7tp52mvUW7WfuBDkHHSidcJ0dnj84FnedT2VPdpwqnFk09OvWuLqprpRuhu0R3v26n7pievl6Ankxvp955vef6HH0v/VT9bfqn9UcMWAazDCQG2wzOGDzFNXFvPB0vx9vxUUNdw0BDpWGVYZfhhJG50Tyj1UaNRg+MacZc4yTjbcZtxqMmBiYhJktN6k3umlJNuaYppjtMO0zHzczNos3WmTWbPTHXMueb55vXm9+3YFp4Wiy2qLa4ZUmy5FqmWe62vG6FWjlZpVhVWl2zRq2drSXWu627pxGnuU6TTque1mfDsPG2ybaptxmw5dgG2662bbZ9YWdiF2e3xa7D7pO9k326fY39PQcNh9kOqx1aHX5ztHIUOlY63prOnO4/fcX0lukvZ1jPEM/YM+O2E8spxGmdU5vTR2cXZ7lzg/OIi4lLgssulz4umxvG3ci95Ep09XFd4XrS9Z2bs5vC7ajbr+427mnuh9yfzDSfKZ5ZM3PQw8hD4FHl0T8Ln5Uwa9+sfk9DT4FntecjL2MvkVet17C3pXeq92HvFz72PnKf4z7jPDfeMt5ZX8w3wLfIt8tPw2+eX4XfQ38j/2T/ev/RAKeAJQFnA4mBQYFbAvv4enwhv44/Ottl9rLZ7UGMoLlBFUGPgq2C5cGtIWjI7JCtIffnmM6RzmkOhVB+6NbQB2HmYYvDfgwnhYeFV4Y/jnCIWBrRMZc1d9HcQ3PfRPpElkTem2cxTzmvLUo1Kj6qLmo82je6NLo/xi5mWczVWJ1YSWxLHDkuKq42bmy+3/zt84fineIL43sXmC/IXXB5oc7C9IWnFqkuEiw6lkBMiE44lPBBECqoFowl8hN3JY4KecIdwmciL9E20YjYQ1wqHk7ySCpNepLskbw1eSTFM6Us5bmEJ6mQvEwNTN2bOp4WmnYgbTI9Or0xg5KRkHFCqiFNk7Zn6mfmZnbLrGWFsv7Fbou3Lx6VB8lrs5CsBVktCrZCpuhUWijXKgeyZ2VXZr/Nico5lqueK83tzLPK25A3nO+f/+0SwhLhkralhktXLR1Y5r2sajmyPHF52wrjFQUrhlYGrDy4irYqbdVPq+1Xl65+vSZ6TWuBXsHKgsG1AWvrC1UK5YV969zX7V1PWC9Z37Vh+oadGz4ViYquFNsXlxV/2CjceOUbh2/Kv5nclLSpq8S5ZM9m0mbp5t4tnlsOlqqX5pcObg3Z2rQN31a07fX2Rdsvl80o27uDtkO5o788uLxlp8nOzTs/VKRU9FT6VDbu0t21Ydf4btHuG3u89jTs1dtbvPf9Psm+21UBVU3VZtVl+0n7s/c/romq6fiW+21drU5tce3HA9ID/QcjDrbXudTVHdI9VFKP1ivrRw7HH77+ne93LQ02DVWNnMbiI3BEeeTp9wnf9x4NOtp2jHus4QfTH3YdZx0vakKa8ppGm1Oa+1tiW7pPzD7R1ureevxH2x8PnDQ8WXlK81TJadrpgtOTZ/LPjJ2VnX1+LvncYNuitnvnY87fag9v77oQdOHSRf+L5zu8O85c8rh08rLb5RNXuFearzpfbep06jz+k9NPx7ucu5quuVxrue56vbV7ZvfpG543zt30vXnxFv/W1Z45Pd2983pv98X39d8W3X5yJ/3Oy7vZdyfurbxPvF/0QO1B2UPdh9U/W/7c2O/cf2rAd6Dz0dxH9waFg8/+kfWPD0MFj5mPy4YNhuueOD45OeI/cv3p/KdDz2TPJp4X/qL+y64XFi9++NXr187RmNGhl/KXk79tfKX96sDrGa/bxsLGHr7JeDMxXvRW++3Bd9x3He+j3w9P5Hwgfyj/aPmx9VPQp/uTGZOT/wQDmPP8ELrHaAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98KFg0aKnMwtOYAAAClSURBVDjL7ZXBDYMwDEV/qizCGlUP3YCBulwP0DWqnmCL1wuRQkRKaAwn/tGxnr4tOxbQAgP1eijWBL0mMVSoCdoAnxl8CbIGDhbj3BTuZSTn3Bu4S3oCdo6jtwbAHBxi/s+y3VpODvzaMBldtiwZC+CinXQMGOgrVrrP9rim3ylnt1b4EgdbZ/gnuBRg5rjUwOl4tiBjepoq/4mbpFGGxzRoANovsziEeT4TJZEAAAAASUVORK5CYII=) no-repeat 50% 50%}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>a span{padding:0 .7em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li:last-child>a{border-right:0 solid #fff}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li:nth-child(2n) a{background:#3385ca}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li a{border-right:1px solid #fff;display:block;color:#fff;background:#2980c9;font-size:80%;padding:.23em 1em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li>ul li a:hover{background:#0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior{table-layout:fixed}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.add_prior:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir{display:block;position:static}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{right:.5em}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a{background-color:#a70808}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li a:hover{background:#c70808}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{border-color:transparent transparent #a70808;right:10%;left:auto}.cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:hover:before{border-color:transparent transparent #c70808}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo{z-index:2000}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li a,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li a{border-right:0!important}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li:first-child:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul li:first-child:hover:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li>ul:after,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li:hover>ul,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante>li.menu_excluir>ul li:first-child:before,.cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo>li.menu_excluir>ul li:first-child:before{right:auto;left:.9375rem}.cp.cpe1_old_apagar .dpt-selected .csform textarea{margin:0;resize:vertical;min-height:12.6em;border:0;font-size:120%;width:100%}.cp.cpe1_old_apagar .dpt-selected .csform textarea:focus{background:#fff}.cp.cpe1_old_apagar .dpt-selected .csform textarea::-webkit-input-placeholder{color:#c70808;opacity:.6;font-size:80%}.cp.cpe1_old_apagar .dpt-selected .csform textarea:-moz-placeholder,.cp.cpe1_old_apagar .dpt-selected .csform textarea::-moz-placeholder{color:#c70808}.cp.cpe1_old_apagar .dpt-selected .csform textarea:-ms-input-placeholder{color:#c70808;opacity:.6}.cp.cpe1_old_apagar .selected{background-color:hsla(0,0%,100%,.5)}.cp.cpe1_old_apagar .selected a:hover{color:#16407c!important;font-weight:400!important}.lista-dispositivo,.result-busca-dispositivo{padding:0 0 1em;min-height:3em}.lista-dispositivo ul,.result-busca-dispositivo ul{list-style:none;margin:0;padding:1em 0 0;-webkit-transition:all 2s linear;transition:all 2s linear;clear:both;position:relative}.lista-dispositivo ul li,.result-busca-dispositivo ul li{display:table;border-collapse:separate;border-bottom:1px solid #fff;width:100%}.lista-dispositivo ul li.ta_title,.result-busca-dispositivo ul li.ta_title{background-color:rgba(0,0,0,.15);width:100%}.lista-dispositivo ul li:last-child .itemlabel,.result-busca-dispositivo ul li:last-child .itemlabel{margin:0}.lista-dispositivo ul li .iteminput,.result-busca-dispositivo ul li .iteminput{background-color:rgba(0,0,0,.1);border-right:1px solid #fff;display:table-cell;padding:.5em;vertical-align:middle;text-align:center;position:relative}.lista-dispositivo ul li .iteminput input,.result-busca-dispositivo ul li .iteminput input{margin:0}.lista-dispositivo ul li .iteminput .flag,.result-busca-dispositivo ul li .iteminput .flag{position:absolute;top:0;left:0;right:0;line-height:1;background-color:#ccc;color:#fff;cursor:default;font-size:80%}.lista-dispositivo ul li .itemlabel,.result-busca-dispositivo ul li .itemlabel{margin:0;background-color:rgba(0,0,0,.1);display:table-cell;padding:.5em;vertical-align:middle;width:100%}.lista-dispositivo ul li .itemlabel .artigo,.result-busca-dispositivo ul li .itemlabel .artigo{float:none}.lista-dispositivo .label-tip-results,.result-busca-dispositivo .label-tip-results{background-color:rgba(0,0,0,.1);padding:0 5px;top:0;z-index:1;line-height:1.3;color:blue;font-size:.9em}.lista-dispositivo .nomenclatura_heranca,.result-busca-dispositivo .nomenclatura_heranca{font-size:90%;color:#057dba;display:inline}.lista-dispositivo.controls-radio-checkbox{border:0}.label_vigencia{border-top:1px solid #fff;display:inline-block;color:#555}.label_vigencia span{color:gray}.cp-nav-parents .dropdown-menu{left:0;right:auto;padding:0}.cp-nav-parents .dropdown-menu:before{content:"";position:absolute;top:-11px;width:100%;height:11px}.cp-nav-parents:hover .dropdown-menu{display:block}.cp-nav-parents a.active small{color:#fff!important}.table-notificacoes tbody tr td{border-top:1px solid #fff;padding:5px;vertical-align:middle}.table-notificacoes tbody tr td ul{margin:0}.table-notificacoes tbody tr td ul li:hover{background-color:rgba(0,0,0,.1)}.btn-modal-open{float:right}.modal .modal-content .alert:only-child{margin:0}.class_color_container{background:#ddd!important}.clear{clear:both}.mce-tinymce.mce-container{border:1px solid #ccc!important;margin-right:2px}.mce-btn button:hover{background-color:rgba(0,0,0,.1)!important;text-shadow:0 0 5px #fff;-webkit-box-shadow:0 0 5px #777;box-shadow:0 0 5px #777}.mce-menu{background:#eee!important}.displaynone{display:none!important}@media only screen and (max-width:991.98px){.cp .table,.cp table{width:auto!important;white-space:normal;overflow-x:auto!important}}@media only screen and (max-width:800px){.cp .fixed{z-index:98;position:relative}.cp.cpe1 .dpt-selected{margin:1em 0}.cp.cpe1 .dpt-selected .csform .actions_parents,.cp.cpe1 .dpt-selected .csform .label_status{font-size:80%;position:static!important;display:block!important;padding:0;height:auto!important;left:0;right:auto;text-align:left}.cp.cpe1 .dpt-selected .csform .actions_parents div,.cp.cpe1 .dpt-selected .csform .actions_parents li,.cp.cpe1 .dpt-selected .csform .label_status div,.cp.cpe1 .dpt-selected .csform .label_status li{display:inline-block!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul{-webkit-transform:translateY(30px);transform:translateY(30px);-webkit-transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;transition:transform .1s linear,opacity .1s linear,clip 0s .3s;transition:transform .1s linear,opacity .1s linear,clip 0s .3s,-webkit-transform .1s linear;clip:rect(0,0,0,0);opacity:0;position:absolute;margin-left:.5em;-webkit-box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);box-shadow:0 6px 18px rgba(0,0,0,.19),0 2px 6px rgba(0,0,0,.23);-webkit-transition-delay:.4s;transition-delay:.4s}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li a{border-right:0!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li:first-child:before{border-width:.375rem;border-style:inset inset solid;content:"";display:block;height:0;width:0;border-color:transparent transparent #3385ca;position:absolute;top:-.71rem;left:.9375rem}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul li:first-child:hover:before{border-color:transparent transparent #0a5ea4}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>ul:after{content:"";position:absolute;z-index:-1;left:0;top:-25px;height:25px;width:100%;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.cp.cpe1 .dpt-selected .csform .actions_inserts>li:hover>ul{-webkit-transform:translateY(7px);transform:translateY(7px);-webkit-transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;transition:transform .4s linear,opacity .4s linear,clip 0s .2s;transition:transform .4s linear,opacity .4s linear,clip 0s .2s,-webkit-transform .4s linear;opacity:1;clip:rect(-100px,2000px,2000px,-100px)}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a span{display:none}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-excluir,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar{padding-left:0;min-width:1em}.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-excluir:before,.cp.cpe1 .dpt-selected .csform .actions_inserts>li>a.btn-salvar:before{width:100%;margin:0}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in,.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_next,.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior{position:static}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in>ul{left:1em!important;right:1em!important;margin-left:0}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_in>ul li:first-child:before{left:37%}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_next>ul{left:0!important;right:1em!important}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior>ul{left:1em!important;right:0!important;margin-left:0;margin-right:.5em}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.add_prior>ul li:first-child:before{right:42%;left:auto}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.menu_excluir>ul{left:10%!important;right:0!important;margin-left:0;margin-right:.5em}.cp.cpe1 .dpt-selected .csform .actions_inserts>li.menu_excluir>ul li:first-child:before{right:0;left:auto}}@media only screen and (max-width:575.98px){.cp .cp-linha-vigencias>li{height:1px}.cp .cp-linha-vigencias>li .circle{width:8px;height:8px;margin:-4px auto 0}.cp .cp-linha-vigencias>li>a{font-size:.75rem}.cp .cp-linha-vigencias>li:nth-child(2n)>a{margin-top:4px}.cp .cp-linha-vigencias>li:nth-child(odd)>a{margin-bottom:4px}.cp .cp-linha-vigencias>li ul a{line-height:1.3rem;font-size:.7rem;background:#fff}.cp .cp-linha-vigencias>li.active .circle{width:14px;height:14px;margin:-7px auto 0}.cp .cp-linha-vigencias>li.active:not(:last-child)>a{margin-bottom:15px}.cp .cp-linha-vigencias>li.active:first-child>a,.cp .cp-linha-vigencias>li.active:last-child>a{margin-bottom:10px}}@media print{.button,.cp .vigencias,.cp-linha-vigencias,.dne,.menu-icon,.tipo-vigencias,.toggle-topbar{display:none!important}#btn_font_mais,#btn_font_menos,#btn_impressao{display:none}.container{width:100%}} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/compilacao.991aa842.css.gz b/sapl/static/sapl/frontend/css/compilacao.991aa842.css.gz new file mode 100644 index 000000000..d066f9ffc Binary files /dev/null and b/sapl/static/sapl/frontend/css/compilacao.991aa842.css.gz differ diff --git a/sapl/static/sapl/frontend/css/global.45591136.css b/sapl/static/sapl/frontend/css/global.45591136.css new file mode 100644 index 000000000..2f3d375d8 --- /dev/null +++ b/sapl/static/sapl/frontend/css/global.45591136.css @@ -0,0 +1,8 @@ +.jcrop-holder{-ms-touch-action:none;direction:ltr;text-align:left}.jcrop-hline,.jcrop-vline{background:#fff url(data:image/gif;base64,R0lGODlhCAAIAJEAAKqqqv///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAAACwAAAAACAAIAAACDZQFCadrzVRMB9FZ5SwAIfkECQoAAAAsAAAAAAgACAAAAg+ELqCYaudeW9ChyOyltQAAIfkECQoAAAAsAAAAAAgACAAAAg8EhGKXm+rQYtC0WGl9oAAAIfkECQoAAAAsAAAAAAgACAAAAg+EhWKQernaYmjCWLF7qAAAIfkECQoAAAAsAAAAAAgACAAAAg2EISmna81UTAfRWeUsACH5BAkKAAAALAAAAAAIAAgAAAIPFA6imGrnXlvQocjspbUAACH5BAkKAAAALAAAAAAIAAgAAAIPlIBgl5vq0GLQtFhpfaIAACH5BAUKAAAALAAAAAAIAAgAAAIPlIFgknq52mJowlixe6gAADs=);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%}.jcrop-handle{background-color:#333;border:1px solid #eee;font-size:1px;height:7px;width:7px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none}div.jcrop-image.size-warning .jcrop-hline,div.jcrop-image.size-warning .jcrop-vline{border:1px solid red;background:none}body.change-form .allow-fullsize+.help,body.change-form .jcrop-holder+.help{clear:left}body.change-form .jcrop-holder{float:left}div.allow-fullsize{padding:5px 0 0 10px} + +/*! + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#02baf2;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#f84545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#02baf2;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#f84545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#02baf2;text-decoration:none;background-color:transparent}a:hover{color:#0180a6;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:576px){.container,.container-sm{max-width:540px}}@media(min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media(min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media(min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1,.col-auto{-webkit-box-flex:0}.col-1{-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-2,.col-3{-webkit-box-flex:0}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-4,.col-5{-webkit-box-flex:0}.col-5{-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-6,.col-7{-webkit-box-flex:0}.col-7{-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-8,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-10,.col-11{-webkit-box-flex:0}.col-11{-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media(min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media(min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media(min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media(min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8ecfb}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7bdbf8}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#a0e6fa}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#fdcbcb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#fb9e9e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fcb2b2}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media(max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media(max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media(max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media(max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#76defe;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#f84545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(248,69,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#f84545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f84545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23f84545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#f84545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f84545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23f84545' stroke='none'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#f84545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#f84545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#f84545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#fa7676;background-color:#fa7676}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before{border-color:#f84545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#f84545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media(min-width:576px){.form-inline label{-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center;margin-bottom:0}.form-inline .form-group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.btn{-webkit-transition:none;transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#029dcc;border-color:#0293bf}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,196,244,.5);box-shadow:0 0 0 .2rem rgba(40,196,244,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0293bf;border-color:#0189b3}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,196,244,.5);box-shadow:0 0 0 .2rem rgba(40,196,244,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5);box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5);box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#f84545;border-color:#f84545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#f72020;border-color:#f61414}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(249,97,97,.5);box-shadow:0 0 0 .2rem rgba(249,97,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#f84545;border-color:#f84545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#f61414;border-color:#f40909}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(249,97,97,.5);box-shadow:0 0 0 .2rem rgba(249,97,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{-webkit-box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5);box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5);box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-link{font-weight:400;color:#02baf2;text-decoration:none}.btn-link:hover{color:#0180a6}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.fade{-webkit-transition:none;transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.collapsing{-webkit-transition:none;transition:none}}.collapsing.width{width:0;height:auto;-webkit-transition:width .35s ease;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.collapsing.width{-webkit-transition:none;transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media(min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media(min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media(min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media(min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#02baf2}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#02baf2;background-color:#02baf2}.custom-control-input:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#76defe}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#a8eafe;border-color:#a8eafe}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='m6.564.75-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#02baf2;background-color:#02baf2}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{-webkit-transition:none;transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#76defe;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76defe;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#02baf2;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media(prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#a8eafe}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#02baf2;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media(prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#a8eafe}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#02baf2;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#a8eafe}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:none;transition:none}}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#02baf2}.nav-fill .nav-item,.nav-fill>.nav-link{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media(max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media(min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media(max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media(min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md,.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media(max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media(min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg,.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media(max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media(min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl,.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media(min-width:576px){.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media(min-width:576px){.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media(min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#02baf2;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0180a6;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#02baf2;border-color:#02baf2}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.badge{-webkit-transition:none;transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#02baf2}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0293bf}a.badge-primary.focus,a.badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5);box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#f84545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#f61414}a.badge-danger.focus,a.badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media(min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#01617e;background-color:#ccf1fc;border-color:#b8ecfb}.alert-primary hr{border-top-color:#a0e6fa}.alert-primary .alert-link{color:#013a4b}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#812424;background-color:#fedada;border-color:#fdcbcb}.alert-danger hr{border-top-color:#fcb2b2}.alert-danger .alert-link{color:#591919}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#02baf2;-webkit-transition:width .6s ease;transition:width .6s ease}@media(prefers-reduced-motion:reduce){.progress-bar{-webkit-transition:none;transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media(prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#02baf2;border-color:#02baf2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width:576px){.list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width:768px){.list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width:992px){.list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width:1200px){.list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#01617e;background-color:#b8ecfb}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#01617e;background-color:#a0e6fa}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#01617e;border-color:#01617e}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#812424;background-color:#fdcbcb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#812424;background-color:#fcb2b2}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#812424;border-color:#812424}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media(prefers-reduced-motion:reduce){.modal.fade .modal-dialog{-webkit-transition:none;transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-webkit-box;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media(min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media(prefers-reduced-motion:reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;transition:opacity 0s .6s}@media(prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{-webkit-transition:none;transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}@media(prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{-webkit-transition:none;transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='m5.25 0-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='m2.75 0-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;transition:opacity .6s ease}@media(prefers-reduced-motion:reduce){.carousel-indicators li{-webkit-transition:none;transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#02baf2!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0293bf!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#f84545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#f61414!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#02baf2!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#f84545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media(min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media(min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media(min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media(min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column,.flex-row{-webkit-box-direction:normal!important}.flex-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse,.flex-row-reverse{-webkit-box-direction:reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media(min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column,.flex-sm-row{-webkit-box-direction:normal!important}.flex-sm-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media(min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column,.flex-md-row{-webkit-box-direction:normal!important}.flex-md-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media(min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column,.flex-lg-row{-webkit-box-direction:normal!important}.flex-lg-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media(min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column,.flex-xl-row{-webkit-box-direction:normal!important}.flex-xl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media(min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media(min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media(min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media(min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports(position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media(min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media(min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media(min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media(min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media(min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media(min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media(min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media(min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#02baf2!important}a.text-primary:focus,a.text-primary:hover{color:#0180a6!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#f84545!important}a.text-danger:focus,a.text-danger:hover{color:#e80909!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.btn-outline-primary{color:#02baf2;border-color:#02baf2;border-color:#d6e1e5}.btn-outline-primary:hover{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#02baf2;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;border-color:#d6e1e5}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5);box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5);box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-success{color:#28a745;border-color:#28a745;border-color:#d6e1e5}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8;border-color:#d6e1e5}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107;border-color:#d6e1e5}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#f84545;border-color:#f84545;border-color:#d6e1e5}.btn-outline-danger:hover{color:#fff;background-color:#f84545;border-color:#f84545}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#f84545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#f84545;border-color:#f84545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;border-color:#d6e1e5}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40;border-color:#d6e1e5}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.navbar{padding:0}.navbar-nav{-ms-flex-preferred-size:100%;flex-basis:100%}.navbar-nav a{white-space:nowrap;color:#93a4aa}.navbar-nav .nav-link{padding-top:0;padding-bottom:0;line-height:4.5rem}.navbar-nav .dropdown-menu{background-color:#20282a;margin:0;border:0;border-radius:0;padding:0}.navbar-nav .dropdown-item{padding:0}.navbar-nav .dropdown-item:first-child,.navbar-nav .dropdown-item:last-child{border-radius:0}.navbar-nav .dropdown-item a{padding:0 15px;line-height:2.3rem;display:block;text-decoration:none;min-width:15rem}.navbar-nav .dropdown-item:hover{background-color:#364347}.navbar-nav .dropdown-item:hover a{color:#fff}.navbar-nav .pesquisa .dropdown-menu{min-width:15rem}.navbar-nav .search-form{padding:10px;min-width:20%}.navbar-nav a:not([href]):not([tabindex]){color:#777}.navbar-nav.justify-content-end .dropdown-menu{left:auto;right:0}.nav-pills .dropdown-menu{padding:0}.nav-pills .dropdown-item a{display:block}.nav-pills .dropdown-item.active a{color:#fff}@media(max-width:1199px){nav .container{max-width:none;-ms-flex-preferred-size:100%;flex-basis:100%}nav .caret{margin-left:-3px}}@media(max-width:1091px){.navbar-expand-lg .navbar-nav .nav-link{padding-left:4px;padding-right:4px;font-size:.95rem}}@media(max-width:991px){.navbar{padding:5px}.navbar-nav .nav-link{line-height:2.5rem}.navbar-nav.justify-content-end{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.navbar-nav.justify-content-end>li{display:inline-block}}@media(max-width:767px){.table{width:auto;white-space:normal;display:block;overflow-x:auto}}html{position:relative;min-height:100%}a,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,img,p{margin:0;padding:0}.h1,h1{font-size:30px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:16px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:.25em 0}p.control-label{font-weight:700}label{margin-bottom:0;line-height:1}input[type=checkbox],input[type=radio]{margin:0 5px 0 0;position:relative}fieldset fieldset{font-size:95%}fieldset fieldset legend{font-size:18px}ul{margin:0}.hidden{display:none}.form-control-static{padding:.2em 0;padding-left:12px;background-color:#f7f7f7}.form-control-static:empty{display:none}.legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;clear:both}.page-header{margin:20px 0 10px}.caret.top{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.lista-parlamentares .table td{vertical-align:middle}small{color:#777}.container-tabaux .sidebar-tabaux{background:#fafafa;margin-top:-70px;padding:10px;border:1px solid #eee}.container-tabaux .sidebar-tabaux .navbar-right{margin:0}.container-tabaux .sidebar-tabaux .nav-pills>li+li{margin-left:0}.container-tabaux .sidebar-tabaux li{width:100%}.container-tabaux .sidebar-tabaux span{display:none}.container-tabaux .sidebar-tabaux .dropdown-menu{padding:0;right:10px;margin-top:-5px;overflow:hidden}.container-tabaux .sidebar-tabaux .dropdown-menu a{border:0}.container-tabaux ul{list-style:none;padding:0}.container-tabaux .list{font-family:SourceSansProSemiBold,Helvetica,Arial,sans-serif;font-size:0}.container-tabaux .list,.container-tabaux .list ul{display:table;width:100%;margin:0}.container-tabaux .list li{width:50%;display:inline-block;position:relative}.container-tabaux .list>li{width:100%;border-bottom:1px solid #eee;padding-bottom:20px;margin-bottom:20px}.container-tabaux .list .head_title{color:#364347;font-size:1.7rem;text-transform:none}.container-tabaux .list a span,.mce-branding.mce-label{display:none}.dont-break-out{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}@media print{a[href]:after{content:none!important}}.container-home{position:relative;padding:2em 1.5em 1.5em 1.5em;max-width:1000px;margin:0 auto}.container-home a:hover{color:#444;-webkit-transition:.3s ease-in;-moz-transition:.3s ease-in;-o-transition:.3s ease-in}.container-home #homeIndex{text-align:center}.container-home .homeBanner span{color:#fff;font-size:32px;font-weight:600;display:inline-block;vertical-align:middle;padding:2px 45px 4px;border:2px solid}.container-home .homeBanner:after{display:inline-block;vertical-align:middle;height:100%}.container-home .homeBlock{display:inline-block;position:relative;background-color:#f3f3f3;width:190px;height:260px;margin:3px;text-align:center;font-size:0;overflow:hidden}.container-home .homeBlock>a{display:block;position:absolute;width:100%;height:100%;top:0;left:0}.container-home .homeBlock:after{content:"";display:inline-block;vertical-align:middle;height:100%;overflow:visible;clear:none;visibility:initial}.container-home .homeContent{position:relative;padding:10px;text-align:justify;font-size:14px;color:#fff;opacity:0;-webkit-transition:opacity .5s ease;transition:opacity .5s ease;display:inline-block;vertical-align:middle}.container-home .homeContent p{display:block;line-height:13px;font-size:80%;color:#fff}.container-home .homeIcon{position:relative;display:inline-block;width:105px;height:105px;border-radius:50%;background:#364347;z-index:1}.container-home .homeIcon:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background:#364347;top:0;left:0;-webkit-transform:scale(.95);transform:scale(.95);-webkit-transition:-webkit-transform .6s ease;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}.container-home .homeIcon img{position:absolute;margin:auto;top:0;bottom:0;right:0;left:0;-webkit-transition:opacity .4s ease .4s;transition:opacity .4s ease .4s}.container-home .homeFront{position:absolute;top:46%;width:100%;font-size:0;-webkit-transform:translateY(-60%);transform:translateY(-60%)}.container-home .homeFront h2{position:absolute;margin-top:18px;font-size:22px;font-weight:700;color:#595959!important;width:100%;padding:0 6%;z-index:0}.container-home .homeTitle{display:block;height:32px;text-align:center;width:100%;opacity:0;-webkit-transition:opacity .4s ease;transition:opacity .4s ease}.container-home .homeTitle:before{content:"";display:inline-block;vertical-align:middle;height:100%}.container-home .homeTitle h2{display:inline-block;vertical-align:middle;max-width:110px;font-size:14px;color:#fff!important;line-height:1em}.container-home .homeTitle img{display:inline-block;vertical-align:middle;height:30px;margin-right:5px}.container-home .homeBlock:hover .homeIcon:before{-webkit-transform:scale(3.6) translateY(7px);transform:scale(3.6) translateY(7px)}.container-home .homeBlock:hover .homeContent{opacity:1;-webkit-transition-delay:.2s;transition-delay:.2s}.container-home .homeBlock:hover .homeIcon img{opacity:0;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-delay:0s;transition-delay:0s}.container-home .homeBlock:hover .homeTitle{opacity:1}.masthead{padding:10px}.masthead .navbar-brand{padding:0;font-size:24px}.masthead .navbar-brand img.img-responsive{height:95px;display:inline-block}.masthead .navbar-brand small{color:#93a4aa;font-size:75%;line-height:25px}.masthead .navbar-brand .vcenter{display:inline-block;vertical-align:middle;float:none;padding:10px;line-height:1.5rem}.masthead .nav-link{padding:.3rem .5rem;margin:0 1px}.masthead .nav-link:hover{background-color:#b2c6cd;color:#fff}@media(max-width:1091px){.masthead .navbar-brand{font-size:22px}.masthead .navbar-brand img.img-responsive{height:60px}}@media(max-width:767px){.masthead{text-align:center}.masthead .container{max-width:100%;padding:0}.masthead .navbar-brand{white-space:normal;margin:0}.masthead .navbar-brand .vcenter{display:block;line-height:1em}}@media(max-width:576px){.masthead .navbar-brand{font-size:1.2rem}}@media(max-width:360px){.masthead .navbar-brand{font-size:1rem}}body{margin-bottom:160px}.footer{background:#364347;color:#fff;text-align:center;position:absolute;width:100%;bottom:0}.footer p{color:#fff;margin-top:10px}.footer .container{padding-top:25px}@media(max-width:991px){.footer{position:relative}} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/global.45591136.css.gz b/sapl/static/sapl/frontend/css/global.45591136.css.gz new file mode 100644 index 000000000..2d4cac284 Binary files /dev/null and b/sapl/static/sapl/frontend/css/global.45591136.css.gz differ diff --git a/sapl/static/sapl/frontend/css/global.80b7564c.css b/sapl/static/sapl/frontend/css/global.80b7564c.css deleted file mode 100644 index 1e0caf28f..000000000 --- a/sapl/static/sapl/frontend/css/global.80b7564c.css +++ /dev/null @@ -1 +0,0 @@ -*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#02baf2;text-decoration:none;background-color:transparent}a:hover{color:#0180a6;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1,.col-auto{-webkit-box-flex:0}.col-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-2,.col-3{-webkit-box-flex:0}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-4,.col-5{-webkit-box-flex:0}.col-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-6,.col-7{-webkit-box-flex:0}.col-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-8,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-10,.col-11{-webkit-box-flex:0}.col-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8ecfb}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7bdbf8}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#a0e6fa}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#fdcbcb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#fb9e9e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fcb2b2}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#76defe;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#f84545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(248,69,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#f84545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f84545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23f84545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#f84545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f84545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23f84545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#f84545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#f84545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#f84545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#fa7676;background-color:#fa7676}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#f84545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#f84545;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.25);box-shadow:0 0 0 .2rem rgba(248,69,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center;margin-bottom:0}.form-inline .form-group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{-webkit-transition:none;transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#029dcc;border-color:#0293bf}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,196,244,.5);box-shadow:0 0 0 .2rem rgba(40,196,244,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0293bf;border-color:#0189b3}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,196,244,.5);box-shadow:0 0 0 .2rem rgba(40,196,244,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#f84545;border-color:#f84545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#f72020;border-color:#f61414}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(249,97,97,.5);box-shadow:0 0 0 .2rem rgba(249,97,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#f84545;border-color:#f84545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#f61414;border-color:#f40909}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(249,97,97,.5);box-shadow:0 0 0 .2rem rgba(249,97,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-link{font-weight:400;color:#02baf2;text-decoration:none}.btn-link:hover{color:#0180a6}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{-webkit-transition:none;transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{-webkit-transition:none;transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#02baf2}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#02baf2;background-color:#02baf2}.custom-control-input:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#76defe}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#a8eafe;border-color:#a8eafe}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#02baf2;background-color:#02baf2}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{-webkit-transition:none;transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(2,186,242,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#76defe;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76defe;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(2,186,242,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#02baf2;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#a8eafe}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#02baf2;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#a8eafe}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#02baf2;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#a8eafe}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:none;transition:none}}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#02baf2}.nav-fill .nav-item,.nav-fill>.nav-link{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md,.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg,.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl,.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb,.breadcrumb-item{display:-webkit-box;display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#02baf2;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0180a6;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.25);box-shadow:0 0 0 .2rem rgba(2,186,242,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#02baf2;border-color:#02baf2}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{-webkit-transition:none;transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#02baf2}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0293bf}a.badge-primary.focus,a.badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#f84545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#f61414}a.badge-danger.focus,a.badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#01617e;background-color:#ccf1fc;border-color:#b8ecfb}.alert-primary hr{border-top-color:#a0e6fa}.alert-primary .alert-link{color:#013a4b}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#812424;background-color:#fedada;border-color:#fdcbcb}.alert-danger hr{border-top-color:#fcb2b2}.alert-danger .alert-link{color:#591919}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#02baf2;-webkit-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{-webkit-transition:none;transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#02baf2;border-color:#02baf2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#01617e;background-color:#b8ecfb}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#01617e;background-color:#a0e6fa}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#01617e;border-color:#01617e}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#812424;background-color:#fdcbcb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#812424;background-color:#fcb2b2}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#812424;border-color:#812424}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{-webkit-transition:none;transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-webkit-box;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{-webkit-transition:none;transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{-webkit-transition:none;transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{-webkit-transition:none;transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#02baf2!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0293bf!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#f84545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#f61414!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#02baf2!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#f84545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column,.flex-row{-webkit-box-direction:normal!important}.flex-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse,.flex-row-reverse{-webkit-box-direction:reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column,.flex-sm-row{-webkit-box-direction:normal!important}.flex-sm-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column,.flex-md-row{-webkit-box-direction:normal!important}.flex-md-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column,.flex-lg-row{-webkit-box-direction:normal!important}.flex-lg-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column,.flex-xl-row{-webkit-box-direction:normal!important}.flex-xl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#02baf2!important}a.text-primary:focus,a.text-primary:hover{color:#0180a6!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#f84545!important}a.text-danger:focus,a.text-danger:hover{color:#e80909!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.btn-outline-primary{color:#02baf2;border-color:#02baf2;border-color:#d6e1e5}.btn-outline-primary:hover{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#02baf2;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#02baf2;border-color:#02baf2}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(2,186,242,.5);box-shadow:0 0 0 .2rem rgba(2,186,242,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;border-color:#d6e1e5}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745;border-color:#d6e1e5}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8;border-color:#d6e1e5}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107;border-color:#d6e1e5}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#f84545;border-color:#f84545;border-color:#d6e1e5}.btn-outline-danger:hover{color:#fff;background-color:#f84545;border-color:#f84545}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#f84545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#f84545;border-color:#f84545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,69,69,.5);box-shadow:0 0 0 .2rem rgba(248,69,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;border-color:#d6e1e5}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40;border-color:#d6e1e5}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.navbar{padding:0}.navbar-nav{-ms-flex-preferred-size:100%;flex-basis:100%}.navbar-nav a{white-space:nowrap;color:#93a4aa}.navbar-nav .nav-link{padding-top:0;padding-bottom:0;line-height:4.5rem}.navbar-nav .dropdown-menu{background-color:#20282a;margin:0;border:0;border-radius:0;padding:0}.navbar-nav .dropdown-item{padding:0}.navbar-nav .dropdown-item:first-child,.navbar-nav .dropdown-item:last-child{border-radius:0}.navbar-nav .dropdown-item a{padding:0 15px;line-height:2.3rem;display:block;text-decoration:none;min-width:15rem}.navbar-nav .dropdown-item:hover{background-color:#364347}.navbar-nav .dropdown-item:hover a{color:#fff}.navbar-nav .pesquisa .dropdown-menu{min-width:15rem}.navbar-nav .search-form{padding:10px;min-width:20%}.navbar-nav a:not([href]):not([tabindex]){color:#777}.navbar-nav.justify-content-end .dropdown-menu{left:auto;right:0}.nav-pills .dropdown-menu{padding:0}.nav-pills .dropdown-item a{display:block}.nav-pills .dropdown-item.active a{color:#fff}@media (max-width:1199px){nav .container{max-width:none;-ms-flex-preferred-size:100%;flex-basis:100%}nav .caret{margin-left:-3px}}@media (max-width:1091px){.navbar-expand-lg .navbar-nav .nav-link{padding-left:4px;padding-right:4px;font-size:.95rem}}@media (max-width:991px){.navbar{padding:5px}.navbar-nav .nav-link{line-height:2.5rem}.navbar-nav.justify-content-end{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.navbar-nav.justify-content-end>li{display:inline-block}}@media (max-width:767px){.table{width:auto;white-space:normal;display:block;overflow-x:auto}}html{position:relative;min-height:100%}a,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,img,p{margin:0;padding:0}.h1,h1{font-size:30px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:16px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:.25em 0}p.control-label{font-weight:700}label{margin-bottom:0;line-height:1}input[type=checkbox],input[type=radio]{margin:0 5px 0 0;position:relative}fieldset fieldset{font-size:95%}fieldset fieldset legend{font-size:18px}ul{margin:0}.hidden{display:none}.form-control-static{padding:.2em 0;padding-left:12px;background-color:#f7f7f7}.form-control-static:empty{display:none}.legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;clear:both}.page-header{margin:20px 0 10px}.caret.top{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.lista-parlamentares .table td{vertical-align:middle}small{color:#777}.container-tabaux .sidebar-tabaux{background:#fafafa;margin-top:-70px;padding:10px;border:1px solid #eee}.container-tabaux .sidebar-tabaux .navbar-right{margin:0}.container-tabaux .sidebar-tabaux .nav-pills>li+li{margin-left:0}.container-tabaux .sidebar-tabaux li{width:100%}.container-tabaux .sidebar-tabaux span{display:none}.container-tabaux .sidebar-tabaux .dropdown-menu{padding:0;right:10px;margin-top:-5px;overflow:hidden}.container-tabaux .sidebar-tabaux .dropdown-menu a{border:0}.container-tabaux ul{list-style:none;padding:0}.container-tabaux .list{font-family:SourceSansProSemiBold,Helvetica,Arial,sans-serif;font-size:0}.container-tabaux .list,.container-tabaux .list ul{display:table;width:100%;margin:0}.container-tabaux .list li{width:50%;display:inline-block;position:relative}.container-tabaux .list>li{width:100%;border-bottom:1px solid #eee;padding-bottom:20px;margin-bottom:20px}.container-tabaux .list .head_title{color:#364347;font-size:1.7rem;text-transform:none}.container-tabaux .list a span,.mce-branding.mce-label{display:none}.dont-break-out{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}@media print{a[href]:after{content:none!important}}.container-home{position:relative;padding:2em 1.5em 1.5em 1.5em;max-width:1000px;margin:0 auto}.container-home a:hover{color:#444;-webkit-transition:.3s ease-in;-moz-transition:.3s ease-in;-o-transition:.3s ease-in}.container-home #homeIndex{text-align:center}.container-home .homeBanner span{color:#fff;font-size:32px;font-weight:600;display:inline-block;vertical-align:middle;padding:2px 45px 4px;border:2px solid}.container-home .homeBanner:after{display:inline-block;vertical-align:middle;height:100%}.container-home .homeBlock{display:inline-block;position:relative;background-color:#f3f3f3;width:190px;height:260px;margin:3px;text-align:center;font-size:0;overflow:hidden}.container-home .homeBlock>a{display:block;position:absolute;width:100%;height:100%;top:0;left:0}.container-home .homeBlock:after{content:"";display:inline-block;vertical-align:middle;height:100%;overflow:visible;clear:none;visibility:initial}.container-home .homeContent{position:relative;padding:10px;text-align:justify;font-size:14px;color:#fff;opacity:0;-webkit-transition:opacity .5s ease;transition:opacity .5s ease;display:inline-block;vertical-align:middle}.container-home .homeContent p{display:block;line-height:13px;font-size:80%;color:#fff}.container-home .homeIcon{position:relative;display:inline-block;width:105px;height:105px;border-radius:50%;background:#364347;z-index:1}.container-home .homeIcon:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background:#364347;top:0;left:0;-webkit-transform:scale(.95);transform:scale(.95);-webkit-transition:-webkit-transform .6s ease;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}.container-home .homeIcon img{position:absolute;margin:auto;top:0;bottom:0;right:0;left:0;-webkit-transition:opacity .4s ease .4s;transition:opacity .4s ease .4s}.container-home .homeFront{position:absolute;top:46%;width:100%;font-size:0;-webkit-transform:translateY(-60%);transform:translateY(-60%)}.container-home .homeFront h2{position:absolute;margin-top:18px;font-size:22px;font-weight:700;color:#595959!important;width:100%;padding:0 6%;z-index:0}.container-home .homeTitle{display:block;height:32px;text-align:center;width:100%;opacity:0;-webkit-transition:opacity .4s ease;transition:opacity .4s ease}.container-home .homeTitle:before{content:"";display:inline-block;vertical-align:middle;height:100%}.container-home .homeTitle h2{display:inline-block;vertical-align:middle;max-width:110px;font-size:14px;color:#fff!important;line-height:1em}.container-home .homeTitle img{display:inline-block;vertical-align:middle;height:30px;margin-right:5px}.container-home .homeBlock:hover .homeIcon:before{-webkit-transform:scale(3.6) translateY(7px);transform:scale(3.6) translateY(7px)}.container-home .homeBlock:hover .homeContent{opacity:1;-webkit-transition-delay:.2s;transition-delay:.2s}.container-home .homeBlock:hover .homeIcon img{opacity:0;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-delay:0s;transition-delay:0s}.container-home .homeBlock:hover .homeTitle{opacity:1}.masthead{padding:10px}.masthead .navbar-brand{padding:0;font-size:24px}.masthead .navbar-brand img.img-responsive{height:95px;display:inline-block}.masthead .navbar-brand small{color:#93a4aa;font-size:75%;line-height:25px}.masthead .navbar-brand .vcenter{display:inline-block;vertical-align:middle;float:none;padding:10px;line-height:1.5rem}.masthead .nav-link{padding:.3rem .5rem;margin:0 1px}.masthead .nav-link:hover{background-color:#b2c6cd;color:#fff}@media (max-width:1091px){.masthead .navbar-brand{font-size:22px}.masthead .navbar-brand img.img-responsive{height:60px}}@media (max-width:767px){.masthead{text-align:center}.masthead .container{max-width:100%;padding:0}.masthead .navbar-brand{white-space:normal;margin:0}.masthead .navbar-brand .vcenter{display:block;line-height:1em}}@media (max-width:576px){.masthead .navbar-brand{font-size:1.2rem}}@media (max-width:360px){.masthead .navbar-brand{font-size:1rem}}body{margin-bottom:160px}.footer{background:#364347;color:#fff;text-align:center;position:absolute;width:100%;bottom:0}.footer p{color:#fff;margin-top:10px}.footer .container{padding-top:25px}@media (max-width:991px){.footer{position:relative}}.jcrop-holder{-ms-touch-action:none;direction:ltr;text-align:left}.jcrop-hline,.jcrop-vline{background:#fff url(data:image/gif;base64,R0lGODlhCAAIAJEAAKqqqv///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAAACwAAAAACAAIAAACDZQFCadrzVRMB9FZ5SwAIfkECQoAAAAsAAAAAAgACAAAAg+ELqCYaudeW9ChyOyltQAAIfkECQoAAAAsAAAAAAgACAAAAg8EhGKXm+rQYtC0WGl9oAAAIfkECQoAAAAsAAAAAAgACAAAAg+EhWKQernaYmjCWLF7qAAAIfkECQoAAAAsAAAAAAgACAAAAg2EISmna81UTAfRWeUsACH5BAkKAAAALAAAAAAIAAgAAAIPFA6imGrnXlvQocjspbUAACH5BAkKAAAALAAAAAAIAAgAAAIPlIBgl5vq0GLQtFhpfaIAACH5BAUKAAAALAAAAAAIAAgAAAIPlIFgknq52mJowlixe6gAADs=);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%}.jcrop-handle{background-color:#333;border:1px solid #eee;font-size:1px;height:7px;width:7px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none}div.jcrop-image.size-warning .jcrop-hline,div.jcrop-image.size-warning .jcrop-vline{border:1px solid red;background:none}body.change-form .allow-fullsize+.help,body.change-form .jcrop-holder+.help{clear:left}body.change-form .jcrop-holder{float:left}div.allow-fullsize{padding:5px 0 0 10px} \ No newline at end of file diff --git a/sapl/static/sapl/frontend/css/global.80b7564c.css.gz b/sapl/static/sapl/frontend/css/global.80b7564c.css.gz deleted file mode 100644 index e3c7f3983..000000000 Binary files a/sapl/static/sapl/frontend/css/global.80b7564c.css.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/css/painel.5d957a9b.css b/sapl/static/sapl/frontend/css/painel.e2b9504e.css similarity index 100% rename from sapl/static/sapl/frontend/css/painel.5d957a9b.css rename to sapl/static/sapl/frontend/css/painel.e2b9504e.css diff --git a/sapl/static/sapl/frontend/css/painel.5d957a9b.css.gz b/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz similarity index 100% rename from sapl/static/sapl/frontend/css/painel.5d957a9b.css.gz rename to sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz diff --git a/sapl/static/sapl/frontend/css/parlamentar.0e433876.css b/sapl/static/sapl/frontend/css/parlamentar.cd5dc5a8.css similarity index 100% rename from sapl/static/sapl/frontend/css/parlamentar.0e433876.css rename to sapl/static/sapl/frontend/css/parlamentar.cd5dc5a8.css diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf b/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf deleted file mode 100644 index f07182514..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf.gz deleted file mode 100644 index 5f826fe8d..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.8300bd7f.ttf.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2 b/sapl/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2 new file mode 100644 index 000000000..e67e5cd53 Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-brands-400.86c7e1fa.woff2 differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.ad527cc5.woff b/sapl/static/sapl/frontend/fonts/fa-brands-400.ad527cc5.woff deleted file mode 100644 index 277ab65bb..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.ad527cc5.woff and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot b/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot deleted file mode 100644 index 958684e26..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot.gz b/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot.gz deleted file mode 100644 index cba852fa7..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.e2ca6541.eot.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.f075c50f.woff2 b/sapl/static/sapl/frontend/fonts/fa-brands-400.f075c50f.woff2 deleted file mode 100644 index 47805d471..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-brands-400.f075c50f.woff2 and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf b/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf new file mode 100644 index 000000000..24ca8b17c Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf differ diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf.gz new file mode 100644 index 000000000..f51a96d4f Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-brands-400.f5defc2e.ttf.gz differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.3c6879c4.woff b/sapl/static/sapl/frontend/fonts/fa-regular-400.3c6879c4.woff deleted file mode 100644 index 31f44b2d4..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.3c6879c4.woff and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf b/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf new file mode 100644 index 000000000..c5ac00957 Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf.gz new file mode 100644 index 000000000..10b934033 Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-regular-400.3edb9004.ttf.gz differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf b/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf deleted file mode 100644 index 659527a68..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf.gz deleted file mode 100644 index 445ca46b1..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.49f00693.ttf.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.4a74738e.woff2 b/sapl/static/sapl/frontend/fonts/fa-regular-400.4a74738e.woff2 deleted file mode 100644 index 0332a9bf9..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.4a74738e.woff2 and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot b/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot deleted file mode 100644 index bef9f7226..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot.gz b/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot.gz deleted file mode 100644 index 1d0c41cba..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-regular-400.b01516c1.eot.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2 b/sapl/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2 new file mode 100644 index 000000000..7dca1d907 Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-regular-400.e0550912.woff2 differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf b/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf deleted file mode 100644 index e07460843..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf.gz deleted file mode 100644 index 5fb15506f..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.205f07b3.ttf.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.4451e1d8.woff b/sapl/static/sapl/frontend/fonts/fa-solid-900.4451e1d8.woff deleted file mode 100644 index ef6b44744..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.4451e1d8.woff and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2 b/sapl/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2 new file mode 100644 index 000000000..4a7f96652 Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-solid-900.64d5644d.woff2 differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot b/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot deleted file mode 100644 index 5da4fa001..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot.gz b/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot.gz deleted file mode 100644 index 8b704bc42..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.8ac31674.eot.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.8e1ed89b.woff2 b/sapl/static/sapl/frontend/fonts/fa-solid-900.8e1ed89b.woff2 deleted file mode 100644 index 120b3007e..000000000 Binary files a/sapl/static/sapl/frontend/fonts/fa-solid-900.8e1ed89b.woff2 and /dev/null differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf b/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf new file mode 100644 index 000000000..43ba1cc7d Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf differ diff --git a/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf.gz new file mode 100644 index 000000000..7927583ca Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-solid-900.f418d876.ttf.gz differ diff --git a/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf b/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf new file mode 100644 index 000000000..243bc25bd Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf differ diff --git a/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf.gz new file mode 100644 index 000000000..d35115e9c Binary files /dev/null and b/sapl/static/sapl/frontend/fonts/fa-v4compatibility.7e7e1dad.ttf.gz differ diff --git a/sapl/static/sapl/frontend/img/bg.png b/sapl/static/sapl/frontend/img/bg.png new file mode 100644 index 000000000..97407ffd2 Binary files /dev/null and b/sapl/static/sapl/frontend/img/bg.png differ diff --git a/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg b/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg deleted file mode 100644 index 2b7cf17b9..000000000 --- a/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg +++ /dev/null @@ -1,3717 +0,0 @@ - - - - -Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg.gz b/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg.gz deleted file mode 100644 index 9985d995b..000000000 Binary files a/sapl/static/sapl/frontend/img/fa-brands-400.2f122423.svg.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg b/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg deleted file mode 100644 index bccc256b9..000000000 --- a/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg +++ /dev/null @@ -1,801 +0,0 @@ - - - - -Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg.gz b/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg.gz deleted file mode 100644 index b044e39d8..000000000 Binary files a/sapl/static/sapl/frontend/img/fa-regular-400.3602b7e8.svg.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg b/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg deleted file mode 100644 index 313b31188..000000000 --- a/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg +++ /dev/null @@ -1,5028 +0,0 @@ - - - - -Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg.gz b/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg.gz deleted file mode 100644 index a57d0bac6..000000000 Binary files a/sapl/static/sapl/frontend/img/fa-solid-900.664de393.svg.gz and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/icon_normas_juridicas_destaque.png b/sapl/static/sapl/frontend/img/icon_normas_juridicas_destaque.png new file mode 100644 index 000000000..81b19017f Binary files /dev/null and b/sapl/static/sapl/frontend/img/icon_normas_juridicas_destaque.png differ diff --git a/sapl/static/sapl/frontend/img/ui-icons_2694e8_256x240.274157b3.png b/sapl/static/sapl/frontend/img/ui-icons_2694e8_256x240.274157b3.png deleted file mode 100644 index 8e978c867..000000000 Binary files a/sapl/static/sapl/frontend/img/ui-icons_2694e8_256x240.274157b3.png and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/ui-icons_2e83ff_256x240.602e5d4d.png b/sapl/static/sapl/frontend/img/ui-icons_2e83ff_256x240.602e5d4d.png deleted file mode 100644 index b900add60..000000000 Binary files a/sapl/static/sapl/frontend/img/ui-icons_2e83ff_256x240.602e5d4d.png and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/ui-icons_3d80b3_256x240.24fcd129.png b/sapl/static/sapl/frontend/img/ui-icons_3d80b3_256x240.24fcd129.png deleted file mode 100644 index 94496c7cd..000000000 Binary files a/sapl/static/sapl/frontend/img/ui-icons_3d80b3_256x240.24fcd129.png and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/ui-icons_72a7cf_256x240.55a4c5ce.png b/sapl/static/sapl/frontend/img/ui-icons_72a7cf_256x240.55a4c5ce.png deleted file mode 100644 index 520d9a590..000000000 Binary files a/sapl/static/sapl/frontend/img/ui-icons_72a7cf_256x240.55a4c5ce.png and /dev/null differ diff --git a/sapl/static/sapl/frontend/img/ui-icons_ffffff_256x240.bb2a88be.png b/sapl/static/sapl/frontend/img/ui-icons_ffffff_256x240.bb2a88be.png deleted file mode 100644 index 395dc0935..000000000 Binary files a/sapl/static/sapl/frontend/img/ui-icons_ffffff_256x240.bb2a88be.png and /dev/null differ diff --git a/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js b/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js new file mode 100644 index 000000000..55ae1ba97 --- /dev/null +++ b/sapl/static/sapl/frontend/js/chunk-vendors.874df7f4.js @@ -0,0 +1,13 @@ +/*! For license information please see chunk-vendors.874df7f4.js.LICENSE.txt */ +(self.webpackChunksapl_frontend=self.webpackChunksapl_frontend||[]).push([[998],{9669:(e,t,n)=>{e.exports=n(1609)},5448:(e,t,n)=>{"use strict";var h=n(4867),f=n(6026),p=n(4372),m=n(5327),g=n(4097),v=n(4109),b=n(7985),y=n(7874),_=n(2648),w=n(644),x=n(205);e.exports=function(d){return new Promise(function(t,n){var e,r=d.data,i=d.headers,o=d.responseType;function s(){d.cancelToken&&d.cancelToken.unsubscribe(e),d.signal&&d.signal.removeEventListener("abort",e)}h.isFormData(r)&&h.isStandardBrowserEnv()&&delete i["Content-Type"];var a=new XMLHttpRequest,l=(d.auth&&(l=d.auth.username||"",u=d.auth.password?unescape(encodeURIComponent(d.auth.password)):"",i.Authorization="Basic "+btoa(l+":"+u)),g(d.baseURL,d.url));function c(){var e;a&&(e="getAllResponseHeaders"in a?v(a.getAllResponseHeaders()):null,e={data:o&&"text"!==o&&"json"!==o?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:e,config:d,request:a},f(function(e){t(e),s()},function(e){n(e),s()},e),a=null)}a.open(d.method.toUpperCase(),m(l,d.params,d.paramsSerializer),!0),a.timeout=d.timeout,"onloadend"in a?a.onloadend=c:a.onreadystatechange=function(){a&&4===a.readyState&&(0!==a.status||a.responseURL&&0===a.responseURL.indexOf("file:"))&&setTimeout(c)},a.onabort=function(){a&&(n(new _("Request aborted",_.ECONNABORTED,d,a)),a=null)},a.onerror=function(){n(new _("Network Error",_.ERR_NETWORK,d,a,a)),a=null},a.ontimeout=function(){var e=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded",t=d.transitional||y;d.timeoutErrorMessage&&(e=d.timeoutErrorMessage),n(new _(e,t.clarifyTimeoutError?_.ETIMEDOUT:_.ECONNABORTED,d,a)),a=null},h.isStandardBrowserEnv()&&(u=(d.withCredentials||b(l))&&d.xsrfCookieName?p.read(d.xsrfCookieName):void 0)&&(i[d.xsrfHeaderName]=u),"setRequestHeader"in a&&h.forEach(i,function(e,t){void 0===r&&"content-type"===t.toLowerCase()?delete i[t]:a.setRequestHeader(t,e)}),h.isUndefined(d.withCredentials)||(a.withCredentials=!!d.withCredentials),o&&"json"!==o&&(a.responseType=d.responseType),"function"==typeof d.onDownloadProgress&&a.addEventListener("progress",d.onDownloadProgress),"function"==typeof d.onUploadProgress&&a.upload&&a.upload.addEventListener("progress",d.onUploadProgress),(d.cancelToken||d.signal)&&(e=function(e){a&&(n(!e||e.type?new w:e),a.abort(),a=null)},d.cancelToken&&d.cancelToken.subscribe(e),d.signal&&(d.signal.aborted?e():d.signal.addEventListener("abort",e)));var r=r||null,u=x(l);u&&-1===["http","https","file"].indexOf(u)?n(new _("Unsupported protocol "+u+":",_.ERR_BAD_REQUEST,d)):a.send(r)})}},1609:(e,t,n)=>{"use strict";var i=n(4867),o=n(1849),s=n(321),a=n(7185);var r=function t(n){var e=new s(n),r=o(s.prototype.request,e);return i.extend(r,s.prototype,e),i.extend(r,e),r.create=function(e){return t(a(n,e))},r}(n(5546));r.Axios=s,r.CanceledError=n(644),r.CancelToken=n(4972),r.isCancel=n(6502),r.VERSION=n(7288).version,r.toFormData=n(7675),r.AxiosError=n(2648),r.Cancel=r.CanceledError,r.all=function(e){return Promise.all(e)},r.spread=n(8713),r.isAxiosError=n(6268),e.exports=r,e.exports.default=r},4972:(e,t,n)=>{"use strict";var i=n(644);function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");this.promise=new Promise(function(e){t=e});var t,r=this;this.promise.then(function(e){if(r._listeners){for(var t=r._listeners.length,n=0;n{"use strict";var r=n(2648);function i(e){r.call(this,null==e?"canceled":e,r.ERR_CANCELED),this.name="CanceledError"}n(4867).inherits(i,r,{__CANCEL__:!0}),e.exports=i},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,n)=>{"use strict";var r=n(4867),i=n(5327),o=n(782),u=n(3572),d=n(7185),s=n(4097),h=n(4875),f=h.validators;function a(e){this.defaults=e,this.interceptors={request:new o,response:new o}}a.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=d(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n,e=t.transitional,r=(void 0!==e&&h.assertOptions(e,{silentJSONParsing:f.transitional(f.boolean),forcedJSONParsing:f.transitional(f.boolean),clarifyTimeoutError:f.transitional(f.boolean)},!1),[]),i=!0,o=(this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}),[]);if(this.interceptors.response.forEach(function(e){o.push(e.fulfilled,e.rejected)}),i){for(var s=t;r.length;){var a=r.shift(),l=r.shift();try{s=a(s)}catch(e){l(e);break}}try{n=u(s)}catch(e){return Promise.reject(e)}for(;o.length;)n=n.then(o.shift(),o.shift())}else{var c=[u,void 0];for(Array.prototype.unshift.apply(c,r),c=c.concat(o),n=Promise.resolve(t);c.length;)n=n.then(c.shift(),c.shift())}return n},a.prototype.getUri=function(e){e=d(this.defaults,e);var t=s(e.baseURL,e.url);return i(t,e.params,e.paramsSerializer)},r.forEach(["delete","get","head","options"],function(n){a.prototype[n]=function(e,t){return this.request(d(t||{},{method:n,url:e,data:(t||{}).data}))}}),r.forEach(["post","put","patch"],function(i){function e(r){return function(e,t,n){return this.request(d(n||{},{method:i,headers:r?{"Content-Type":"multipart/form-data"}:{},url:e,data:t}))}}a.prototype[i]=e(),a.prototype[i+"Form"]=e(!0)}),e.exports=a},2648:(e,t,n)=>{"use strict";var a=n(4867);function l(e,t,n,r,i){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}a.inherits(l,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var c=l.prototype,r={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach(function(e){r[e]={value:e}}),Object.defineProperties(l,r),Object.defineProperty(c,"isAxiosError",{value:!0}),l.from=function(e,t,n,r,i,o){var s=Object.create(c);return a.toFlatObject(e,s,function(e){return e!==Error.prototype}),l.call(s,e.message,t,n,r,i),s.name=e.name,o&&Object.assign(s,o),s},e.exports=l},782:(e,t,n)=>{"use strict";var r=n(4867);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,function(e){null!==e&&t(e)})},e.exports=i},4097:(e,t,n)=>{"use strict";var r=n(1793),i=n(7303);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},3572:(e,t,n)=>{"use strict";var r=n(4867),i=n(8527),o=n(6502),s=n(5546),a=n(644);function l(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new a}e.exports=function(t){return l(t),t.headers=t.headers||{},t.data=i.call(t,t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],function(e){delete t.headers[e]}),(t.adapter||s.adapter)(t).then(function(e){return l(t),e.data=i.call(t,e.data,e.headers,t.transformResponse),e},function(e){return o(e)||(l(t),e&&e.response&&(e.response.data=i.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},7185:(e,t,n)=>{"use strict";var c=n(4867);e.exports=function(t,n){n=n||{};var r={};function i(e,t){return c.isPlainObject(e)&&c.isPlainObject(t)?c.merge(e,t):c.isPlainObject(t)?c.merge({},t):c.isArray(t)?t.slice():t}function o(e){return c.isUndefined(n[e])?c.isUndefined(t[e])?void 0:i(void 0,t[e]):i(t[e],n[e])}function e(e){if(!c.isUndefined(n[e]))return i(void 0,n[e])}function s(e){return c.isUndefined(n[e])?c.isUndefined(t[e])?void 0:i(void 0,t[e]):i(void 0,n[e])}function a(e){return e in n?i(t[e],n[e]):e in t?i(void 0,t[e]):void 0}var l={url:e,method:e,data:e,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a};return c.forEach(Object.keys(t).concat(Object.keys(n)),function(e){var t=l[e]||o,n=t(e);c.isUndefined(n)&&t!==a||(r[e]=n)}),r}},6026:(e,t,n)=>{"use strict";var i=n(2648);e.exports=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new i("Request failed with status code "+n.status,[i.ERR_BAD_REQUEST,i.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}},8527:(e,t,n)=>{"use strict";var i=n(4867),o=n(5546);e.exports=function(t,n,e){var r=this||o;return i.forEach(e,function(e){t=e.call(r,t,n)}),t}},5546:(e,t,n)=>{"use strict";var s=n(4867),a=n(6016),r=n(2648),i=n(7874),l=n(7675),o={"Content-Type":"application/x-www-form-urlencoded"};function c(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var u,d={transitional:i,adapter:u="undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?n(5448):u,transformRequest:[function(e,t){if(a(t,"Accept"),a(t,"Content-Type"),!(s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e))){if(s.isArrayBufferView(e))return e.buffer;if(s.isURLSearchParams(e))return c(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var n=s.isObject(e),r=t&&t["Content-Type"];if((i=s.isFileList(e))||n&&"multipart/form-data"===r)return o=this.env&&this.env.FormData,l(i?{"files[]":e}:e,o&&new o);if(n||"application/json"===r){c(t,"application/json");var i=e,o=void 0,n=void 0;if(s.isString(i))try{return(o||JSON.parse)(i),s.trim(i)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(i)}}return e}],transformResponse:[function(e){var t=this.transitional||d.transitional,n=t&&t.silentJSONParsing,t=t&&t.forcedJSONParsing,n=!n&&"json"===this.responseType;if(n||t&&s.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw r.from(e,r.ERR_BAD_RESPONSE,this,null,this.response);throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:n(1623)},validateStatus:function(e){return 200<=e&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};s.forEach(["delete","get","head"],function(e){d.headers[e]={}}),s.forEach(["post","put","patch"],function(e){d.headers[e]=s.merge(o)}),e.exports=d},7874:e=>{"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7288:e=>{e.exports={version:"0.27.2"}},1849:e=>{"use strict";e.exports=function(n,r){return function(){for(var e=new Array(arguments.length),t=0;t{"use strict";var i=n(4867);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){var r;return!t||(n=n?n(t):i.isURLSearchParams(t)?t.toString():(r=[],i.forEach(t,function(e,t){null!=e&&(i.isArray(e)?t+="[]":e=[e],i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),r.push(o(t)+"="+o(e))}))}),r.join("&")))&&(-1!==(t=e.indexOf("#"))&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n),e}},7303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4372:(e,t,n)=>{"use strict";var a=n(4867);e.exports=a.isStandardBrowserEnv()?{write:function(e,t,n,r,i,o){var s=[];s.push(e+"="+encodeURIComponent(t)),a.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),a.isString(r)&&s.push("path="+r),a.isString(i)&&s.push("domain="+i),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){e=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}},6268:(e,t,n)=>{"use strict";var r=n(4867);e.exports=function(e){return r.isObject(e)&&!0===e.isAxiosError}},7985:(e,t,n)=>{"use strict";var r,i,o,s=n(4867);function a(e){return i&&(o.setAttribute("href",e),e=o.href),o.setAttribute("href",e),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}e.exports=s.isStandardBrowserEnv()?(i=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a"),r=a(window.location.href),function(e){e=s.isString(e)?a(e):e;return e.protocol===r.protocol&&e.host===r.host}):function(){return!0}},6016:(e,t,n)=>{"use strict";var i=n(4867);e.exports=function(n,r){i.forEach(n,function(e,t){t!==r&&t.toUpperCase()===r.toUpperCase()&&(n[r]=e,delete n[t])})}},1623:e=>{e.exports=null},4109:(e,t,n)=>{"use strict";var i=n(4867),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,r={};return e&&i.forEach(e.split("\n"),function(e){n=e.indexOf(":"),t=i.trim(e.substr(0,n)).toLowerCase(),n=i.trim(e.substr(n+1)),!t||r[t]&&0<=o.indexOf(t)||(r[t]="set-cookie"===t?(r[t]||[]).concat([n]):r[t]?r[t]+", "+n:n)}),r}},205:e=>{"use strict";e.exports=function(e){e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return e&&e[1]||""}},8713:e=>{"use strict";e.exports=function(t){return function(e){return t.apply(null,e)}}},7675:(e,t,n)=>{"use strict";var a=n(4867);e.exports=function(e,o){o=o||new FormData;var t=[];function s(e){return null===e?"":a.isDate(e)?e.toISOString():a.isArrayBuffer(e)||a.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}return function r(e,i){if(a.isPlainObject(e)||a.isArray(e)){if(-1!==t.indexOf(e))throw Error("Circular reference detected in "+i);t.push(e),a.forEach(e,function(e,t){if(!a.isUndefined(e)){var n=i?i+"."+t:t;if(e&&!i&&"object"==typeof e)if(a.endsWith(t,"{}"))e=JSON.stringify(e);else if(a.endsWith(t,"[]")&&(t=a.toArray(e)))return void t.forEach(function(e){a.isUndefined(e)||o.append(n,s(e))});r(e,n)}}),t.pop()}else o.append(i,s(e))}(e),o}},4875:(e,t,n)=>{"use strict";var s=n(7288).version,l=n(2648),r={},a=(["object","boolean","number","function","string","symbol"].forEach(function(t,n){r[t]=function(e){return typeof e===t||"a"+(n<1?"n ":" ")+t}}),{});r.transitional=function(r,i,n){function o(e,t){return"[Axios v"+s+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(e,t,n){if(!1===r)throw new l(o(t," has been removed"+(i?" in "+i:"")),l.ERR_DEPRECATED);return i&&!a[t]&&(a[t]=!0,console.warn(o(t," has been deprecated since v"+i+" and will be removed in the near future"))),!r||r(e,t,n)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new l("options must be an object",l.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),i=r.length;0{"use strict";var r,i=n(1849),o=Object.prototype.toString,s=(r=Object.create(null),function(e){e=o.call(e);return r[e]||(r[e]=e.slice(8,-1).toLowerCase())});function a(t){return t=t.toLowerCase(),function(e){return s(e)===t}}function l(e){return Array.isArray(e)}function c(e){return void 0===e}var u=a("ArrayBuffer");function d(e){return null!==e&&"object"==typeof e}function h(e){return"object"===s(e)&&(null===(e=Object.getPrototypeOf(e))||e===Object.prototype)}var n=a("Date"),f=a("File"),p=a("Blob"),m=a("FileList");function g(e){return"[object Function]"===o.call(e)}var v,b=a("URLSearchParams");function y(e,t){if(null!=e)if(l(e="object"!=typeof e?[e]:e))for(var n=0,r=e.length;ne.length)&&(n=e.length),n-=t.length,-1!==(e=e.indexOf(t,n))&&e===n},toArray:function(e){if(!e)return null;var t=e.length;if(c(t))return null;for(var n=new Array(t);0{"use strict";t.d(e,{v5:()=>Pe});var a=t(538),e="BFormSelect",n="BFormSelectOption",r="BFormSelectOptionGroup",l=t(3294),c=t(2299),i="default",u=t(1572),o="undefined"!=typeof window,s="undefined"!=typeof document,d="undefined"!=typeof navigator,h=o&&s&&d,f=o?window:{},p=s?document:{},s=d?navigator:{},d=(s.userAgent||"").toLowerCase(),H=0{"use strict";n.d(t,{A1:()=>r,JJ:()=>o,KB:()=>i});var r="BvConfig",i="$bvConfig",o=161==n.j?["xs","sm","md","lg","xl"]:null},3294:(e,t,n)=>{"use strict";n.d(t,{gn:()=>i,z2:()=>r});var r="change",i="input"},2299:(e,t,n)=>{"use strict";n.d(t,{N0:()=>s,U5:()=>i,XO:()=>a,gL:()=>l,jg:()=>o,r1:()=>r});var r=161==n.j?void 0:null,t=Array,i=Boolean,o=(Date,Function,Number),n=Object,s=(RegExp,String),a=[t,n],l=[i,s]},824:(e,t,n)=>{"use strict";n.d(t,{OX:()=>r,ny:()=>i});var r=/\[(\d+)]/g,i=/(<([^>]+)>)/gi},1572:(e,t,n)=>{"use strict";n.d(t,{Dp:()=>r,zo:()=>i});var r=function(){return Array.from.apply(Array,arguments)},i=function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";var i,o;function r(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function s(t){for(var e=1;ee.length)&&(t=e.length);for(var n=0,r=new Array(t);nu}),161==n.j&&(i=n(3284)),161==n.j&&(o=n(7040));var u=function n(r){var e=1{"use strict";var r,i,o,s,a,l,c;function u(e,t){for(var n=0;np}),161==n.j&&(r=n(538)),161==n.j&&(i=n(8750)),161==n.j&&(o=n(158)),161==n.j&&(s=n(7668)),161==n.j&&(a=n(3284)),161==n.j&&(l=n(7040)),161==n.j&&(c=n(7568));var d,h=161==n.j?(t=f,(n=[{key:"setConfig",value:function(){var t=this,r=0{"use strict";n.d(t,{b:()=>i});function r(e){var t="undefined"!=typeof process&&process?{NODE_ENV:"production",BASE_URL:"/static/sapl/frontend/"}:{};return e?t[e]||(1{"use strict";n.d(t,{U:()=>a,o:()=>s}),161==n.j&&(r=n(824)),161==n.j&&(i=n(8265)),161==n.j&&(o=n(3284));var r,i,o,s=function(t,e){var n=2{"use strict";n.d(t,{y:()=>r});var r=function(e){return e}},3284:(e,t,n)=>{"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.d(t,{Ft:()=>s,HD:()=>u,Jp:()=>a,Kn:()=>h,PO:()=>f,jn:()=>c,kJ:()=>d,mf:()=>l,o8:()=>o});function i(e){return r(e)}var o=function(e){return void 0===e},s=function(e){return null===e},a=function(e){return o(e)||s(e)},l=function(e){return"function"===i(e)},c=function(e){return"boolean"===i(e)},u=function(e){return"string"===i(e)},d=function(e){return Array.isArray(e)},h=function(e){return null!==e&&"object"===r(e)},f=function(e){return"[object Object]"===Object.prototype.toString.call(e)}},7040:(e,t,n)=>{"use strict";function r(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function i(t){for(var e=1;ec,Sv:()=>a,Ue:()=>s,XP:()=>l});var s=function(e,t){return Object.create(e,t)},a=function(e){return Object.getOwnPropertyNames(e)},l=function(e){return Object.keys(e)},c=function(n){return l(n).sort().reduce(function(e,t){return i(i({},e),{},o({},t,n[t]))},{})}},3020:(e,t,n)=>{"use strict";n.d(t,{pi:()=>y,y2:()=>_});function r(i){var o=(0,u.Ue)(null);return function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.d(t,{ZK:()=>i}),161==n.j&&(r=n(8077));var r,i=function(e){var t=1=s)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}},t=(g.jQueryDetection(),K(),"alert"),G="4.6.2",X="bs.alert",J="."+X,Q,ee=m["default"].fn[t],te="alert",ne="fade",re="show",ie="close"+J,oe="closed"+J,se="click"+J+".data-api",ae='[data-dismiss="alert"]',r=function(){function r(e){this._element=e}var e=r.prototype;e.close=function e(t){var n=this._element;if(t)n=this._getRootElement(t);var r=this._triggerCloseEvent(n);if(r.isDefaultPrevented())return;this._removeElement(n)};e.dispose=function e(){m["default"].removeData(this._element,X);this._element=null};e._getRootElement=function e(t){var n=g.getSelectorFromElement(t);var r=false;if(n)r=document.querySelector(n);if(!r)r=m["default"](t).closest("."+te)[0];return r};e._triggerCloseEvent=function e(t){var n=m["default"].Event(ie);m["default"](t).trigger(n);return n};e._removeElement=function e(t){var n=this;m["default"](t).removeClass(re);if(!m["default"](t).hasClass(ne)){this._destroyElement(t);return}var r=g.getTransitionDurationFromElement(t);m["default"](t).one(g.TRANSITION_END,function(e){return n._destroyElement(t,e)}).emulateTransitionEnd(r)};e._destroyElement=function e(t){m["default"](t).detach().trigger(oe).remove()};r._jQueryInterface=function e(n){return this.each(function(){var e=m["default"](this);var t=e.data(X);if(!t){t=new r(this);e.data(X,t)}if(n==="close")t[n](this)})};r._handleDismiss=function e(t){return function(e){if(e)e.preventDefault();t.close(this)}};n(r,null,[{key:"VERSION",get:function e(){return G}}]);return r}(),i=(m["default"](document).on(se,ae,r._handleDismiss(new r)),m["default"].fn[t]=r._jQueryInterface,m["default"].fn[t].Constructor=r,m["default"].fn[t].noConflict=function(){m["default"].fn[t]=ee;return r._jQueryInterface},"button"),le="4.6.2",ce="bs.button",ue="."+ce,de=".data-api",he=m["default"].fn[i],l="active",fe="btn",pe="focus",me="click"+ue+de,ge="focus"+ue+de+" "+("blur"+ue+de),ve="load"+ue+de,be='[data-toggle^="button"]',ye='[data-toggle="buttons"]',_e='[data-toggle="button"]',we='[data-toggle="buttons"] .btn',xe='input:not([type="hidden"])',Ce=".active",ke=".btn",o=function(){function i(e){this._element=e;this.shouldAvoidTriggerChange=false}var e=i.prototype;e.toggle=function e(){var t=true;var n=true;var r=m["default"](this._element).closest(ye)[0];if(r){var i=this._element.querySelector(xe);if(i){if(i.type==="radio")if(i.checked&&this._element.classList.contains(l))t=false;else{var o=r.querySelector(Ce);if(o)m["default"](o).removeClass(l)}if(t){if(i.type==="checkbox"||i.type==="radio")i.checked=!this._element.classList.contains(l);if(!this.shouldAvoidTriggerChange)m["default"](i).trigger("change")}i.focus();n=false}}if(!(this._element.hasAttribute("disabled")||this._element.classList.contains("disabled"))){if(n)this._element.setAttribute("aria-pressed",!this._element.classList.contains(l));if(t)m["default"](this._element).toggleClass(l)}};e.dispose=function e(){m["default"].removeData(this._element,ce);this._element=null};i._jQueryInterface=function e(n,r){return this.each(function(){var e=m["default"](this);var t=e.data(ce);if(!t){t=new i(this);e.data(ce,t)}t.shouldAvoidTriggerChange=r;if(n==="toggle")t[n]()})};n(i,null,[{key:"VERSION",get:function e(){return le}}]);return i}(),c=(m["default"](document).on(me,be,function(e){var t=e.target;var n=t;if(!m["default"](t).hasClass(fe))t=m["default"](t).closest(ke)[0];if(!t||t.hasAttribute("disabled")||t.classList.contains("disabled"))e.preventDefault();else{var r=t.querySelector(xe);if(r&&(r.hasAttribute("disabled")||r.classList.contains("disabled"))){e.preventDefault();return}if(n.tagName==="INPUT"||t.tagName!=="LABEL")o._jQueryInterface.call(m["default"](t),"toggle",n.tagName==="INPUT")}}).on(ge,be,function(e){var t=m["default"](e.target).closest(ke)[0];m["default"](t).toggleClass(pe,/^focus(in)?$/.test(e.type))}),m["default"](window).on(ve,function(){var e=[].slice.call(document.querySelectorAll(we));for(var t=0,n=e.length;t0;this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent);this._addEventListeners()}var e=s.prototype;e.next=function e(){if(!this._isSliding)this._slide(Fe)};e.nextWhenVisible=function e(){var t=m["default"](this._element);if(!document.hidden&&t.is(":visible")&&t.css("visibility")!=="hidden")this.next()};e.prev=function e(){if(!this._isSliding)this._slide(ze)};e.pause=function e(t){if(!t)this._isPaused=true;if(this._element.querySelector(st)){g.triggerTransitionEnd(this._element);this.cycle(true)}clearInterval(this._interval);this._interval=null};e.cycle=function e(t){if(!t)this._isPaused=false;if(this._interval){clearInterval(this._interval);this._interval=null}if(this._config.interval&&!this._isPaused){this._updateInterval();this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval)}};e.to=function e(t){var n=this;this._activeElement=this._element.querySelector(rt);var r=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding){m["default"](this._element).one(Ue,function(){return n.to(t)});return}if(r===t){this.pause();this.cycle();return}var i=t>r?Fe:ze;this._slide(i,this._items[t])};e.dispose=function e(){m["default"](this._element).off(d);m["default"].removeData(this._element,u);this._items=null;this._config=null;this._element=null;this._interval=null;this._isPaused=null;this._isSliding=null;this._activeElement=null;this._indicatorsElement=null};e._getConfig=function e(t){t=a({},ut,t);g.typeCheckConfig(c,t,dt);return t};e._handleSwipe=function e(){var t=Math.abs(this.touchDeltaX);if(t<=Ae)return;var n=t/this.touchDeltaX;this.touchDeltaX=0;if(n>0)this.prev();if(n<0)this.next()};e._addEventListeners=function e(){var t=this;if(this._config.keyboard)m["default"](this._element).on($e,function(e){return t._keydown(e)});if(this._config.pause==="hover")m["default"](this._element).on(Ze,function(e){return t.pause(e)}).on(Ye,function(e){return t.cycle(e)});if(this._config.touch)this._addTouchEventListeners()};e._addTouchEventListeners=function e(){var n=this;if(!this._touchSupported)return;var t=function e(t){if(n._pointerEvent&&ht[t.originalEvent.pointerType.toUpperCase()])n.touchStartX=t.originalEvent.clientX;else if(!n._pointerEvent)n.touchStartX=t.originalEvent.touches[0].clientX};var r=function e(t){n.touchDeltaX=t.originalEvent.touches&&t.originalEvent.touches.length>1?0:t.originalEvent.touches[0].clientX-n.touchStartX};var i=function e(t){if(n._pointerEvent&&ht[t.originalEvent.pointerType.toUpperCase()])n.touchDeltaX=t.originalEvent.clientX-n.touchStartX;n._handleSwipe();if(n._config.pause==="hover"){n.pause();if(n.touchTimeout)clearTimeout(n.touchTimeout);n.touchTimeout=setTimeout(function(e){return n.cycle(e)},Me+n._config.interval)}};m["default"](this._element.querySelectorAll(ot)).on(Qe,function(e){return e.preventDefault()});if(this._pointerEvent){m["default"](this._element).on(Xe,function(e){return t(e)});m["default"](this._element).on(Je,function(e){return i(e)});this._element.classList.add(Be)}else{m["default"](this._element).on(qe,function(e){return t(e)});m["default"](this._element).on(Ke,function(e){return r(e)});m["default"](this._element).on(Ge,function(e){return i(e)})}};e._keydown=function e(t){if(/input|textarea/i.test(t.target.tagName))return;switch(t.which){case Oe:t.preventDefault();this.prev();break;case Ee:t.preventDefault();this.next();break}};e._getItemIndex=function e(t){this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(it)):[];return this._items.indexOf(t)};e._getItemByDirection=function e(t,n){var r=t===Fe;var i=t===ze;var o=this._getItemIndex(n);var s=this._items.length-1;var a=i&&o===0||r&&o===s;if(a&&!this._config.wrap)return n;var l=t===ze?-1:1;var c=(o+l)%this._items.length;return c===-1?this._items[this._items.length-1]:this._items[c]};e._triggerSlideEvent=function e(t,n){var r=this._getItemIndex(t);var i=this._getItemIndex(this._element.querySelector(rt));var o=m["default"].Event(We,{relatedTarget:t,direction:n,from:i,to:r});m["default"](this._element).trigger(o);return o};e._setActiveIndicatorElement=function e(t){if(this._indicatorsElement){var n=[].slice.call(this._indicatorsElement.querySelectorAll(nt));m["default"](n).removeClass(v);var r=this._indicatorsElement.children[this._getItemIndex(t)];if(r)m["default"](r).addClass(v)}};e._updateInterval=function e(){var t=this._activeElement||this._element.querySelector(rt);if(!t)return;var n=parseInt(t.getAttribute("data-interval"),10);if(n){this._config.defaultInterval=this._config.defaultInterval||this._config.interval;this._config.interval=n}else this._config.interval=this._config.defaultInterval||this._config.interval};e._slide=function e(t,n){var r=this;var i=this._element.querySelector(rt);var o=this._getItemIndex(i);var s=n||i&&this._getItemByDirection(t,i);var a=this._getItemIndex(s);var l=Boolean(this._interval);var c;var u;var d;if(t===Fe){c=Re;u=Le;d=je}else{c=Ie;u=He;d=Ve}if(s&&m["default"](s).hasClass(v)){this._isSliding=false;return}var h=this._triggerSlideEvent(s,d);if(h.isDefaultPrevented())return;if(!i||!s)return;this._isSliding=true;if(l)this.pause();this._setActiveIndicatorElement(s);this._activeElement=s;var f=m["default"].Event(Ue,{relatedTarget:s,direction:d,from:o,to:a});if(m["default"](this._element).hasClass(Pe)){m["default"](s).addClass(u);g.reflow(s);m["default"](i).addClass(c);m["default"](s).addClass(c);var p=g.getTransitionDurationFromElement(i);m["default"](i).one(g.TRANSITION_END,function(){m["default"](s).removeClass(c+" "+u).addClass(v);m["default"](i).removeClass(v+" "+u+" "+c);r._isSliding=false;setTimeout(function(){return m["default"](r._element).trigger(f)},0)}).emulateTransitionEnd(p)}else{m["default"](i).removeClass(v);m["default"](s).addClass(v);this._isSliding=false;m["default"](this._element).trigger(f)}if(l)this.cycle()};s._jQueryInterface=function e(r){return this.each(function(){var e=m["default"](this).data(u);var t=a({},ut,m["default"](this).data());if(typeof r==="object")t=a({},t,r);var n=typeof r==="string"?r:t.slide;if(!e){e=new s(this,t);m["default"](this).data(u,e)}if(typeof r==="number")e.to(r);else if(typeof n==="string"){if(typeof e[n]==="undefined")throw new TypeError('No method named "'+n+'"');e[n]()}else if(t.interval&&t.ride){e.pause();e.cycle()}})};s._dataApiClickHandler=function e(t){var n=g.getSelectorFromElement(this);if(!n)return;var r=m["default"](n)[0];if(!r||!m["default"](r).hasClass(Ne))return;var i=a({},m["default"](r).data(),m["default"](this).data());var o=this.getAttribute("data-slide-to");if(o)i.interval=false;s._jQueryInterface.call(m["default"](r),i);if(o)m["default"](r).data(u).to(o);t.preventDefault()};n(s,null,[{key:"VERSION",get:function e(){return Se}},{key:"Default",get:function e(){return ut}}]);return s}(),h=(m["default"](document).on(tt,lt,s._dataApiClickHandler),m["default"](window).on(et,function(){var e=[].slice.call(document.querySelectorAll(ct));for(var t=0,n=e.length;t0){this._selector=s;this._triggerArray.push(o)}}this._parent=this._config.parent?this._getParent():null;if(!this._config.parent)this._addAriaAndCollapsedClass(this._element,this._triggerArray);if(this._config.toggle)this.toggle()}var e=u.prototype;e.toggle=function e(){if(m["default"](this._element).hasClass(b))this.hide();else this.show()};e.show=function e(){var t=this;if(this._isTransitioning||m["default"](this._element).hasClass(b))return;var n;var r;if(this._parent){n=[].slice.call(this._parent.querySelectorAll(St)).filter(function(e){if(typeof t._config.parent==="string")return e.getAttribute("data-parent")===t._config.parent;return e.classList.contains(y)});if(n.length===0)n=null}if(n){r=m["default"](n).not(this._selector).data(f);if(r&&r._isTransitioning)return}var i=m["default"].Event(_t);m["default"](this._element).trigger(i);if(i.isDefaultPrevented())return;if(n){u._jQueryInterface.call(m["default"](n).not(this._selector),"hide");if(!r)m["default"](n).data(f,null)}var o=this._getDimension();m["default"](this._element).removeClass(y).addClass(gt);this._element.style[o]=0;if(this._triggerArray.length)m["default"](this._triggerArray).removeClass(vt).attr("aria-expanded",true);this.setTransitioning(true);var s=function e(){m["default"](t._element).removeClass(gt).addClass(y+" "+b);t._element.style[o]="";t.setTransitioning(false);m["default"](t._element).trigger(wt)};var a=o[0].toUpperCase()+o.slice(1);var l="scroll"+a;var c=g.getTransitionDurationFromElement(this._element);m["default"](this._element).one(g.TRANSITION_END,s).emulateTransitionEnd(c);this._element.style[o]=this._element[l]+"px"};e.hide=function e(){var t=this;if(this._isTransitioning||!m["default"](this._element).hasClass(b))return;var n=m["default"].Event(xt);m["default"](this._element).trigger(n);if(n.isDefaultPrevented())return;var r=this._getDimension();this._element.style[r]=this._element.getBoundingClientRect()[r]+"px";g.reflow(this._element);m["default"](this._element).addClass(gt).removeClass(y+" "+b);var i=this._triggerArray.length;if(i>0)for(var o=0;o0};e._getOffset=function e(){var t=this;var n={};if(typeof this._config.offset==="function")n.fn=function(e){e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element));return e};else n.offset=this._config.offset;return n};e._getPopperConfig=function e(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};if(this._config.display==="static")t.modifiers.applyStyle={enabled:false};return a({},t,this._config.popperConfig)};u._jQueryInterface=function e(n){return this.each(function(){var e=m["default"](this).data(Mt);var t=typeof n==="object"?n:null;if(!e){e=new u(this,t);m["default"](this).data(Mt,e)}if(typeof n==="string"){if(typeof e[n]==="undefined")throw new TypeError('No method named "'+n+'"');e[n]()}})};u._clearMenus=function e(t){if(t&&(t.which===Bt||t.type==="keyup"&&t.which!==Rt))return;var n=[].slice.call(document.querySelectorAll(en));for(var r=0,i=n.length;r0)o--;if(t.which===Ht&&odocument.documentElement.clientHeight;if(!r)this._element.style.overflowY="hidden";this._element.classList.add(kn);var i=g.getTransitionDurationFromElement(this._dialog);m["default"](this._element).off(g.TRANSITION_END);m["default"](this._element).one(g.TRANSITION_END,function(){t._element.classList.remove(kn);if(!r)m["default"](t._element).one(g.TRANSITION_END,function(){t._element.style.overflowY=""}).emulateTransitionEnd(t._element,i)}).emulateTransitionEnd(i);this._element.focus()};e._showElement=function e(t){var n=this;var r=m["default"](this._element).hasClass(T);var i=this._dialog?this._dialog.querySelector(Bn):null;if(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)document.body.appendChild(this._element);this._element.style.display="block";this._element.removeAttribute("aria-hidden");this._element.setAttribute("aria-modal",true);this._element.setAttribute("role","dialog");if(m["default"](this._dialog).hasClass(yn)&&i)i.scrollTop=0;else this._element.scrollTop=0;if(r)g.reflow(this._element);m["default"](this._element).addClass(Cn);if(this._config.focus)this._enforceFocus();var o=m["default"].Event(En,{relatedTarget:t});var s=function e(){if(n._config.focus)n._element.focus();n._isTransitioning=false;m["default"](n._element).trigger(o)};if(r){var a=g.getTransitionDurationFromElement(this._dialog);m["default"](this._dialog).one(g.TRANSITION_END,s).emulateTransitionEnd(a)}else s()};e._enforceFocus=function e(){var t=this;m["default"](document).off(Mn).on(Mn,function(e){if(document!==e.target&&t._element!==e.target&&m["default"](t._element).has(e.target).length===0)t._element.focus()})};e._setEscapeEvent=function e(){var t=this;if(this._isShown)m["default"](this._element).on(Pn,function(e){if(t._config.keyboard&&e.which===bn){e.preventDefault();t.hide()}else if(!t._config.keyboard&&e.which===bn)t._triggerBackdropTransition()});else if(!this._isShown)m["default"](this._element).off(Pn)};e._setResizeEvent=function e(){var t=this;if(this._isShown)m["default"](window).on(An,function(e){return t.handleUpdate(e)});else m["default"](window).off(An)};e._hideModal=function e(){var t=this;this._element.style.display="none";this._element.setAttribute("aria-hidden",true);this._element.removeAttribute("aria-modal");this._element.removeAttribute("role");this._isTransitioning=false;this._showBackdrop(function(){m["default"](document.body).removeClass(xn);t._resetAdjustments();t._resetScrollbar();m["default"](t._element).trigger(Tn)})};e._removeBackdrop=function e(){if(this._backdrop){m["default"](this._backdrop).remove();this._backdrop=null}};e._showBackdrop=function e(t){var n=this;var r=m["default"](this._element).hasClass(T)?T:"";if(this._isShown&&this._config.backdrop){this._backdrop=document.createElement("div");this._backdrop.className=wn;if(r)this._backdrop.classList.add(r);m["default"](this._backdrop).appendTo(document.body);m["default"](this._element).on(Nn,function(e){if(n._ignoreBackdropClick){n._ignoreBackdropClick=false;return}if(e.target!==e.currentTarget)return;if(n._config.backdrop==="static")n._triggerBackdropTransition();else n.hide()});if(r)g.reflow(this._backdrop);m["default"](this._backdrop).addClass(Cn);if(!t)return;if(!r){t();return}var i=g.getTransitionDurationFromElement(this._backdrop);m["default"](this._backdrop).one(g.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){m["default"](this._backdrop).removeClass(Cn);var o=function e(){n._removeBackdrop();if(t)t()};if(m["default"](this._element).hasClass(T)){var s=g.getTransitionDurationFromElement(this._backdrop);m["default"](this._backdrop).one(g.TRANSITION_END,o).emulateTransitionEnd(s)}else o()}else if(t)t()};e._adjustDialog=function e(){var t=this._element.scrollHeight>document.documentElement.clientHeight;if(!this._isBodyOverflowing&&t)this._element.style.paddingLeft=this._scrollbarWidth+"px";if(this._isBodyOverflowing&&!t)this._element.style.paddingRight=this._scrollbarWidth+"px"};e._resetAdjustments=function e(){this._element.style.paddingLeft="";this._element.style.paddingRight=""};e._checkScrollbar=function e(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)'+'
'+'
',trigger:"hover focus",title:"",delay:0,html:false,selector:false,placement:"top",offset:0,container:false,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:true,sanitizeFn:null,whiteList:qn,popperConfig:null},vr={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},br={HIDE:"hide"+E,HIDDEN:"hidden"+E,SHOW:"show"+E,SHOWN:"shown"+E,INSERTED:"inserted"+E,CLICK:"click"+E,FOCUSIN:"focusin"+E,FOCUSOUT:"focusout"+E,MOUSEENTER:"mouseenter"+E,MOUSELEAVE:"mouseleave"+E},M=function(){function i(e,t){if(typeof F["default"]==="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=true;this._timeout=0;this._hoverState="";this._activeTrigger={};this._popper=null;this.element=e;this.config=this._getConfig(t);this.tip=null;this._setListeners()}var e=i.prototype;e.enable=function e(){this._isEnabled=true};e.disable=function e(){this._isEnabled=false};e.toggleEnabled=function e(){this._isEnabled=!this._isEnabled};e.toggle=function e(t){if(!this._isEnabled)return;if(t){var n=this.constructor.DATA_KEY;var r=m["default"](t.currentTarget).data(n);if(!r){r=new this.constructor(t.currentTarget,this._getDelegateConfig());m["default"](t.currentTarget).data(n,r)}r._activeTrigger.click=!r._activeTrigger.click;if(r._isWithActiveTrigger())r._enter(null,r);else r._leave(null,r)}else{if(m["default"](this.getTipElement()).hasClass(sr)){this._leave(null,this);return}this._enter(null,this)}};e.dispose=function e(){clearTimeout(this._timeout);m["default"].removeData(this.element,this.constructor.DATA_KEY);m["default"](this.element).off(this.constructor.EVENT_KEY);m["default"](this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler);if(this.tip)m["default"](this.tip).remove();this._isEnabled=null;this._timeout=null;this._hoverState=null;this._activeTrigger=null;if(this._popper)this._popper.destroy();this._popper=null;this.element=null;this.config=null;this.tip=null};e.show=function e(){var n=this;if(m["default"](this.element).css("display")==="none")throw new Error("Please use show on visible elements");var t=m["default"].Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){m["default"](this.element).trigger(t);var r=g.findShadowRoot(this.element);var i=m["default"].contains(r!==null?r:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement();var s=g.getUID(this.constructor.NAME);o.setAttribute("id",s);this.element.setAttribute("aria-describedby",s);this.setContent();if(this.config.animation)m["default"](o).addClass(or);var a=typeof this.config.placement==="function"?this.config.placement.call(this,o,this.element):this.config.placement;var l=this._getAttachment(a);this.addAttachmentClass(l);var c=this._getContainer();m["default"](o).data(this.constructor.DATA_KEY,this);if(!m["default"].contains(this.element.ownerDocument.documentElement,this.tip))m["default"](o).appendTo(c);m["default"](this.element).trigger(this.constructor.Event.INSERTED);this._popper=new F["default"](this.element,o,this._getPopperConfig(l));m["default"](o).addClass(sr);m["default"](o).addClass(this.config.customClass);if("ontouchstart"in document.documentElement)m["default"](document.body).children().on("mouseover",null,m["default"].noop);var u=function e(){if(n.config.animation)n._fixTransition();var t=n._hoverState;n._hoverState=null;m["default"](n.element).trigger(n.constructor.Event.SHOWN);if(t===lr)n._leave(null,n)};if(m["default"](this.tip).hasClass(or)){var d=g.getTransitionDurationFromElement(this.tip);m["default"](this.tip).one(g.TRANSITION_END,u).emulateTransitionEnd(d)}else u()}};e.hide=function e(t){var n=this;var r=this.getTipElement();var i=m["default"].Event(this.constructor.Event.HIDE);var o=function e(){if(n._hoverState!==ar&&r.parentNode)r.parentNode.removeChild(r);n._cleanTipClass();n.element.removeAttribute("aria-describedby");m["default"](n.element).trigger(n.constructor.Event.HIDDEN);if(n._popper!==null)n._popper.destroy();if(t)t()};m["default"](this.element).trigger(i);if(i.isDefaultPrevented())return;m["default"](r).removeClass(sr);if("ontouchstart"in document.documentElement)m["default"](document.body).children().off("mouseover",null,m["default"].noop);this._activeTrigger[fr]=false;this._activeTrigger[hr]=false;this._activeTrigger[dr]=false;if(m["default"](this.tip).hasClass(or)){var s=g.getTransitionDurationFromElement(r);m["default"](r).one(g.TRANSITION_END,o).emulateTransitionEnd(s)}else o();this._hoverState=""};e.update=function e(){if(this._popper!==null)this._popper.scheduleUpdate()};e.isWithContent=function e(){return Boolean(this.getTitle())};e.addAttachmentClass=function e(t){m["default"](this.getTipElement()).addClass(nr+"-"+t)};e.getTipElement=function e(){this.tip=this.tip||m["default"](this.config.template)[0];return this.tip};e.setContent=function e(){var t=this.getTipElement();this.setElementContent(m["default"](t.querySelectorAll(cr)),this.getTitle());m["default"](t).removeClass(or+" "+sr)};e.setElementContent=function e(t,n){if(typeof n==="object"&&(n.nodeType||n.jquery)){if(this.config.html){if(!m["default"](n).parent().is(t))t.empty().append(n)}else t.text(m["default"](n).text());return}if(this.config.html){if(this.config.sanitize)n=Jn(n,this.config.whiteList,this.config.sanitizeFn);t.html(n)}else t.text(n)};e.getTitle=function e(){var t=this.element.getAttribute("data-original-title");if(!t)t=typeof this.config.title==="function"?this.config.title.call(this.element):this.config.title;return t};e._getPopperConfig=function e(t){var n=this;var r={placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:ur},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function e(t){if(t.originalPlacement!==t.placement)n._handlePopperPlacementChange(t)},onUpdate:function e(t){return n._handlePopperPlacementChange(t)}};return a({},r,this.config.popperConfig)};e._getOffset=function e(){var t=this;var n={};if(typeof this.config.offset==="function")n.fn=function(e){e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element));return e};else n.offset=this.config.offset;return n};e._getContainer=function e(){if(this.config.container===false)return document.body;if(g.isElement(this.config.container))return m["default"](this.config.container);return m["default"](document).find(this.config.container)};e._getAttachment=function e(t){return mr[t.toUpperCase()]};e._setListeners=function e(){var r=this;var t=this.config.trigger.split(" ");t.forEach(function(e){if(e==="click")m["default"](r.element).on(r.constructor.Event.CLICK,r.config.selector,function(e){return r.toggle(e)});else if(e!==pr){var t=e===dr?r.constructor.Event.MOUSEENTER:r.constructor.Event.FOCUSIN;var n=e===dr?r.constructor.Event.MOUSELEAVE:r.constructor.Event.FOCUSOUT;m["default"](r.element).on(t,r.config.selector,function(e){return r._enter(e)}).on(n,r.config.selector,function(e){return r._leave(e)})}});this._hideModalHandler=function(){if(r.element)r.hide()};m["default"](this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler);if(this.config.selector)this.config=a({},this.config,{trigger:"manual",selector:""});else this._fixTitle()};e._fixTitle=function e(){var t=typeof this.element.getAttribute("data-original-title");if(this.element.getAttribute("title")||t!=="string"){this.element.setAttribute("data-original-title",this.element.getAttribute("title")||"");this.element.setAttribute("title","")}};e._enter=function e(t,n){var r=this.constructor.DATA_KEY;n=n||m["default"](t.currentTarget).data(r);if(!n){n=new this.constructor(t.currentTarget,this._getDelegateConfig());m["default"](t.currentTarget).data(r,n)}if(t)n._activeTrigger[t.type==="focusin"?hr:dr]=true;if(m["default"](n.getTipElement()).hasClass(sr)||n._hoverState===ar){n._hoverState=ar;return}clearTimeout(n._timeout);n._hoverState=ar;if(!n.config.delay||!n.config.delay.show){n.show();return}n._timeout=setTimeout(function(){if(n._hoverState===ar)n.show()},n.config.delay.show)};e._leave=function e(t,n){var r=this.constructor.DATA_KEY;n=n||m["default"](t.currentTarget).data(r);if(!n){n=new this.constructor(t.currentTarget,this._getDelegateConfig());m["default"](t.currentTarget).data(r,n)}if(t)n._activeTrigger[t.type==="focusout"?hr:dr]=false;if(n._isWithActiveTrigger())return;clearTimeout(n._timeout);n._hoverState=lr;if(!n.config.delay||!n.config.delay.hide){n.hide();return}n._timeout=setTimeout(function(){if(n._hoverState===lr)n.hide()},n.config.delay.hide)};e._isWithActiveTrigger=function e(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return true;return false};e._getConfig=function e(t){var n=m["default"](this.element).data();Object.keys(n).forEach(function(e){if(ir.indexOf(e)!==-1)delete n[e]});t=a({},this.constructor.Default,n,typeof t==="object"&&t?t:{});if(typeof t.delay==="number")t.delay={show:t.delay,hide:t.delay};if(typeof t.title==="number")t.title=t.title.toString();if(typeof t.content==="number")t.content=t.content.toString();g.typeCheckConfig(O,t,this.constructor.DefaultType);if(t.sanitize)t.template=Jn(t.template,t.whiteList,t.sanitizeFn);return t};e._getDelegateConfig=function e(){var t={};if(this.config)for(var n in this.config)if(this.constructor.Default[n]!==this.config[n])t[n]=this.config[n];return t};e._cleanTipClass=function e(){var t=m["default"](this.getTipElement());var n=t.attr("class").match(rr);if(n!==null&&n.length)t.removeClass(n.join(""))};e._handlePopperPlacementChange=function e(t){this.tip=t.instance.popper;this._cleanTipClass();this.addAttachmentClass(this._getAttachment(t.placement))};e._fixTransition=function e(){var t=this.getTipElement();var n=this.config.animation;if(t.getAttribute("x-placement")!==null)return;m["default"](t).removeClass(or);this.config.animation=false;this.hide();this.show();this.config.animation=n};i._jQueryInterface=function e(r){return this.each(function(){var e=m["default"](this);var t=e.data(er);var n=typeof r==="object"&&r;if(!t&&/dispose|hide/.test(r))return;if(!t){t=new i(this,n);e.data(er,t)}if(typeof r==="string"){if(typeof t[r]==="undefined")throw new TypeError('No method named "'+r+'"');t[r]()}})};n(i,null,[{key:"VERSION",get:function e(){return Qn}},{key:"Default",get:function e(){return gr}},{key:"NAME",get:function e(){return O}},{key:"DATA_KEY",get:function e(){return er}},{key:"Event",get:function e(){return br}},{key:"EVENT_KEY",get:function e(){return E}},{key:"DefaultType",get:function e(){return vr}}]);return i}(),A=(m["default"].fn[O]=M._jQueryInterface,m["default"].fn[O].Constructor=M,m["default"].fn[O].noConflict=function(){m["default"].fn[O]=tr;return M._jQueryInterface},"popover"),yr="4.6.2",_r="bs.popover",N="."+_r,wr=m["default"].fn[A],xr="bs-popover",Cr=new RegExp("(^|\\s)"+xr+"\\S+","g"),kr="fade",Sr="show",Dr=".popover-header",Tr=".popover-body",Or=a({},M.Default,{placement:"right",trigger:"click",content:"",template:''}),Er=a({},M.DefaultType,{content:"(string|element|function)"}),Mr={HIDE:"hide"+N,HIDDEN:"hidden"+N,SHOW:"show"+N,SHOWN:"shown"+N,INSERTED:"inserted"+N,CLICK:"click"+N,FOCUSIN:"focusin"+N,FOCUSOUT:"focusout"+N,MOUSEENTER:"mouseenter"+N,MOUSELEAVE:"mouseleave"+N},Ar=function(e){j(r,e);function r(){return e.apply(this,arguments)||this}var t=r.prototype;t.isWithContent=function e(){return this.getTitle()||this._getContent()};t.addAttachmentClass=function e(t){m["default"](this.getTipElement()).addClass(xr+"-"+t)};t.getTipElement=function e(){this.tip=this.tip||m["default"](this.config.template)[0];return this.tip};t.setContent=function e(){var t=m["default"](this.getTipElement());this.setElementContent(t.find(Dr),this.getTitle());var n=this._getContent();if(typeof n==="function")n=n.call(this.element);this.setElementContent(t.find(Tr),n);t.removeClass(kr+" "+Sr)};t._getContent=function e(){return this.element.getAttribute("data-content")||this.config.content};t._cleanTipClass=function e(){var t=m["default"](this.getTipElement());var n=t.attr("class").match(Cr);if(n!==null&&n.length>0)t.removeClass(n.join(""))};r._jQueryInterface=function e(n){return this.each(function(){var e=m["default"](this).data(_r);var t=typeof n==="object"?n:null;if(!e&&/dispose|hide/.test(n))return;if(!e){e=new r(this,t);m["default"](this).data(_r,e)}if(typeof n==="string"){if(typeof e[n]==="undefined")throw new TypeError('No method named "'+n+'"');e[n]()}})};n(r,null,[{key:"VERSION",get:function e(){return yr}},{key:"Default",get:function e(){return Or}},{key:"NAME",get:function e(){return A}},{key:"DATA_KEY",get:function e(){return _r}},{key:"Event",get:function e(){return Mr}},{key:"EVENT_KEY",get:function e(){return N}},{key:"DefaultType",get:function e(){return Er}}]);return r}(M),P=(m["default"].fn[A]=Ar._jQueryInterface,m["default"].fn[A].Constructor=Ar,m["default"].fn[A].noConflict=function(){m["default"].fn[A]=wr;return Ar._jQueryInterface},"scrollspy"),Nr="4.6.2",Pr="bs.scrollspy",Ir="."+Pr,Rr,Lr=m["default"].fn[P],Hr="dropdown-item",I="active",Br="activate"+Ir,Fr="scroll"+Ir,zr="load"+Ir+".data-api",jr="offset",Vr="position",Wr='[data-spy="scroll"]',Ur=".nav, .list-group",$r=".nav-link",Zr=".nav-item",Yr=".list-group-item",qr=".dropdown",Kr=".dropdown-item",Gr=".dropdown-toggle",Xr={offset:10,method:"auto",target:""},Jr={offset:"number",method:"string",target:"(string|element)"},Qr=function(){function r(e,t){var n=this;this._element=e;this._scrollElement=e.tagName==="BODY"?window:e;this._config=this._getConfig(t);this._selector=this._config.target+" "+$r+","+(this._config.target+" "+Yr+",")+(this._config.target+" "+Kr);this._offsets=[];this._targets=[];this._activeTarget=null;this._scrollHeight=0;m["default"](this._scrollElement).on(Fr,function(e){return n._process(e)});this.refresh();this._process()}var e=r.prototype;e.refresh=function e(){var t=this;var n=this._scrollElement===this._scrollElement.window?jr:Vr;var i=this._config.method==="auto"?n:this._config.method;var o=i===Vr?this._getScrollTop():0;this._offsets=[];this._targets=[];this._scrollHeight=this._getScrollHeight();var r=[].slice.call(document.querySelectorAll(this._selector));r.map(function(e){var t;var n=g.getSelectorFromElement(e);if(n)t=document.querySelector(n);if(t){var r=t.getBoundingClientRect();if(r.width||r.height)return[m["default"](t)[i]().top+o,n]}return null}).filter(Boolean).sort(function(e,t){return e[0]-t[0]}).forEach(function(e){t._offsets.push(e[0]);t._targets.push(e[1])})};e.dispose=function e(){m["default"].removeData(this._element,Pr);m["default"](this._scrollElement).off(Ir);this._element=null;this._scrollElement=null;this._config=null;this._selector=null;this._offsets=null;this._targets=null;this._activeTarget=null;this._scrollHeight=null};e._getConfig=function e(t){t=a({},Xr,typeof t==="object"&&t?t:{});if(typeof t.target!=="string"&&g.isElement(t.target)){var n=m["default"](t.target).attr("id");if(!n){n=g.getUID(P);m["default"](t.target).attr("id",n)}t.target="#"+n}g.typeCheckConfig(P,t,Jr);return t};e._getScrollTop=function e(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop};e._getScrollHeight=function e(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)};e._getOffsetHeight=function e(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height};e._process=function e(){var t=this._getScrollTop()+this._config.offset;var n=this._getScrollHeight();var r=this._config.offset+n-this._getOffsetHeight();if(this._scrollHeight!==n)this.refresh();if(t>=r){var i=this._targets[this._targets.length-1];if(this._activeTarget!==i)this._activate(i);return}if(this._activeTarget&&t0){this._activeTarget=null;this._clear();return}for(var o=this._offsets.length;o--;){var s=this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(typeof this._offsets[o+1]==="undefined"||t{var r=n(614),i=n(6330),o=TypeError;e.exports=function(e){if(r(e))return e;throw o(i(e)+" is not a function")}},9483:(e,t,n)=>{var r=n(4411),i=n(6330),o=TypeError;e.exports=function(e){if(r(e))return e;throw o(i(e)+" is not a constructor")}},6077:(e,t,n)=>{var r=n(614),i=String,o=TypeError;e.exports=function(e){if("object"==typeof e||r(e))return e;throw o("Can't set "+i(e)+" as a prototype")}},1223:(e,t,n)=>{var r=n(5112),i=n(30),n=n(3070).f,o=r("unscopables"),s=Array.prototype;null==s[o]&&n(s,o,{configurable:!0,value:i(null)}),e.exports=function(e){s[o][e]=!0}},1530:(e,t,n)=>{"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:(e,t,n)=>{var r=n(7976),i=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw i("Incorrect invocation")}},9670:(e,t,n)=>{var r=n(111),i=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw o(i(e)+" is not an object")}},8533:(e,t,n)=>{"use strict";var r=n(2092).forEach,n=n(9341)("forEach");e.exports=n?[].forEach:function(e){return r(this,e,1{"use strict";var h=n(9974),f=n(6916),p=n(7908),m=n(3002),g=n(7659),v=n(4411),b=n(6244),y=n(6135),_=n(8554),w=n(1246),x=Array;e.exports=function(e){var t,n,r,i,o,s,a=p(e),e=v(this),l=arguments.length,c=1{function r(a){return function(e,t,n){var r,i=l(e),o=u(i),s=c(n,o);if(a&&t!=t){for(;s{function r(h){var f=1==h,p=2==h,m=3==h,g=4==h,v=6==h,b=7==h,y=5==h||v;return function(e,t,n,r){for(var i,o,s=x(e),a=w(s),l=_(t,n),c=C(a),u=0,t=r||k,d=f?t(e,c):p||b?t(e,0):void 0;u{var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(t){return 51<=o||!r(function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},9341:(e,t,n)=>{"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){return 1},1)})}},3671:(e,t,n)=>{function r(c){return function(e,t,n,r){u(t);var i=d(e),o=h(i),s=f(i),a=c?s-1:0,l=c?-1:1;if(n<2)for(;;){if(a in o){r=o[a],a+=l;break}if(a+=l,c?a<0:s<=a)throw p("Reduce of empty array with no initial value")}for(;c?0<=a:a{var l=n(1400),c=n(6244),u=n(6135),d=Array,h=Math.max;e.exports=function(e,t,n){for(var r=c(e),i=l(t,r),o=l(void 0===n?r:n,r),s=d(h(o-i,0)),a=0;i{n=n(1702);e.exports=n([].slice)},7475:(e,t,n)=>{var r=n(3157),i=n(4411),o=n(111),s=n(5112)("species"),a=Array;e.exports=function(e){var t;return r(e)&&(t=e.constructor,(i(t)&&(t===a||r(t.prototype))||o(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?a:t}},5417:(e,t,n)=>{var r=n(7475);e.exports=function(e,t){return new(r(e))(0===t?0:t)}},3002:(e,t,n)=>{var i=n(9670),o=n(9212);e.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){o(t,"throw",e)}}},7072:(e,t,n)=>{var i=n(5112)("iterator"),o=!1;try{var r=0,s={next:function(){return{done:!!r++}},return:function(){o=!0}};s[i]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n}},4326:(e,t,n)=>{var n=n(1702),r=n({}.toString),i=n("".slice);e.exports=function(e){return i(r(e),8,-1)}},648:(e,t,n)=>{var r=n(1694),i=n(614),o=n(4326),s=n(5112)("toStringTag"),a=Object,l="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,t){try{return e[t]}catch(e){}}(e=a(e),s))?t:l?o(e):"Object"==(t=o(e))&&i(e.callee)?"Arguments":t}},7741:(e,t,n)=>{var n=n(1702),r=Error,i=n("".replace),n=String(r("zxcasd").stack),o=/\n\s*at [^:]*:[^\n]*/,s=o.test(n);e.exports=function(e,t){if(s&&"string"==typeof e&&!r.prepareStackTrace)for(;t--;)e=i(e,o,"");return e}},9920:(e,t,n)=>{var l=n(2597),c=n(3887),u=n(1236),d=n(3070);e.exports=function(e,t,n){for(var r=c(t),i=d.f,o=u.f,s=0;s{n=n(7293);e.exports=!n(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},4994:(e,t,n)=>{"use strict";function i(){return this}var o=n(3383).IteratorPrototype,s=n(30),a=n(9114),l=n(8003),c=n(7497);e.exports=function(e,t,n,r){t+=" Iterator";return e.prototype=s(o,{next:a(+!r,n)}),l(e,t,!1,!0),c[t]=i,e}},8880:(e,t,n)=>{var r=n(9781),i=n(3070),o=n(9114);e.exports=r?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},9114:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},6135:(e,t,n)=>{"use strict";var r=n(4948),i=n(3070),o=n(9114);e.exports=function(e,t,n){t=r(t);t in e?i.f(e,t,o(0,n)):e[t]=n}},8052:(e,t,n)=>{var s=n(614),a=n(3070),l=n(6339),c=n(3072);e.exports=function(e,t,n,r){var i=(r=r||{}).enumerable,o=void 0!==r.name?r.name:t;if(s(n)&&l(n,o,r),r.global)i?e[t]=n:c(t,n);else{try{r.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=n:a.f(e,t,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return e}},3072:(e,t,n)=>{var r=n(7854),i=Object.defineProperty;e.exports=function(t,n){try{i(r,t,{value:n,configurable:!0,writable:!0})}catch(e){r[t]=n}return n}},654:(e,t,n)=>{"use strict";function m(){return this}var g=n(2109),v=n(6916),b=n(1913),r=n(6530),y=n(614),_=n(4994),w=n(9518),x=n(7674),C=n(8003),k=n(8880),S=n(8052),i=n(5112),D=n(7497),n=n(3383),T=r.PROPER,O=r.CONFIGURABLE,E=n.IteratorPrototype,M=n.BUGGY_SAFARI_ITERATORS,A=i("iterator"),N="values",P="entries";e.exports=function(e,t,n,r,i,o,s){_(n,t,r);function a(e){if(e===i&&f)return f;if(!M&&e in d)return d[e];switch(e){case"keys":case N:case P:return function(){return new n(this,e)}}return function(){return new n(this)}}var l,c,r=t+" Iterator",u=!1,d=e.prototype,h=d[A]||d["@@iterator"]||i&&d[i],f=!M&&h||a(i),p="Array"==t&&d.entries||h;if(p&&(p=w(p.call(new e)))!==Object.prototype&&p.next&&(b||w(p)===E||(x?x(p,E):y(p[A])||S(p,A,m)),C(p,r,!0,!0),b&&(D[r]=m)),T&&i==N&&h&&h.name!==N&&(!b&&O?k(d,"name",N):(u=!0,f=function(){return v(h,this)})),i)if(l={values:a(N),keys:o?f:a("keys"),entries:a(P)},s)for(c in l)!M&&!u&&c in d||S(d,c,l[c]);else g({target:t,proto:!0,forced:M||u},l);return b&&!s||d[A]===f||S(d,A,f,{name:i}),D[t]=f,l}},7235:(e,t,n)=>{var r=n(857),i=n(2597),o=n(6061),s=n(3070).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});i(t,e)||s(t,e,{value:o.f(e)})}},9781:(e,t,n)=>{n=n(7293);e.exports=!n(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},317:(e,t,n)=>{var r=n(7854),n=n(111),i=r.document,o=n(i)&&n(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,t,n)=>{n=n(317)("span").classList,n=n&&n.constructor&&n.constructor.prototype;e.exports=n===Object.prototype?void 0:n},7871:(e,t,n)=>{var r=n(3823),n=n(5268);e.exports=!r&&!n&&"object"==typeof window&&"object"==typeof document},3823:e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},1528:(e,t,n)=>{var r=n(8113),n=n(7854);e.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==n.Pebble},6833:(e,t,n)=>{n=n(8113);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},5268:(e,t,n)=>{var r=n(4326),n=n(7854);e.exports="process"==r(n.process)},1036:(e,t,n)=>{n=n(8113);e.exports=/web0s(?!.*chrome)/i.test(n)},8113:(e,t,n)=>{n=n(5005);e.exports=n("navigator","userAgent")||""},7392:(e,t,n)=>{var r,i,o=n(7854),n=n(8113),s=o.process,o=o.Deno,s=s&&s.versions||o&&o.version,o=s&&s.v8;!(i=o?0<(r=o.split("."))[0]&&r[0]<4?1:+(r[0]+r[1]):i)&&n&&(!(r=n.match(/Edge\/(\d+)/))||74<=r[1])&&(r=n.match(/Chrome\/(\d+)/))&&(i=+r[1]),e.exports=i},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2914:(e,t,n)=>{var r=n(7293),i=n(9114);e.exports=!r(function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",i(1,7)),7!==e.stack)})},7762:(e,t,n)=>{"use strict";var r=n(9781),i=n(7293),o=n(9670),s=n(30),a=n(6277),l=Error.prototype.toString,n=i(function(){if(r){var e=s(Object.defineProperty({},"name",{get:function(){return this===e}}));if("true"!==l.call(e))return!0}return"2: 1"!==l.call({message:1,name:2})||"Error"!==l.call({})});e.exports=n?function(){var e=o(this),t=a(e.name,"Error"),e=a(e.message);return t?e?t+": "+e:t:e}:l},2109:(e,t,n)=>{var c=n(7854),u=n(1236).f,d=n(8880),h=n(8052),f=n(3072),p=n(9920),m=n(4705);e.exports=function(e,t){var n,r,i,o=e.target,s=e.global,a=e.stat,l=s?c:a?c[o]||f(o,{}):(c[o]||{}).prototype;if(l)for(n in t){if(r=t[n],i=e.dontCallGetSet?(i=u(l,n))&&i.value:l[n],!m(s?n:o+(a?".":"#")+n,e.forced)&&void 0!==i){if(typeof r==typeof i)continue;p(r,i)}(e.sham||i&&i.sham)&&d(r,"sham",!0),h(l,n,r,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,t,n)=>{"use strict";n(4916);var l=n(1702),c=n(8052),u=n(2261),d=n(7293),h=n(5112),f=n(8880),p=h("species"),m=RegExp.prototype;e.exports=function(n,e,t,r){var s,i=h(n),a=!d(function(){var e={};return e[i]=function(){return 7},7!=""[n](e)}),o=a&&!d(function(){var e=!1,t=/a/;return"split"===n&&((t={constructor:{}}).constructor[p]=function(){return t},t.flags="",t[i]=/./[i]),t.exec=function(){return e=!0,null},t[i](""),!e});a&&o&&!t||(s=l(/./[i]),o=e(i,""[n],function(e,t,n,r,i){var e=l(e),o=t.exec;return o===u||o===m.exec?a&&!i?{done:!0,value:s(t,n,r)}:{done:!0,value:e(n,t,r)}:{done:!1}}),c(String.prototype,n,o[0]),c(m,i,o[1])),r&&f(m[i],"sham",!0)}},2104:(e,t,n)=>{var n=n(4374),r=Function.prototype,i=r.apply,o=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?o.bind(i):function(){return o.apply(i,arguments)})},9974:(e,t,n)=>{var r=n(1702),i=n(9662),o=n(4374),s=r(r.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?s(e,t):function(){return e.apply(t,arguments)}}},4374:(e,t,n)=>{n=n(7293);e.exports=!n(function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})},7065:(e,t,n)=>{"use strict";var r=n(1702),i=n(9662),o=n(111),u=n(2597),d=n(206),n=n(4374),h=Function,f=r([].concat),p=r([].join),m={};e.exports=n?h.bind:function(s){var a=i(this),e=a.prototype,l=d(arguments,1),c=function(){var e=f(l,d(arguments));if(this instanceof c){var t=a,n=e.length,r=e;if(!u(m,n)){for(var i=[],o=0;o{var n=n(4374),r=Function.prototype.call;e.exports=n?r.bind(r):function(){return r.apply(r,arguments)}},6530:(e,t,n)=>{var r=n(9781),n=n(2597),i=Function.prototype,o=r&&Object.getOwnPropertyDescriptor,n=n(i,"name"),s=n&&"something"===function(){}.name,r=n&&(!r||o(i,"name").configurable);e.exports={EXISTS:n,PROPER:s,CONFIGURABLE:r}},1702:(e,t,n)=>{var n=n(4374),r=Function.prototype,i=r.bind,o=r.call,s=n&&i.bind(o,o);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return o.apply(e,arguments)}}},5005:(e,t,n)=>{var r=n(7854),i=n(614);e.exports=function(e,t){return arguments.length<2?(n=r[e],i(n)?n:void 0):r[e]&&r[e][t];var n}},1246:(e,t,n)=>{var r=n(648),i=n(8173),o=n(7497),s=n(5112)("iterator");e.exports=function(e){if(null!=e)return i(e,s)||i(e,"@@iterator")||o[r(e)]}},8554:(e,t,n)=>{var r=n(6916),i=n(9662),o=n(9670),s=n(6330),a=n(1246),l=TypeError;e.exports=function(e,t){var n=arguments.length<2?a(e):t;if(i(n))return o(r(n,e));throw l(s(e)+" is not iterable")}},8173:(e,t,n)=>{var r=n(9662);e.exports=function(e,t){e=e[t];return null==e?void 0:r(e)}},647:(e,t,n)=>{var r=n(1702),i=n(7908),h=Math.floor,f=r("".charAt),p=r("".replace),m=r("".slice),g=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,v=/\$([$&'`]|\d{1,2})/g;e.exports=function(o,s,a,l,c,e){var u=a+o.length,d=l.length,t=v;return void 0!==c&&(c=i(c),t=g),p(e,t,function(e,t){var n;switch(f(t,0)){case"$":return"$";case"&":return o;case"`":return m(s,0,a);case"'":return m(s,u);case"<":n=c[m(t,1,-1)];break;default:var r,i=+t;if(0==i)return e;if(d{function r(e){return e&&e.Math==Math&&e}e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},2597:(e,t,n)=>{var r=n(1702),i=n(7908),o=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},3501:e=>{e.exports={}},842:(e,t,n)=>{var r=n(7854);e.exports=function(e,t){var n=r.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))}},490:(e,t,n)=>{n=n(5005);e.exports=n("document","documentElement")},4664:(e,t,n)=>{var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},8361:(e,t,n)=>{var r=n(1702),i=n(7293),o=n(4326),s=Object,a=r("".split);e.exports=i(function(){return!s("z").propertyIsEnumerable(0)})?function(e){return"String"==o(e)?a(e,""):s(e)}:s},9587:(e,t,n)=>{var r=n(614),i=n(111),o=n(7674);e.exports=function(e,t,n){return o&&r(t=t.constructor)&&t!==n&&i(t=t.prototype)&&t!==n.prototype&&o(e,t),e}},2788:(e,t,n)=>{var r=n(1702),i=n(614),n=n(5465),o=r(Function.toString);i(n.inspectSource)||(n.inspectSource=function(e){return o(e)}),e.exports=n.inspectSource},8340:(e,t,n)=>{var r=n(111),i=n(8880);e.exports=function(e,t){r(t)&&"cause"in t&&i(e,"cause",t.cause)}},9909:(e,t,n)=>{var r,i,o,s,a,l,c,u,d=n(8536),h=n(7854),f=n(1702),p=n(111),m=n(8880),g=n(2597),v=n(5465),b=n(6200),n=n(3501),y="Object already initialized",_=h.TypeError,h=h.WeakMap;c=d||v.state?(r=v.state||(v.state=new h),i=f(r.get),o=f(r.has),s=f(r.set),a=function(e,t){if(o(r,e))throw new _(y);return t.facade=e,s(r,e,t),t},l=function(e){return i(r,e)||{}},function(e){return o(r,e)}):(n[u=b("state")]=!0,a=function(e,t){if(g(e,u))throw new _(y);return t.facade=e,m(e,u,t),t},l=function(e){return g(e,u)?e[u]:{}},function(e){return g(e,u)}),e.exports={set:a,get:l,has:c,enforce:function(e){return c(e)?l(e):a(e,{})},getterFor:function(t){return function(e){if(p(e)&&(e=l(e)).type===t)return e;throw _("Incompatible receiver, "+t+" required")}}}},7659:(e,t,n)=>{var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:(e,t,n)=>{var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:e=>{e.exports=function(e){return"function"==typeof e}},4411:(e,t,n)=>{function r(){}function i(e){if(!l(e))return!1;try{return f(r,h,e),!0}catch(e){return!1}}function o(e){if(!l(e))return!1;switch(c(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return g||!!m(p,d(e))}catch(e){return!0}}var s=n(1702),a=n(7293),l=n(614),c=n(648),u=n(5005),d=n(2788),h=[],f=u("Reflect","construct"),p=/^\s*(?:class|function)\b/,m=s(p.exec),g=!p.exec(r);o.sham=!0,e.exports=!f||a(function(){var e;return i(i.call)||!i(Object)||!i(function(){e=!0})||e})?o:i},4705:(e,t,n)=>{function r(e,t){return(e=l[a(e)])==u||e!=c&&(o(t)?i(t):!!t)}var i=n(7293),o=n(614),s=/#|\.prototype\./,a=r.normalize=function(e){return String(e).replace(s,".").toLowerCase()},l=r.data={},c=r.NATIVE="N",u=r.POLYFILL="P";e.exports=r},111:(e,t,n)=>{var r=n(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},7850:(e,t,n)=>{var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},2190:(e,t,n)=>{var r=n(5005),i=n(614),o=n(7976),n=n(3307),s=Object;e.exports=n?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return i(t)&&o(t.prototype,s(e))}},408:(e,t,n)=>{function v(e,t){this.stopped=e,this.result=t}var b=n(9974),y=n(6916),_=n(9670),w=n(6330),x=n(7659),C=n(6244),k=n(7976),S=n(8554),D=n(1246),T=n(9212),O=TypeError,E=v.prototype;e.exports=function(e,t,n){function r(e){return o&&T(o,"normal",e),new v(!0,e)}function i(e){return h?(_(e),m?g(e[0],e[1],r):g(e[0],e[1])):m?g(e,r):g(e)}var o,s,a,l,c,u,d=n&&n.that,h=!(!n||!n.AS_ENTRIES),f=!(!n||!n.IS_RECORD),p=!(!n||!n.IS_ITERATOR),m=!(!n||!n.INTERRUPTED),g=b(t,d);if(f)o=e.iterator;else if(p)o=e;else{if(!(n=D(e)))throw O(w(e)+" is not iterable");if(x(n)){for(s=0,a=C(e);s{var o=n(6916),s=n(9670),a=n(8173);e.exports=function(e,t,n){var r,i;s(e);try{if(!(r=a(e,"return"))){if("throw"===t)throw n;return n}r=o(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return s(r),n}},3383:(e,t,n)=>{"use strict";var r,i,o=n(7293),s=n(614),a=n(30),l=n(9518),c=n(8052),u=n(5112),n=n(1913),d=u("iterator"),u=!1;[].keys&&("next"in(i=[].keys())?(l=l(l(i)))!==Object.prototype&&(r=l):u=!0),null==r||o(function(){var e={};return r[d].call(e)!==e})?r={}:n&&(r=a(r)),s(r[d])||c(r,d,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:u}},7497:e=>{e.exports={}},6244:(e,t,n)=>{var r=n(7466);e.exports=function(e){return r(e.length)}},6339:(e,t,n)=>{var r=n(7293),i=n(614),o=n(2597),s=n(9781),a=n(6530).CONFIGURABLE,l=n(2788),n=n(9909),c=n.enforce,u=n.get,d=Object.defineProperty,h=s&&!r(function(){return 8!==d(function(){},"length",{value:8}).length}),f=String(String).split("String"),n=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!o(e,"name")||a&&e.name!==t)&&(s?d(e,"name",{value:t,configurable:!0}):e.name=t),h&&n&&o(n,"arity")&&e.length!==n.arity&&d(e,"length",{value:n.arity});try{n&&o(n,"constructor")&&n.constructor?s&&d(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}n=c(e);return o(n,"source")||(n.source=f.join("string"==typeof t?t:"")),e};Function.prototype.toString=n(function(){return i(this)&&u(this).source||l(this)},"toString")},4758:e=>{var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){e=+e;return(0{var r,i,o,s,a,l,c,u=n(7854),d=n(9974),h=n(1236).f,f=n(261).set,p=n(6833),m=n(1528),g=n(1036),v=n(5268),n=u.MutationObserver||u.WebKitMutationObserver,b=u.document,y=u.process,_=u.Promise,h=h(u,"queueMicrotask"),h=h&&h.value;h||(r=function(){var e,t;for(v&&(e=y.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(e){throw i?s():o=void 0,e}}o=void 0,e&&e.enter()},s=p||v||g||!n||!b?!m&&_&&_.resolve?((p=_.resolve(void 0)).constructor=_,c=d(p.then,p),function(){c(r)}):v?function(){y.nextTick(r)}:(f=d(f,u),function(){f(r)}):(a=!0,l=b.createTextNode(""),new n(r).observe(l,{characterData:!0}),function(){l.data=a=!a})),e.exports=h||function(e){e={fn:e,next:void 0};o&&(o.next=e),i||(i=e,s()),o=e}},735:(e,t,n)=>{n=n(133);e.exports=n&&!!Symbol.for&&!!Symbol.keyFor},133:(e,t,n)=>{var r=n(7392),n=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!n(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41})},8536:(e,t,n)=>{var r=n(7854),i=n(614),n=n(2788),r=r.WeakMap;e.exports=i(r)&&/native code/.test(n(r))},8523:(e,t,n)=>{"use strict";function r(e){var n,r;this.promise=new e(function(e,t){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=e,r=t}),this.resolve=i(n),this.reject=i(r)}var i=n(9662);e.exports.f=function(e){return new r(e)}},6277:(e,t,n)=>{var r=n(1340);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},3009:(e,t,n)=>{var r=n(7854),i=n(7293),o=n(1702),s=n(1340),a=n(3111).trim,n=n(1361),l=r.parseInt,r=r.Symbol,c=r&&r.iterator,u=/^[+-]?0x/i,d=o(u.exec),r=8!==l(n+"08")||22!==l(n+"0x16")||c&&!i(function(){l(Object(c))});e.exports=r?function(e,t){e=a(s(e));return l(e,t>>>0||(d(u,e)?16:10))}:l},1574:(e,t,n)=>{"use strict";var h=n(9781),r=n(1702),f=n(6916),i=n(7293),p=n(1956),m=n(5181),g=n(5296),v=n(7908),b=n(8361),o=Object.assign,s=Object.defineProperty,y=r([].concat);e.exports=!o||i(function(){var e,t,n,r;return!(!h||1===o({b:1},o(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)||(t={},r="abcdefghijklmnopqrst",(e={})[n=Symbol()]=7,r.split("").forEach(function(e){t[e]=e}),7!=o({},e)[n]||p(o({},t)).join("")!=r)})?function(e,t){for(var n=v(e),r=arguments.length,i=1,o=m.f,s=g.f;i{function r(){}function i(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t}var o,s=n(9670),a=n(6048),l=n(748),c=n(3501),u=n(490),d=n(317),n=n(6200),h="prototype",f="script",p=n("IE_PROTO"),m=function(e){return"<"+f+">"+e+""},g=function(){try{o=new ActiveXObject("htmlfile")}catch(e){}g="undefined"==typeof document||document.domain&&o?i(o):(e=d("iframe"),t="java"+f+":",e.style.display="none",u.appendChild(e),e.src=String(t),(t=e.contentWindow.document).open(),t.write(m("document.F=Object")),t.close(),t.F);for(var e,t,n=l.length;n--;)delete g[h][l[n]];return g()};c[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(r[h]=s(e),n=new r,r[h]=null,n[p]=e):n=g(),void 0===t?n:a.f(n,t)}},6048:(e,t,n)=>{var r=n(9781),i=n(3353),a=n(3070),l=n(9670),c=n(5656),u=n(1956);t.f=r&&!i?Object.defineProperties:function(e,t){l(e);for(var n,r=c(t),i=u(t),o=i.length,s=0;s{var r=n(9781),i=n(4664),o=n(3353),s=n(9670),a=n(4948),l=TypeError,c=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d="enumerable",h="configurable",f="writable";t.f=r?o?function(e,t,n){var r;return s(e),t=a(t),s(n),"function"==typeof e&&"prototype"===t&&"value"in n&&f in n&&!n[f]&&((r=u(e,t))&&r[f]&&(e[t]=n.value,n={configurable:(h in n?n:r)[h],enumerable:(d in n?n:r)[d],writable:!1})),c(e,t,n)}:c:function(e,t,n){if(s(e),t=a(t),s(n),i)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:(e,t,n)=>{var r=n(9781),i=n(6916),o=n(5296),s=n(9114),a=n(5656),l=n(4948),c=n(2597),u=n(4664),d=Object.getOwnPropertyDescriptor;t.f=r?d:function(e,t){if(e=a(e),t=l(t),u)try{return d(e,t)}catch(e){}if(c(e,t))return s(!i(o.f,e,t),e[t])}},1156:(e,t,n)=>{var r=n(4326),i=n(5656),o=n(8006).f,s=n(1589),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){if(!a||"Window"!=r(e))return o(i(e));try{return o(e)}catch(e){return s(a)}}},8006:(e,t,n)=>{var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:(e,t)=>{t.f=Object.getOwnPropertySymbols},9518:(e,t,n)=>{var r=n(2597),i=n(614),o=n(7908),s=n(6200),n=n(8544),a=s("IE_PROTO"),l=Object,c=l.prototype;e.exports=n?l.getPrototypeOf:function(e){var t,e=o(e);return r(e,a)?e[a]:(t=e.constructor,i(t)&&e instanceof t?t.prototype:e instanceof l?c:null)}},7976:(e,t,n)=>{n=n(1702);e.exports=n({}.isPrototypeOf)},6324:(e,t,n)=>{var r=n(1702),s=n(2597),a=n(5656),l=n(1318).indexOf,c=n(3501),u=r([].push);e.exports=function(e,t){var n,r=a(e),i=0,o=[];for(n in r)!s(c,n)&&s(r,n)&&u(o,n);for(;t.length>i;)!s(r,n=t[i++])||~l(o,n)||u(o,n);return o}},1956:(e,t,n)=>{var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){e=r(this,e);return!!e&&e.enumerable}:n},7674:(e,t,n)=>{var i=n(1702),o=n(9670),s=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,r=!1,e={};try{(n=i(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(e,[]),r=e instanceof Array}catch(e){}return function(e,t){return o(e),s(t),r?n(e,t):e.__proto__=t,e}}():void 0)},288:(e,t,n)=>{"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},2140:(e,t,n)=>{var i=n(6916),o=n(614),s=n(111),a=TypeError;e.exports=function(e,t){var n,r;if("string"===t&&o(n=e.toString)&&!s(r=i(n,e)))return r;if(o(n=e.valueOf)&&!s(r=i(n,e)))return r;if("string"!==t&&o(n=e.toString)&&!s(r=i(n,e)))return r;throw a("Can't convert object to primitive value")}},3887:(e,t,n)=>{var r=n(5005),i=n(1702),o=n(8006),s=n(5181),a=n(9670),l=i([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=s.f;return n?l(t,n(e)):t}},857:(e,t,n)=>{n=n(7854);e.exports=n},2534:e=>{e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},3702:(e,t,n)=>{var r=n(7854),i=n(2492),o=n(614),s=n(4705),a=n(2788),l=n(5112),c=n(7871),u=n(3823),d=n(1913),h=n(7392),f=i&&i.prototype,p=l("species"),m=!1,g=o(r.PromiseRejectionEvent),n=s("Promise",function(){var e=a(i),t=e!==String(i);if(!t&&66===h)return!0;if(d&&(!f.catch||!f.finally))return!0;if(!h||h<51||!/native code/.test(e)){function n(e){e(function(){},function(){})}e=new i(function(e){e(1)});if((e.constructor={})[p]=n,!(m=e.then(function(){})instanceof n))return!0}return!t&&(c||u)&&!g});e.exports={CONSTRUCTOR:n,REJECTION_EVENT:g,SUBCLASSING:m}},2492:(e,t,n)=>{n=n(7854);e.exports=n.Promise},9478:(e,t,n)=>{var r=n(9670),i=n(111),o=n(8523);e.exports=function(e,t){return r(e),i(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},612:(e,t,n)=>{var r=n(2492),i=n(7072),n=n(3702).CONSTRUCTOR;e.exports=n||!i(function(e){r.all(e).then(void 0,function(){})})},2626:(e,t,n)=>{var r=n(3070).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},8572:e=>{function t(){this.head=null,this.tail=null}t.prototype={add:function(e){e={item:e,next:null};this.head?this.tail.next=e:this.head=e,this.tail=e},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}},e.exports=t},7651:(e,t,n)=>{var r=n(6916),i=n(9670),o=n(614),s=n(4326),a=n(2261),l=TypeError;e.exports=function(e,t){var n=e.exec;if(o(n))return null!==(n=r(n,e,t))&&i(n),n;if("RegExp"===s(e))return r(a,e,t);throw l("RegExp#exec called on incompatible receiver")}},2261:(e,t,n)=>{"use strict";var p=n(6916),r=n(1702),m=n(1340),g=n(7066),i=n(2999),o=n(2309),v=n(30),b=n(9909).get,s=n(9441),n=n(7168),y=o("native-string-replace",String.prototype.replace),_=RegExp.prototype.exec,w=_,x=r("".charAt),C=r("".indexOf),k=r("".replace),S=r("".slice),D=(o=/b*/g,p(_,r=/a/,"a"),p(_,o,"a"),0!==r.lastIndex||0!==o.lastIndex),T=i.BROKEN_CARET,O=void 0!==/()??/.exec("")[1];(D||O||T||s||n)&&(w=function(e){var t,n,r,i,o,s,a=this,l=b(a),e=m(e),c=l.raw;if(c)return c.lastIndex=a.lastIndex,d=p(w,c,e),a.lastIndex=c.lastIndex,d;var u=l.groups,c=T&&a.sticky,d=p(g,a),l=a.source,h=0,f=e;if(c&&(d=k(d,"y",""),-1===C(d,"g")&&(d+="g"),f=S(e,a.lastIndex),0{"use strict";var r=n(9670);e.exports=function(){var e=r(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},4706:(e,t,n)=>{var r=n(6916),i=n(2597),o=n(7976),s=n(7066),a=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in a||i(e,"flags")||!o(a,e)?t:r(s,e)}},2999:(e,t,n)=>{var r=n(7293),i=n(7854).RegExp,n=r(function(){var e=i("a","y");return e.lastIndex=2,null!=e.exec("abcd")}),o=n||r(function(){return!i("a","y").sticky}),r=n||r(function(){var e=i("^r","gy");return e.lastIndex=2,null!=e.exec("str")});e.exports={BROKEN_CARET:r,MISSED_STICKY:o,UNSUPPORTED_Y:n}},9441:(e,t,n)=>{var r=n(7293),i=n(7854).RegExp;e.exports=r(function(){var e=i(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})},7168:(e,t,n)=>{var r=n(7293),i=n(7854).RegExp;e.exports=r(function(){var e=i("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")})},4488:e=>{var t=TypeError;e.exports=function(e){if(null==e)throw t("Can't call method on "+e);return e}},1150:e=>{e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},7152:(e,t,n)=>{function r(o){return u?function(e,t){var n=2{"use strict";var r=n(5005),i=n(3070),o=n(5112),s=n(9781),a=o("species");e.exports=function(e){var e=r(e),t=i.f;s&&e&&!e[a]&&t(e,a,{configurable:!0,get:function(){return this}})}},8003:(e,t,n)=>{var r=n(3070).f,i=n(2597),o=n(5112)("toStringTag");e.exports=function(e,t,n){(e=e&&!n?e.prototype:e)&&!i(e,o)&&r(e,o,{configurable:!0,value:t})}},6200:(e,t,n)=>{var r=n(2309),i=n(9711),o=r("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},5465:(e,t,n)=>{var r=n(7854),n=n(3072),i="__core-js_shared__",r=r[i]||n(i,{});e.exports=r},2309:(e,t,n)=>{var r=n(1913),i=n(5465);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.24.1",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE",source:"https://github.com/zloirock/core-js"})},6707:(e,t,n)=>{var r=n(9670),i=n(9483),o=n(5112)("species");e.exports=function(e,t){var e=r(e).constructor;return void 0===e||null==(e=r(e)[o])?t:i(e)}},8710:(e,t,n)=>{function r(i){return function(e,t){var n,e=s(a(e)),t=o(t),r=e.length;return t<0||r<=t?i?"":void 0:(n=c(e,t))<55296||56319{var r=n(6530).PROPER,i=n(7293),o=n(1361);e.exports=function(e){return i(function(){return!!o[e]()||"​…᠎"!=="​…᠎"[e]()||r&&o[e].name!==e})}},3111:(e,t,n)=>{function r(t){return function(e){e=s(o(e));return 1&t&&(e=a(e,l,"")),e=2&t?a(e,c,""):e}}var i=n(1702),o=n(4488),s=n(1340),n=n(1361),a=i("".replace),i="["+n+"]",l=RegExp("^"+i+i+"*"),c=RegExp(i+i+"*$");e.exports={start:r(1),end:r(2),trim:r(3)}},6532:(e,t,n)=>{var r=n(6916),i=n(5005),o=n(5112),s=n(8052);e.exports=function(){var e=i("Symbol"),e=e&&e.prototype,t=e&&e.valueOf,n=o("toPrimitive");e&&!e[n]&&s(e,n,function(e){return r(t,this)},{arity:1})}},261:(e,t,n)=>{var r,i,o=n(7854),s=n(2104),a=n(9974),l=n(614),c=n(2597),u=n(7293),d=n(490),h=n(206),f=n(317),p=n(8053),m=n(6833),n=n(5268),g=o.setImmediate,v=o.clearImmediate,b=o.process,y=o.Dispatch,_=o.Function,w=o.MessageChannel,x=o.String,C=0,k={},S="onreadystatechange";try{r=o.location}catch(e){}function D(e){return function(){E(e)}}function T(e){E(e.data)}function O(e){o.postMessage(x(e),r.protocol+"//"+r.host)}var E=function(e){var t;c(k,e)&&(t=k[e],delete k[e],t())};g&&v||(g=function(e){p(arguments.length,1);var t=l(e)?e:_(e),n=h(arguments,1);return k[++C]=function(){s(t,void 0,n)},i(C),C},v=function(e){delete k[e]},n?i=function(e){b.nextTick(D(e))}:y&&y.now?i=function(e){y.now(D(e))}:w&&!m?(m=(n=new w).port2,n.port1.onmessage=T,i=a(m.postMessage,m)):o.addEventListener&&l(o.postMessage)&&!o.importScripts&&r&&"file:"!==r.protocol&&!u(O)?(i=O,o.addEventListener("message",T,!1)):i=S in f("script")?function(e){d.appendChild(f("script"))[S]=function(){d.removeChild(this),E(e)}}:function(e){setTimeout(D(e),0)}),e.exports={set:g,clear:v}},1400:(e,t,n)=>{var r=n(9303),i=Math.max,o=Math.min;e.exports=function(e,t){e=r(e);return e<0?i(e+t,0):o(e,t)}},5656:(e,t,n)=>{var r=n(8361),i=n(4488);e.exports=function(e){return r(i(e))}},9303:(e,t,n)=>{var r=n(4758);e.exports=function(e){e=+e;return e!=e||0==e?0:r(e)}},7466:(e,t,n)=>{var r=n(9303),i=Math.min;e.exports=function(e){return 0{var r=n(4488),i=Object;e.exports=function(e){return i(r(e))}},7593:(e,t,n)=>{var r=n(6916),i=n(111),o=n(2190),s=n(8173),a=n(2140),n=n(5112),l=TypeError,c=n("toPrimitive");e.exports=function(e,t){if(!i(e)||o(e))return e;var n=s(e,c);if(n){if(n=r(n,e,t=void 0===t?"default":t),!i(n)||o(n))return n;throw l("Can't convert object to primitive value")}return a(e,t=void 0===t?"number":t)}},4948:(e,t,n)=>{var r=n(7593),i=n(2190);e.exports=function(e){e=r(e,"string");return i(e)?e:e+""}},1694:(e,t,n)=>{var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},1340:(e,t,n)=>{var r=n(648),i=String;e.exports=function(e){if("Symbol"===r(e))throw TypeError("Cannot convert a Symbol value to a string");return i(e)}},6330:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},9711:(e,t,n)=>{var n=n(1702),r=0,i=Math.random(),o=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+o(++r+i,36)}},3307:(e,t,n)=>{n=n(133);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:(e,t,n)=>{var r=n(9781),n=n(7293);e.exports=r&&n(function(){return 42!=Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},8053:e=>{var n=TypeError;e.exports=function(e,t){if(e{n=n(5112);t.f=n},5112:(e,t,n)=>{var r=n(7854),i=n(2309),o=n(2597),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=u&&u.for,h=l?u:u&&u.withoutSetter||s;e.exports=function(e){var t;return o(c,e)&&(a||"string"==typeof c[e])||(t="Symbol."+e,a&&o(u,e)?c[e]=u[e]:c[e]=(l&&d?d:h)(t)),c[e]}},1361:e=>{e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},9191:(e,t,n)=>{"use strict";var u=n(5005),d=n(2597),h=n(8880),f=n(7976),p=n(7674),m=n(9920),g=n(2626),v=n(9587),b=n(6277),y=n(8340),_=n(7741),w=n(2914),x=n(9781),C=n(1913);e.exports=function(e,t,n,r){var i="stackTraceLimit",o=r?2:1,e=e.split("."),s=e[e.length-1],a=u.apply(null,e);if(a){var l=a.prototype;if(!C&&d(l,"cause")&&delete l.cause,!n)return a;var e=u("Error"),c=t(function(e,t){t=b(r?t:e,void 0),e=r?new a(e):new a;return void 0!==t&&h(e,"message",t),w&&h(e,"stack",_(e.stack,2)),this&&f(l,this)&&v(e,this,c),o{"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,1{"use strict";var r=n(2109),i=n(2092).find,n=n(1223),o=!0;"find"in[]&&Array(1).find(function(){o=!1}),r({target:"Array",proto:!0,forced:o},{find:function(e){return i(this,e,1{"use strict";var r=n(2109),n=n(8533);r({target:"Array",proto:!0,forced:[].forEach!=n},{forEach:n})},1038:(e,t,n)=>{var r=n(2109),i=n(8457);r({target:"Array",stat:!0,forced:!n(7072)(function(e){Array.from(e)})},{from:i})},2772:(e,t,n)=>{"use strict";var r=n(2109),i=n(1702),o=n(1318).indexOf,n=n(9341),s=i([].indexOf),a=!!s&&1/s([1],1,-0)<0,i=n("indexOf");r({target:"Array",proto:!0,forced:a||!i},{indexOf:function(e){var t=1{"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(3070).f,l=n(654),c=n(1913),n=n(9781),u="Array Iterator",d=s.set,h=s.getterFor(u),s=(e.exports=l(Array,"Array",function(e,t){d(this,{type:u,target:r(e),index:0,kind:t})},function(){var e=h(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?{value:e.target=void 0,done:!0}:"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array);if(i("keys"),i("values"),i("entries"),!c&&n&&"values"!==s.name)try{a(s,"name",{value:"values"})}catch(e){}},9600:(e,t,n)=>{"use strict";var r=n(2109),i=n(1702),o=n(8361),s=n(5656),n=n(9341),a=i([].join),i=o!=Object,o=n("join",",");r({target:"Array",proto:!0,forced:i||!o},{join:function(e){return a(s(this),void 0===e?",":e)}})},1249:(e,t,n)=>{"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,1{"use strict";var r=n(2109),i=n(3671).left,o=n(9341),s=n(7392),n=n(5268);r({target:"Array",proto:!0,forced:!o("reduce")||!n&&79{n(2109)({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})},3710:(e,t,n)=>{var r=n(1702),n=n(8052),i=Date.prototype,o="Invalid Date",s=r(i.toString),a=r(i.getTime);String(new Date(NaN))!=o&&n(i,"toString",function(){var e=a(this);return e==e?s(this):o})},1703:(e,t,n)=>{function r(e,t){var n={};n[e]=l(e,t,d),o({global:!0,constructor:!0,arity:1,forced:d},n)}function i(e,t){var n;u&&u[e]&&((n={})[e]=l(c+"."+e,t,d),o({target:c,stat:!0,constructor:!0,arity:1,forced:d},n))}var o=n(2109),s=n(7854),a=n(2104),l=n(9191),c="WebAssembly",u=s[c],d=7!==Error("e",{cause:7}).cause;r("Error",function(t){return function(e){return a(t,this,arguments)}}),r("EvalError",function(t){return function(e){return a(t,this,arguments)}}),r("RangeError",function(t){return function(e){return a(t,this,arguments)}}),r("ReferenceError",function(t){return function(e){return a(t,this,arguments)}}),r("SyntaxError",function(t){return function(e){return a(t,this,arguments)}}),r("TypeError",function(t){return function(e){return a(t,this,arguments)}}),r("URIError",function(t){return function(e){return a(t,this,arguments)}}),i("CompileError",function(t){return function(e){return a(t,this,arguments)}}),i("LinkError",function(t){return function(e){return a(t,this,arguments)}}),i("RuntimeError",function(t){return function(e){return a(t,this,arguments)}})},6647:(e,t,n)=>{var r=n(8052),n=n(7762),i=Error.prototype;i.toString!==n&&r(i,"toString",n)},2130:(e,t,n)=>{"use strict";function s(e,t){for(var n=o(e,16);n.length{var r=n(2109),n=n(7065);r({target:"Function",proto:!0,forced:Function.bind!==n},{bind:n})},8309:(e,t,n)=>{var r=n(9781),i=n(6530).EXISTS,o=n(1702),n=n(3070).f,s=Function.prototype,a=o(s.toString),l=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,c=o(l.exec);r&&!i&&n(s,"name",{configurable:!0,get:function(){try{return c(l,a(this))[1]}catch(e){return""}}})},8862:(e,t,n)=>{function i(e,t){var n=m(arguments),r=t;if((f(t)||void 0!==e)&&!p(e))return d(t)||(t=function(e,t){if(h(r)&&(t=l(r,this,e,t)),!p(t))return t}),n[1]=t,a(g,null,n)}function o(e,t,n){var r=b(n,t-1),n=b(n,t+1);return v(C,e)&&!v(k,n)||v(k,e)&&!v(C,r)?"\\u"+w(y(e,0),16):e}var r=n(2109),s=n(5005),a=n(2104),l=n(6916),c=n(1702),u=n(7293),d=n(3157),h=n(614),f=n(111),p=n(2190),m=n(206),n=n(133),g=s("JSON","stringify"),v=c(/./.exec),b=c("".charAt),y=c("".charCodeAt),_=c("".replace),w=c(1..toString),x=/[\uD800-\uDFFF]/g,C=/^[\uD800-\uDBFF]$/,k=/^[\uDC00-\uDFFF]$/,S=!n||u(function(){var e=s("Symbol")();return"[null]"!=g([e])||"{}"!=g({a:e})||"{}"!=g(Object(e))}),D=u(function(){return'"\\udf06\\ud834"'!==g("\udf06\ud834")||'"\\udead"'!==g("\udead")});g&&r({target:"JSON",stat:!0,arity:3,forced:S||D},{stringify:function(e,t,n){var r=m(arguments),r=a(S?i:g,null,r);return D&&"string"==typeof r?_(r,x,o):r}})},9601:(e,t,n)=>{var r=n(2109),n=n(1574);r({target:"Object",stat:!0,arity:2,forced:Object.assign!==n},{assign:n})},9660:(e,t,n)=>{var r=n(2109),i=n(133),o=n(7293),s=n(5181),a=n(7908);r({target:"Object",stat:!0,forced:!i||o(function(){s.f(1)})},{getOwnPropertySymbols:function(e){var t=s.f;return t?t(a(e)):[]}})},1539:(e,t,n)=>{var r=n(1694),i=n(8052),n=n(288);r||i(Object.prototype,"toString",n,{unsafe:!0})},1058:(e,t,n)=>{var r=n(2109),n=n(3009);r({global:!0,forced:parseInt!=n},{parseInt:n})},821:(e,t,n)=>{"use strict";var r=n(2109),u=n(6916),d=n(9662),i=n(8523),o=n(2534),h=n(408);r({target:"Promise",stat:!0,forced:n(612)},{all:function(e){var a=this,t=i.f(a),l=t.resolve,c=t.reject,n=o(function(){var r=d(a.resolve),i=[],o=0,s=1;h(e,function(e){var t=o++,n=!1;s++,u(r,a,e).then(function(e){n||(n=!0,i[t]=e,--s||l(i))},c)}),--s||l(i)});return n.error&&c(n.value),t.promise}})},4164:(e,t,n)=>{"use strict";var r=n(2109),i=n(1913),o=n(3702).CONSTRUCTOR,s=n(2492),a=n(5005),l=n(614),n=n(8052),c=s&&s.prototype;r({target:"Promise",proto:!0,forced:o,real:!0},{catch:function(e){return this.then(void 0,e)}}),!i&&l(s)&&(r=a("Promise").prototype.catch,c.catch!==r&&n(c,"catch",r,{unsafe:!0}))},3401:(L,H,e)=>{"use strict";function o(e,t){var n,r,i,o,s=t.value,a=t.state==D,l=a?e.ok:e.fail,c=e.resolve,u=e.reject,d=e.domain;try{l?(a||(t.rejection===O&&(o=t,p(m,f,function(){var e=o.facade;h?C.emit("rejectionHandled",e):A(Q,e,o.value)})),t.rejection=T),!0===l?n=s:(d&&d.enter(),n=l(s),d&&(d.exit(),i=!0)),n===e.promise?u(w("Promise-chain cycle")):(r=E(n))?p(r,n,c,u):c(n)):u(s)}catch(e){d&&!i&&d.exit(),u(e)}}var n,t,r,B=e(2109),F=e(1913),h=e(5268),f=e(7854),p=e(6916),i=e(8052),s=e(7674),z=e(8003),j=e(6340),V=e(9662),a=e(614),W=e(111),U=e(5787),$=e(6707),m=e(261).set,l=e(5948),Z=e(842),Y=e(2534),q=e(8572),c=e(9909),u=e(2492),d=e(3702),e=e(8523),g="Promise",v=d.CONSTRUCTOR,K=d.REJECTION_EVENT,d=d.SUBCLASSING,b=c.getterFor(g),G=c.set,c=u&&u.prototype,y=u,_=c,w=f.TypeError,x=f.document,C=f.process,k=e.f,X=k,J=!!(x&&x.createEvent&&f.dispatchEvent),S="unhandledrejection",Q="rejectionhandled",D=1,ee=2,T=1,O=2,E=function(e){var t;return!(!W(e)||!a(t=e.then))&&t},M=function(n,i){n.notified||(n.notified=!0,l(function(){for(var e,r,t=n.reactions;e=t.get();)o(e,n);n.notified=!1,i&&!n.rejection&&(r=n,p(m,f,function(){var e=r.facade,t=r.value,n=N(r);if(n&&(n=Y(function(){h?C.emit("unhandledRejection",t,e):A(S,e,t)}),r.rejection=h||N(r)?O:T,n.error))throw n.value}))}))},A=function(e,t,n){var r;J?((r=x.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),f.dispatchEvent(r)):r={promise:t,reason:n},!K&&(t=f["on"+e])?t(r):e===S&&Z("Unhandled promise rejection",n)},N=function(e){return e.rejection!==T&&!e.parent},P=function(t,n,r){return function(e){t(n,e,r)}},I=function(e,t,n){e.done||(e.done=!0,(e=n?n:e).value=t,e.state=ee,M(e,!0))},R=function(n,e,t){if(!n.done){n.done=!0,t&&(n=t);try{if(n.facade===e)throw w("Promise can't be resolved itself");var r=E(e);r?l(function(){var t={done:!1};try{p(r,e,P(R,t,n),P(I,t,n))}catch(e){I(t,e,n)}}):(n.value=e,n.state=D,M(n,!1))}catch(e){I({done:!1},e,n)}}};if(v&&(_=(y=function(e){U(this,_),V(e),p(n,this);var t=b(this);try{e(P(R,t),P(I,t))}catch(e){I(t,e)}}).prototype,(n=function(e){G(this,{type:g,done:!1,notified:!1,parent:!1,reactions:new q,rejection:!1,state:0,value:void 0})}).prototype=i(_,"then",function(e,t){var n=b(this),r=k($(this,y));return n.parent=!0,r.ok=!a(e)||e,r.fail=a(t)&&t,r.domain=h?C.domain:void 0,0==n.state?n.reactions.add(r):l(function(){o(r,n)}),r.promise}),t=function(){var e=new n,t=b(e);this.promise=e,this.resolve=P(R,t),this.reject=P(I,t)},e.f=k=function(e){return e===y||void 0===e?new t:X(e)},!F&&a(u)&&c!==Object.prototype)){r=c.then,d||i(c,"then",function(e,t){var n=this;return new y(function(e,t){p(r,n,e,t)}).then(e,t)},{unsafe:!0});try{delete c.constructor}catch(e){}s&&s(c,_)}B({global:!0,constructor:!0,wrap:!0,forced:v},{Promise:y}),z(y,g,!1,!0),j(g)},7727:(e,t,n)=>{"use strict";var r=n(2109),i=n(1913),o=n(2492),s=n(7293),a=n(5005),l=n(614),c=n(6707),u=n(9478),n=n(8052),d=o&&o.prototype;r({target:"Promise",proto:!0,real:!0,forced:!!o&&s(function(){d.finally.call({then:function(){}},function(){})})},{finally:function(t){var n=c(this,a("Promise")),e=l(t);return this.then(e?function(e){return u(n,t()).then(function(){return e})}:t,e?function(e){return u(n,t()).then(function(){throw e})}:t)}}),!i&&l(o)&&(r=a("Promise").prototype.finally,d.finally!==r&&n(d,"finally",r,{unsafe:!0}))},8674:(e,t,n)=>{n(3401),n(821),n(4164),n(6027),n(683),n(6294)},6027:(e,t,n)=>{"use strict";var r=n(2109),o=n(6916),s=n(9662),a=n(8523),l=n(2534),c=n(408);r({target:"Promise",stat:!0,forced:n(612)},{race:function(e){var n=this,r=a.f(n),i=r.reject,t=l(function(){var t=s(n.resolve);c(e,function(e){o(t,n,e).then(r.resolve,i)})});return t.error&&i(t.value),r.promise}})},683:(e,t,n)=>{"use strict";var r=n(2109),i=n(6916),o=n(8523);r({target:"Promise",stat:!0,forced:n(3702).CONSTRUCTOR},{reject:function(e){var t=o.f(this);return i(t.reject,void 0,e),t.promise}})},6294:(e,t,n)=>{"use strict";var r=n(2109),i=n(5005),o=n(1913),s=n(2492),a=n(3702).CONSTRUCTOR,l=n(9478),c=i("Promise"),u=o&&!a;r({target:"Promise",stat:!0,forced:o||a},{resolve:function(e){return l(u&&this===c?s:this,e)}})},4916:(e,t,n)=>{"use strict";var r=n(2109),n=n(2261);r({target:"RegExp",proto:!0,forced:/./.exec!==n},{exec:n})},7601:(e,t,n)=>{"use strict";n(4916);var r,i=n(2109),o=n(6916),s=n(1702),a=n(614),l=n(111),n=(r=!1,(n=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===n.test("abc")&&r),c=TypeError,u=s(/./.test);i({target:"RegExp",proto:!0,forced:!n},{test:function(e){var t=this.exec;if(!a(t))return u(this,e);t=o(t,this,e);if(null===t||l(t))return!!t;throw new c("RegExp exec method returned something other than an Object or null")}})},9714:(e,t,n)=>{"use strict";var r=n(6530).PROPER,i=n(8052),o=n(9670),s=n(1340),a=n(7293),l=n(4706),n="toString",c=RegExp.prototype[n],a=a(function(){return"/a/b"!=c.call({source:"a",flags:"b"})}),r=r&&c.name!=n;(a||r)&&i(RegExp.prototype,n,function(){var e=o(this);return"/"+s(e.source)+"/"+s(l(e))},{unsafe:!0})},8783:(e,t,n)=>{"use strict";var r=n(8710).charAt,i=n(1340),o=n(9909),n=n(654),s="String Iterator",a=o.set,l=o.getterFor(s);n(String,"String",function(e){a(this,{type:s,string:i(e),index:0})},function(){var e=l(this),t=e.string,n=e.index;return n>=t.length?{value:void 0,done:!0}:(t=r(t,n),e.index+=t.length,{value:t,done:!1})})},5306:(e,t,n)=>{"use strict";var x=n(2104),i=n(6916),r=n(1702),o=n(7007),s=n(7293),C=n(9670),k=n(614),S=n(9303),D=n(7466),T=n(1340),a=n(4488),O=n(1530),l=n(8173),E=n(647),M=n(7651),c=n(5112)("replace"),A=Math.max,N=Math.min,P=r([].concat),I=r([].push),R=r("".indexOf),L=r("".slice),n="$0"==="a".replace(/./,"$0"),u=!!/./[c]&&""===/./[c]("a","$0");o("replace",function(e,y,_){var w=u?"$":"$0";return[function(e,t){var n=a(this),r=null==e?void 0:l(e,c);return r?i(r,e,n,t):i(y,T(n),e,t)},function(e,t){var n=C(this),r=T(e);if("string"==typeof t&&-1===R(t,w)&&-1===R(t,"$<")){e=_(y,n,r,t);if(e.done)return e.value}for(var i,o=k(t),s=(o||(t=T(t)),n.global),a=(s&&(i=n.unicode,n.lastIndex=0),[]);null!==(h=M(n,r))&&(I(a,h),s);)""===T(h[0])&&(n.lastIndex=O(r,D(n.lastIndex),i));for(var l,c="",u=0,d=0;d")})||!n||u)},4765:(e,t,n)=>{"use strict";var s=n(6916),r=n(7007),a=n(9670),l=n(4488),c=n(1150),u=n(1340),d=n(8173),h=n(7651);r("search",function(r,i,o){return[function(e){var t=l(this),n=null==e?void 0:d(e,r);return n?s(n,e,t):new RegExp(e)[r](u(t))},function(e){var t=a(this),e=u(e),n=o(i,t,e);return n.done?n.value:(n=t.lastIndex,c(n,0)||(t.lastIndex=0),e=h(t,e),c(t.lastIndex,n)||(t.lastIndex=n),null===e?-1:e.index)}]})},3123:(e,t,n)=>{"use strict";var u=n(2104),d=n(6916),r=n(1702),i=n(7007),h=n(7850),v=n(9670),f=n(4488),b=n(6707),y=n(1530),_=n(7466),w=n(1340),o=n(8173),x=n(1589),C=n(7651),k=n(2261),s=n(2999),n=n(7293),S=s.UNSUPPORTED_Y,D=Math.min,T=[].push,O=r(/./.exec),E=r(T),M=r("".slice);i("split",function(i,p,m){var g="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||1<".".split(/()()/).length||"".split(/.?/).length?function(e,t){var n=w(f(this)),r=void 0===t?4294967295:t>>>0;if(0==r)return[];if(void 0===e)return[n];if(!h(e))return d(p,n,e,r);for(var i,o,s,a=[],t=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,c=new RegExp(e.source,t+"g");(i=d(k,c,n))&&!(l<(o=c.lastIndex)&&(E(a,M(n,l,i.index)),1>>0;if(0==a)return[];if(0===r.length)return null===C(s,r)?[r]:[];for(var l=0,c=0,u=[];c{"use strict";var r=n(2109),i=n(1702),o=n(4488),s=n(9303),a=n(1340),l=i("".slice),c=Math.max,u=Math.min;r({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(e,t){var n=a(o(this)),r=n.length,e=s(e);return(e=e===1/0?0:e)<0&&(e=c(r+e,0)),(t=void 0===t?r:s(t))<=0||t===1/0||(t=u(e+t,r))<=e?"":l(n,e,t)}})},3210:(e,t,n)=>{"use strict";var r=n(2109),i=n(3111).trim;r({target:"String",proto:!0,forced:n(6091)("trim")},{trim:function(){return i(this)}})},4032:(L,H,e)=>{"use strict";function r(e,t){var n=N[e]=b(M);return te(n,{type:O,tag:e,description:t}),d||(n.description=t),n}function i(e,t,n){return e===E&&i(P,t,n),p(e),t=g(t),p(n),(f(N,t)?(n.enumerable?(f(e,T)&&e[T][t]&&(e[T][t]=!1),n=b(n,{enumerable:v(0,!1)})):(f(e,T)||A(e,T,v(1,{})),e[T][t]=!0),R):A)(e,t,n)}function n(t,e){p(t);var n=m(e),e=y(n).concat(a(n));return D(e,function(e){d&&!u(o,n,e)||i(t,e,n[e])}),t}function o(e){var e=g(e),t=u(se,this,e);return!(this===E&&f(N,e)&&!f(P,e))&&(!(t||!f(this,e)||!f(N,e)||f(this,T)&&this[T][e])||t)}function t(e,t){var n,e=m(e),t=g(t);if(e!==E||!f(N,t)||f(P,t))return!(n=ie(e,t))||!f(N,t)||f(e,T)&&e[T][t]||(n.enumerable=!0),n}function s(e){var e=oe(m(e)),t=[];return D(e,function(e){f(N,e)||f(q,e)||ae(t,e)}),t}function a(e){var t=e===E,e=oe(t?P:m(e)),n=[];return D(e,function(e){!f(N,e)||t&&!f(E,e)||ae(n,N[e])}),n}var l=e(2109),c=e(7854),u=e(6916),B=e(1702),F=e(1913),d=e(9781),h=e(133),z=e(7293),f=e(2597),j=e(7976),p=e(9670),m=e(5656),g=e(4948),V=e(1340),v=e(9114),b=e(30),y=e(1956),W=e(8006),_=e(1156),U=e(5181),w=e(1236),$=e(3070),Z=e(6048),Y=e(5296),x=e(8052),C=e(2309),k=e(6200),q=e(3501),K=e(9711),G=e(5112),X=e(6061),J=e(7235),Q=e(6532),ee=e(8003),S=e(9909),D=e(2092).forEach,T=k("hidden"),O="Symbol",e="prototype",te=S.set,ne=S.getterFor(O),E=Object[e],k=c.Symbol,M=k&&k[e],re=c.TypeError,S=c.QObject,ie=w.f,A=$.f,oe=_.f,se=Y.f,ae=B([].push),N=C("symbols"),P=C("op-symbols"),c=C("wks"),I=!S||!S[e]||!S[e].findChild,R=d&&z(function(){return 7!=b(A({},"a",{get:function(){return A(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=ie(E,t);r&&delete E[t],A(e,t,n),r&&e!==E&&A(E,t,r)}:A;h||(x(M=(k=function(){if(j(M,this))throw re("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?V(arguments[0]):void 0,t=K(e),n=function(e){this===E&&u(n,P,e),f(this,T)&&f(this[T],t)&&(this[T][t]=!1),R(this,t,v(1,e))};return d&&I&&R(E,t,{configurable:!0,set:n}),r(t,e)})[e],"toString",function(){return ne(this).tag}),x(k,"withoutSetter",function(e){return r(K(e),e)}),Y.f=o,$.f=i,Z.f=n,w.f=t,W.f=_.f=s,U.f=a,X.f=function(e){return r(G(e),e)},d&&(A(M,"description",{configurable:!0,get:function(){return ne(this).description}}),F||x(E,"propertyIsEnumerable",o,{unsafe:!0}))),l({global:!0,constructor:!0,wrap:!0,forced:!h,sham:!h},{Symbol:k}),D(y(c),function(e){J(e)}),l({target:O,stat:!0,forced:!h},{useSetter:function(){I=!0},useSimple:function(){I=!1}}),l({target:"Object",stat:!0,forced:!h,sham:!d},{create:function(e,t){return void 0===t?b(e):n(b(e),t)},defineProperty:i,defineProperties:n,getOwnPropertyDescriptor:t}),l({target:"Object",stat:!0,forced:!h},{getOwnPropertyNames:s}),Q(),ee(k,O),q[T]=!0},1817:(e,t,n)=>{"use strict";var r,i,o,s,a,l,c,u=n(2109),d=n(9781),h=n(7854),f=n(1702),p=n(2597),m=n(614),g=n(7976),v=n(1340),b=n(3070).f,n=n(9920),y=h.Symbol,_=y&&y.prototype;!d||!m(y)||"description"in _&&void 0===y().description||(r={},n(h=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:v(arguments[0]),t=g(_,this)?new y(e):void 0===e?y():y(e);return""===e&&(r[t]=!0),t},y),(h.prototype=_).constructor=h,i="Symbol(test)"==String(y("test")),o=f(_.toString),s=f(_.valueOf),a=/^Symbol\((.*)\)[^)]+$/,l=f("".replace),c=f("".slice),b(_,"description",{configurable:!0,get:function(){var e=s(this),t=o(e);return p(r,e)?"":""===(e=i?c(t,7,-1):l(t,a,"$1"))?void 0:e}}),u({global:!0,constructor:!0,forced:!0},{Symbol:h}))},763:(e,t,n)=>{var r=n(2109),i=n(5005),o=n(2597),s=n(1340),a=n(2309),n=n(735),l=a("string-to-symbol-registry"),c=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!n},{for:function(e){var t,e=s(e);return o(l,e)?l[e]:(t=i("Symbol")(e),l[e]=t,c[t]=e,t)}})},2165:(e,t,n)=>{n(7235)("iterator")},3230:(e,t,n)=>{n(4032),n(763),n(6620),n(8862),n(9660)},6620:(e,t,n)=>{var r=n(2109),i=n(2597),o=n(2190),s=n(6330),a=n(2309),n=n(735),l=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!n},{keyFor:function(e){if(!o(e))throw TypeError(s(e)+" is not a symbol");if(i(l,e))return l[e]}})},8221:(e,t,n)=>{"use strict";var r=n(2109),i=n(1702),a=n(1340),l=String.fromCharCode,c=i("".charAt),u=i(/./.exec),d=i("".slice),h=/^[\da-f]{2}$/i,f=/^[\da-f]{4}$/i;r({global:!0},{unescape:function(e){for(var t,n,r=a(e),i="",o=r.length,s=0;s{function r(t){if(t&&t.forEach!==l)try{c(t,"forEach",l)}catch(e){t.forEach=l}}var i,o=n(7854),s=n(8324),a=n(8509),l=n(8533),c=n(8880);for(i in s)s[i]&&r(o[i]&&o[i].prototype);r(a)},3948:(e,t,n)=>{function r(t,e){if(t){if(t[u]!==h)try{c(t,u,h)}catch(e){t[u]=h}if(t[d]||c(t,d,e),s[e])for(var n in l)if(t[n]!==l[n])try{c(t,n,l[n])}catch(e){t[n]=l[n]}}}var i,o=n(7854),s=n(8324),a=n(8509),l=n(6992),c=n(8880),n=n(5112),u=n("iterator"),d=n("toStringTag"),h=l.values;for(i in s)r(o[i]&&o[i].prototype,i);r(a,"DOMTokenList")},6815:(e,t,n)=>{var r=n(2109),i=n(7854),n=n(7152).setInterval;r({global:!0,bind:!0,forced:i.setInterval!==n},{setInterval:n})},8417:(e,t,n)=>{var r=n(2109),i=n(7854),n=n(7152).setTimeout;r({global:!0,bind:!0,forced:i.setTimeout!==n},{setTimeout:n})},2564:(e,t,n)=>{n(6815),n(8417)},696:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertChangesToDMP=function(e){for(var t,n,r=[],i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertChangesToXML=function(e){for(var t=[],n=0;n"):r.removed&&t.push(""),t.push(function(e){return e=(e=(e=(e=e.replace(/&/g,"&")).replace(//g,">")).replace(/"/g,""")}(r.value)),r.added?t.push(""):r.removed&&t.push("")}return t.join("")}},6976:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffArrays=function(e,t,n){return r.diff(e,t,n)},t.arrayDiff=void 0;var r=new((n=n(5913))&&n.__esModule?n:{default:n}).default;(t.arrayDiff=r).tokenize=function(e){return e.slice()},r.join=r.removeEmpty=function(e){return e}},5913:(e,t)=>{"use strict";function n(){}Object.defineProperty(t,"__esModule",{value:!0}),(t.default=n).prototype={diff:function(a,l){var e=2=d&&h<=e+1)return u([{value:this.join(l),count:l.length}]);function r(){for(var e=-1*f;e<=f;e+=2){var t=void 0,n=p[e-1],r=p[e+1],i=(r?r.newPos:0)-e,o=(n&&(p[e-1]=void 0),n&&n.newPos+1=d&&h<=i+1)return u(function(e,t,n,r,i){for(var o=0,s=t.length,a=0,l=0;oe.length?t:e}),u.value=e.join(c)):u.value=e.join(n.slice(a,a+u.count)),a+=u.count,u.added||(l+=u.count))}var d=t[s-1];1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffChars=function(e,t,n){return r.diff(e,t,n)},t.characterDiff=void 0;var r=new((n=n(5913))&&n.__esModule?n:{default:n}).default;t.characterDiff=r},3900:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffCss=function(e,t,n){return r.diff(e,t,n)},t.cssDiff=void 0;var r=new((n=n(5913))&&n.__esModule?n:{default:n}).default;(t.cssDiff=r).tokenize=function(e){return e.split(/([{}:;,]|\s+)/)}},4276:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffJson=function(e,t,n){return o.diff(e,t,n)},t.canonicalize=d,t.jsonDiff=void 0;var r=(i=n(5913))&&i.__esModule?i:{default:i},i=n(8187);function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var u=Object.prototype.toString,o=new r.default;function d(e,t,n,r,i){var o,s;for(t=t||[],n=n||[],r&&(e=r(i,e)),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffLines=function(e,t,n){return o.diff(e,t,n)},t.diffTrimmedLines=function(e,t,n){n=(0,i.generateOptions)(n,{ignoreWhitespace:!0});return o.diff(e,t,n)},t.lineDiff=void 0;var r=(r=n(5913))&&r.__esModule?r:{default:r},i=n(8009);var o=new r.default;(t.lineDiff=o).tokenize=function(e){var t=[],n=e.split(/(\n|\r\n)/);n[n.length-1]||n.pop();for(var r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffSentences=function(e,t,n){return r.diff(e,t,n)},t.sentenceDiff=void 0;var r=new((n=n(5913))&&n.__esModule?n:{default:n}).default;(t.sentenceDiff=r).tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)}},5303:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffWords=function(e,t,n){return n=(0,i.generateOptions)(n,{ignoreWhitespace:!0}),a.diff(e,t,n)},t.diffWordsWithSpace=function(e,t,n){return a.diff(e,t,n)},t.wordDiff=void 0;var r=(r=n(5913))&&r.__esModule?r:{default:r},i=n(8009);var o=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,s=/\S/,a=new r.default;(t.wordDiff=a).equals=function(e,t){return this.options.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t||this.options.ignoreWhitespace&&!s.test(e)&&!s.test(t)},a.tokenize=function(e){for(var t=e.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Diff",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"diffChars",{enumerable:!0,get:function(){return i.diffChars}}),Object.defineProperty(t,"diffWords",{enumerable:!0,get:function(){return o.diffWords}}),Object.defineProperty(t,"diffWordsWithSpace",{enumerable:!0,get:function(){return o.diffWordsWithSpace}}),Object.defineProperty(t,"diffLines",{enumerable:!0,get:function(){return s.diffLines}}),Object.defineProperty(t,"diffTrimmedLines",{enumerable:!0,get:function(){return s.diffTrimmedLines}}),Object.defineProperty(t,"diffSentences",{enumerable:!0,get:function(){return a.diffSentences}}),Object.defineProperty(t,"diffCss",{enumerable:!0,get:function(){return l.diffCss}}),Object.defineProperty(t,"diffJson",{enumerable:!0,get:function(){return c.diffJson}}),Object.defineProperty(t,"canonicalize",{enumerable:!0,get:function(){return c.canonicalize}}),Object.defineProperty(t,"diffArrays",{enumerable:!0,get:function(){return u.diffArrays}}),Object.defineProperty(t,"applyPatch",{enumerable:!0,get:function(){return d.applyPatch}}),Object.defineProperty(t,"applyPatches",{enumerable:!0,get:function(){return d.applyPatches}}),Object.defineProperty(t,"parsePatch",{enumerable:!0,get:function(){return h.parsePatch}}),Object.defineProperty(t,"merge",{enumerable:!0,get:function(){return f.merge}}),Object.defineProperty(t,"structuredPatch",{enumerable:!0,get:function(){return p.structuredPatch}}),Object.defineProperty(t,"createTwoFilesPatch",{enumerable:!0,get:function(){return p.createTwoFilesPatch}}),Object.defineProperty(t,"createPatch",{enumerable:!0,get:function(){return p.createPatch}}),Object.defineProperty(t,"convertChangesToDMP",{enumerable:!0,get:function(){return m.convertChangesToDMP}}),Object.defineProperty(t,"convertChangesToXML",{enumerable:!0,get:function(){return g.convertChangesToXML}});var r=(t=n(5913))&&t.__esModule?t:{default:t},i=n(7630),o=n(5303),s=n(8187),a=n(4146),l=n(3900),c=n(4276),u=n(6976),d=n(3690),h=n(3719),f=n(3051),p=n(1286),m=n(696),g=n(5826)},3690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.applyPatch=o,t.applyPatches=function(e,i){"string"==typeof e&&(e=(0,O.parsePatch)(e));var t=0;!function n(){var r=e[t++];if(!r)return i.complete();i.loadFile(r,function(e,t){if(e)return i.complete(e);e=o(t,r,i),i.patched(r,e,function(e){if(e)return i.complete(e);n()})})}()};var O=n(3719),E=(t=n(8169))&&t.__esModule?t:{default:t};function o(e,t){var n=2{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.structuredPatch=a,t.formatPatch=l,t.createTwoFilesPatch=s,t.createPatch=function(e,t,n,r,i,o){return s(e,e,t,n,r,i,o)};var o=n(8187);function v(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){var n;if(e)return"string"==typeof e?r(e,t):"Map"===(n="Object"===(n=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=c.length-2&&o.length<=l.context&&(e=/\n$/.test(s),n=/\n$/.test(a),r=0==o.length&&f.length>t.oldLines,!e&&r&&0{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.calcLineCount=f,t.merge=function(e,t,n){e=p(e,n),t=p(t,n);var r={};(e.index||t.index)&&(r.index=e.index||t.index);(e.newFileName||t.newFileName)&&(m(e)?m(t)?(r.oldFileName=g(r,e.oldFileName,t.oldFileName),r.newFileName=g(r,e.newFileName,t.newFileName),r.oldHeader=g(r,e.oldHeader,t.oldHeader),r.newHeader=g(r,e.newHeader,t.newHeader)):(r.oldFileName=e.oldFileName,r.newFileName=e.newFileName,r.oldHeader=e.oldHeader,r.newHeader=e.newHeader):(r.oldFileName=t.oldFileName||e.oldFileName,r.newFileName=t.newFileName||e.newFileName,r.oldHeader=t.oldHeader||e.oldHeader,r.newHeader=t.newHeader||e.newHeader));r.hunks=[];var i=0,o=0,s=0,a=0;for(;ie.length)&&(t=e.length);for(var n=0,r=new Array(t);n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parsePatch=function(e){var s=1{"use strict";function n(e,t){if(t.length>e.length)return!1;for(var n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(t,n,r){var i=!0,o=!1,s=!1,a=1;return function e(){if(i&&!s){if(o?a++:i=!1,t+a<=r)return a;s=!0}if(!o)return s||(i=!0),n<=t-a?-a++:(o=!0,e())}}},8009:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generateOptions=function(e,t){if("function"==typeof e)t.callback=e;else if(e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}},6688:(e,t,n)=>{var r;n(9755);window.Zepto,n=[n(9755)],void 0!==(t="function"==typeof(r=function(a){"use strict";var l=function(h,w,x){var C={invalid:[],getCaret:function(){try{var e,t=0,n=h.get(0),r=document.selection,i=n.selectionStart;if(r&&navigator.appVersion.indexOf("MSIE 10")===-1){e=r.createRange();e.moveStart("character",-C.val().length);t=e.text.length}else if(i||i==="0")t=i;return t}catch(e){}},setCaret:function(e){try{if(h.is(":focus")){var t,n=h.get(0);if(n.setSelectionRange)n.setSelectionRange(e,e);else{t=n.createTextRange();t.collapse(true);t.moveEnd("character",e);t.moveStart("character",e);t.select()}}}catch(e){}},events:function(){h.on("keydown.mask",function(e){h.data("mask-keycode",e.keyCode||e.which);h.data("mask-previus-value",h.val());h.data("mask-previus-caret-pos",C.getCaret());C.maskDigitPosMapOld=C.maskDigitPosMap}).on(a.jMaskGlobals.useInput?"input.mask":"keyup.mask",C.behaviour).on("paste.mask drop.mask",function(){setTimeout(function(){h.keydown().keyup()},100)}).on("change.mask",function(){h.data("changed",true)}).on("blur.mask",function(){if(o!==C.val()&&!h.data("changed"))h.trigger("change");h.data("changed",false)}).on("blur.mask",function(){o=C.val()}).on("focus.mask",function(e){if(x.selectOnFocus===true)a(e.target).select()}).on("focusout.mask",function(){if(x.clearIfNotMatch&&!s.test(C.val()))C.val("")})},getRegexMask:function(){var e=[],t,n,r,i,o,s;for(var a=0;a0){if(h[n]()!==e)h[n](e);r=h}else r=h[n]();return r},calculateCaretPosition:function(e){var t=C.getMasked(),n=C.getCaret();if(e!==t){var r=h.data("mask-previus-caret-pos")||0,i=t.length,o=e.length,s=0,a=0,l=0,c=0,u=0;for(u=n;u=0;u--){if(!C.maskDigitPosMap[u])break;s++}for(u=n-1;u>=0;u--)if(C.maskDigitPosMap[u])l++;for(u=r-1;u>=0;u--)if(C.maskDigitPosMapOld[u])c++;if(n>o)n=i*10;else if(r>=n&&r!==o){if(!C.maskDigitPosMapOld[n]){var d=n;n-=c-l;n-=s;if(C.maskDigitPosMap[n])n=d}}else if(n>r){n+=l-c;n+=a}}return n},behaviour:function(e){e=e||window.event;C.invalid=[];var t=h.data("mask-keycode");if(a.inArray(t,k.byPassKeys)===-1){var n=C.getMasked(),r=C.getCaret(),i=h.data("mask-previus-value")||"";setTimeout(function(){C.setCaret(C.calculateCaretPosition(i))},a.jMaskGlobals.keyStrokeCompensation);C.val(n);C.setCaret(r);return C.callbacks(e)}},getMasked:function(e,t){var n=[],r=t===undefined?C.val():t+"",i=0,o=w.length,s=0,a=r.length,l=1,c="push",u=-1,d=0,h=[],f,p;if(x.reverse){c="unshift";l=-1;f=0;i=o-1;s=a-1;p=function(){return i>-1&&s>-1}}else{f=o-1;p=function(){return i0,[t,e,h,C.invalid,x])}};h=a(h);var k=this,o=C.val(),s;w=typeof w==="function"?w(C.val(),undefined,h,x):w;k.mask=w;k.options=x;k.remove=function(){var e=C.getCaret();if(k.options.placeholder)h.removeAttr("placeholder");if(h.data("mask-maxlength"))h.removeAttr("maxlength");C.destroyEvents();C.val(k.getCleanVal());C.setCaret(e);return h};k.getCleanVal=function(){return C.getMasked(true)};k.getMaskedVal=function(e){return C.getMasked(false,e)};k.init=function(e){e=e||false;x=x||{};k.clearIfNotMatch=a.jMaskGlobals.clearIfNotMatch;k.byPassKeys=a.jMaskGlobals.byPassKeys;k.translation=a.extend({},a.jMaskGlobals.translation,x.translation);k=a.extend(true,{},k,x);s=C.getRegexMask();if(e){C.events();C.val(C.getMasked())}else{if(x.placeholder)h.attr("placeholder",x.placeholder);if(h.data("mask"))h.attr("autocomplete","off");for(var t=0,n=true;t{var r,i;!function(){"use strict";i=[n(9755)],void 0!==(i="function"==typeof(r=function(te){"use strict";te.ui=te.ui||{};var R=te.ui.version="1.13.2",L=0,H=Array.prototype.hasOwnProperty,a=Array.prototype.slice,B=(te.cleanData=function(i){return function(e){var t,n,r;for(r=0;(n=e[r])!=null;r++){t=te._data(n,"events");if(t&&t.remove)te(n).triggerHandler("remove")}i(e)}}(te.cleanData),te.widget=function(e,n,t){var r,i,o;var s={};var a=e.split(".")[0];e=e.split(".")[1];var l=a+"-"+e;if(!t){t=n;n=te.Widget}if(Array.isArray(t))t=te.extend.apply(null,[{}].concat(t));te.expr.pseudos[l.toLowerCase()]=function(e){return!!te.data(e,l)};te[a]=te[a]||{};r=te[a][e];i=te[a][e]=function(e,t){if(!this||!this._createWidget)return new i(e,t);if(arguments.length)this._createWidget(e,t)};te.extend(i,r,{version:t.version,_proto:te.extend({},t),_childConstructors:[]});o=new n;o.options=te.widget.extend({},o.options);te.each(t,function(t,o){if(typeof o!=="function"){s[t]=o;return}s[t]=function(){function r(){return n.prototype[t].apply(this,arguments)}function i(e){return n.prototype[t].apply(this,e)}return function(){var e=this._super;var t=this._superApply;var n;this._super=r;this._superApply=i;n=o.apply(this,arguments);this._super=e;this._superApply=t;return n}}()});i.prototype=te.widget.extend(o,{widgetEventPrefix:r?o.widgetEventPrefix||e:e},s,{constructor:i,namespace:a,widgetName:e,widgetFullName:l});if(r){te.each(r._childConstructors,function(e,t){var n=t.prototype;te.widget(n.namespace+"."+n.widgetName,i,t._proto)});delete r._childConstructors}else n._childConstructors.push(i);te.widget.bridge(e,i);return i},te.widget.extend=function(e){var t=a.call(arguments,1);var n=0;var r=t.length;var i;var o;for(;n",options:{classes:{},disabled:false,create:null},_createWidget:function(e,t){t=te(t||this.defaultElement||this)[0];this.element=te(t);this.uuid=L++;this.eventNamespace="."+this.widgetName+this.uuid;this.bindings=te();this.hoverable=te();this.focusable=te();this.classesElementLookup={};if(t!==this){te.data(t,this.widgetFullName,this);this._on(true,this.element,{remove:function(e){if(e.target===t)this.destroy()}});this.document=te(t.style?t.ownerDocument:t.document||t);this.window=te(this.document[0].defaultView||this.document[0].parentWindow)}this.options=te.widget.extend({},this.options,this._getCreateOptions(),e);this._create();if(this.options.disabled)this._setOptionDisabled(this.options.disabled);this._trigger("create",null,this._getCreateEventData());this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:te.noop,_create:te.noop,_init:te.noop,destroy:function(){var n=this;this._destroy();te.each(this.classesElementLookup,function(e,t){n._removeClass(t,e)});this.element.off(this.eventNamespace).removeData(this.widgetFullName);this.widget().off(this.eventNamespace).removeAttr("aria-disabled");this.bindings.off(this.eventNamespace)},_destroy:te.noop,widget:function(){return this.element},option:function(e,t){var n=e;var r;var i;var o;if(arguments.length===0)return te.widget.extend({},this.options);if(typeof e==="string"){n={};r=e.split(".");e=r.shift();if(r.length){i=n[e]=te.widget.extend({},this.options[e]);for(o=0;o"+"
"),r=n.children()[0];te("body").append(n);e=r.offsetWidth;n.css("overflow","scroll");t=r.offsetWidth;if(e===t)t=n[0].clientWidth;n.remove();return i=e-t},getScrollInfo:function(e){var t=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),n=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),r=t==="scroll"||t==="auto"&&e.width0?"right":"center",vertical:i<0?"top":r>0?"bottom":"middle"};if(fx(C(r),C(i)))o.important="horizontal";else o.important="vertical";d.using.call(this,e,o)};s.offset(te.extend(c,{using:e}))})},te.ui.position={fit:{left:function(e,t){var n=t.within,r=n.isWindow?n.scrollLeft:n.offset.left,i=n.width,o=e.left-t.collisionPosition.marginLeft,s=r-o,a=o+t.collisionWidth-i-r,l;if(t.collisionWidth>i)if(s>0&&a<=0){l=e.left+s+t.collisionWidth-i-r;e.left+=s-l}else if(a>0&&s<=0)e.left=r;else if(s>a)e.left=r+i-t.collisionWidth;else e.left=r;else if(s>0)e.left+=s;else if(a>0)e.left-=a;else e.left=x(e.left-o,e.left)},top:function(e,t){var n=t.within,r=n.isWindow?n.scrollTop:n.offset.top,i=t.within.height,o=e.top-t.collisionPosition.marginTop,s=r-o,a=o+t.collisionHeight-i-r,l;if(t.collisionHeight>i)if(s>0&&a<=0){l=e.top+s+t.collisionHeight-i-r;e.top+=s-l}else if(a>0&&s<=0)e.top=r;else if(s>a)e.top=r+i-t.collisionHeight;else e.top=r;else if(s>0)e.top+=s;else if(a>0)e.top-=a;else e.top=x(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,i=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,s=e.left-t.collisionPosition.marginLeft,a=s-o,l=s+t.collisionWidth-i-o,c=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,u=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,d=-2*t.offset[0],h,f;if(a<0){h=e.left+c+u+d+t.collisionWidth-i-r;if(h<0||h0){f=e.left-t.collisionPosition.marginLeft+c+u+d-o;if(f>0||C(f)0){f=e.top-t.collisionPosition.marginTop+u+d+h-o;if(f>0||C(f)")[0],g,v=d.each;function b(e){if(e==null)return e+"";return typeof e==="object"?n[$.call(e)]||"object":typeof e}function y(e,t,n){var r=p[t.type]||{};if(e==null)return n||!t.def?null:t.def;e=r.floor?~~e:parseFloat(e);if(isNaN(e))return t.def;if(r.mod)return(e+r.mod)%r.mod;return Math.min(r.max,Math.max(0,e))}function _(s){var a=h(),l=a._rgba=[];s=s.toLowerCase();v(Y,function(e,t){var n,r=t.re.exec(s),i=r&&t.parse(r),o=t.space||"rgba";if(i){n=a[o](i);a[f[o].cache]=n[f[o].cache];l=a._rgba=n._rgba;return false}});if(l.length){if(l.join()==="0,0,0,0")d.extend(l,g.transparent);return a}return g[s]}function w(e,t,n){n=(n+1)%1;if(n*6<1)return e+(t-e)*n*6;if(n*2<1)return t;if(n*3<2)return e+(t-e)*(2/3-n)*6;return e}e.style.cssText="background-color:rgba(1,1,1,.5)",m.rgba=e.style.backgroundColor.indexOf("rgba")>-1,v(f,function(e,t){t.cache="_"+e;t.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()}),(h.fn=d.extend(h.prototype,{parse:function(i,e,t,n){if(i===undefined){this._rgba=[null,null,null,null];return this}if(i.jquery||i.nodeType){i=d(i).css(e);e=undefined}var o=this,r=b(i),s=this._rgba=[];if(e!==undefined){i=[i,e,t,n];r="array"}if(r==="string")return this.parse(_(i)||g._default);if(r==="array"){v(f.rgba.props,function(e,t){s[t.idx]=y(i[t.idx],t)});return this}if(r==="object"){if(i instanceof h)v(f,function(e,t){if(i[t.cache])o[t.cache]=i[t.cache].slice()});else v(f,function(e,n){var r=n.cache;v(n.props,function(e,t){if(!o[r]&&n.to){if(e==="alpha"||i[e]==null)return;o[r]=n.to(o._rgba)}o[r][t.idx]=y(i[e],t,true)});if(o[r]&&d.inArray(null,o[r].slice(0,3))<0){if(o[r][3]==null)o[r][3]=1;if(n.from)o._rgba=n.from(o[r])}});return this}},is:function(e){var i=h(e),o=true,s=this;v(f,function(e,t){var n,r=i[t.cache];if(r){n=s[t.cache]||t.to&&t.to(s._rgba)||[];v(t.props,function(e,t){if(r[t.idx]!=null){o=r[t.idx]===n[t.idx];return o}})}return o});return o},_space:function(){var n=[],r=this;v(f,function(e,t){if(r[t.cache])n.push(e)});return n.pop()},transition:function(e,s){var a=h(e),t=a._space(),n=f[t],r=this.alpha()===0?h("transparent"):this,l=r[n.cache]||n.to(r._rgba),c=l.slice();a=a[n.cache];v(n.props,function(e,t){var n=t.idx,r=l[n],i=a[n],o=p[t.type]||{};if(i===null)return;if(r===null)c[n]=i;else{if(o.mod)if(i-r>o.mod/2)r+=o.mod;else if(r-i>o.mod/2)r-=o.mod;c[n]=y((i-r)*s+r,t)}});return this[t](c)},blend:function(e){if(this._rgba[3]===1)return this;var t=this._rgba.slice(),n=t.pop(),r=h(e)._rgba;return h(d.map(t,function(e,t){return(1-n)*r[t]+n*e}))},toRgbaString:function(){var e="rgba(",t=d.map(this._rgba,function(e,t){if(e!=null)return e;return t>2?1:0});if(t[3]===1){t.pop();e="rgb("}return e+t.join()+")"},toHslaString:function(){var e="hsla(",t=d.map(this.hsla(),function(e,t){if(e==null)e=t>2?1:0;if(t&&t<3)e=Math.round(e*100)+"%";return e});if(t[3]===1){t.pop();e="hsl("}return e+t.join()+")"},toHexString:function(e){var t=this._rgba.slice(),n=t.pop();if(e)t.push(~~(n*255));return"#"+d.map(t,function(e){e=(e||0).toString(16);return e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}})).parse.prototype=h.fn,f.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],o=Math.max(t,n,r),s=Math.min(t,n,r),a=o-s,l=o+s,c=l*.5,u,d;if(s===o)u=0;else if(t===o)u=60*(n-r)/a+360;else if(n===o)u=60*(r-t)/a+120;else u=60*(t-n)/a+240;if(a===0)d=0;else if(c<=.5)d=a/l;else d=a/(2-l);return[Math.round(u)%360,d,c,i==null?1:i]},f.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],o=r<=.5?r*(1+n):r+n-r*n,s=2*r-o;return[Math.round(w(s,o,t+1/3)*255),Math.round(w(s,o,t)*255),Math.round(w(s,o,t-1/3)*255),i]},v(f,function(l,e){var n=e.props,s=e.cache,a=e.to,c=e.from;h.fn[l]=function(e){if(a&&!this[s])this[s]=a(this._rgba);if(e===undefined)return this[s].slice();var t,r=b(e),i=r==="array"||r==="object"?e:arguments,o=this[s].slice();v(n,function(e,t){var n=i[r==="object"?e:t.idx];if(n==null)n=o[t.idx];o[t.idx]=y(n,t)});if(c){t=h(c(o));t[s]=o;return t}else return h(o)};v(n,function(s,a){if(h.fn[s])return;h.fn[s]=function(e){var t,n,r,i,o=b(e);if(s==="alpha")i=this._hsla?"hsla":"rgba";else i=l;t=this[i]();n=t[a.idx];if(o==="undefined")return n;if(o==="function"){e=e.call(this,n);o=b(e)}if(e==null&&a.empty)return this;if(o==="string"){r=Z.exec(e);if(r)e=n+parseFloat(r[2])*(r[1]==="+"?1:-1)}t[a.idx]=e;return this[i](t)}})}),(h.hook=function(e){var t=e.split(" ");v(t,function(e,o){d.cssHooks[o]={set:function(e,t){var n,r,i="";if(t!=="transparent"&&(b(t)!=="string"||(n=_(t)))){t=h(n||t);if(!m.rgba&&t._rgba[3]!==1){r=o==="backgroundColor"?e.parentNode:e;while((i===""||i==="transparent")&&r&&r.style)try{i=d.css(r,"backgroundColor");r=r.parentNode}catch(e){}t=t.blend(i&&i!=="transparent"?i:"_default")}t=t.toRgbaString()}try{e.style[o]=t}catch(e){}}};d.fx.step[o]=function(e){if(!e.colorInit){e.start=h(e.elem,o);e.end=h(e.end);e.colorInit=true}d.cssHooks[o].set(e.elem,e.start.transition(e.end,e.pos))}})})(U),d.cssHooks.borderColor={expand:function(n){var r={};v(["Top","Right","Bottom","Left"],function(e,t){r["border"+t+"Color"]=n});return r}};var g=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},D="ui-effects-",t="ui-effects-style",T="ui-effects-animated",q=(te.effects={effect:{}},["add","remove","toggle"]),K={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function G(e){return e.replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function X(e){var t,n,r=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,i={};if(r&&r.length&&r[0]&&r[r[0]]){n=r.length;while(n--){t=r[n];if(typeof r[t]==="string")i[G(t)]=r[t]}}else for(t in r)if(typeof r[t]==="string")i[t]=r[t];return i}function J(e,t){var n={},r,i;for(r in t){i=t[r];if(e[r]!==i)if(!K[r])if(te.fx.step[r]||!isNaN(parseFloat(i)))n[r]=i}return n}if(te.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,t){te.fx.step[t]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr){d.style(e.elem,t,e.end);e.setAttr=true}}}),!te.fn.addBack)te.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))};if(te.effects.animateClass=function(i,e,t,n){var o=te.speed(e,t,n);return this.queue(function(){var n=te(this),e=n.attr("class")||"",t,r=o.children?n.find("*").addBack():n;r=r.map(function(){var e=te(this);return{el:e,start:X(this)}});t=function(){te.each(q,function(e,t){if(i[t])n[t+"Class"](i[t])})};t();r=r.map(function(){this.end=X(this.el[0]);this.diff=J(this.start,this.end);return this});n.attr("class",e);r=r.map(function(){var e=this,t=te.Deferred(),n=te.extend({},o,{queue:false,complete:function(){t.resolve(e)}});this.el.animate(this.diff,n);return t.promise()});te.when.apply(te,r.get()).done(function(){t();te.each(arguments,function(){var t=this.el;te.each(this.diff,function(e){t.css(e,"")})});o.complete.call(n[0])})})},te.fn.extend({addClass:function(i){return function(e,t,n,r){return t?te.effects.animateClass.call(this,{add:e},t,n,r):i.apply(this,arguments)}}(te.fn.addClass),removeClass:function(i){return function(e,t,n,r){return arguments.length>1?te.effects.animateClass.call(this,{remove:e},t,n,r):i.apply(this,arguments)}}(te.fn.removeClass),toggleClass:function(o){return function(e,t,n,r,i){if(typeof t==="boolean"||t===undefined)if(!n)return o.apply(this,arguments);else return te.effects.animateClass.call(this,t?{add:e}:{remove:e},n,r,i);else return te.effects.animateClass.call(this,{toggle:e},t,n,r)}}(te.fn.toggleClass),switchClass:function(e,t,n,r,i){return te.effects.animateClass.call(this,{add:t,remove:e},n,r,i)}}),te.expr&&te.expr.pseudos&&te.expr.pseudos.animated)te.expr.pseudos.animated=function(t){return function(e){return!!te(e).data(T)||t(e)}}(te.expr.pseudos.animated);if(te.uiBackCompat!==false)te.extend(te.effects,{save:function(e,t){var n=0,r=t.length;for(;n").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),t={width:n.width(),height:n.height()},i=document.activeElement;try{i.id}catch(e){i=document.body}n.wrap(e);if(n[0]===i||te.contains(n[0],i))te(i).trigger("focus");e=n.parent();if(n.css("position")==="static"){e.css({position:"relative"});n.css({position:"relative"})}else{te.extend(r,{position:n.css("position"),zIndex:n.css("z-index")});te.each(["top","left","bottom","right"],function(e,t){r[t]=n.css(t);if(isNaN(parseInt(r[t],10)))r[t]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}n.css(t);return e.css(r).show()},removeWrapper:function(e){var t=document.activeElement;if(e.parent().is(".ui-effects-wrapper")){e.parent().replaceWith(e);if(e[0]===t||te.contains(e[0],t))te(t).trigger("focus")}return e}});function O(e,t,n,r){if(te.isPlainObject(e)){t=e;e=e.effect}e={effect:e};if(t==null)t={};if(typeof t==="function"){r=t;n=null;t={}}if(typeof t==="number"||te.fx.speeds[t]){r=n;n=t;t={}}if(typeof n==="function"){r=n;n=null}if(t)te.extend(e,t);n=n||t.duration;e.duration=te.fx.off?0:typeof n==="number"?n:n in te.fx.speeds?te.fx.speeds[n]:te.fx.speeds._default;e.complete=r||t.complete;return e}function E(e){if(!e||typeof e==="number"||te.fx.speeds[e])return true;if(typeof e==="string"&&!te.effects.effect[e])return true;if(typeof e==="function")return true;if(typeof e==="object"&&!e.effect)return true;return false}function Q(e,t){var n=t.outerWidth(),r=t.outerHeight(),i=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=i.exec(e)||["",0,n,r,0];return{top:parseFloat(o[1])||0,right:o[2]==="auto"?n:parseFloat(o[2]),bottom:o[3]==="auto"?r:parseFloat(o[3]),left:parseFloat(o[4])||0}}te.extend(te.effects,{version:"1.13.2",define:function(e,t,n){if(!n){n=t;t="effect"}te.effects.effect[e]=n;te.effects.effect[e].mode=t;return n},scaledDimensions:function(e,t,n){if(t===0)return{height:0,width:0,outerHeight:0,outerWidth:0};var r=n!=="horizontal"?(t||100)/100:1,i=n!=="vertical"?(t||100)/100:1;return{height:e.height()*i,width:e.width()*r,outerHeight:e.outerHeight()*i,outerWidth:e.outerWidth()*r}},clipToBox:function(e){return{width:e.clip.right-e.clip.left,height:e.clip.bottom-e.clip.top,left:e.clip.left,top:e.clip.top}},unshift:function(e,t,n){var r=e.queue();if(t>1)r.splice.apply(r,[1,0].concat(r.splice(t,n)));e.dequeue()},saveStyle:function(e){e.data(t,e[0].style.cssText)},restoreStyle:function(e){e[0].style.cssText=e.data(t)||"";e.removeData(t)},mode:function(e,t){var n=e.is(":hidden");if(t==="toggle")t=n?"show":"hide";if(n?t==="hide":t==="show")t="none";return t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createPlaceholder:function(e){var t,n=e.css("position"),r=e.position();e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight());if(/^(static|relative)/.test(n)){n="absolute";t=te("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),float:e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder");e.data(D+"placeholder",t)}e.css({position:n,left:r.left,top:r.top});return t},removePlaceholder:function(e){var t=D+"placeholder",n=e.data(t);if(n){n.remove();e.removeData(t)}},cleanUp:function(e){te.effects.restoreStyle(e);te.effects.removePlaceholder(e)},setTransition:function(r,e,i,o){o=o||{};te.each(e,function(e,t){var n=r.cssUnit(t);if(n[0]>0)o[t]=n[0]*i+n[1]});return o}}),te.fn.extend({effect:function(){var i=O.apply(this,arguments),o=te.effects.effect[i.effect],s=o.mode,e=i.queue,t=e||"fx",a=i.complete,l=i.mode,c=[],n=function(e){var t=te(this),n=te.effects.mode(t,l)||s;t.data(T,true);c.push(n);if(s&&(n==="show"||n===s&&n==="hide"))t.show();if(!s||n!=="none")te.effects.saveStyle(t);if(typeof e==="function")e()};if(te.fx.off||!o)if(l)return this[l](i.duration,a);else return this.each(function(){if(a)a.call(this)});function r(e){var t=te(this);function n(){t.removeData(T);te.effects.cleanUp(t);if(i.mode==="hide")t.hide();r()}function r(){if(typeof a==="function")a.call(t[0]);if(typeof e==="function")e()}i.mode=c.shift();if(te.uiBackCompat!==false&&!s)if(t.is(":hidden")?l==="hide":l==="show"){t[l]();r()}else o.call(t[0],i,r);else if(i.mode==="none"){t[l]();r()}else o.call(t[0],i,n)}return e===false?this.each(n).each(r):this.queue(t,n).queue(t,r)},show:function(n){return function(e){if(E(e))return n.apply(this,arguments);else{var t=O.apply(this,arguments);t.mode="show";return this.effect.call(this,t)}}}(te.fn.show),hide:function(n){return function(e){if(E(e))return n.apply(this,arguments);else{var t=O.apply(this,arguments);t.mode="hide";return this.effect.call(this,t)}}}(te.fn.hide),toggle:function(n){return function(e){if(E(e)||typeof e==="boolean")return n.apply(this,arguments);else{var t=O.apply(this,arguments);t.mode="toggle";return this.effect.call(this,t)}}}(te.fn.toggle),cssUnit:function(e){var n=this.css(e),r=[];te.each(["em","px","%","pt"],function(e,t){if(n.indexOf(t)>0)r=[parseFloat(n),t]});return r},cssClip:function(e){if(e)return this.css("clip","rect("+e.top+"px "+e.right+"px "+e.bottom+"px "+e.left+"px)");return Q(this.css("clip"),this)},transfer:function(e,t){var n=te(this),r=te(e.to),i=r.css("position")==="fixed",o=te("body"),s=i?o.scrollTop():0,a=i?o.scrollLeft():0,l=r.offset(),c={top:l.top-s,left:l.left-a,height:r.innerHeight(),width:r.innerWidth()},u=n.offset(),d=te("
");d.appendTo("body").addClass(e.className).css({top:u.top-s,left:u.left-a,height:n.innerHeight(),width:n.innerWidth(),position:i?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove();if(typeof t==="function")t()})}}),te.fx.step.clip=function(e){if(!e.clipInit){e.start=te(e.elem).cssClip();if(typeof e.end==="string")e.end=Q(e.end,e.elem);e.clipInit=true}te(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})};var M={},ee=(te.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,e){M[e]=function(e){return Math.pow(e,t+2)}}),te.extend(M,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),te.each(M,function(e,t){te.easing["easeIn"+e]=t;te.easing["easeOut"+e]=function(e){return 1-t(1-e)};te.easing["easeInOut"+e]=function(e){return e<.5?t(e*2)/2:1-t(e*-2+2)/2}}),te.effects),ne=te.effects.define("blind","hide",function(e,t){var n={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},r=te(this),i=e.direction||"up",o=r.cssClip(),s={clip:te.extend({},o)},a=te.effects.createPlaceholder(r);s.clip[n[i][0]]=s.clip[n[i][1]];if(e.mode==="show"){r.cssClip(s.clip);if(a)a.css(te.effects.clipToBox(s));s.clip=o}if(a)a.animate(te.effects.clipToBox(s),e.duration,e.easing);r.animate(s,{queue:false,duration:e.duration,easing:e.easing,complete:t})}),re=te.effects.define("bounce",function(e,t){var n,r,i,o=te(this),s=e.mode,a=s==="hide",l=s==="show",c=e.direction||"up",u=e.distance,d=e.times||5,h=d*2+(l||a?1:0),f=e.duration/h,p=e.easing,m=c==="up"||c==="down"?"top":"left",g=c==="up"||c==="left",v=0,b=o.queue().length;te.effects.createPlaceholder(o);i=o.css(m);if(!u)u=o[m==="top"?"outerHeight":"outerWidth"]()/3;if(l){r={opacity:1};r[m]=i;o.css("opacity",0).css(m,g?-u*2:u*2).animate(r,f,p)}if(a)u=u/Math.pow(2,d-1);r={};r[m]=i;for(;v").css({position:"absolute",visibility:"visible",left:-r*p,top:-n*m}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:m,left:i+(h?s*p:0),top:o+(h?a*m:0),opacity:h?0:1}).animate({left:i+(h?0:s*p),top:o+(h?0:a*m),opacity:h?1:0},e.duration||500,e.easing,v)}}function b(){u.css({visibility:"visible"});te(g).remove();t()}}),ae=te.effects.define("fade","toggle",function(e,t){var n=e.mode==="show";te(this).css("opacity",n?0:1).animate({opacity:n?1:0},{queue:false,duration:e.duration,easing:e.easing,complete:t})}),le=te.effects.define("fold","hide",function(t,e){var n=te(this),r=t.mode,i=r==="show",o=r==="hide",s=t.size||15,a=/([0-9]+)%/.exec(s),l=!!t.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=t.duration/2,d=te.effects.createPlaceholder(n),h=n.cssClip(),f={clip:te.extend({},h)},p={clip:te.extend({},h)},m=[h[c[0]],h[c[1]]],g=n.queue().length;if(a)s=parseInt(a[1],10)/100*m[o?0:1];f.clip[c[0]]=s;p.clip[c[0]]=s;p.clip[c[1]]=0;if(i){n.cssClip(p.clip);if(d)d.css(te.effects.clipToBox(p));p.clip=h}n.queue(function(e){if(d)d.animate(te.effects.clipToBox(f),u,t.easing).animate(te.effects.clipToBox(p),u,t.easing);e()}).animate(f,u,t.easing).animate(p,u,t.easing).queue(e);te.effects.unshift(n,g,4)}),ce=te.effects.define("highlight","show",function(e,t){var n=te(this),r={backgroundColor:n.css("backgroundColor")};if(e.mode==="hide")r.opacity=0;te.effects.saveStyle(n);n.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(r,{queue:false,duration:e.duration,easing:e.easing,complete:t})}),ue=te.effects.define("size",function(i,t){var e,o,n,r=te(this),s=["fontSize"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=i.mode,u=c!=="effect",d=i.scale||"both",h=i.origin||["middle","center"],f=r.css("position"),p=r.position(),m=te.effects.scaledDimensions(r),g=i.from||m,v=i.to||te.effects.scaledDimensions(r,0);te.effects.createPlaceholder(r);if(c==="show"){n=g;g=v;v=n}o={from:{y:g.height/m.height,x:g.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}};if(d==="box"||d==="both"){if(o.from.y!==o.to.y){g=te.effects.setTransition(r,a,o.from.y,g);v=te.effects.setTransition(r,a,o.to.y,v)}if(o.from.x!==o.to.x){g=te.effects.setTransition(r,l,o.from.x,g);v=te.effects.setTransition(r,l,o.to.x,v)}}if(d==="content"||d==="both")if(o.from.y!==o.to.y){g=te.effects.setTransition(r,s,o.from.y,g);v=te.effects.setTransition(r,s,o.to.y,v)}if(h){e=te.effects.getBaseline(h,m);g.top=(m.outerHeight-g.outerHeight)*e.y+p.top;g.left=(m.outerWidth-g.outerWidth)*e.x+p.left;v.top=(m.outerHeight-v.outerHeight)*e.y+p.top;v.left=(m.outerWidth-v.outerWidth)*e.x+p.left}delete g.outerHeight;delete g.outerWidth;r.css(g);if(d==="content"||d==="both"){a=a.concat(["marginTop","marginBottom"]).concat(s);l=l.concat(["marginLeft","marginRight"]);r.find("*[width]").each(function(){var e=te(this),t=te.effects.scaledDimensions(e),n={height:t.height*o.from.y,width:t.width*o.from.x,outerHeight:t.outerHeight*o.from.y,outerWidth:t.outerWidth*o.from.x},r={height:t.height*o.to.y,width:t.width*o.to.x,outerHeight:t.height*o.to.y,outerWidth:t.width*o.to.x};if(o.from.y!==o.to.y){n=te.effects.setTransition(e,a,o.from.y,n);r=te.effects.setTransition(e,a,o.to.y,r)}if(o.from.x!==o.to.x){n=te.effects.setTransition(e,l,o.from.x,n);r=te.effects.setTransition(e,l,o.to.x,r)}if(u)te.effects.saveStyle(e);e.css(n);e.animate(r,i.duration,i.easing,function(){if(u)te.effects.restoreStyle(e)})})}r.animate(v,{queue:false,duration:i.duration,easing:i.easing,complete:function(){var e=r.offset();if(v.opacity===0)r.css("opacity",g.opacity);if(!u){r.css("position",f==="static"?"relative":f).offset(e);te.effects.saveStyle(r)}t()}})}),de=te.effects.define("scale",function(e,t){var n=te(this),r=e.mode,i=parseInt(e.percent,10)||(parseInt(e.percent,10)===0?0:r!=="effect"?0:100),o=te.extend(true,{from:te.effects.scaledDimensions(n),to:te.effects.scaledDimensions(n,i,e.direction||"both"),origin:e.origin||["middle","center"]},e);if(e.fade){o.from.opacity=1;o.to.opacity=0}te.effects.effect.size.call(this,o,t)}),he=te.effects.define("puff","hide",function(e,t){var n=te.extend(true,{},e,{fade:true,percent:parseInt(e.percent,10)||150});te.effects.effect.scale.call(this,n,t)}),fe=te.effects.define("pulsate","show",function(e,t){var n=te(this),r=e.mode,i=r==="show",o=r==="hide",s=i||o,a=(e.times||5)*2+(s?1:0),l=e.duration/a,c=0,u=1,d=n.queue().length;if(i||!n.is(":visible")){n.css("opacity",0).show();c=1}for(;u0&&i.is(":visible")}if(/^(input|select|textarea|button|object)$/.test(a)){o=!e.disabled;if(o){s=te(e).closest("fieldset")[0];if(s)o=!s.disabled}}else if("a"===a)o=e.href||t;else o=t;return o&&te(e).is(":visible")&&ve(te(e))},te.extend(te.expr.pseudos,{focusable:function(e){return te.ui.focusable(e,te.attr(e,"tabindex")!=null)}});var be=te.ui.focusable,ye=te.fn._form=function(){return typeof this[0].form==="string"?this.closest("form"):te(this[0].form)},_e=te.ui.formResetMixin={_formResetHandler:function(){var t=te(this);setTimeout(function(){var e=t.data("ui-form-reset-instances");te.each(e,function(){this.refresh()})})},_bindFormResetHandler:function(){this.form=this.element._form();if(!this.form.length)return;var e=this.form.data("ui-form-reset-instances")||[];if(!e.length)this.form.on("reset.ui-form-reset",this._formResetHandler);e.push(this);this.form.data("ui-form-reset-instances",e)},_unbindFormResetHandler:function(){if(!this.form.length)return;var e=this.form.data("ui-form-reset-instances");e.splice(te.inArray(this,e),1);if(e.length)this.form.data("ui-form-reset-instances",e);else this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}};if(!te.expr.pseudos)te.expr.pseudos=te.expr[":"];if(!te.uniqueSort)te.uniqueSort=te.unique;if(!te.escapeSelector){var we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;var xe=function(e,t){if(t){if(e==="\0")return"�";return e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" "}return"\\"+e};te.escapeSelector=function(e){return(e+"").replace(we,xe)}}if(!te.fn.even||!te.fn.odd)te.fn.extend({even:function(){return this.filter(function(e){return e%2===0})},odd:function(){return this.filter(function(e){return e%2===1})}});var Ce=te.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},ke=te.fn.labels=function(){var e,t,n,r,i;if(!this.length)return this.pushStack([]);if(this[0].labels&&this[0].labels.length)return this.pushStack(this[0].labels);r=this.eq(0).parents("label");n=this.attr("id");if(n){e=this.eq(0).parents().last();i=e.add(e.length?e.siblings():this.siblings());t="label[for='"+te.escapeSelector(n)+"']";r=r.add(i.find(t).addBack(t))}return this.pushStack(r)},Se=te.fn.scrollParent=function(e){var t=this.css("position"),n=t==="absolute",r=e?/(auto|scroll|hidden)/:/(auto|scroll)/,i=this.parents().filter(function(){var e=te(this);if(n&&e.css("position")==="static")return false;return r.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return t==="fixed"||!i.length?te(this[0].ownerDocument||document):i},De=te.extend(te.expr.pseudos,{tabbable:function(e){var t=te.attr(e,"tabindex"),n=t!=null;return(!n||t>=0)&&te.ui.focusable(e,n)}}),Te=te.fn.extend({uniqueId:function(){var e=0;return function(){return this.each(function(){if(!this.id)this.id="ui-id-"+ ++e})}}(),removeUniqueId:function(){return this.each(function(){if(/^ui-id-\d+$/.test(this.id))te(this).removeAttr("id")})}}),Oe=te.widget("ui.accordion",{version:"1.13.2",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:false,event:"click",header:function(e){return e.find("> li > :first-child").add(e.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=te();this._addClass("ui-accordion","ui-widget ui-helper-reset");this.element.attr("role","tablist");if(!e.collapsible&&(e.active===false||e.active==null))e.active=0;this._processPanels();if(e.active<0)e.active+=this.headers.length;this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:!this.active.length?te():this.active.next()}},_createIcons:function(){var e,t,n=this.options.icons;if(n){e=te("");this._addClass(e,"ui-accordion-header-icon","ui-icon "+n.header);e.prependTo(this.headers);t=this.active.children(".ui-accordion-header-icon");this._removeClass(t,n.header)._addClass(t,null,n.activeHeader)._addClass(this.headers,"ui-accordion-icons")}},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons");this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeAttr("role");this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId();this._destroyIcons();e=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId();if(this.options.heightStyle!=="content")e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="event"){if(this.options.event)this._off(this.headers,this.options.event);this._setupEvents(t)}this._super(e,t);if(e==="collapsible"&&!t&&this.options.active===false)this._activate(0);if(e==="icons"){this._destroyIcons();if(t)this._createIcons()}},_setOptionDisabled:function(e){this._super(e);this.element.attr("aria-disabled",e);this._toggleClass(null,"ui-state-disabled",!!e);this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!e)},_keydown:function(e){if(e.altKey||e.ctrlKey)return;var t=te.ui.keyCode,n=this.headers.length,r=this.headers.index(e.target),i=false;switch(e.keyCode){case t.RIGHT:case t.DOWN:i=this.headers[(r+1)%n];break;case t.LEFT:case t.UP:i=this.headers[(r-1+n)%n];break;case t.SPACE:case t.ENTER:this._eventHandler(e);break;case t.HOME:i=this.headers[0];break;case t.END:i=this.headers[n-1];break}if(i){te(e.target).attr("tabIndex",-1);te(i).attr("tabIndex",0);te(i).trigger("focus");e.preventDefault()}},_panelKeyDown:function(e){if(e.keyCode===te.ui.keyCode.UP&&e.ctrlKey)te(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels();if(e.active===false&&e.collapsible===true||!this.headers.length){e.active=false;this.active=te()}else if(e.active===false)this._activate(0);else if(this.active.length&&!te.contains(this.element[0],this.active[0]))if(this.headers.length===this.headers.find(".ui-state-disabled").length){e.active=false;this.active=te()}else this._activate(Math.max(0,e.active-1));else e.active=this.headers.index(this.active);this._destroyIcons();this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;if(typeof this.options.header==="function")this.headers=this.options.header(this.element);else this.headers=this.element.find(this.options.header);this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default");this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide();this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content");if(t){this._off(e.not(this.headers));this._off(t.not(this.panels))}},_refresh:function(){var n,e=this.options,t=e.heightStyle,r=this.element.parent();this.active=this._findActive(e.active);this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed");this._addClass(this.active.next(),"ui-accordion-content-active");this.active.next().show();this.headers.attr("role","tab").each(function(){var e=te(this),t=e.uniqueId().attr("id"),n=e.next(),r=n.uniqueId().attr("id");e.attr("aria-controls",r);n.attr("aria-labelledby",t)}).next().attr("role","tabpanel");this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide();if(!this.active.length)this.headers.eq(0).attr("tabIndex",0);else this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"});this._createIcons();this._setupEvents(e.event);if(t==="fill"){n=r.height();this.element.siblings(":visible").each(function(){var e=te(this),t=e.css("position");if(t==="absolute"||t==="fixed")return;n-=e.outerHeight(true)});this.headers.each(function(){n-=te(this).outerHeight(true)});this.headers.next().each(function(){te(this).height(Math.max(0,n-te(this).innerHeight()+te(this).height()))}).css("overflow","auto")}else if(t==="auto"){n=0;this.headers.next().each(function(){var e=te(this).is(":visible");if(!e)te(this).show();n=Math.max(n,te(this).css("height","").height());if(!e)te(this).hide()}).height(n)}},_activate:function(e){var t=this._findActive(e)[0];if(t===this.active[0])return;t=t||this.active[0];this._eventHandler({target:t,currentTarget:t,preventDefault:te.noop})},_findActive:function(e){return typeof e==="number"?this.headers.eq(e):te()},_setupEvents:function(e){var n={keydown:"_keydown"};if(e)te.each(e.split(" "),function(e,t){n[t]="_eventHandler"});this._off(this.headers.add(this.headers.next()));this._on(this.headers,n);this._on(this.headers.next(),{keydown:"_panelKeyDown"});this._hoverable(this.headers);this._focusable(this.headers)},_eventHandler:function(e){var t,n,r=this.options,i=this.active,o=te(e.currentTarget),s=o[0]===i[0],a=s&&r.collapsible,l=a?te():o.next(),c=i.next(),u={oldHeader:i,oldPanel:c,newHeader:a?te():o,newPanel:l};e.preventDefault();if(s&&!r.collapsible||this._trigger("beforeActivate",e,u)===false)return;r.active=a?false:this.headers.index(o);this.active=s?te():o;this._toggle(u);this._removeClass(i,"ui-accordion-header-active","ui-state-active");if(r.icons){t=i.children(".ui-accordion-header-icon");this._removeClass(t,null,r.icons.activeHeader)._addClass(t,null,r.icons.header)}if(!s){this._removeClass(o,"ui-accordion-header-collapsed")._addClass(o,"ui-accordion-header-active","ui-state-active");if(r.icons){n=o.children(".ui-accordion-header-icon");this._removeClass(n,null,r.icons.header)._addClass(n,null,r.icons.activeHeader)}this._addClass(o.next(),"ui-accordion-content-active")}},_toggle:function(e){var t=e.newPanel,n=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(true,true);this.prevShow=t;this.prevHide=n;if(this.options.animate)this._animate(t,n,e);else{n.hide();t.show();this._toggleComplete(e)}n.attr({"aria-hidden":"true"});n.prev().attr({"aria-selected":"false","aria-expanded":"false"});if(t.length&&n.length)n.prev().attr({tabIndex:-1,"aria-expanded":"false"});else if(t.length)this.headers.filter(function(){return parseInt(te(this).attr("tabIndex"),10)===0}).attr("tabIndex",-1);t.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,n,t){var r,i,o,s=this,a=0,l=e.css("box-sizing"),c=e.length&&(!n.length||e.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element;this.mouseHandled=false;this.lastMousePosition={x:null,y:null};this.element.uniqueId().attr({role:this.options.role,tabIndex:0});this._addClass("ui-menu","ui-widget ui-widget-content");this._on({"mousedown .ui-menu-item":function(e){e.preventDefault();this._activateItem(e)},"click .ui-menu-item":function(e){var t=te(e.target);var n=te(te.ui.safeActiveElement(this.document[0]));if(!this.mouseHandled&&t.not(".ui-state-disabled").length){this.select(e);if(!e.isPropagationStopped())this.mouseHandled=true;if(t.has(".ui-menu").length)this.expand(e);else if(!this.element.is(":focus")&&n.closest(".ui-menu").length){this.element.trigger("focus",[true]);if(this.active&&this.active.parents(".ui-menu").length===1)clearTimeout(this.timer)}}},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this._menuItems().first();if(!t)this.focus(e,n)},blur:function(t){this._delay(function(){var e=!te.contains(this.element[0],te.ui.safeActiveElement(this.document[0]));if(e)this.collapseAll(t)})},keydown:"_keydown"});this.refresh();this._on(this.document,{click:function(e){if(this._closeOnDocumentClick(e))this.collapseAll(e,true);this.mouseHandled=false}})},_activateItem:function(e){if(this.previousFilter)return;if(e.clientX===this.lastMousePosition.x&&e.clientY===this.lastMousePosition.y)return;this.lastMousePosition={x:e.clientX,y:e.clientY};var t=te(e.target).closest(".ui-menu-item"),n=te(e.currentTarget);if(t[0]!==n[0])return;if(n.is(".ui-state-active"))return;this._removeClass(n.siblings().children(".ui-state-active"),null,"ui-state-active");this.focus(e,n)},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),t=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled "+"tabIndex").removeUniqueId().show();t.children().each(function(){var e=te(this);if(e.data("ui-menu-submenu-caret"))e.remove()})},_keydown:function(e){var t,n,r,i,o=true;switch(e.keyCode){case te.ui.keyCode.PAGE_UP:this.previousPage(e);break;case te.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case te.ui.keyCode.HOME:this._move("first","first",e);break;case te.ui.keyCode.END:this._move("last","last",e);break;case te.ui.keyCode.UP:this.previous(e);break;case te.ui.keyCode.DOWN:this.next(e);break;case te.ui.keyCode.LEFT:this.collapse(e);break;case te.ui.keyCode.RIGHT:if(this.active&&!this.active.is(".ui-state-disabled"))this.expand(e);break;case te.ui.keyCode.ENTER:case te.ui.keyCode.SPACE:this._activate(e);break;case te.ui.keyCode.ESCAPE:this.collapse(e);break;default:o=false;n=this.previousFilter||"";i=false;r=e.keyCode>=96&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode);clearTimeout(this.filterTimer);if(r===n)i=true;else r=n+r;t=this._filterMenuItems(r);t=i&&t.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):t;if(!t.length){r=String.fromCharCode(e.keyCode);t=this._filterMenuItems(r)}if(t.length){this.focus(e,t);this.previousFilter=r;this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)}else delete this.previousFilter}if(o)e.preventDefault()},_activate:function(e){if(this.active&&!this.active.is(".ui-state-disabled"))if(this.active.children("[aria-haspopup='true']").length)this.expand(e);else this.select(e)},refresh:function(){var e,t,n,r,i,o=this,s=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length);n=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=te(this),t=e.prev(),n=te("").data("ui-menu-submenu-caret",true);o._addClass(n,"ui-menu-icon","ui-icon "+s);t.attr("aria-haspopup","true").prepend(n);e.attr("aria-labelledby",t.attr("id"))});this._addClass(n,"ui-menu","ui-widget ui-widget-content ui-front");e=a.add(this.element);t=e.find(this.options.items);t.not(".ui-menu-item").each(function(){var e=te(this);if(o._isDivider(e))o._addClass(e,"ui-menu-divider","ui-widget-content")});r=t.not(".ui-menu-item, .ui-menu-divider");i=r.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()});this._addClass(r,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper");t.filter(".ui-state-disabled").attr("aria-disabled","true");if(this.active&&!te.contains(this.element[0],this.active[0]))this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){if(e==="icons"){var n=this.element.find(".ui-menu-icon");this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,t.submenu)}this._super(e,t)},_setOptionDisabled:function(e){this._super(e);this.element.attr("aria-disabled",String(e));this._toggleClass(null,"ui-state-disabled",!!e)},focus:function(e,t){var n,r,i;this.blur(e,e&&e.type==="focus");this._scrollIntoView(t);this.active=t.first();r=this.active.children(".ui-menu-item-wrapper");this._addClass(r,null,"ui-state-active");if(this.options.role)this.element.attr("aria-activedescendant",r.attr("id"));i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper");this._addClass(i,null,"ui-state-active");if(e&&e.type==="keydown")this._close();else this.timer=this._delay(function(){this._close()},this.delay);n=t.children(".ui-menu");if(n.length&&e&&/^mouse/.test(e.type))this._startOpening(n);this.activeMenu=t.parent();this._trigger("focus",e,{item:t})},_scrollIntoView:function(e){var t,n,r,i,o,s;if(this._hasScroll()){t=parseFloat(te.css(this.activeMenu[0],"borderTopWidth"))||0;n=parseFloat(te.css(this.activeMenu[0],"paddingTop"))||0;r=e.offset().top-this.activeMenu.offset().top-t-n;i=this.activeMenu.scrollTop();o=this.activeMenu.height();s=e.outerHeight();if(r<0)this.activeMenu.scrollTop(i+r);else if(r+s>o)this.activeMenu.scrollTop(i+r-o+s)}},blur:function(e,t){if(!t)clearTimeout(this.timer);if(!this.active)return;this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active");this._trigger("blur",e,{item:this.active});this.active=null},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close();this._open(e)},this.delay)},_open:function(e){var t=te.extend({of:this.active},this.options.position);clearTimeout(this.timer);this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true");e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(t)},collapseAll:function(t,n){clearTimeout(this.timer);this.timer=this._delay(function(){var e=n?this.element:te(t&&t.target).closest(this.element.find(".ui-menu"));if(!e.length)e=this.element;this._close(e);this.blur(t);this._removeClass(e.find(".ui-state-active"),null,"ui-state-active");this.activeMenu=e},n?0:this.delay)},_close:function(e){if(!e)e=this.active?this.active.parent():this.element;e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!te(e.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);if(t&&t.length){this._close();this.focus(e,t)}},expand:function(e){var t=this.active&&this._menuItems(this.active.children(".ui-menu")).first();if(t&&t.length){this._open(t.parent());this._delay(function(){this.focus(e,t)})}},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(e){return(e||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(e,t,n){var r;if(this.active)if(e==="first"||e==="last")r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").last();else r=this.active[e+"All"](".ui-menu-item").first();if(!r||!r.length||!this.active)r=this._menuItems(this.activeMenu)[t]();this.focus(n,r)},nextPage:function(e){var t,n,r;if(!this.active){this.next(e);return}if(this.isLastItem())return;if(this._hasScroll()){n=this.active.offset().top;r=this.element.innerHeight();if(te.fn.jquery.indexOf("3.2.")===0)r+=this.element[0].offsetHeight-this.element.outerHeight();this.active.nextAll(".ui-menu-item").each(function(){t=te(this);return t.offset().top-n-r<0});this.focus(e,t)}else this.focus(e,this._menuItems(this.activeMenu)[!this.active?"first":"last"]())},previousPage:function(e){var t,n,r;if(!this.active){this.next(e);return}if(this.isFirstItem())return;if(this._hasScroll()){n=this.active.offset().top;r=this.element.innerHeight();if(te.fn.jquery.indexOf("3.2.")===0)r+=this.element[0].offsetHeight-this.element.outerHeight();this.active.prevAll(".ui-menu-item").each(function(){t=te(this);return t.offset().top-n+r>0});this.focus(e,t)}else this.focus(e,this._menuItems(this.activeMenu).first())},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var n,r,i,e=this.element[0].nodeName.toLowerCase(),t=e==="textarea",o=e==="input";this.isMultiLine=t||!o&&this._isContentEditable(this.element);this.valueMethod=this.element[t||o?"val":"text"];this.isNewMenu=true;this._addClass("ui-autocomplete-input");this.element.attr("autocomplete","off");this._on(this.element,{keydown:function(e){if(this.element.prop("readOnly")){n=true;i=true;r=true;return}n=false;i=false;r=false;var t=te.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:n=true;this._move("previousPage",e);break;case t.PAGE_DOWN:n=true;this._move("nextPage",e);break;case t.UP:n=true;this._keyEvent("previous",e);break;case t.DOWN:n=true;this._keyEvent("next",e);break;case t.ENTER:if(this.menu.active){n=true;e.preventDefault();this.menu.select(e)}break;case t.TAB:if(this.menu.active)this.menu.select(e);break;case t.ESCAPE:if(this.menu.element.is(":visible")){if(!this.isMultiLine)this._value(this.term);this.close(e);e.preventDefault()}break;default:r=true;this._searchTimeout(e);break}},keypress:function(e){if(n){n=false;if(!this.isMultiLine||this.menu.element.is(":visible"))e.preventDefault();return}if(r)return;var t=te.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:this._move("previousPage",e);break;case t.PAGE_DOWN:this._move("nextPage",e);break;case t.UP:this._keyEvent("previous",e);break;case t.DOWN:this._keyEvent("next",e);break}},input:function(e){if(i){i=false;e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null;this.previous=this._value()},blur:function(e){clearTimeout(this.searching);this.close(e);this._change(e)}});this._initSource();this.menu=te("