From e23e7809914c448908da70a2007502ef5f059e35 Mon Sep 17 00:00:00 2001 From: LeandroJatai Date: Tue, 5 Aug 2025 12:20:37 -0300 Subject: [PATCH 01/57] =?UTF-8?q?hot-feat:=20add=20assinatura=20avan=C3=A7?= =?UTF-8?q?ada=201doc=20no=20alg=20de=20captura=20de=20ass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/receivers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sapl/base/receivers.py b/sapl/base/receivers.py index 595323197..f0e5365c6 100644 --- a/sapl/base/receivers.py +++ b/sapl/base/receivers.py @@ -225,7 +225,7 @@ def signed_files_extraction_function(sender, instance, **kwargs): issuer = cert.native['tbs_certificate']['issuer'] oname = issuer.get('organization_name', '') - if oname == 'Gov-Br': + if oname in ('Gov-Br', '1Doc'): nome = subject['common_name'].split(':')[0] continue @@ -336,7 +336,7 @@ def signed_files_extraction_function(sender, instance, **kwargs): issuer = cert.native['tbs_certificate']['issuer'] oname = issuer.get('organization_name', '') - if oname == 'Gov-Br': + if oname in ('Gov-Br', '1Doc'): nome = subject['common_name'].split(':')[0] continue From 0af03caa7a6bd80987bb22faca4e358ebf652aca Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Tue, 5 Aug 2025 13:00:34 -0600 Subject: [PATCH 02/57] Release: 3.1.164-RC1 --- CHANGES.md | 8 ++++++++ docker/docker-compose.yaml | 2 +- sapl/settings.py | 2 +- sapl/templates/base.html | 2 +- setup.py | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 2c103d882..3871796bb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,12 @@ +3.1.164-RC1 / 2025-08-05 +======================== + + * Adiciona botoes de impressao na pesquisa de doc adm + * Fix: conserta erro em historico proposicao + * Desabilita detalhe de Justificativa Ausência para acesso público + * Adiciona homepage do parlamentar a perfil público + 3.1.164-RC0 / 2025-07-09 ======================== diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 436f5e588..b1832a241 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -31,7 +31,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC0 + image: interlegis/sapl:3.1.164-RC1 # build: # context: ../ # dockerfile: ./docker/Dockerfile diff --git a/sapl/settings.py b/sapl/settings.py index 881691cb3..9b7fa3c55 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -41,7 +41,7 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.164-RC0' +SAPL_VERSION = '3.1.164-RC1' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 060d92978..ec04b7742 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -200,7 +200,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - Release: 3.1.164-RC0 + Release: 3.1.164-RC1

diff --git a/setup.py b/setup.py index b84ce4f14..401ea19d1 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ install_requires = [ ] setup( name='interlegis-sapl', - version='3.1.164-RC0', + version='3.1.164-RC1', packages=find_packages(), include_package_data=True, license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007', From b42d338020dde04f70508b7c0c1fba8da000afbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeandroJata=C3=AD?= Date: Wed, 20 Aug 2025 16:55:41 -0300 Subject: [PATCH 03/57] Remove btn libras de media print (#3777) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove btn libras de impressões * rebuild frontend * retorna load script pra dentro de if not debug --- .../src/__global/scss/layouts/_globals.scss | 3 + frontend/webpack-stats.json | 490 +++++++++--------- .../css/chunk-vendors.045ec640.css.gz | Bin 60853 -> 60853 bytes .../frontend/css/compilacao.0baf3580.css.gz | Bin 10310 -> 10310 bytes ...lobal.45591136.css => global.042f6737.css} | 2 +- ...45591136.css.gz => global.042f6737.css.gz} | Bin 27790 -> 27801 bytes .../sapl/frontend/css/painel.e2b9504e.css.gz | Bin 288 -> 288 bytes .../fonts/fa-brands-400.5d18d427.ttf.gz | Bin 121928 -> 121928 bytes .../fonts/fa-regular-400.81482cd4.ttf.gz | Bin 26886 -> 26886 bytes .../fonts/fa-solid-900.69d3141a.ttf.gz | Bin 171462 -> 171462 bytes .../fonts/fa-v4compatibility.2c070fd2.ttf.gz | Bin 5131 -> 5131 bytes .../frontend/img/down_arrow_select.jpg.gz | Bin 484 -> 484 bytes .../chunk-vendors.e8ab4373.js.LICENSE.txt.gz | Bin 1743 -> 1743 bytes .../frontend/js/chunk-vendors.e8ab4373.js.gz | Bin 670677 -> 670677 bytes ...cao.d3adb1c1.js => compilacao.148cb66b.js} | 0 ...adb1c1.js.gz => compilacao.148cb66b.js.gz} | Bin 6820 -> 6820 bytes .../sapl/frontend/js/global.8ef6e932.js.gz | Bin 14144 -> 0 bytes ...{global.8ef6e932.js => global.bb3e904b.js} | 2 +- ...NSE.txt => global.bb3e904b.js.LICENSE.txt} | 0 .../sapl/frontend/js/global.bb3e904b.js.gz | Bin 0 -> 14144 bytes ...{painel.73a4fb17.js => painel.f3190acc.js} | 0 ...l.73a4fb17.js.gz => painel.f3190acc.js.gz} | Bin 872 -> 872 bytes ...ar.f0710dca.js => parlamentar.a1a4b65b.js} | 0 ...10dca.js.gz => parlamentar.a1a4b65b.js.gz} | Bin 1614 -> 1614 bytes .../js/skins/content/dark/content.css.gz | Bin 489 -> 489 bytes .../js/skins/content/dark/content.js.gz | Bin 531 -> 531 bytes .../js/skins/content/dark/content.min.css.gz | Bin 489 -> 489 bytes .../js/skins/content/default/content.css.gz | Bin 460 -> 460 bytes .../js/skins/content/default/content.js.gz | Bin 505 -> 505 bytes .../skins/content/default/content.min.css.gz | Bin 460 -> 460 bytes .../js/skins/content/document/content.css.gz | Bin 526 -> 526 bytes .../js/skins/content/document/content.js.gz | Bin 571 -> 571 bytes .../skins/content/document/content.min.css.gz | Bin 526 -> 526 bytes .../content/tinymce-5-dark/content.css.gz | Bin 492 -> 492 bytes .../content/tinymce-5-dark/content.js.gz | Bin 539 -> 539 bytes .../content/tinymce-5-dark/content.min.css.gz | Bin 492 -> 492 bytes .../js/skins/content/tinymce-5/content.css.gz | Bin 460 -> 460 bytes .../js/skins/content/tinymce-5/content.js.gz | Bin 504 -> 504 bytes .../content/tinymce-5/content.min.css.gz | Bin 460 -> 460 bytes .../js/skins/content/writer/content.css.gz | Bin 473 -> 473 bytes .../js/skins/content/writer/content.js.gz | Bin 517 -> 517 bytes .../skins/content/writer/content.min.css.gz | Bin 473 -> 473 bytes .../js/skins/ui/oxide-dark/content.css.gz | Bin 5234 -> 5234 bytes .../skins/ui/oxide-dark/content.inline.css.gz | Bin 5267 -> 5267 bytes .../skins/ui/oxide-dark/content.inline.js.gz | Bin 5815 -> 5815 bytes .../ui/oxide-dark/content.inline.min.css.gz | Bin 5269 -> 5269 bytes .../js/skins/ui/oxide-dark/content.js.gz | Bin 5779 -> 5779 bytes .../js/skins/ui/oxide-dark/content.min.css.gz | Bin 5237 -> 5237 bytes .../js/skins/ui/oxide-dark/skin.css.gz | Bin 13227 -> 13227 bytes .../js/skins/ui/oxide-dark/skin.js.gz | Bin 13312 -> 13312 bytes .../js/skins/ui/oxide-dark/skin.min.css.gz | Bin 13202 -> 13202 bytes .../skins/ui/oxide-dark/skin.shadowdom.css.gz | Bin 264 -> 264 bytes .../skins/ui/oxide-dark/skin.shadowdom.js.gz | Bin 304 -> 304 bytes .../ui/oxide-dark/skin.shadowdom.min.css.gz | Bin 264 -> 264 bytes .../frontend/js/skins/ui/oxide/content.css.gz | Bin 5287 -> 5287 bytes .../js/skins/ui/oxide/content.inline.css.gz | Bin 5267 -> 5267 bytes .../js/skins/ui/oxide/content.inline.js.gz | Bin 5814 -> 5814 bytes .../skins/ui/oxide/content.inline.min.css.gz | Bin 5269 -> 5269 bytes .../frontend/js/skins/ui/oxide/content.js.gz | Bin 5830 -> 5830 bytes .../js/skins/ui/oxide/content.min.css.gz | Bin 5290 -> 5290 bytes .../frontend/js/skins/ui/oxide/skin.css.gz | Bin 13235 -> 13235 bytes .../frontend/js/skins/ui/oxide/skin.js.gz | Bin 13302 -> 13302 bytes .../js/skins/ui/oxide/skin.min.css.gz | Bin 13217 -> 13217 bytes .../js/skins/ui/oxide/skin.shadowdom.css.gz | Bin 264 -> 264 bytes .../js/skins/ui/oxide/skin.shadowdom.js.gz | Bin 306 -> 306 bytes .../skins/ui/oxide/skin.shadowdom.min.css.gz | Bin 264 -> 264 bytes .../js/skins/ui/tinymce-5-dark/content.css.gz | Bin 5234 -> 5234 bytes .../ui/tinymce-5-dark/content.inline.css.gz | Bin 5267 -> 5267 bytes .../ui/tinymce-5-dark/content.inline.js.gz | Bin 5818 -> 5818 bytes .../tinymce-5-dark/content.inline.min.css.gz | Bin 5269 -> 5269 bytes .../js/skins/ui/tinymce-5-dark/content.js.gz | Bin 5783 -> 5783 bytes .../ui/tinymce-5-dark/content.min.css.gz | Bin 5237 -> 5237 bytes .../js/skins/ui/tinymce-5-dark/skin.css.gz | Bin 13752 -> 13752 bytes .../js/skins/ui/tinymce-5-dark/skin.js.gz | Bin 13866 -> 13866 bytes .../skins/ui/tinymce-5-dark/skin.min.css.gz | Bin 13732 -> 13732 bytes .../ui/tinymce-5-dark/skin.shadowdom.css.gz | Bin 264 -> 264 bytes .../ui/tinymce-5-dark/skin.shadowdom.js.gz | Bin 309 -> 309 bytes .../tinymce-5-dark/skin.shadowdom.min.css.gz | Bin 264 -> 264 bytes .../js/skins/ui/tinymce-5/content.css.gz | Bin 5287 -> 5287 bytes .../skins/ui/tinymce-5/content.inline.css.gz | Bin 5267 -> 5267 bytes .../skins/ui/tinymce-5/content.inline.js.gz | Bin 5814 -> 5814 bytes .../ui/tinymce-5/content.inline.min.css.gz | Bin 5269 -> 5269 bytes .../js/skins/ui/tinymce-5/content.js.gz | Bin 5830 -> 5830 bytes .../js/skins/ui/tinymce-5/content.min.css.gz | Bin 5290 -> 5290 bytes .../js/skins/ui/tinymce-5/skin.css.gz | Bin 13740 -> 13740 bytes .../frontend/js/skins/ui/tinymce-5/skin.js.gz | Bin 13842 -> 13842 bytes .../js/skins/ui/tinymce-5/skin.min.css.gz | Bin 13717 -> 13717 bytes .../skins/ui/tinymce-5/skin.shadowdom.css.gz | Bin 264 -> 264 bytes .../skins/ui/tinymce-5/skin.shadowdom.js.gz | Bin 306 -> 306 bytes .../ui/tinymce-5/skin.shadowdom.min.css.gz | Bin 264 -> 264 bytes sapl/templates/base.html | 2 +- 91 files changed, 251 insertions(+), 248 deletions(-) rename sapl/static/sapl/frontend/css/{global.45591136.css => global.042f6737.css} (97%) rename sapl/static/sapl/frontend/css/{global.45591136.css.gz => global.042f6737.css.gz} (95%) rename sapl/static/sapl/frontend/js/{compilacao.d3adb1c1.js => compilacao.148cb66b.js} (100%) rename sapl/static/sapl/frontend/js/{compilacao.d3adb1c1.js.gz => compilacao.148cb66b.js.gz} (98%) delete mode 100644 sapl/static/sapl/frontend/js/global.8ef6e932.js.gz rename sapl/static/sapl/frontend/js/{global.8ef6e932.js => global.bb3e904b.js} (99%) rename sapl/static/sapl/frontend/js/{global.8ef6e932.js.LICENSE.txt => global.bb3e904b.js.LICENSE.txt} (100%) create mode 100644 sapl/static/sapl/frontend/js/global.bb3e904b.js.gz rename sapl/static/sapl/frontend/js/{painel.73a4fb17.js => painel.f3190acc.js} (100%) rename sapl/static/sapl/frontend/js/{painel.73a4fb17.js.gz => painel.f3190acc.js.gz} (87%) rename sapl/static/sapl/frontend/js/{parlamentar.f0710dca.js => parlamentar.a1a4b65b.js} (100%) rename sapl/static/sapl/frontend/js/{parlamentar.f0710dca.js.gz => parlamentar.a1a4b65b.js.gz} (93%) diff --git a/frontend/src/__global/scss/layouts/_globals.scss b/frontend/src/__global/scss/layouts/_globals.scss index bc89c2f65..3cb9c6f82 100644 --- a/frontend/src/__global/scss/layouts/_globals.scss +++ b/frontend/src/__global/scss/layouts/_globals.scss @@ -187,4 +187,7 @@ small { a[href]:after { content: none !important; } + .btn-vlibras { + display: none !important; + } } diff --git a/frontend/webpack-stats.json b/frontend/webpack-stats.json index d5f5209bc..6d71f74a0 100644 --- a/frontend/webpack-stats.json +++ b/frontend/webpack-stats.json @@ -3,997 +3,997 @@ "assets": { "audio/ring.mp3": { "name": "audio/ring.mp3", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/audio/ring.mp3", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/audio/ring.mp3", "publicPath": "/static/sapl/frontend/audio/ring.mp3" }, "css/chunk-vendors.045ec640.css": { "name": "css/chunk-vendors.045ec640.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css", "publicPath": "/static/sapl/frontend/css/chunk-vendors.045ec640.css" }, "css/chunk-vendors.045ec640.css.gz": { "name": "css/chunk-vendors.045ec640.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css.gz", "publicPath": "/static/sapl/frontend/css/chunk-vendors.045ec640.css.gz" }, "css/compilacao.0baf3580.css": { "name": "css/compilacao.0baf3580.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css", "publicPath": "/static/sapl/frontend/css/compilacao.0baf3580.css" }, "css/compilacao.0baf3580.css.gz": { "name": "css/compilacao.0baf3580.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz", "publicPath": "/static/sapl/frontend/css/compilacao.0baf3580.css.gz" }, - "css/global.45591136.css": { - "name": "css/global.45591136.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/global.45591136.css", - "publicPath": "/static/sapl/frontend/css/global.45591136.css" + "css/global.042f6737.css": { + "name": "css/global.042f6737.css", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/global.042f6737.css", + "publicPath": "/static/sapl/frontend/css/global.042f6737.css" }, - "css/global.45591136.css.gz": { - "name": "css/global.45591136.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/global.45591136.css.gz", - "publicPath": "/static/sapl/frontend/css/global.45591136.css.gz" + "css/global.042f6737.css.gz": { + "name": "css/global.042f6737.css.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/global.042f6737.css.gz", + "publicPath": "/static/sapl/frontend/css/global.042f6737.css.gz" }, "css/painel.e2b9504e.css": { "name": "css/painel.e2b9504e.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css", "publicPath": "/static/sapl/frontend/css/painel.e2b9504e.css" }, "css/painel.e2b9504e.css.gz": { "name": "css/painel.e2b9504e.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz", "publicPath": "/static/sapl/frontend/css/painel.e2b9504e.css.gz" }, "css/parlamentar.cd5dc5a8.css": { "name": "css/parlamentar.cd5dc5a8.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/css/parlamentar.cd5dc5a8.css", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/css/parlamentar.cd5dc5a8.css", "publicPath": "/static/sapl/frontend/css/parlamentar.cd5dc5a8.css" }, "fonts/fa-brands-400.5d18d427.ttf": { "name": "fonts/fa-brands-400.5d18d427.ttf", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf", "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf" }, "fonts/fa-brands-400.5d18d427.ttf.gz": { "name": "fonts/fa-brands-400.5d18d427.ttf.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf.gz", "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf.gz" }, "fonts/fa-brands-400.87587a68.woff2": { "name": "fonts/fa-brands-400.87587a68.woff2", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.87587a68.woff2", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-brands-400.87587a68.woff2", "publicPath": "/static/sapl/frontend/fonts/fa-brands-400.87587a68.woff2" }, "fonts/fa-regular-400.3ccdbd3d.woff2": { "name": "fonts/fa-regular-400.3ccdbd3d.woff2", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.3ccdbd3d.woff2", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.3ccdbd3d.woff2", "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.3ccdbd3d.woff2" }, "fonts/fa-regular-400.81482cd4.ttf": { "name": "fonts/fa-regular-400.81482cd4.ttf", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf", "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf" }, "fonts/fa-regular-400.81482cd4.ttf.gz": { "name": "fonts/fa-regular-400.81482cd4.ttf.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf.gz", "publicPath": "/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf.gz" }, "fonts/fa-solid-900.0b0cc8a6.woff2": { "name": "fonts/fa-solid-900.0b0cc8a6.woff2", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.0b0cc8a6.woff2", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.0b0cc8a6.woff2", "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.0b0cc8a6.woff2" }, "fonts/fa-solid-900.69d3141a.ttf": { "name": "fonts/fa-solid-900.69d3141a.ttf", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf", "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf" }, "fonts/fa-solid-900.69d3141a.ttf.gz": { "name": "fonts/fa-solid-900.69d3141a.ttf.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf.gz", "publicPath": "/static/sapl/frontend/fonts/fa-solid-900.69d3141a.ttf.gz" }, "fonts/fa-v4compatibility.2c070fd2.ttf": { "name": "fonts/fa-v4compatibility.2c070fd2.ttf", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf", "publicPath": "/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf" }, "fonts/fa-v4compatibility.2c070fd2.ttf.gz": { "name": "fonts/fa-v4compatibility.2c070fd2.ttf.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf.gz", "publicPath": "/static/sapl/frontend/fonts/fa-v4compatibility.2c070fd2.ttf.gz" }, "img/arrow.png": { "name": "img/arrow.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/arrow.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/authenticated.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/avatar.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/beta.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/bg.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/brasao_transp.gif", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg", "publicPath": "/static/sapl/frontend/img/down_arrow_select.jpg" }, "img/down_arrow_select.jpg.gz": { "name": "img/down_arrow_select.jpg.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/down_arrow_select.jpg.gz", "publicPath": "/static/sapl/frontend/img/down_arrow_select.jpg.gz" }, "img/etiqueta.png": { "name": "img/etiqueta.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/etiqueta.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/favicon.ico", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/file.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/hand-note.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_comissoes.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_delete_white.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_materia_legislativa.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_mesa_diretora.png", + "path": "/home/leandrojatai/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_destaque.png": { "name": "img/icon_normas_juridicas_destaque.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_normas_juridicas_destaque.png", + "path": "/home/leandrojatai/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_normas_juridicas.png": { "name": "img/icon_normas_juridicas.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_normas_juridicas.png", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/icon_normas_juridicas.png", "publicPath": "/static/sapl/frontend/img/icon_normas_juridicas.png" }, "img/icon_parlamentares.png": { "name": "img/icon_parlamentares.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_parlamentares.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_pautas.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_plenarias.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_relatorios.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/icon_save_white.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/lexml.gif", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/lexml.gif", "publicPath": "/static/sapl/frontend/img/lexml.gif" }, "img/logo_cc.png": { "name": "img/logo_cc.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/logo_cc.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/logo_interlegis.png", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/logo_interlegis.png", "publicPath": "/static/sapl/frontend/img/logo_interlegis.png" }, "img/logo.png": { "name": "img/logo.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/logo.png", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/logo.png", "publicPath": "/static/sapl/frontend/img/logo.png" }, "img/manual.png": { "name": "img/manual.png", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/manual.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/pdflogo.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/perfil.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/search-gray.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/search.png", + "path": "/home/leandrojatai/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": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/img/user.png", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/img/user.png", "publicPath": "/static/sapl/frontend/img/user.png" }, "js/chunk-vendors.e8ab4373.js": { "name": "js/chunk-vendors.e8ab4373.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js", "publicPath": "/static/sapl/frontend/js/chunk-vendors.e8ab4373.js" }, "js/chunk-vendors.e8ab4373.js.gz": { "name": "js/chunk-vendors.e8ab4373.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.gz", "publicPath": "/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.gz" }, "js/chunk-vendors.e8ab4373.js.LICENSE.txt": { "name": "js/chunk-vendors.e8ab4373.js.LICENSE.txt", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt", "publicPath": "/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt" }, "js/chunk-vendors.e8ab4373.js.LICENSE.txt.gz": { "name": "js/chunk-vendors.e8ab4373.js.LICENSE.txt.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt.gz", "publicPath": "/static/sapl/frontend/js/chunk-vendors.e8ab4373.js.LICENSE.txt.gz" }, - "js/compilacao.d3adb1c1.js": { - "name": "js/compilacao.d3adb1c1.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js", - "publicPath": "/static/sapl/frontend/js/compilacao.d3adb1c1.js" - }, - "js/compilacao.d3adb1c1.js.gz": { - "name": "js/compilacao.d3adb1c1.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js.gz", - "publicPath": "/static/sapl/frontend/js/compilacao.d3adb1c1.js.gz" - }, - "js/global.8ef6e932.js": { - "name": "js/global.8ef6e932.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/global.8ef6e932.js", - "publicPath": "/static/sapl/frontend/js/global.8ef6e932.js" - }, - "js/global.8ef6e932.js.gz": { - "name": "js/global.8ef6e932.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/global.8ef6e932.js.gz", - "publicPath": "/static/sapl/frontend/js/global.8ef6e932.js.gz" - }, - "js/global.8ef6e932.js.LICENSE.txt": { - "name": "js/global.8ef6e932.js.LICENSE.txt", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/global.8ef6e932.js.LICENSE.txt", - "publicPath": "/static/sapl/frontend/js/global.8ef6e932.js.LICENSE.txt" - }, - "js/painel.73a4fb17.js": { - "name": "js/painel.73a4fb17.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/painel.73a4fb17.js", - "publicPath": "/static/sapl/frontend/js/painel.73a4fb17.js" - }, - "js/painel.73a4fb17.js.gz": { - "name": "js/painel.73a4fb17.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/painel.73a4fb17.js.gz", - "publicPath": "/static/sapl/frontend/js/painel.73a4fb17.js.gz" - }, - "js/parlamentar.f0710dca.js": { - "name": "js/parlamentar.f0710dca.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/parlamentar.f0710dca.js", - "publicPath": "/static/sapl/frontend/js/parlamentar.f0710dca.js" - }, - "js/parlamentar.f0710dca.js.gz": { - "name": "js/parlamentar.f0710dca.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/parlamentar.f0710dca.js.gz", - "publicPath": "/static/sapl/frontend/js/parlamentar.f0710dca.js.gz" + "js/compilacao.148cb66b.js": { + "name": "js/compilacao.148cb66b.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/compilacao.148cb66b.js", + "publicPath": "/static/sapl/frontend/js/compilacao.148cb66b.js" + }, + "js/compilacao.148cb66b.js.gz": { + "name": "js/compilacao.148cb66b.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/compilacao.148cb66b.js.gz", + "publicPath": "/static/sapl/frontend/js/compilacao.148cb66b.js.gz" + }, + "js/global.bb3e904b.js": { + "name": "js/global.bb3e904b.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.bb3e904b.js", + "publicPath": "/static/sapl/frontend/js/global.bb3e904b.js" + }, + "js/global.bb3e904b.js.gz": { + "name": "js/global.bb3e904b.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.bb3e904b.js.gz", + "publicPath": "/static/sapl/frontend/js/global.bb3e904b.js.gz" + }, + "js/global.bb3e904b.js.LICENSE.txt": { + "name": "js/global.bb3e904b.js.LICENSE.txt", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/global.bb3e904b.js.LICENSE.txt", + "publicPath": "/static/sapl/frontend/js/global.bb3e904b.js.LICENSE.txt" + }, + "js/painel.f3190acc.js": { + "name": "js/painel.f3190acc.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/painel.f3190acc.js", + "publicPath": "/static/sapl/frontend/js/painel.f3190acc.js" + }, + "js/painel.f3190acc.js.gz": { + "name": "js/painel.f3190acc.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/painel.f3190acc.js.gz", + "publicPath": "/static/sapl/frontend/js/painel.f3190acc.js.gz" + }, + "js/parlamentar.a1a4b65b.js": { + "name": "js/parlamentar.a1a4b65b.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js", + "publicPath": "/static/sapl/frontend/js/parlamentar.a1a4b65b.js" + }, + "js/parlamentar.a1a4b65b.js.gz": { + "name": "js/parlamentar.a1a4b65b.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js.gz", + "publicPath": "/static/sapl/frontend/js/parlamentar.a1a4b65b.js.gz" }, "js/skins/content/dark/content.css": { "name": "js/skins/content/dark/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/dark/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/dark/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.js" }, "js/skins/content/dark/content.js.gz": { "name": "js/skins/content/dark/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/dark/content.js.gz" }, "js/skins/content/dark/content.min.css": { "name": "js/skins/content/dark/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css", + "path": "/home/leandrojatai/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/dark/content.min.css.gz": { "name": "js/skins/content/dark/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css.gz", + "path": "/home/leandrojatai/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": { "name": "js/skins/content/default/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/default/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/default/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/default/content.js" }, "js/skins/content/default/content.js.gz": { "name": "js/skins/content/default/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/default/content.js.gz" }, "js/skins/content/default/content.min.css": { "name": "js/skins/content/default/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.min.css", + "path": "/home/leandrojatai/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/default/content.min.css.gz": { "name": "js/skins/content/default/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/default/content.min.css.gz", + "path": "/home/leandrojatai/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": { "name": "js/skins/content/document/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/document/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/document/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/document/content.js" }, "js/skins/content/document/content.js.gz": { "name": "js/skins/content/document/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/document/content.js.gz" }, "js/skins/content/document/content.min.css": { "name": "js/skins/content/document/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.min.css", + "path": "/home/leandrojatai/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/document/content.min.css.gz": { "name": "js/skins/content/document/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/document/content.min.css.gz", + "path": "/home/leandrojatai/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-dark/content.css": { "name": "js/skins/content/tinymce-5-dark/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/tinymce-5-dark/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/tinymce-5-dark/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js" }, "js/skins/content/tinymce-5-dark/content.js.gz": { "name": "js/skins/content/tinymce-5-dark/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js.gz" }, "js/skins/content/tinymce-5-dark/content.min.css": { "name": "js/skins/content/tinymce-5-dark/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css", + "path": "/home/leandrojatai/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/tinymce-5-dark/content.min.css.gz": { "name": "js/skins/content/tinymce-5-dark/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.min.css.gz", + "path": "/home/leandrojatai/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/tinymce-5/content.css": { "name": "js/skins/content/tinymce-5/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/tinymce-5/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/tinymce-5/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.js" }, "js/skins/content/tinymce-5/content.js.gz": { "name": "js/skins/content/tinymce-5/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/tinymce-5/content.js.gz" }, "js/skins/content/tinymce-5/content.min.css": { "name": "js/skins/content/tinymce-5/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css", + "path": "/home/leandrojatai/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/content.min.css.gz": { "name": "js/skins/content/tinymce-5/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css.gz", + "path": "/home/leandrojatai/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/writer/content.css": { "name": "js/skins/content/writer/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/content/writer/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/content/writer/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.js", "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.js" }, "js/skins/content/writer/content.js.gz": { "name": "js/skins/content/writer/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/content/writer/content.js.gz" }, "js/skins/content/writer/content.min.css": { "name": "js/skins/content/writer/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css", + "path": "/home/leandrojatai/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/content/writer/content.min.css.gz": { "name": "js/skins/content/writer/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css.gz", + "path": "/home/leandrojatai/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-dark/content.css": { "name": "js/skins/ui/oxide-dark/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide-dark/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css.gz", + "path": "/home/leandrojatai/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": { "name": "js/skins/ui/oxide-dark/content.inline.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide-dark/content.inline.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide-dark/content.inline.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js" }, "js/skins/ui/oxide-dark/content.inline.js.gz": { "name": "js/skins/ui/oxide-dark/content.inline.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js.gz" }, "js/skins/ui/oxide-dark/content.inline.min.css": { "name": "js/skins/ui/oxide-dark/content.inline.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css", + "path": "/home/leandrojatai/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.inline.min.css.gz": { "name": "js/skins/ui/oxide-dark/content.inline.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide-dark/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.js" }, "js/skins/ui/oxide-dark/content.js.gz": { "name": "js/skins/ui/oxide-dark/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/content.js.gz" }, "js/skins/ui/oxide-dark/content.min.css": { "name": "js/skins/ui/oxide-dark/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css", + "path": "/home/leandrojatai/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/content.min.css.gz": { "name": "js/skins/ui/oxide-dark/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css.gz", + "path": "/home/leandrojatai/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-dark/skin.css": { "name": "js/skins/ui/oxide-dark/skin.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide-dark/skin.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide-dark/skin.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js" }, "js/skins/ui/oxide-dark/skin.js.gz": { "name": "js/skins/ui/oxide-dark/skin.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js.gz" }, "js/skins/ui/oxide-dark/skin.min.css": { "name": "js/skins/ui/oxide-dark/skin.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css", + "path": "/home/leandrojatai/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.min.css.gz": { "name": "js/skins/ui/oxide-dark/skin.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css.gz", + "path": "/home/leandrojatai/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/oxide-dark/skin.shadowdom.css": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js" }, "js/skins/ui/oxide-dark/skin.shadowdom.js.gz": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js.gz" }, "js/skins/ui/oxide-dark/skin.shadowdom.min.css": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css", + "path": "/home/leandrojatai/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/oxide-dark/skin.shadowdom.min.css.gz": { "name": "js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz", + "path": "/home/leandrojatai/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/content.css": { "name": "js/skins/ui/oxide/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css.gz", + "path": "/home/leandrojatai/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/oxide/content.inline.css": { "name": "js/skins/ui/oxide/content.inline.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide/content.inline.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide/content.inline.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.js" }, "js/skins/ui/oxide/content.inline.js.gz": { "name": "js/skins/ui/oxide/content.inline.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.inline.js.gz" }, "js/skins/ui/oxide/content.inline.min.css": { "name": "js/skins/ui/oxide/content.inline.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css", + "path": "/home/leandrojatai/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.inline.min.css.gz": { "name": "js/skins/ui/oxide/content.inline.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.js" }, "js/skins/ui/oxide/content.js.gz": { "name": "js/skins/ui/oxide/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/content.js.gz" }, "js/skins/ui/oxide/content.min.css": { "name": "js/skins/ui/oxide/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css", + "path": "/home/leandrojatai/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/content.min.css.gz": { "name": "js/skins/ui/oxide/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css.gz", + "path": "/home/leandrojatai/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.css": { "name": "js/skins/ui/oxide/skin.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide/skin.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css.gz", + "path": "/home/leandrojatai/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/skin.js": { "name": "js/skins/ui/oxide/skin.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.js" }, "js/skins/ui/oxide/skin.js.gz": { "name": "js/skins/ui/oxide/skin.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.js.gz" }, "js/skins/ui/oxide/skin.min.css": { "name": "js/skins/ui/oxide/skin.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.min.css", + "path": "/home/leandrojatai/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.min.css.gz": { "name": "js/skins/ui/oxide/skin.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.min.css.gz", + "path": "/home/leandrojatai/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/oxide/skin.shadowdom.css": { "name": "js/skins/ui/oxide/skin.shadowdom.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/oxide/skin.shadowdom.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/oxide/skin.shadowdom.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js" }, "js/skins/ui/oxide/skin.shadowdom.js.gz": { "name": "js/skins/ui/oxide/skin.shadowdom.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js.gz" }, "js/skins/ui/oxide/skin.shadowdom.min.css": { "name": "js/skins/ui/oxide/skin.shadowdom.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css", + "path": "/home/leandrojatai/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/skin.shadowdom.min.css.gz": { "name": "js/skins/ui/oxide/skin.shadowdom.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css.gz", + "path": "/home/leandrojatai/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/tinymce-5-dark/content.css": { "name": "js/skins/ui/tinymce-5-dark/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5-dark/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css.gz", + "path": "/home/leandrojatai/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": { "name": "js/skins/ui/tinymce-5-dark/content.inline.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5-dark/content.inline.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5-dark/content.inline.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js" }, "js/skins/ui/tinymce-5-dark/content.inline.js.gz": { "name": "js/skins/ui/tinymce-5-dark/content.inline.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js.gz" }, "js/skins/ui/tinymce-5-dark/content.inline.min.css": { "name": "js/skins/ui/tinymce-5-dark/content.inline.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css", + "path": "/home/leandrojatai/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.inline.min.css.gz": { "name": "js/skins/ui/tinymce-5-dark/content.inline.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css.gz", + "path": "/home/leandrojatai/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/tinymce-5-dark/content.js": { "name": "js/skins/ui/tinymce-5-dark/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js" }, "js/skins/ui/tinymce-5-dark/content.js.gz": { "name": "js/skins/ui/tinymce-5-dark/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js.gz" }, "js/skins/ui/tinymce-5-dark/content.min.css": { "name": "js/skins/ui/tinymce-5-dark/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css", + "path": "/home/leandrojatai/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/content.min.css.gz": { "name": "js/skins/ui/tinymce-5-dark/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css.gz", + "path": "/home/leandrojatai/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-dark/skin.css": { "name": "js/skins/ui/tinymce-5-dark/skin.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5-dark/skin.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js" }, "js/skins/ui/tinymce-5-dark/skin.js.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js.gz" }, "js/skins/ui/tinymce-5-dark/skin.min.css": { "name": "js/skins/ui/tinymce-5-dark/skin.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css", + "path": "/home/leandrojatai/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.min.css.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css.gz", + "path": "/home/leandrojatai/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" }, "js/skins/ui/tinymce-5-dark/skin.shadowdom.css": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js" }, "js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz" }, "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css", + "path": "/home/leandrojatai/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/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz": { "name": "js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz", + "path": "/home/leandrojatai/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/skins/ui/tinymce-5/content.css": { "name": "js/skins/ui/tinymce-5/content.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5/content.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css.gz", + "path": "/home/leandrojatai/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": { "name": "js/skins/ui/tinymce-5/content.inline.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5/content.inline.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5/content.inline.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js" }, "js/skins/ui/tinymce-5/content.inline.js.gz": { "name": "js/skins/ui/tinymce-5/content.inline.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js.gz" }, "js/skins/ui/tinymce-5/content.inline.min.css": { "name": "js/skins/ui/tinymce-5/content.inline.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css", + "path": "/home/leandrojatai/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.inline.min.css.gz": { "name": "js/skins/ui/tinymce-5/content.inline.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5/content.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.js" }, "js/skins/ui/tinymce-5/content.js.gz": { "name": "js/skins/ui/tinymce-5/content.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/content.js.gz" }, "js/skins/ui/tinymce-5/content.min.css": { "name": "js/skins/ui/tinymce-5/content.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css", + "path": "/home/leandrojatai/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/content.min.css.gz": { "name": "js/skins/ui/tinymce-5/content.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css.gz", + "path": "/home/leandrojatai/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/tinymce-5/skin.css": { "name": "js/skins/ui/tinymce-5/skin.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5/skin.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css.gz", + "path": "/home/leandrojatai/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/skin.js": { "name": "js/skins/ui/tinymce-5/skin.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js" }, "js/skins/ui/tinymce-5/skin.js.gz": { "name": "js/skins/ui/tinymce-5/skin.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js.gz" }, "js/skins/ui/tinymce-5/skin.min.css": { "name": "js/skins/ui/tinymce-5/skin.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css", + "path": "/home/leandrojatai/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.min.css.gz": { "name": "js/skins/ui/tinymce-5/skin.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css.gz", + "path": "/home/leandrojatai/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" }, "js/skins/ui/tinymce-5/skin.shadowdom.css": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css", + "path": "/home/leandrojatai/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.css.gz": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css.gz", + "path": "/home/leandrojatai/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.js": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.js", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js" }, "js/skins/ui/tinymce-5/skin.shadowdom.js.gz": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.js.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js.gz", + "path": "/home/leandrojatai/desenvolvimento/envs/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js.gz", "publicPath": "/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js.gz" }, "js/skins/ui/tinymce-5/skin.shadowdom.min.css": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.min.css", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css", + "path": "/home/leandrojatai/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/skin.shadowdom.min.css.gz": { "name": "js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz", - "path": "/Users/joaohortencio/projects/sapl/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz", + "path": "/home/leandrojatai/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" } }, @@ -1002,25 +1002,25 @@ "css/chunk-vendors.045ec640.css", "js/chunk-vendors.e8ab4373.js", "css/compilacao.0baf3580.css", - "js/compilacao.d3adb1c1.js" + "js/compilacao.148cb66b.js" ], "global": [ "css/chunk-vendors.045ec640.css", "js/chunk-vendors.e8ab4373.js", - "css/global.45591136.css", - "js/global.8ef6e932.js" + "css/global.042f6737.css", + "js/global.bb3e904b.js" ], "painel": [ "css/chunk-vendors.045ec640.css", "js/chunk-vendors.e8ab4373.js", "css/painel.e2b9504e.css", - "js/painel.73a4fb17.js" + "js/painel.f3190acc.js" ], "parlamentar": [ "css/chunk-vendors.045ec640.css", "js/chunk-vendors.e8ab4373.js", "css/parlamentar.cd5dc5a8.css", - "js/parlamentar.f0710dca.js" + "js/parlamentar.a1a4b65b.js" ] }, "publicPath": "/static/sapl/frontend/" diff --git a/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css.gz b/sapl/static/sapl/frontend/css/chunk-vendors.045ec640.css.gz index d68a09070f2dcb4c0838a9653f69ae566181253f..23522926c85cde2926b177e7ed77ececa099e573 100644 GIT binary patch delta 21 acmdmbn|bSPW-j?|4h9flV&2HL`YixTuLe5+ delta 21 acmdmbn|bSPW-j?|4h9fl65hzQ`YixT{{~9{ diff --git a/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz b/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz index 1cb587d5bcb33b8fa25dc00f9e035973ee42a9c5..3860d52a3e5dfa3dc862e5bf09548ed620290387 100644 GIT binary patch delta 19 YcmX>Wa4djJzMF#q1elmNa@lAA05jhN4FCWD delta 19 YcmX>Wa4djJzMF#q1ek<3a@lAA05mTI9RL6T diff --git a/sapl/static/sapl/frontend/css/global.45591136.css b/sapl/static/sapl/frontend/css/global.042f6737.css similarity index 97% rename from sapl/static/sapl/frontend/css/global.45591136.css rename to sapl/static/sapl/frontend/css/global.042f6737.css index 2f3d375d8..15c69f07c 100644 --- a/sapl/static/sapl/frontend/css/global.45591136.css +++ b/sapl/static/sapl/frontend/css/global.042f6737.css @@ -5,4 +5,4 @@ * 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 + */: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}.btn-vlibras{display: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.042f6737.css.gz similarity index 95% rename from sapl/static/sapl/frontend/css/global.45591136.css.gz rename to sapl/static/sapl/frontend/css/global.042f6737.css.gz index de89e74c6a997fcccce0907400d4c30f29691e04..805498348eef05d85b4e794599d18997df288fa0 100644 GIT binary patch delta 1158 zcmV;11bO?8*#Vi^0SX_B2mk;800065u?i<>f2^%-!@$2{RstPMjFZ?-Q$b-JjP=`~ z`?60%O_bK)*db0zS?GTsr-yx~hvSqH2#ICu&Zm2yPOw`Lbc_0rJc!$?4TlfI&1#FJ zQ~1iDyPM~P5a$84#zl2Wbc{FXL1l06%Hm5|&|^skOi&i5j(G;$-|V<82F@ z+M&AFeW|y?zkGy2W2|C@9xb(=)eyRoK^xYhTPri|!v1v{QMk>Cx~e}36y zTmKD?)qxQQ?iGALKn&z|hdDRL@O{s#O6--=LJ1h;K+TL*)E-NoBz`IJ8kLT&ySFF> zuO#iPz|2TQA8vZ}F93=CN&m#~@M)N+`y7%ve2k7+0y~&UBS*Y3-@P$s6|kD?Q{fh} zcUBn5-1cImcMt(|*RgBuEC6<2f5IpBF@ksRqmw})YTqcT;!yC?kI^@UMURw9 zi|BS6GwPr-#L@MRuK;l3lSDlj#hH>V);BhsFuiXV?W`pw4*#6^qBqHi;e?BC+J{wL zc_`+^*6>Q!v99_y__{e54d#a$r4|ZnUkKy-y zjU||zf{^ATy!copx=Sg4mHZ%nUr+L6gcsBv>cJ#>nFVR3PA$5j(VuPh7D-}6Fk8Y0 zx59aX%P1eUf)Y@?zohdQx8u~)&htU&#*q|E?)4qlE{7RJ6RufS;K~guLn^~JQyZJe-TtN*%IPC-ttEF z(viAEcezbW$Y2RY?sl@#{{YY;F1F9mD7&kxrg#-6%~VUU$KE_`XfBe!QS~{5#v&Wh zx>DAIR{W|DnYch0Hf7BZG*uu)l!%{B#S^fkP;e{DU6H)6i?XH;uIj9vP#x=Ow#rv) z)>}z2g^a*bQd{tWa0P@|peLu^GL|P&>tOjxJk-zxdC`-j?{XnS*WKfqdJ8n>?3%O0 zoXQ%uXNGy644gqeuUd=gd8v}(@usd1geh955rqS;ZSD0>jSFRFk9Ig(#%=^c0k0me Yh)c-}mbf(fZqDibABJU>+|uF#0J>R5$p8QV delta 1147 zcmV->1cdvU*#VB(0SX_B2mk;80006Lu?i<>f3>Y`!$A12n3X`s65%Aa(^ODc2V?y< zXus^!&=RFJIChAWQWpB($LYmBy~Zgc5E9GQolnob=%f?u76jWO|Dy=v_G-i6LvgX% zBJB;nbm;EpInMccLY;GwRT4e$20bYK?Oj!VsY>%$k^vo5<*5hHfcx7WvlZbylYzKG zf5jj&6hd-^7}2VBx|mABPW@(K=hH@BVUg7dMmPy|riB+JcQ=<)ztjPmrOJ z3qEH`a`T(w*f#A);WkY~)re^>DR z0P`ES^2@oI!1q0?YrdBT2_;uha5U2%Pemg|n))@s>o9t`?%t9NB95%L@H36}7;kE1 zFCd9yMSsWe@M)MD`+|)*e6;;o0vz-#qCnV~@7}003fP3j%(KPpoi#-s=jfZ{BBG_j+qsp*)C|5ULUglZ zD<+ikHoy(YOLfvbmbp2 zAqCD3M{mk`bYf&$RnF{Jw9n1{)_FWW@*%J~oN& zP>Np_JMdrElOi4A0kxYVoFp%^pseJHL^tNl&USl?G}S7YFX4mB+&mML2?9GL+~|;-2J)c&t;W>UgQ>}ygHXr} z+k^h%1#c^a9E0ywD*yQG7d2%%ZI zok;XQ0J0$E_8E#`cTL@vul%GywFH0c&B2EHGIBF=?G3T9$VcXyQ66E7ys85vE>MO| z)v$w^1`sN0sGmx+8)S_|fLpPYm5BTLS=Q9yRi2|0TBG_iTNSG{jjodDMT)>sn!exz z0|;}0NWQ!SmS?8cWz+I4-Ro)%=hB=N=2WatdwQ4`>A)Vu z^RjH%JPTDwoNSurV1S|v8qsvX^{vtPREJQy_hg4>%Q%ccEa1_@tKCBLg3DKmeK()< N{tw}lo8zwH0sy~EL4p7P diff --git a/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz b/sapl/static/sapl/frontend/css/painel.e2b9504e.css.gz index 155733ba233148483c8cf32a70c6bbd20a66c743..1b4bf2f314914f29b3f85d745bfcb1b0d9a24348 100644 GIT binary patch delta 19 YcmZ3$w1A0AzMF#q1elmNa)~hl03)~p*Z=?k delta 19 YcmZ3$w1A0AzMF#q1ek<3a)~hl03-+k=l}o! diff --git a/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-brands-400.5d18d427.ttf.gz index e14c40204d86a551732974a2814f70ca600cd93e..d407ce00bbdf01e744f61709779dbb0a2a9bc851 100644 GIT binary patch delta 24 dcmX@HgZ;z~b}spD4h9flVs7Nx%Ef4R2LMB21Nh> diff --git a/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf.gz b/sapl/static/sapl/frontend/fonts/fa-regular-400.81482cd4.ttf.gz index f8b292ec733462422694bd89864ad9401ad8115e..edeb41c64652c287e699a62f9aedc295c0e0e7c5 100644 GIT binary patch delta 21 acmZp>#MpL;kxRatg8>AXm^X6$$p8RC5CxL} delta 21 acmZp>#MpL;kxRatg8>AXgg0{i$p8RCU<>K7R#dX>m E0A4f<>K7R#dX>m E0AOScNB{r; diff --git a/sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js b/sapl/static/sapl/frontend/js/compilacao.148cb66b.js similarity index 100% rename from sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js rename to sapl/static/sapl/frontend/js/compilacao.148cb66b.js diff --git a/sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js.gz b/sapl/static/sapl/frontend/js/compilacao.148cb66b.js.gz similarity index 98% rename from sapl/static/sapl/frontend/js/compilacao.d3adb1c1.js.gz rename to sapl/static/sapl/frontend/js/compilacao.148cb66b.js.gz index d6d08faa554e886630c50f6ae557fac653aa0fe1..9389026862e3d26c613b91b922ce2ea6afd6f252 100644 GIT binary patch delta 19 YcmZ2ty2O-AzMF#q1elmNa?O$g04y&9;{X5v delta 19 YcmZ2ty2O-AzMF#q1ek<3a?O$g04#q4^8f$< diff --git a/sapl/static/sapl/frontend/js/global.8ef6e932.js.gz b/sapl/static/sapl/frontend/js/global.8ef6e932.js.gz deleted file mode 100644 index 3d44bcc617b50deabdbfc84861aefd063e8b974d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14144 zcmV-GH^0aqiwFP!000026ScidbKE$#Fu0#zLE-k7MOsKIQ}UxsiB`z6U9E1*c1y16 zhen}5k|#4!W)dtAR7xe~V&<1j$6a*XFQOMScV^RD?eA}z?;L=yRJyu)aU*Oc2^_o+ z&Kuy)lP&L^(q1ML$V>2KK2>@lj8wT-WFSiLN&s(`sfozKZ(;fzUheINKbGP9ljFA^ z&fkXS#&}P5{x{zb;#YUqLVGDsIB*f)efx6!BJzP7F6ulP3;*f!m%9O1vG8}FJ>3iT zg+G42`!e9de?EFizq>D<@8a*?v(YHvOPQx?8ETknDCcj4flo5|0y>^nd4e7FgF6|f z!azakVF~69OhuKM((h$xm`Rn3?1B|$`1*`p23-1#AY@)th6NpHKiJ0}L!7FlT0m~X zpDNI|=a4~Sls?L`e$jmuf=K2*@TOnDO>hU;pCep5XrWYYL-pW!l$ z_SJz1GstIVzOS~oZDTr?q0w^TiwkubV52%Lt4V3J%xC_HgDbH;4&pe5Z5FfO&crDs zDuwUQPL9>0P&wqLSFTek*q>++Usfv(rqa1*ni;?e(x)mFS#O2?&WjzE^x3~H5blbK z;Oa?{shNL=?;i`uqpdL~h-hoXmohc;=-Ft*=OAZu6YV`6@p7(~(H%^ukeG-~GMT50 zrjD zZdwKddbt*v&sea+8gsRPW_Si}4CZj~*}uuOPVc=+arKq-95;58xgy-}^tgcXr%INa zJB^?}v8HQOG?mvw4P})Xkt!@SmszSI_k&QwLS2Jz;WjQ2Qw8L%q7t_hZcNM<#%Q0- zWtu|Hc>Pd!_ZK^9x9iOVrZJf!uS!6ytC<~E$NhZoN{zhb=%{Q+ON~2Xid-VbGdA0DG zLI*o8<6s9%y<$NS`6ibBHwV-UrS8vMNvSW;@A&Vfyu9$fnSTP0>&Yfsl#Ik5x0YS zW!LAx)x{1bdgoR9ZZ@EdU6iA*Oz`+%!#WjW1|@E{#|;-6T+1|*)c&a|jTU*Tyz$5@ zv|NDHs`Lntp!76k!pLh(@ybegld4QaNF|%~c--x;;4i|p3+35~jO;2x$^vd;u$avu z20NFQ`aGr;V4K}Q8#)wcb3V3U`o+IeYBTUUz4=OmYe23d(U6HGQzhW`M;_VblTI8s z73G&cn_!`V45lgv7K95?e({dG79 zUuF?9Op0k!!DuuJ-T&cev|hp0)m7;J4?E?d=$5CFn~GAQrj(wwh3Y0B6{=gS3mIvu zOkF_+(oSRBYS{m?sr|73r>?Xs71j0a(7#R9?9jiq^jvAdJt}{Ziv`4(a3yn@NOk!* zV=5PqQ!hI$M~@qw&!fen+uqfDQTB^`tyEN&?c6OM4fEHPOtiusXSDiPimq1t+h?Qk znp|A)DM`duHrCCPjD6vc$9pIZfBWp^w_Pdu+m}yA`1|7N%V+re?5TapC66-f_h>mptbs&p3+pRb2RHF3W(=O=R(NyXZW$bxF zMy{1iz0p=2&t3IYJ{K|@Ryt$BpnX+J;4QUXJ=do{^mX)4ap2>pXz!$xAD{A6+W$dfCnVp*LQW4!tZ;Nc9lu>7i zR1{{Yl_5TcL&>*dIT-kPthkCb*Kv-m6h1qUi`gs2?_?SQFLe@qWsX(>&*Qs=%+KY| z5M4au&o22FxIM3mLTQ7-v(XjUOvA+`SGiSxqQ|;Pxo@R%hcjy5xHeIO7%qj*Wj@1R z`yvLeaWYI0mJ&toS?ROzN5TTTV~}0O>hWB0)l02sii>c0An)%*I6qK_IuvPojAGMz zI3*CLa7IQlqks=gj0f{-olz1(_-IEh_bF~mR zS8jf(;6&a05nto406i{UuR~q@xAY!=4J_bUyfx-*$Pl|pl(`sP4hDV}Z;iN3ap_KX z^v3};OKFE`Pc@cPpVVInoF<7`}_) zs_s+}`Q0v9O6k;Ql*x7s>dWFlJ*oS2G2%MzAcwDpVh4g9v~qAY)R+4Xt`8-KSOr3j zxEN}#E>}KoFJv5UHqs7;1-uC1#-Q+;^Scs^+pOsdp&i*1Qv=$U0WW;^Z)_Wa@OOwx ze$Kl(>IGcJNa$DVL@3MDayYHB3~`fIJR1yrgby{4y~wY-#)fRWo-s@Azd1Tt>VUX{XKo9KSu%&@%S7EU(qO*X_LF$67egGy_BYJ44C9;aWcwQg%nlig zzVWC6NL@{kvTuTI_Ud3KmDjI`J6T5H2jNtr*dNXzD;jzAa30FM1Z`f!RB2>yo56!< z?o^b|ssmI{bFx9)M{JMdI6L&ehVq=|wOPm(qQUNfZ;gY~xQZArF9!D`cBEgdmh zpvep67*&;!s%75m>0sbDJK+ZARM zGM~kgt8Slk&pZ*LsN*{gVfW>WmuvFXDRjiEkASwv-Mwc)m|8pGzVM%pU-YD@m!s!a z*xDNh+&_g_xt$XC&3lbG=LU(9BSBq05NxyJhOHX7FCDn^5bY7f6t;2opashi4B}I? z5`}6yEdkX$M<&pYHZ>eVql(M6jA*OAAf*@nH2fKfo_+cA@aK#1We5I8glB5Y}+_0BI0l7IZ^>TT&vE8o1^grKjpIs}O8X4?Izy|>Aw;mv zP^Tvn#oL^kLwpQHV&t_j@LQ3m8R*hSafDAHTndxSe-F2%AM~t4??SBQqg{s!T~d32~8s;KCY_txRO%cW8-vCvPD2QS^F`3VLZ%kCo0r`|tfc z2=?FMz&>dxOGy20b{+)$of|c6}ZzE#`P*S=|Xdv`G!0+7m5 zOfpFC?;AWdgTdB$NKEcjUBmr-jqeKOqu=_5<3>kwTxnGCNvlH4gxxc^(=}W}UVA`% zViBDVy{)$q;bjaVNp(Idoe)|H%@6hkDkbJX4F;nFb4arKP6PU+1&nlnAYw4^RqX3n zAXuIGq$v^bN!!wn;@6$Fb~LZER8Xht&SL-6&ez>d1mVq-3BQdXynS-bZ+0EEeBB+}eQBR&zyml^TwW0ff# zvE^JEKx0pbD}RTb`@LlVI}@V*JJ%eQ2724O+_}CC_<2~f#V`?B=D*=T`CWtya6oIQ z)VA^aW&-N9q2{Qu%Qf7|3;yDZk{vWWOxk%yg3^&6$KH`ie+@<3h z(*u?2;7q{h5O>}R*rL~ucK4!s0^J1OHq>+{qDg&SgZKrq&>}t$7vjcE&;9*~|D}^M zrj*~rmJhTr0G%WY^mqhfd(h>$|+8zP8br1Cbu(>-Ne(j=PRUgSG?eV;lJSk ze8R7};s&_p0=NRMflF|P+8lTZe99Mm#+N-I{%(aLJn1mC-ctrVgE$x0awd$@VO4@Y znqj1XQSa3f^s!}VDa1RAQo>GXpfr94RF0Coi}CRJ<^LXbvP|r6QYuK5xfopr{72u! zJqQyV-mM}N@Vkl9WHHatf5We3DJL>R0?p_-1I8CZ&tx8rcp=hM<}-X!rKCO1#H3VN zg^?9T714;Jo)nE%0Z(oFJOLzvx3SMoPQPQs$i(b}Siqq_+KSVQ(WMne27~(5iX?}A z>ZFtwCg5o;uyi2NKI99C(T->rGc0vt>ne4^>v{w{szpFk2lubyG)ywuYCRVxTB3=1 zq5X8OmVOY_J!|EytEOX(poQ&N>(5oKdIynhrCS-z(3oSaNgT(`&aC%tyfq2}{?@<3 z?d>du_R(7Xu<523$8pn-fF})~_Q<1ap>7+Q@3_ylYfG>l>s`CV&f5y?5zB5U#42!B zng<4U}NXmcr^MStQkT5N*(_BBv0Wc+8b|1 zPjwA?nyF<}d#YCfKl)c2VYU&*_jX4C|GZXwZQk0pUDuwEMynu9C)rm#(LEU%Wtv*2 zucaCYnu&Jiv8!gLE8s@~uVOzzP31iS8_G9GW71VW~pa~fUgU?Qe zb5r@}?pz{DR(UG)E!rNx_nRuWcb`;kwf60+GlfLt#vfLJB_#IIP2cWIoW9mz_Paip z;%h9)$?2csyF`O9@J5T-40P*C`R`E_KZVIuX1EK0JWBtX+Q@Toq6$vThJO97-@uBy zmrbzFBo#xbw8Vgn?Cmv0rI9fy{fxQ=lt?BCuC`kJO87r>SaDf8=M|*U8St|9WQ~ZF zk@n&M?(et8j}j02uhALG()?ZQFXLIfh^O(0-%T@F94n>MGWvwPwwBU+BZl~A;x@B* z8k6w8j2AJ=3M<}9?;A_xKm~>~UILXEF8Qpk!`3hZV+~PV->x(J5&OSf@zz?k!B=P1 z394;>x@`_d=yn>$W_ud&#Wv783}e_{1pN45xs5v*w&UZWzuZPFx;>a}qyA~O z+eUUZ-Hr{P;h)8J41BpA1NGDzt~PYyGx)*&x(%l>tz4M!W|y1r_Hx}2gE^gy@^O*f z%XOnnU1s-kMV%s|7JY_Qz|Ue|62JQwiRbRq5pR^o6`Jwxh*+SwWN8KR?Us6J3OQU$ zoG4?|f>Kxf&T4PbEpYpECYI4L@J3XQjtJjgTlx}R0k^tG^aZ%14$(PEgQ%)ReXDCp z7Gpaq7yfwT8?>yIA$4s-)`~k3w2Nnr4F3fi3rKsE<c|vK>6Cm$wHe@3=;#AldnV)$q1|5^ zp^f#7F#aj*k!zx&N1bRi)9Q<6Gv{1W<-;2e;q7BZ9+4LIif*iPKJE)iMs2=dv zs4a#2Awe>9R6E6*tP&U4heO|x=8|JzCrRis2%K)1@ig9hG2&RmKAHJbEoN_1ig7#z z+@BQBaNfb?iO^-x#E4h%dLEz0qy70oRY!);x3`1pVt&cNr=N6tySulnA2GFs83l}Q zXxN!V+IEY0Ez4@I@o0Z`P}EJ&wzq@gVs^==G5suJ8~no;F{<5I4mEK;jlrMVj`eJN zHIO4pt2I4?@=(ZM3-i}H5?=llBKd*5VoA^u2WbgTCwTX8e|7zY*H{6+^em_1e2HflQ(z`SPa5();_l#TbhANA^N*RpC$SXH^+|;aB0rs=o7p z->o}MqJET6Gr6RnDZoHDhz*BW@OjT_@bnqVlyLa9t%LolvFsXpS&*l7&Ju!1lAZlg zEzRg^*ctS)s-n)oL2iw|h7I#a*sww`5c&d7!T+Wg%A-Xp74z^Y!8(zdqQt_i(7=Y{ z-BEGF+<_f7-o^Nd$IRvn+%9J5&JyseDcED9OT7^_ZlyN(aWL>TzV<_5tRx0uVs!R< zxV^uJZ~;dA9&R0X-x}>(?PhBW!g4OB=J#-WI37jgM%BSuk5%ea9&hhOv_JuPX!t1T z5NmJmrOkMh{;f?P@uBHuJRQ{;{q)@z(VFA1<*RjQUw?f8+yc}3u5jhr=|^Akx-lu>ca1x-yUQP~loP3RI8{ki`T?Th zej`G;c@&K|2dyQ8f!`16zzEmYiRMVLPv*|Y=8;WSlvZY&LC5T&z_C%D{0$fWB5i_T0`+ZD?jhFh&Xg7@9)tXGUECA zPUN@_e9eV6<|951_(?5`T!H_URuQa&tcQIw0Urm^3HW0^?yl*TvkUyeKcZ0lo^SS? zx=R7a&6&KDnhcOZr`z0Gzk5w%cl2>u| z#Be{2<-zE1I;^5!4*fJ9@p)URpAM(NjzLdTelR**4Cm2&dl5vp2kBtor}6Et z0H)aP8K1}Hj^Tcrx7eOjlSw?{Ri~C@xCovYbT4*07aboYgMpvK$6a6xy9OHY=|Osk zy*UsV*}g3zb&w9H)Z^*4!VWGDlEcNe>v6Og)_srC1B9CnQ(Jb3Wv4?s+Uc-cb~;R5 zS^E_56o)e%#wkzZQ9VicKD^~=d>ilt0T#nJ;RyoRA>sS*m?!aZz~6!Y2{rBoA{B=H z`kK~0qqQ#vgJ$G9cvTDr{wy9H=)>uD5lx3h!2i;L$bwgY84UboJUYk@7u$b{7Q?>; z9AM|V2XtUl8aRB77DN0A_-}S5y*3Xhp=tFuJCkTS{LRh;ryNb(vtc~t(_xHOZ%SAW z;{{&~<3+${lrSB}Gd>%}vw$xtVKI!Cd^wDlWCXVm5YL9U2nA#=as1p}WVmqTVz6`p1{^y>&a51{HMtTgMM3>IRxK0?mgwf@z+Zy85LcBVz zA&vun(T!0iuY50Id>M2Cg+IaCF$W4S6+Dj(FJn~`6LA2vg9Vp38g*dY@uV^~0l&~Z z=aQG5df!1mwh#Rhw-ho;k$o83gmHa%0%J+9Ljsvo(vZ9%ZDnU2q8Hz-xQH)0IyvL5 z=2SmJp0Z1>I`<=xy8bo;e50Us7VH~+dxs_+h)4U-UX=jNRS9^sOUF#*Y+GEwWgv4; z?ISBy{i`1|XLhLjbiSz#gpTV#Xmz1418y#`n#))=cO!)DIM7yIcfNVXL9G(uTq%w4 zzUo*h=D%R2=sNj=#sta#gu*ZBGjC!%PC~&9tr)Jk4DPyNkAHMmX5?+?!+svBJX0c# zA9r&Yi7|xJ?sNpyEzc!G0Z70F7aeA`LozWQ_tq{~e0#4yEugZ^T4RkRLGzp&<4bRb{&eP==t z-f(mWDD+b(^iyyhD=txBpbUmf$ zWj;GE08(DW8cR=OjRhC6#xk>5Blu}pTZ0fi`Mir+$#(3IN26g9>{J}9=pLskwv(Ol zX!IlxI9A)un!2nKvvzw~3zwB))?P1b=CaZNC54wS!*37b#|BZ;;q7s*@9_B}T?JFf&q&p^m(IL#N+`Ctn+Jyl$hm z2SaSMq>hn{?<&^t8#J?3!0pW&fJ*EDFY z^oF*P0R5WgL@*eLy15ma3hVAVXI`&kUl~E$-wm;}@mDk5wM!USWxkOJ#Biu1FoaoUNb@8xh4@ccsABl8^A*c|afjJBySVX*VX zRZWsZx*W^zRT&Z^J~9FK#r=Ih3olEeY^0!+gD-xt%2Dkt;>V$vJ{*ikhit?m#)55F zafrvfcY&fiyy*J24cpr*uJDo*VoMiHvu(eO8T?d1X^!fh@=ntgFPHcC=7KF@@UBdIOieWCkj4$?{!!!OIp7Js5@$u-gKK{Q?ivNM1$0K)$p*Am} zeIsT=bU(&rJmOg_>oVm*wlCuC?J~&Y5%+a0FT`bV5Q7b?^mALwG*ejljt+t+I^ceO ze?LAD_xA~1l7cte49EBP6~3WflN_cO;*u7yphLp7pJh8)1-%&~2Nq4)xR*Yaxh&`Q zq*gaw<_7e&$mo8_UJhNB7LR&qnJ8(w){+SaH>4x@dr>?}EjHCr@3gxH#gV5as>%&I zV(|stVn;Qtw|gWS@$QlmpP)-j3964xwAETXY6wP41nlnhEg@JtyKZ71VjDOoOLuz_ z3l8yiI~Fm#a*gf7g}L-qXnSA~C`m=9bwvaoQJB4oxHi>{hqXT1(cI z8E?MZ$&R^3miv3Z_l{nmwH~3REX+xB60r&GN+3|!tPqD-4XIF#CcO6+D{c<0{EetJ zj3H{@Fm4!EY%7lOK(TSujq(m+aeu$nOL`Rxx-X|mh=pye#q*Jy9ixhxnop&Mng+ik zKn%!PC&N^qOYUr^^@WtWe@$x#i;R{wUes2C_v-rVh(P$eVRh`vIKo#iOhX5oLAecw zuBPs=9lOv#S4OPOf4zWqX}R)y*kS5ca9-Qfz{-b4f9Or%IcbZJht*XD-K=yf?u};L znPl)cwm}NvYK<_>W*K~~k;BfaM?DU?PJ|wtCD)KQh8mrTVD+@wW~VmjkE4r+$h7+_ zXc|PV$)VxhYSCKmns#)f3%p@c-V1cj!y2c=74P9AGy(!`fOh#=UM(h|+bcLW3Loo& zM>9^e91i2J2rPZE4K=q{`qMKeiJf6lm@t_a$S-n*o3U3hzlo3N-i zeXA9hF`hJ>=AoUA&00R!by!k;95asNxeqbi-!r^Y$6eTlR313QE{*GWYs+!SzEB(B zwR9KilGi6Xs6d4BwzO6X61h7uskkI8!uzFb;aodn*@Yt1W|1BYv?FZ27$=sAV!e_~ z6#Y7^Y0F(af<(nWT2iuB`T{Qdg`EaeA1Lv%(537*r4Q`f|;w-Ly4Msse;nW zmGR(4;sr>n4mDYISF08g#L5~RtZ^h*@n=u>_9D7z-N^iQkpP-iPsZQoJ}b=C>odmh z&LCA0JAb9{XRrF%cF4CW?E8-cH?xQ*DcDkQ#r5~Trr&G3y`brtXDVv&8J zyK6mDrHXO(0hV6vI%5(0psrQ(t{DILC1M}HFn(+eyUhMl#Xrch5}7AtTC#{8{aB^K zyQVb8U#l#Q*aw(tiM5;jURl=eg1H3!uhX&E^q1 zlVw85RROw8v@A@-&ecQ%zF@`Y)uc(MN4UoMVaFK=?YVu2m-0pIJzeJQ(!|5x9{wGN zf0W5t?qMtsj=}cBd-%URyrLR(DjJXkP{3vpJI3pwMJ9iyNwAqVO1oDW z8acgX&=w^RbmG&lDElbdZ|M@q@ zb52PbDB@R=Kv|+zZ|2}7nJgws=rr^`*$)s@B~Z?>(b@K&c8+&`@V>w;!Fc6dX_HjO zD*7POkWjVqa&Zkakt%KHrmV0<;R$R?QOic*WIy~>gYZ)D@Pg-Z3i{!H=7|)c_ep7Q zDz25L_VI3KBeJqH-cxJ*<^3bx*6WM z&Drhe?6x_3{hYlv=V?FZX`Az`pYyEEdEU=?ZhK7pV?&qm*2%B*8MD69Y0UacuQBT@ z-Nvl1^c%Atcl?uvhBrp6d81``Bd?K&h?4P>+)|vk3y(Ic11ckizcgh;Jkf5ItEDIL^BDqd zRd8dxg-Rjxut#_sp0|`)Mo<&*3M`d+qU^#~xsjQ7t18cOCu{w(SAlzKIz=S^=p|}F zcakSau01Ht!(TlyQ(Abiz$O({rm*5%g&r2j4LtlKRbC1D;jdJX$}f7Lo-hyp;a#ib z;eUE5l$o5_>V>BYB7Py`?48Pu_f9NicFQ7qgE|!rp-9(1i-pMNL?_6uO+N_rn&<(U z^+fK~SDJp(DycMh)k4^`1>+yjBKGlnq*q!M4X`%{jV18>4bFL6!V^DLlJV~gG}$A{ zXbm%@O|)8Wu^1=PThm;}u3YRbVnV8k!XHbWWP~n%*GZKTVwDL}$`UI%|EUs)SbwNQ zstNBH-I?JXWyM^uh>6gfgkBPQVHh@<-)Vp^|BGAx*Z&=Q|MmZb-hcgPKmQCDl|@X3 zo}~Y>&i}qBI+Y)V-s{ji?q}A8PeSj6{-3z~qdb|T^WfqC%oC*r;~&U^`#~*$@sl)S zCwP_P3DMIkOFfd6yrndAPk0#^1DbnNg+2^OJ(Xv--sIM0l-#r0M9IBWlykseWlE0t zrScLjycP27GQr#O5qD2gFNJGB%)>3M@qtz`1B3U5moTejsytCZjynTCP=h(x)Wbg( zpjF9{U_bl~9}1NlMUA3~m|i?pd8HE$QdNeQ6M1uS4PKR(;u=!V9wRS3p@FtqS-FR$ z$PIEMcP|QfVkvG9S;T&zEn#qXRjJ4y{w7MtT|{;*%Ft^863_;I7T!-4;2we>g;xrx z4;g1?P~v9;Jk&V6R11EWm$;1C! zGJaGU+Kfl`GbC^GMA1DqIGrTrxpMFDg4;v`p}=`BD5x% zX$o2s{X`bomH-<-=M}=tI~6BlA@ey-Zw=Aw32~uDcG$6CVsgM)lErcvBb3)RKRJJNnmb)9R8d_?FmZ~H<1~d4l zx+V93LZHagTd&4)(ioj6{_qb2MD~8GwEP(bzRaW3t*G(jbK%XK^p^SoQoma0sOcV9 zx>w5`jG`Bja@TvhgE(n-b6bMj*<4=QiZ5^E0`ig~beMg9`2V0J!kOb2Wl&1g3N;gi zVG%nOs4BX|hre0q?;r;)vWR_$Ke(Zyla=+pSq2p-6?$SZs)>Z(eAmm$!vyi14iv!wv*aZNmHXiB=aFH81?38(z$)cGAl3;(J zB6SiD9cs9C20D;!Vh#JYi&t+q;**u&aiKpJc6FNxK%l=UweV!#)wF+Bs>xARPfxd5 z$9Qoz@>eqFxBwG&25F6YnEX*otj@9x_u}yPHL>2D7{qHWiG7^Ug~qR^wcW_2ktzI) z{2WafrLp=IiQk0I8Hs4ukm2AyJpBC{B#kXW4)>i{EJVb<6DTyCR6~COn{DDQ*%-aPj%G`iKtvC zZRwFGCPLn*2nF~Fa=4Q^TQh!&y^dJZ%MU6i3q1-Ieb%L%S_TDLb*>?!zRkcRc!oMV zOsqUvJp2`}7Hc{$N-~8oX9e#VN63zJEn$iB*u#Get-;zFb3bXBBTZZ2$KfQ}oy9fO zG9lwA>P76mN*d$unUnTV#b(w5?S!|2R3)3;&FB2y;Kop2 z|MNyJR4s9eJoTKc$vS=NNsvU+(GGyl3j9(8Z4Xj2rxJG;-T536ssDFWFQr$gvP80< zd5|Z>8W74CS9dHu#X`{NwR z80lWDRlYooU6Diz&kM*h`WOYVL$vQ|PidoO`r)rr@*JGZa)lNf`n9};Qrv{PWH*~O zI3U7FYfbh@D3td`k_IL;@`0mNI=6_R9I5hJ%5dA)V1#>T`x-H^#Qrm8{E{jvTG%)C zlGwVgw>Ori)cMDdp^N3=Ke7s6&v3)Nw}#4Nl~s$J@VO#HN7!F(HL2@ir=VxxC6Ezg zKbq;PAoBp_lfePMMM40ynAb9ux>MdwfhJ=oo+a+{;JHB249Y$v-BS7pFoi;quaJBxgQ z-Yp6t&9x4)p2E<>AB$`DqTY2tiaX2u1&)QYpuC3}luKx2x6{IF5s;CXY6oTD12D9IKl*M}K-fvN{+L-eLg|OMZ z!bJy)+@`9@w!*rw3XG%FYTEd4{#OMLf6r5yppn3)qGJUK;vA_1Ifqc8x2gdpke7(E zW$um{wIqlW@{yAv9vXdHC)n`H0XU*-IXeY)H7Z5_Yp}27Qt% zVh{gE?b;<(t#J^#0#fBrH$!S1*y*D{d*!j|a?|#pI_x|PRTl)>Fy_aJO*njctDFy8By`cA}FKqz-c>I#S4Ek)> z!tXuZqx_dIsMOx`=kD`EvGAXb5LV;&M8Dk|*<$0DF9Z78Xqe+cMaq0WdO>x)c=2>> ze|PCaSbN_-rCP_&cVF1AjM7e-At#Q#2 z1(n_q2RlAM#)ETPKK|ZklXWq^91OZ|9PpSjhO8(Z+55}kkfL&h2EihXtEycXE?Q=S zUv);?`_>pktrAGDv{L43V%>!Wm&pFYLU)VGM*`M&g{L^L&h zl6dvtFCn(i{*4IFP^0pJ!CNmLeV0zfcP!i~%y6Pvg!_`$ui=knonpJYlcA~xec%mQ zO~KWE_Zn2ZVOsj_<+q}Di>!24n~6~Q3NJLR4;Ng(Bl$Uzkhr6;p6A4cOSq1@P=_%(Vc4Lb0x5*_{RhsVOVAAI7CqeJSpIS9^4~ zT5-I3!3N!#x>as?`&{8EKwFeFg=ACDdh# zKWCfA;C6_K>0?b-S5Tf3q8(!RBh<&+C>XK{%dW!IH~dcE#n0T(cX4SQa1H8ip*_ws zK@}>zA3qojw(t??(am5AQ<+2aDHq^^-$7n2K$G0FHNvCUk+~3;$lI%M7WdCIx52b7 zx_XwWiO4?VQ7YHdHihmN=>&q_-{U@O4tlUo7Q+jFn`=HcHRJ+CT^ajE7hzVRs%OFt zvW<%Ff4RmYKZ5cq)U*!Bjc7{J&Nmxx7Za5Y2KF~J>YQvspT+F!)A$&c-%)HgsQ^_* zU)%axVb-DmtBY-o>;mMA6g%qU7X!?^#4QNT#aI}u-n_&YmjRxXuEHPV=ilz~B))t8 z?QS%}T0Vw9Vl8+vRdNBB_#GREJMBrc3p#3c85`P;a_Y;lRCvE&{0jF5mJ94QCOpdt z&vHU8zX}%@;xf+hG#G6$9hZKExBTEau)zSogR`F<$nFkTvAoETpeR4#Di{os3w3G# zUW_jBt15WzaMW&qk9fS9`w*9qO~WNj3Xyy{o>%#oQWV+MRFeXe{*&zc`-{r}qmbX? zVJLSyI-R+4*CAHrJnkmjB%1(1;BLXh?zp>}FP@E_UUJ;6m55 KiHFvQiU0tEe$}4< diff --git a/sapl/static/sapl/frontend/js/global.8ef6e932.js b/sapl/static/sapl/frontend/js/global.bb3e904b.js similarity index 99% rename from sapl/static/sapl/frontend/js/global.8ef6e932.js rename to sapl/static/sapl/frontend/js/global.bb3e904b.js index edf1f467f..9304dbbb2 100644 --- a/sapl/static/sapl/frontend/js/global.8ef6e932.js +++ b/sapl/static/sapl/frontend/js/global.bb3e904b.js @@ -1,2 +1,2 @@ -/*! For license information please see global.8ef6e932.js.LICENSE.txt */ +/*! For license information please see global.bb3e904b.js.LICENSE.txt */ (()=>{var d,c,e,a={8917:(e,t,a)=>{var i=a(4692),o=a(2543);a(1629),a(6099),a(2762),a(3500),window.refreshDatePicker=function(){i.datepicker.setDefaults(i.datepicker.regional["pt-BR"]),i(".dateinput").datepicker();var e=document.querySelectorAll(".dateinput");o.each(e,function(e,t){e.setAttribute("autocomplete","off")})},window.getCookie=function(e){var t=null;if(document.cookie&&""!==document.cookie)for(var a=document.cookie.split(";"),o=0;oNenhum resultado")):(t=i('"),u.parent().find(".help").length?h.insertBefore(u.parent().find(".help")):h.appendTo(u.parent()),p("#"+c).click(function(){l=!0===l?(u.val(u.val().substr(1)),f[e].setSelect(u.val().split(",")),!1):(u.val("-"+u.val()),f[e].release(),!0)}),u.parent().find(".jcrop-tracker").mousedown(function(){l&&(p("#"+c).attr("checked","checked"),l=!1)}))):u.hide().parents("div.form-row:first").hide()})},jcrop:f={}});window.image_cropping=i,o(function(){r(function(){i.init()})})},2979:(e,t,a)=>{var Me,o=a(4692),Oe=a(2235).default;a(4170),a(7495),a(906),a(6031),(Me=o).Jcrop=function(e,t){function x(e){return Math.round(e)+"px"}function k(e){return S.baseClass+"-"+e}function l(e){e=Me(e).offset();return[e.left,e.top]}function a(e){return[e.pageX-z[0],e.pageY-z[1]]}function j(e){"object"!=Oe(e)&&(e={}),S=Me.extend(S,e),Me.each(["onChange","onSelect","onRelease","onDblClick"],function(e,t){"function"!=typeof S[t]&&(S[t]=function(){})})}function H(e,t,a){if(z=l(_),O.setCursor("move"===e?e:e+"-resize"),"move"===e)return O.activateHandlers((o=t,fe.watchKeys(),function(e){F.moveOffset([e[0]-o[0],e[1]-o[1]]),o=e,M.update()}),N,a);var o,r,i,t=F.getFixed(),n=L(e),s=F.getCorner(L(n));F.setPressed(F.getCorner(n)),F.setCurrent(s),O.activateHandlers((r=e,i=t,function(e){if(S.aspectRatio)switch(r){case"e":case"w":e[1]=i.y+1;break;case"n":case"s":e[0]=i.x+1}else switch(r){case"e":case"w":e[1]=i.y2;break;case"n":case"s":e[0]=i.x2}F.setCurrent(e),M.update()}),N,a)}function L(e){switch(e){case"n":return"sw";case"s":case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function B(t){return function(e){return S.disabled||"move"===t&&!S.allowMove||(z=l(_),o=!0,H(t,a(e)),e.stopPropagation(),e.preventDefault()),!1}}function E(e,t,a){var o=e.width(),r=e.height();a<(r=tS.minSelect[0]&&t.h>S.minSelect[1]?(M.enableHandles(),M.done()):M.release(),O.setCursor(S.allowSelect?"crosshair":"default")}function J(e){var t;return S.disabled||S.allowSelect&&(o=!0,z=l(_),M.disableHandles(),O.setCursor("crosshair"),t=a(e),F.setPressed(t),M.update(),O.activateHandlers(V,N,"touch"===e.type.substring(0,5)),fe.watchKeys(),e.stopPropagation(),e.preventDefault()),!1}function V(e){F.setCurrent(e),M.update()}function U(){var e=Me("
").addClass(k("tracker"));return de&&e.css({opacity:0,backgroundColor:"white"}),e}function G(e){K([e[0]/b,e[1]/v,e[2]/b,e[3]/v]),S.onSelect.call(D,q(F.getFixed())),M.enableHandles()}function K(e){F.setPressed([e[0],e[1]]),F.setCurrent([e[2],e[3]]),M.update()}function W(){S.disabled=!0,M.disableHandles(),M.setCursor("default"),O.setCursor("default")}function Y(){S.disabled=!1,X()}function Q(e,t,a){t=t||S.bgColor;S.bgFade&&Me.fx.step.hasOwnProperty("backgroundColor")&&S.fadeTime&&!a?e.animate({backgroundColor:t},{queue:!1,duration:S.fadeTime}):e.css("backgroundColor",t)}function X(e){S.allowResize?e?M.enableOnly():M.enableHandles():M.disableHandles(),O.setCursor(S.allowSelect?"crosshair":"default"),M.setCursor(S.allowMove?"move":"default"),S.hasOwnProperty("trueSize")&&(b=S.trueSize[0]/y,v=S.trueSize[1]/C),S.hasOwnProperty("setSelect")&&(G(S.setSelect),M.done(),delete S.setSelect),R.refresh(),S.bgColor!=he&&(Q(S.shade?R.getShades():c,S.shade&&S.shadeColor||S.bgColor),he=S.bgColor),pe!=S.bgOpacity&&(pe=S.bgOpacity,S.shade?R.refresh():M.setBgOpacity(pe)),p=S.maxSize[0]||0,Z=S.maxSize[1]||0,$=S.minSize[0]||0,ee=S.minSize[1]||0,S.hasOwnProperty("outerImage")&&(_.attr("src",S.outerImage),delete S.outerImage),M.refresh()}var _,p,Z,$,ee,b,v,o,te,r,ae,oe,re,ie,i,n,s,ne,se,f,m,g,w,S=Me.extend({},Me.Jcrop.defaults),le=navigator.userAgent.toLowerCase(),de=/msie/.test(le),le=/msie [1-6]\./.test(le),t=("object"!=Oe(e)&&(e=Me(e)[0]),j(t="object"!=Oe(t)?{}:t),{border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0}),d=Me(e),ce=!0,y=("IMG"==e.tagName?(0!=d[0].width&&0!=d[0].height?(d.width(d[0].width),d.height(d[0].height)):((ae=new Image).src=d[0].src,d.width(ae.width),d.height(ae.height)),(_=d.clone().removeAttr("id").css(t).show()).width(d.width()),_.height(d.height()),d.after(_).hide()):(_=d.css(t).show(),ce=!1,null===S.shade&&(S.shade=!0)),E(_,S.boxWidth,S.boxHeight),_.width()),C=_.height(),c=Me("
").width(y).height(C).addClass(k("holder")).css({position:"relative",backgroundColor:S.bgColor}).insertAfter(d).append(_),I=(S.addClass&&c.addClass(S.addClass),Me("
")),ue=Me("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),A=Me("
").width("100%").height("100%").css("zIndex",320),T=Me("
").css({position:"absolute",zIndex:600}).dblclick(function(){var e=F.getFixed();S.onDblClick.call(D,e)}).insertBefore(_).append(ue,A),u=(ce&&(I=Me("").attr("src",_.attr("src")).css(t).width(y).height(C),ue.append(I)),le&&T.css({overflowY:"hidden"}),S.boundary),h=U().width(y+2*u).height(C+2*u).css({position:"absolute",top:x(-u),left:x(-u),zIndex:290}).mousedown(J),he=S.bgColor,pe=S.bgOpacity,z=l(_),P={createDragger:function(t){return function(e){return S.disabled||"move"===t&&!S.allowMove||(z=l(_),o=!0,H(t,a(P.cfilter(e)),!0),e.stopPropagation(),e.preventDefault()),!1}},newSelection:function(e){return J(P.cfilter(e))},cfilter:function(e){return e.pageX=e.originalEvent.changedTouches[0].pageX,e.pageY=e.originalEvent.changedTouches[0].pageY,e},isSupported:Re,support:!0===S.touchSupport||!1===S.touchSupport?S.touchSupport:Re()},F=(w=g=m=f=0,{flipCoords:Pe,setPressed:function(e){e=ze(e),g=f=e[0],w=m=e[1]},setCurrent:function(e){e=ze(e),ne=e[0]-g,se=e[1]-w,g=e[0],w=e[1]},getOffset:function(){return[ne,se]},moveOffset:function(e){var t=e[0],e=e[1];f+t<0&&(t-=t+f),m+e<0&&(e-=e+m),C").css({position:"absolute",zIndex:240,opacity:0}),s={top:xe(),left:xe().height(C),right:xe().height(C),bottom:xe()},{update:ye,updateRaw:Ce,getShades:Ae,setBgColor:_e,enable:ke,disable:Se,resize:function(e,t){s.left.css({height:x(t)}),s.right.css({height:x(t)})},refresh:function(){(S.shade?ke:Se)(),M.isAwake()&&Ie(S.bgOpacity)},opacity:Ie}),M=function(){function e(e,t){t=Me("
").mousedown(B(e)).css({cursor:e+"-resize",position:"absolute",zIndex:t}).addClass("ord-"+e);return P.support&&t.bind("touchstart.jcrop",P.createDragger(e)),A.append(t),t}function t(){var e=F.getFixed();F.setPressed([e.x,e.y]),F.setCurrent([e.x2,e.y2]),a()}function a(e){if(l)return o(e)}function o(e){var t,a,o=F.getFixed();t=o.w,a=o.h,T.width(Math.round(t)).height(Math.round(a)),t=o.x,a=o.y,S.shade||I.css({top:x(-a),left:x(-t)}),T.css({top:x(a),left:x(t)}),S.shade&&R.updateRaw(o),l||(T.show(),S.shade?R.opacity(pe):r(pe,!0),l=!0),(e?S.onSelect:S.onChange).call(D,q(o))}function r(e,t,a){(l||t)&&(S.bgFade&&!a?_.animate({opacity:e},{queue:!1,duration:S.fadeTime}):_.css("opacity",e))}function i(){if(c=!0,S.allowResize)return A.show(),!0}function n(){c=!1,A.hide()}function s(e){(e?(te=!0,n):(te=!1,i))()}var l,d=370,c=!1;if(S.dragEdges&&Me.isArray(S.createDragbars))for(var u=S.createDragbars,h=0;h").css({position:"absolute",opacity:S.borderOpacity}).addClass(k(w)),ue.append(w),w}Me(document).bind("touchstart.jcrop-ios",function(e){Me(e.currentTarget).hasClass("jcrop-tracker")&&e.stopPropagation()});var C=U().mousedown(B("move")).css({cursor:"move",position:"absolute",zIndex:360});return P.support&&C.bind("touchstart.jcrop",P.createDragger("move")),ue.append(C),n(),{updateVisible:a,update:o,release:function(){n(),T.hide(),S.shade?R.opacity(1):r(1),l=!1,S.onRelease.call(D)},refresh:t,isAwake:function(){return l},setCursor:function(e){C.css("cursor",e)},enableHandles:i,enableOnly:function(){c=!0},showHandles:function(){c&&A.show()},disableHandles:n,animMode:s,setBgOpacity:r,done:function(){s(!1),t()}}}(),O=(oe=function(){},re=function(){},(ie=S.trackDocument)||h.mousemove(ge).mouseup(be).mouseout(be),_.before(h),{activateHandlers:function(e,t,a){return o=!0,oe=e,re=t,e=a,h.css({zIndex:450}),e?Me(document).bind("touchmove.jcrop",ve).bind("touchend.jcrop",we):ie&&Me(document).bind("mousemove.jcrop",ge).bind("mouseup.jcrop",be),!1},setCursor:function(e){h.css("cursor",e)}}),fe=(r=Me('').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),ae=Me("
").css({position:"absolute",overflow:"hidden"}).append(r),S.keySupport&&(r.keydown(function(e){if(e.ctrlKey||e.metaKey)return!0;var t=!!e.shiftKey?10:1;switch(e.keyCode){case 37:me(e,-t,0);break;case 39:me(e,t,0);break;case 38:me(e,0,-t);break;case 40:me(e,0,t);break;case 27:S.allowSelect&&M.release();break;case 9:return!0}return!1}).blur(function(e){r.hide()}),(le||!S.fixedSupport?(r.css({position:"absolute",left:"-20px"}),ae.append(r)):r).insertBefore(_)),{watchKeys:function(){S.keySupport&&(r.show(),r.focus())}});function me(e,t,a){S.allowMove&&(F.moveOffset([t,a]),M.updateVisible(!0)),e.preventDefault(),e.stopPropagation()}function ge(e){return oe(a(e)),!1}function be(e){return e.preventDefault(),e.stopPropagation(),o&&(o=!1,re(a(e)),M.isAwake()&&S.onSelect.call(D,q(F.getFixed())),h.css({zIndex:290}),Me(document).unbind(".jcrop"),oe=function(){},re=function(){}),!1}function ve(e){return oe(a(P.cfilter(e))),!1}function we(e){return be(P.cfilter(e))}function ye(){return Ce(F.getFixed())}function Ce(e){s.top.css({left:x(e.x),width:x(e.w),height:x(e.y)}),s.bottom.css({top:x(e.y2),left:x(e.x),width:x(e.w),height:x(C-e.y2)}),s.right.css({left:x(e.x2),width:x(y-e.x2)}),s.left.css({width:x(e.x)})}function xe(){return Me("
").css({position:"absolute",backgroundColor:S.shadeColor||S.bgColor}).appendTo(n)}function ke(){i||(i=!0,n.insertBefore(_),ye(),M.setBgOpacity(1,0,1),I.hide(),_e(S.shadeColor||S.bgColor,1),M.isAwake()?Ie(S.bgOpacity,1):Ie(1,1))}function _e(e,t){Q(Ae(),e,t)}function Se(){i&&(n.remove(),I.show(),i=!1,M.isAwake()?M.setBgOpacity(S.bgOpacity,1,1):(M.setBgOpacity(1,1,1),M.disableHandles()),Q(c,0,1))}function Ie(e,t){i&&(S.bgFade&&!t?n.animate({opacity:1-e},{queue:!1,duration:S.fadeTime}):n.css({opacity:1-e}))}function Ae(){return n.children()}function Te(){var e,t,a,o,r,i,n,s,l,d,c,u,h;return S.aspectRatio?(t=S.aspectRatio,a=S.minSize[0]/b,o=S.maxSize[0]/b,r=S.maxSize[1]/v,i=g-f,n=w-m,s=Math.abs(i),l=Math.abs(n),0===o&&(o=10*y),0==r&&(r=10*C),s/lp&&(g=0Z&&(w=0y&&(e[0]=y),e[1]>C&&(e[1]=C),[Math.round(e[0]),Math.round(e[1])]}function Pe(e,t,a,o){var r=e,i=a,n=t,s=o;return a{var u=a(4692),h=a(2235).default;a(6280),a(6918),a(2010),a(6031),function(){var i,a,p,n,r,o,e,t,s,l={version:"2.3.3",name:"jQuery-runner"},d=u;if(!d||!d.fn)throw new Error("["+l.name+"] jQuery or jQuery-like library is required for this plugin to work");function c(e,t,a){var o;if(!(this instanceof c))return new c(e,t,a);this.items=e,o=this.id=r(),this.settings=d.extend({},this.settings,t),n[o]=this,e.each(function(e,t){d(t).data("runner",o)}),this.value(this.settings.startAt),(a||this.settings.autostart)&&this.start()}n={},p=function(e){return(e<10?"0":"")+e},e=1,r=function(){return"runner"+e++},o=(t=this)["r"+(s="equestAnimationFrame")]||t["webkitR"+s]||t["mozR"+s]||t["msR"+s]||function(e){return setTimeout(e,30)},c.prototype.running=!(a=function(e,t){var a,o,r,i,n,s,l,d=["",":",":","."],c=o="",u=(t=t||{}).milliseconds,h=(i=[36e5,6e4,1e3,10]).length;for(e<(n=0)&&(e=Math.abs(e),o="-"),a=s=0,l=i.length;s=a)&&(this.total=a,this.finished=!0,this.stop(),this.fire("runnerFinish")),this.value(this.total),this.updating=!1)},c.prototype.fire=function(e){this.items.trigger(e,this.info())},c.prototype.start=function(){var e,t;this.running||(this.running=!0,this.startTime&&!this.finished||this.reset(),this.lastTime=d.now(),t=this,o(e=function(){t.running&&(t.update(),o(e))}),this.fire("runnerStart"))},c.prototype.stop=function(){this.running&&(this.running=!1,this.update(),this.fire("runnerStop"))},c.prototype.toggle=function(){this.running?this.stop():this.start()},c.prototype.lap=function(){var e=this.lastTime,t=e-this.lapTime;return this.settings.countdown&&(t=-t),(this.running||t)&&(this.lastLap=t,this.lapTime=e),e=this.format(this.lastLap),this.fire("runnerLap"),e},c.prototype.reset=function(e){e&&this.stop(),e=d.now(),"number"!=typeof this.settings.startAt||this.settings.countdown||(e-=this.settings.startAt),this.startTime=this.lapTime=this.lastTime=e,this.total=this.settings.startAt,this.value(this.total),this.finished=!1,this.fire("runnerReset")},c.prototype.info=function(){var e=this.lastLap||0;return{running:this.running,finished:this.finished,time:this.total,formattedTime:this.format(this.total),startTime:this.startTime,lapTime:e,formattedLapTime:this.format(e),settings:this.settings}},i=c,d.fn.runner=function(e,t,a){var o,r;switch("object"===h(e=e||"init")&&(a=t,t=e,e="init"),r=!!(o=this.data("runner"))&&n[o],e){case"init":new i(this,t,a);break;case"info":if(r)return r.info();break;case"reset":r&&r.reset(t);break;case"lap":if(r)return r.lap();break;case"start":case"stop":case"toggle":if(r)return r[e]();break;case"version":return l.version;default:d.error("["+l.name+"] Method "+e+" does not exist")}return this},d.fn.runner.format=a}.call(window)},5433:()=>{tinymce.addI18n("pt_BR",{Redo:"Refazer",Undo:"Desfazer",Cut:"Recortar",Copy:"Copiar",Paste:"Colar","Select all":"Selecionar tudo","New document":"Novo documento",Ok:"Ok",Cancel:"Cancelar","Visual aids":"Ajuda visual",Bold:"Negrito",Italic:"Itálico",Underline:"Sublinhar",Strikethrough:"Riscar",Superscript:"Sobrescrito",Subscript:"Subscrever","Clear formatting":"Limpar formatação","Align left":"Alinhar à esquerda","Align center":"Centralizar","Align right":"Alinhar à direita",Justify:"Justificar","Bullet list":"Lista não ordenada","Numbered list":"Lista ordenada","Decrease indent":"Diminuir recuo","Increase indent":"Aumentar recuo",Close:"Fechar",Formats:"Formatos","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.":"Seu navegador não suporta acesso direto à área de transferência. Por favor use os atalhos Ctrl+X - C - V do teclado",Headers:"Cabeçalhos","Header 1":"Cabeçalho 1","Header 2":"Cabeçalho 2","Header 3":"Cabeçalho 3","Header 4":"Cabeçalho 4","Header 5":"Cabeçalho 5","Header 6":"Cabeçalho 6",Headings:"Cabeçalhos","Heading 1":"Cabeçalho 1","Heading 2":"Cabeçalho 2","Heading 3":"Cabeçalho 3","Heading 4":"Cabeçalho 4","Heading 5":"Cabeçalho 5","Heading 6":"Cabeçalho 6",Preformatted:"Preformatado",Div:"Container",Pre:"Pre",Code:"Código",Paragraph:"Parágrafo",Blockquote:"Aspas",Inline:"Em linha",Blocks:"Blocos","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":"O comando colar está agora em modo texto plano. O conteúdo será colado como texto plano até você desligar esta opção.","Font Family":"Fonte","Font Sizes":"Tamanho",Class:"Classe","Browse for an image":"Procure uma imagem",OR:"OU","Drop an image here":"Arraste uma imagem aqui",Upload:"Carregar",Block:"Bloco",Align:"Alinhamento",Default:"Padrão",Circle:"Círculo",Disc:"Disco",Square:"Quadrado","Lower Alpha":"a. b. c. ...","Lower Greek":"α. β. γ. ...","Lower Roman":"i. ii. iii. ...","Upper Alpha":"A. B. C. ...","Upper Roman":"I. II. III. ...",Anchor:"Âncora",Name:"Nome",Id:"Id","Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.":"Id deve começar com uma letra, seguido apenas por letras, números, traços, pontos, dois pontos ou sublinhados.","You have unsaved changes are you sure you want to navigate away?":"Você tem mudanças não salvas. Você tem certeza que deseja sair?","Restore last draft":"Restaurar último rascunho","Special character":"Caracteres especiais","Source code":"Código fonte","Insert/Edit code sample":"Inserir/Editar código de exemplo",Language:"Idioma","Code sample":"Exemplo de código",Color:"Cor",R:"R",G:"G",B:"B","Left to right":"Da esquerda para a direita","Right to left":"Da direita para a esquerda",Emoticons:"Emoticons","Document properties":"Propriedades do documento",Title:"Título",Keywords:"Palavras-chave",Description:"Descrição",Robots:"Robôs",Author:"Autor",Encoding:"Codificação",Fullscreen:"Tela cheia",Action:"Ação",Shortcut:"Atalho",Help:"Ajuda",Address:"Endereço","Focus to menubar":"Foco no menu","Focus to toolbar":"Foco na barra de ferramentas","Focus to element path":"Foco no caminho do elemento","Focus to contextual toolbar":"Foco na barra de ferramentas contextual","Insert link (if link plugin activated)":"Inserir link (se o plugin de link estiver ativado)","Save (if save plugin activated)":"Salvar (se o plugin de salvar estiver ativado)","Find (if searchreplace plugin activated)":"Procurar (se o plugin de procurar e substituir estiver ativado)","Plugins installed ({0}):":"Plugins instalados ({0}):","Premium plugins:":"Plugins premium:","Learn more...":"Saiba mais...","You are using {0}":"Você está usando {0}",Plugins:"Plugins","Handy Shortcuts":"Atalhos úteis","Horizontal line":"Linha horizontal","Insert/edit image":"Inserir/editar imagem","Image description":"Inserir descrição",Source:"Endereço da imagem",Dimensions:"Dimensões","Constrain proportions":"Manter proporções",General:"Geral",Advanced:"Avançado",Style:"Estilo","Vertical space":"Espaçamento vertical","Horizontal space":"Espaçamento horizontal",Border:"Borda","Insert image":"Inserir imagem",Image:"Imagem","Image list":"Lista de Imagens","Rotate counterclockwise":"Girar em sentido horário","Rotate clockwise":"Girar em sentido anti-horário","Flip vertically":"Virar verticalmente","Flip horizontally":"Virar horizontalmente","Edit image":"Editar imagem","Image options":"Opções de Imagem","Zoom in":"Aumentar zoom","Zoom out":"Diminuir zoom",Crop:"Cortar",Resize:"Redimensionar",Orientation:"Orientação",Brightness:"Brilho",Sharpen:"Aumentar nitidez",Contrast:"Contraste","Color levels":"Níveis de cor",Gamma:"Gama",Invert:"Inverter",Apply:"Aplicar",Back:"Voltar","Insert date/time":"Inserir data/hora","Date/time":"data/hora","Insert link":"Inserir link","Insert/edit link":"Inserir/editar link","Text to display":"Texto para mostrar",Url:"Url",Target:"Alvo",None:"Nenhum","New window":"Nova janela","Remove link":"Remover link",Anchors:"Âncoras",Link:"Link","Paste or type a link":"Cole ou digite um Link","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","The URL you entered seems to be an external link. Do you want to add the required http:// prefix?":"A URL que você informou parece ser um link externo. Deseja incluir o prefixo http://?","Link list":"Lista de Links","Insert video":"Inserir vídeo","Insert/edit video":"Inserir/editar vídeo","Insert/edit media":"Inserir/editar imagem","Alternative source":"Fonte alternativa",Poster:"Autor","Paste your embed code below:":"Insira o código de incorporação abaixo:",Embed:"Incorporar",Media:"imagem","Nonbreaking space":"Espaço não separável","Page break":"Quebra de página","Paste as text":"Colar como texto",Preview:"Pré-visualizar",Print:"Imprimir",Save:"Salvar",Find:"Localizar","Replace with":"Substituir por",Replace:"Substituir","Replace all":"Substituir tudo",Prev:"Anterior",Next:"Próximo","Find and replace":"Localizar e substituir","Could not find the specified string.":"Não foi possível encontrar o termo especificado","Match case":"Diferenciar maiúsculas e minúsculas","Whole words":"Palavras inteiras",Spellcheck:"Corretor ortográfico",Ignore:"Ignorar","Ignore all":"Ignorar tudo",Finish:"Finalizar","Add to Dictionary":"Adicionar ao Dicionário","Insert table":"Inserir tabela","Table properties":"Propriedades da tabela","Delete table":"Excluir tabela",Cell:"Célula",Row:"Linha",Column:"Coluna","Cell properties":"Propriedades da célula","Merge cells":"Agrupar células","Split cell":"Dividir célula","Insert row before":"Inserir linha antes","Insert row after":"Inserir linha depois","Delete row":"Excluir linha","Row properties":"Propriedades da linha","Cut row":"Recortar linha","Copy row":"Copiar linha","Paste row before":"Colar linha antes","Paste row after":"Colar linha depois","Insert column before":"Inserir coluna antes","Insert column after":"Inserir coluna depois","Delete column":"Excluir coluna",Cols:"Colunas",Rows:"Linhas",Width:"Largura",Height:"Altura","Cell spacing":"Espaçamento da célula","Cell padding":"Espaçamento interno da célula",Caption:"Legenda",Left:"Esquerdo",Center:"Centro",Right:"Direita","Cell type":"Tipo de célula",Scope:"Escopo",Alignment:"Alinhamento","H Align":"Alinhamento H","V Align":"Alinhamento V",Top:"Superior",Middle:"Meio",Bottom:"Inferior","Header cell":"Célula cabeçalho","Row group":"Agrupar linha","Column group":"Agrupar coluna","Row type":"Tipo de linha",Header:"Cabeçalho",Body:"Corpo",Footer:"Rodapé","Border color":"Cor da borda","Insert template":"Inserir modelo",Templates:"Modelos",Template:"Modelo","Text color":"Cor do texto","Background color":"Cor do fundo","Custom...":"Personalizado...","Custom color":"Cor personalizada","No color":"Nenhuma cor","Table of Contents":"índice de Conteúdo","Show blocks":"Mostrar blocos","Show invisible characters":"Exibir caracteres invisíveis","Words: {0}":"Palavras: {0}","{0} words":"{0} palavras",File:"Arquivo",Edit:"Editar",Insert:"Inserir",View:"Visualizar",Format:"Formatar",Table:"Tabela",Tools:"Ferramentas","Powered by {0}":"Distribuído por {0}","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"Área de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda"})},7830:(e,t,a)=>{"use strict";a(3792),a(3362),a(9085),a(9391),a(2754),a(6371),a(4910),a(1193),a(5285),a(3431),a(97),a(2366);var o=a(5093),r=(a(8303),a(5199)),r=a.n(r),r=(a(6075),a(7741),a(7726),a(3847),a(1627),a(378),a(5775),a(1694),a(5433),window.tinymce=r(),window.initTextRichEditor=function(e){var t=1{var o={"./pt-br":8303,"./pt-br.js":8303,"moment/locale/pt-br":8303,"moment/locale/pt-br.js":8303};function r(e){e=i(e);return a(e)}function i(e){if(a.o(o,e))return o[e];throw(e=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",e}r.keys=function(){return Object.keys(o)},r.resolve=i,(e.exports=r).id=5779}},o={};function u(e){var t=o[e];return void 0!==t||(t=o[e]={id:e,loaded:!1,exports:{}},a[e].call(t.exports,t,t.exports,u),t.loaded=!0),t.exports}u.m=a,d=[],u.O=(e,t,a,o)=>{if(!t){for(var r=1/0,i=0;iu.O[e](t[l]))?t.splice(l--,1):(s=!1,oo;i--)d[i]=d[i-1];d[i]=[t,a,o]},u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var a in t)u.o(t,a)&&!u.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),u.j=682,c={682:0},u.O.j=e=>0===c[e],t=(e,t)=>{var a,o,r,[i,n,s]=t,l=0;if(i.some(e=>0!==c[e])){for(a in n)u.o(n,a)&&(u.m[a]=n[a]);s&&(r=s(u))}for(e&&e(t);lu(7830));u.O(t)})(); \ No newline at end of file diff --git a/sapl/static/sapl/frontend/js/global.8ef6e932.js.LICENSE.txt b/sapl/static/sapl/frontend/js/global.bb3e904b.js.LICENSE.txt similarity index 100% rename from sapl/static/sapl/frontend/js/global.8ef6e932.js.LICENSE.txt rename to sapl/static/sapl/frontend/js/global.bb3e904b.js.LICENSE.txt diff --git a/sapl/static/sapl/frontend/js/global.bb3e904b.js.gz b/sapl/static/sapl/frontend/js/global.bb3e904b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..05ebf6b5d927aaecd9edf0c7abab7c8ee9d462b8 GIT binary patch literal 14144 zcmV-GH^0aqiwFP!000021GT+NbKE$#Fu0#zLE-k7MOsKIQ}UxsiB`z6U9E1*c1y16 zhen}5k|#4!W)dtAR7xe~V&<1j$6a*XFQOMScV^RD?eA}z?;L=yRJyu)aU*Oc2^_o+ z&Kuy)lP&L^(q1ML$V>2KK2>@lj8wT-WFSiLN&s(`sfozK$z%^+j-F1!AItFl$?@9{ z=Wj!EW4tFj|C{dz@vFOQp}mwR9Jq+@zI{1<5&6Ik7j>SDh5z*V%iVyhSopiop6&(v z!XH21eHn1!KOeoM-`y9_cky@c*=Q8-rOZ>c3^hzOl=C;jz$ck}0Ub}PJi(6o!JQ0K zVW6P&umtl4rlQJB>Gv`;%%sXicEJiWe0|0)11^0=5Hc?+!-5X9AM9g~Ax>3NEg(1H zPZj9fbI2euN*`rezv#XSK_qh@c+)T7Cb$Fa&yg`&PAUUF6O~bkS`--=V4SJxlm)9` zRS$Cp=2)pO658QGKyzo}yvnkDIrWIuu&bB)uc39<}-i9!Ijt^2XP$3Hj7zsXW|qR zmBRODC&y}0s2p`yd^FRPUXQ|a6@%?#iK=~I=8thd5`=fw_7`t08p2zNzA zaP_3f)Xcxb_m2hS(bkv~M6@;HOPQK^^lUWZbC9#SiT0k3csW&i$Y+Rl1wIFx_z%7J-~$>9Y`Mn zH!Xt!yBok#BeUa=sEd=pFmn*-{F@njma2E1fmX>K!!*+S++yD_|%qyMq*EyRs`$5-Z+ z@@I(IGq&^Un}9=TYbe91(r=O2btlk-q9`CwaqI`Gz~ooWz^_GC0pk$L)ZsCNh}%KE zvg>o;>S6~Iz4NMlHycpKF3QnYCU|_XVVw#wgA%vf{~gJnr^a@E76Qh4Sn~Ms^h;WdS!aSj^@S zgPluDeIC;au+46u4IPTJIUidv{o-FKwHbJw-h8FOH6T}!Xvjp8sS9M5TxBWfi1}Anfp>Lvb>$85 zFS7_4CdIU=U^E(q?*DK!TCd>h>MC^qhn@0Jbjwr8O+~3tQ%cX;LUogm3e~OEg^V;+ zrmi3ZX{WJmHSGV{)PC6iQ&-xRit74y=-;MlcIaPQdaktK9+khy#R6hXxRSX{q`G{Z zF_nwQsh6FWqsNWT=h0%(ZSQKnDEmdeRw^pXcJ3CBhWYDCCR*W+Gg|#CMOQ2S?X%H% zO)f6@lq6y+8|&st#=h{!<2{syzkT-d+pd)S?aQYl{C)BCo~_&3ZEUw#q1U1cQTEDmpX~QGDoX`=keV_=I8Qf zh%TP-XP5j7+@4oOp|nBa+2{&vrs3j}tK6zT(PQ1D+_zG>!x^=2T$?CC43|RZGM{0u zeGvoKI2k4gONk=)tn^vZR5*#YMP0koWf@oFAw|9f~wPMzLwV z@kl#aVPkHvGQ@v!Sb9fVi(CIxn0csGm8U+0Hv#Xx->$vi?5+ds20{3vlDW?~*3Rp0 zMSdAq!Pln89H{$yaiD|4UY=*?$Kqeax^Jsyi@6<*ND+#%fW(|(O1zfe?#YR|xmt*u zD>uJXaH4Mhh_CTifF75w*P$-{TY8Vb1{Uxv-Wqc@WQg4)%3O>t2LnHgw?^EixOAsG z`s09_rL@Dery9$tPwFoOPLo8b$Z5Eo1^l8Ax`dP5_;4}0-*lS~<8H>dSox*M|~AtOB7% zTnsf=mn$E)7cvev8)*l_0$zl0V^Da_`CSRdZPs*!(2nehsR8ZFfEPadH?|Ey_&Y=; zKj&Q?^#U$qB=oCwB9vunIh*!iO5jUgXzZV?(xG&zL3m-yEd!+G#Y* z68VX`@zyGRbwFIfGq(lAESW>{Wuk5vX)xbx`$@dkiy@9;`y1w2hVjjIvi%JLW`~SL z-*{93q^>4N**C#9dv&mr%IjCeoh&2pgK#QQ><{OV6^*=lI1goBf;O*Vsx-2<&EP>a zcPh$f)d8xfIoTlYBeutJoE`dKLwQc~+AL%X(O`GLx5h!_Kb~;Dwj^7lV6|zmmW~)L z(By@3jH*gV)iUq(bTIInaaeX(PbP1k?5;*hJ&3A*g~_5&Pu+;7@f})HoP11G%QgAx6guM7M?l--?%uN?Os$=8U-(bQFM86{%h7Wy zZ0(H$?w>-e+)j!6=Do(8bA!alk)SRg2)0>q!&VL4mk!){i1r9#3fs7P(1K+M2JtCc zi9$7?vzlYn>4|>+2cOlmD(XPVJG4Z-lQ)q1D0;m|1--PX$4cj*{r7$z z1pDuBV4pOUC8T~gI}ZZ>&W)Nja*4C>cr-c&E^$PCMtRkfRc~B~Z|hUp;sQ?Goof?Z zn>mZ@^0IQt_Ur2F?zpVH&RVuf;F5B9TtnW%l{H+sp}MkH->U8DYu_}xy}K9<0Z3&j zCK;sn_YIz!!C>n=Bqn#NuHpW^#&?DC(QkdjaigO-t~9Fnq*Wni!tNQ|=^CyfuRS0> zv4~EG-qzcQ@G^#wq&gp!P6(}p<_G%%l@fEH27}RoIV4$qrvZJ^0!BJO5HT3|D)x0O z5UkF8(v%4Jq-|+O@#{`oJDS&7DyUO+XR&{3=j-k!g7D_agx^LG-afhJH@ldyiz)bY zyZhvtFCz$-PbPdGK{$VM-5L9bR$b}t#C;PkU!8}j2N5kJVbp~4UfTHb&_4|!$HlVy z3`xXkn5rC5Bs}df+b&&l3u$XPWQkT~ITup1h&krNI%EA^Yl+@~A-%e2%C|<`;l^nV z*LJQ)9@~b|f`|yjdsN1BH{2$g@&o_CnNd|TCt4aJ?e4jRo}tvyr=b4=hBj01gC)0L zr3DS(_l?Q)6nuuFWh2$K8sHb7HNs8JKD`tM0|=9{^zT$55@~Lu5ub?U%ZzyTvC5Q= z*m5onps}aJmA}Kz{oXQwoe5F@ookLt1HJ8C?p$96{5-7LVwi|5^WX5F{4T-;IG{CD zYTNjIGXeG5P;=DSS#hMVCWA92PK?$U9M z>48dha33vuJ7=l*`g|I$er zQ_62*%LiH*fKHMHdOU}!GN4b$K!cNb|hgd*sozP`8cDcid;&wI$e&^{!oF=WPY{h-EhvVih>6 z%@K_^ZQRFK0Y8b6q`HO%gQRV=O-5z6)75}iu(9)OJR1EE){LNjr4IjmlBaMJ?Tt61 zr@96`&D1igJ=Lp#AN{M1Fxv>@d%L56e_kuTHg9d)u4~Unqg4>5lk6*==$?#>GEJ@1 z*HR4x%|tu%*i|#r74V~gSFxWU@|@VN$;HfetwRgDgfVCk`!RCx3hKH~(1Z+w!DlDK zxvBhfcPHpPG4&<`(2+) z@ims@rK#M5}h@1~h7j+N4B8GS-tTTAJ^5kvelahq8@ zjY)W4#)}wbg%xk5_l+fTpaR1gFM&!7mwZ;&VQZLyv4*IwZ`Yaqi2Yx#cx$cN;H$Ih z1l6`b-8Kg!bUO`Wvpo&?VjJikhB0g}0)Bk3+{PUY+wt+xUv487-5$)gQU5gC@$Jx` zZ6mvyZpVht@Xum92EN>mfqH5UR~tI<8T?>>-GKb_YFD#N-bz};rbV|OW+6?e1bo2qOJrnYW(C#md z(8hX382=RZ$Td;XqfRuMY4t_3nRBkG^5G4K@bv$FN}pCMK@Qxr9n{NrR1bJ- z)Rw~ikRTa4s-0p@R*4Jj!=Z0TbICEVlO%K*1Wq^1cpC4$7;&s&pUnKJ7PGf0#WJ&(`h(f<6Psw2ba+uK2PF~8*C(@(m+-Q8Q(kC@uRi~`0t zH0(?wZM#LhmSr{9c(gw|DC(wX+uK2LF}vi`n0^+q4gTSa7}ahphnhH_#^6tF$9lHC z8psi))ta6`c_`#B27{^FC5vWfECN1l=5+a*)YHwg>hjvbP2#mIe$AKsHXiNY9!%=N z-D1SOV}p~6+soFQaUHXHCec07@tl-xx@WmZFB>TPnzD(k_i~qQE?Z$^d>LQ!<*(&@ z?R;7-edByCgRZ2$4ES<&3eAay;45@?C{@XN-YV4A!^Bd@&qB|@1ZZOEp<83wMRV>W zp>}0`Z^tD3cbSQmpVv5wP5dQhviE$n+Qd7Ke>Lx@8}3ZdalldjcD(-wYvYK7lK>*c zomZjDg0aBoIzsI+*&HL)9J?SJB$3W7>qumWtsCw*_hUiQ%W6p#C#SnG$CmopX+z?- z;yn{+BzbEg?N*E=aYY9%YRGQpU{Djr74I8Rqnsm^K2<41CGXnsBF)hh*{!Gax5fd- zP=M76Ew8b!pyyNOdhOkpKqgUHYoOVhlz5BYUB@s_-ZEv#Jcf@T+iQRo{8Q z@7A3rQ9nwknOxG(6ks46#D+sG_`GK|c=`-wN;v%5*1>+&SauD)EXdP3X9+S*3e3pqscI z?q_g+zjYqc^3^)DufM(kZh>iiSGaQR^rJ6%-Ix^cyT+Z^-Q|x~%867uoT{WM{Q%K$ zzY(F_Jc`DfgVvJ4!0!ijV1#SyM02FrCv)dx^T;MEN-ML?pkww>;9Gxv*ULG9zG387 zRL_-l`Hs1+YwW3BzryR-Co*Kf;yvO}<&#ca7zW(_GWF~a>iW^Jd&Z$Y@Uja$fi*i) z19l57PdbMFfLf?ys;tC#C_6-_eo)x1r6c&V40xmAVgxU#zgCRusxK6~%l~;5$3uc# zSEAd3yKTwaA-xl9tBSYv-t>Zm9*`#F?^#dt)Y0Im7jN7L>#)4_xETG8S#95 zCvsc|zUD$3^AR5h{G^seuE76Fs|eOX*2BJ;fRBUd1pF}{ch~gF*#-XKA5kcN&o_Hc z-KBuz=1ks6O$NxI(`|08-@T@>asSc4#^7zX%6$p>g9O& zD-_JUufJfKZhJ=^30(AipF0z-dJfZ_3D-S; z>CQEm@oYHddAuAhcxl6##iYcD}mH^dLRN z-W&*wY~L1hW}2VFwon$>Cz#^*CA#>%K?n0m4m(sVzIiveTg*?R3~JI~}I3 ztbGc2io=->pcy)QO8Gv7ONwUk2Sh|8q}XxENhpBRvLBqD$vuTqlfO!sznVZ4Gg2AzmHV z5XS+(=*B3MSH71pz6?5n!k=L6m;;5E3ZBP?m$9mei8uh-!GcR1jXE&ycv2agfL~~y zbIHq2z3-qO+lPLMTM8Ma$Ucm1!ni&>fw835A%V;(X-M9Xwz9Jh(Tnd^T*Mb0ot*Jj zbE=;qPuV3`o%<0;U4NSazERLR3-*n^y+e}@#G`#^uS$UCssudRrDLXYwk+wY9 z42lS7dzf=+jlUb1J1=6#ou{$m%IJNhAVu^gVwmE-L4Ps2Dq4r8Us&@iI*>2?zB3^R zZ#cRG6#6L?`YE`M6_+S5& zGM}9n04XnGjislt#)6AjW0_g35&Sf)twD&MeBQ;ZWIOi9qtP%4b}EilbdOUN+sV#& zG-Ct2hEgih(^ZnB#KcY zbEY+sHnfPRfY)L4t&gpqkk)#FjeKHllo{hqm>DU?P)A<9q0?`_vr6%bla(Rr20Npd z_BCQfxxp!a`((n8pIlql{U2qD9^IacwuR)!7K+y6oxq!hHh@jItLzaPv;iY4Udiar zoj^}`*+g-CUah);(1~LV7Qpe!NA;m8h^Ouppq&T)Cg5)$vspLyPK(UQI5^-Itt=%Bsu6`=p7pW9&`qGGq2aNuZ*DW?}k{~_^xAQ#S5nzQ)BaDJ;C_e^EY5Z za}dy-?Pl$9aiVq3kb*cN5GNW7Mif5h*5-f)g`Q_F3ZL?x>oW?U@z!B#EAFWK(WrO) zf5dyP+314d#X2S93?=9#;~160F=&S~I`vmB*(LA0kslSR0h~*8Lw?84ihXEY+4#~m zG}AP8qqS%_WPWl}=0r(6+))dX^lak-qg`IxT%xC=5$}sJ(e8-15=pejo1;L{#fXnC zxifmyZ}lY#^j3!@L_OQ-?n?r1z}&$g}!=8_9u@SJO|(By_BT2ctuvtWbPT|EtUSlIwt<4N4=;UL=`=mmj)#ZHT9C9W+d39 zy2L)Q18HDU#&}BDzNWGEEx|;RWblrPIPFBz_j0%icz&Vmk$DblY>s##M%&bvFxdIx zswT-HU5@4Vstkz{ADMvr;{Lv$g_k8!Hd0W^!52SR<*4=+@#D}-9}dQ&LpEX&W5G78 zIK*S#yFk$$UUYrihVAVYS9r+@v84;9*|uNC41TJhG)MJLd8g@$m&^NmbHSD{`6A63 z+b-?QW-y2~NX;^4w6df_cF5&s_EnjSsFZ#yK_<}LcBKJQ;Y7?uN zF$_eeV@P)xvMaMpmXN4C#V{9N#ut0f;TeApPx%=3_;_?#AOGJc#s9$1bWP@9*~ zz7ew_x*y{*9`P)eb(!)Y+ZXZnb{XXHi2FL07veHFh{1+c`nj!TnklS&M+d40Nx_?KhU5GD3g1w#Ne`X4&$6AYg5Hdg1B<3?+)JOzT$Xct zQmdOTa|8NXWOTn|FNZEmi$}e*Oq8@-YsrLz8`2T{y(k`~7Mtp*ciLTp;>gnyRpka9 zvG{^+v7?&S+dUGEcy~#OPtYZ%1l7kT+G;HxH3Xw20(STMmJqC+T{p20u??J)rMta| z1&4UM9g7%VxyJV4!d&_)v^}tb*BVCKtPS^j_P4nObIa_TIPD85hb9sMcB@-xttIQq zj5puyWXD`1%l*CIdq*$OT943D7UrZmiP(g8B@ifVR)|BahE%9V6W)7^6*q@g{zlXq z#t^k{7&nY7wiU;Cpx8L-MtKLZxWC`(CB2FT-IvoO#KJb#;`zwUj!{KT&8JdBO@rSN zAO_^DlVPgQC3m*d`a(+GzoxZ=MMg^-FKR2ndv*PFL?Ha#usU{S9O0`MrlEt)pxlN- zS5tS`j$LS=D@amJIIrz#VC6%jKlCQ>oV3Nq!|JMnZdN)K_eL}B zOfvWz+aQH-wMLj`vkbo0$YE#IqaKG`Cqj?Sl55BtLygWvuzK2Tvr`-N$I-<@WZL}| zG!3HGP_z?*%&NVU1Jbiudpl8UcYeK)d`buND)~?G+pwg^zW? zqZub!4u|nq1eQK_#=UX&k{%g-Lo&>2n!TU&A5g}<=m??rKcKXPk) z=T_QQ0vq%pH+7Y&1j1$X5v0h0g zihdo|wB;@yL84+GEh$+meF2yK!cGIK50rRW=u-Bbo)x7bY*2De!OT_ap+wERR6*(G z%6M=i@dBh(hnlRqt5u5#Vr2~u);JQZ__L>bdlB8VZe)JDNC3^MC*yB(pB3in^%>)L zXOOChoxxQ6j9SL`IljJu(!C#726Gdojlfq`+(ztJ6%yY*iP8YRX86Xex{CL6vBt>;ufS#9B^_$Yc_+6Z7!bOeTs(1R7(QBX(Zl^?`G&^W13p1yJLxX7h-h z$ugnjssLRkS{5c^=W3z>U$ElyYSN_BBV6PBu;UDb_T0Y1OZg)9o-XrtY2x8;5C4wC zKg#4R_b`?R$6)*6J^WuDUQrD?6%9xNC}6XQ9pm-TB9lMUB-l(FrQNF_l^UcGjQ_4G zjhx;_%sxmO5qn)_85l1^6vDohMtJ$dzbg-ICb^)7KM;9`v=7w*cmrsLp$q?0yL@lt zLgtm!o`$5t@tx%BAV;*cq5(O^%XuUA4iZ{|cQij`#Own`bhAIJN_!KnmL+Jy|NI-{ zIj1BI6!9xbpe#|VH*@fkOcoO*bQ*e}><0*{5-8``=xqB>JI6aecwgX_V7zj!v`H#s z6@3tCNT^zQxwwXzNR_s8Q&!lb@B}ucsAZ#YvLF7cL3k;6c)@cy1^w_p^F)f!`=qot z71v5r`*^pr5!qaot{dLaJNAa&4_>M~14)LLNAur;AhQ)a787{*8^JTqY_d0I-3)Ks z=Ir)!cH5l2e$HN-^R%Dyw9R?e&w1A7Jn!c`w>>8Qv7yU&>*QDZj9FjlG-iFJ*O>K{ zZe!M0`i)tSJN`*S!y6;kywNhek=IDXaw8;JT0UtY5F~dg(zl2IOyx`=z0+c*MKO=q zC!rtyI@4mR7=Mjs_n#_-wD71bM9KI`ZYj>&g-09J0hJNMUz#!^o@lqq)zXvr`3!-! zD!4J;LZuLT*dx3R&s)kYBd7^@1(r%ZQFh_0+{nzkRh4JCleK=?tH3=qog$Kd^b)n8 zJINCy*B+GS;jf;UDJ?u$V3Ud}Q&@4XLJte%1|I&ADz60n@K-8G!ivEvC0G~Wr>xX|5OP?tUpvD z)r5D9?#%FxvSKb+#6;*#LN5uuFbtc_?=--d|HUo;>;DeD|N4JI@4x=DpMQpn$|5F1 zPtt!`=YL-moyw0w?{(-M_cQClC!u#j|4&^0QJ&1vdGPRm=84jR@egFd{h$`W_(>YE z6THgtgy?CNr5?#j-cp*mC%g=d0nNRsLLUaCp31XZZ*uE0O72;0qU2sG$~oY#G9^d+ zQhA9M-U@kknc!{th`T4Lm%=q5=HZss_&}?efx&yjOPEzMRh}py$DM&6sKFd;>fs*? z(5mD}upj=04~5E&qDIj~OfR0QywV8=sVYOuiM+YE2CvFXaSf?wkCB(2&_G+QtlYy= zw3ss+gpm?$cZ0>D2qBNxikqD(5=LrS%?z~NU2SQLo-??pbV zFan63q*5(Via74o@zz3Op`@m;&S`awheOUHcERJkVBO39^ zD})xFXr&=`hCm4IWUe<&W)0hlUT+u5$OK*Eta(H-;>1(0u=n&xB2*Y=uO*~-$Qt>1 zM~M9_4U&M*4}UjA0e%m+OFH|{K8Z|RYf%mp#44m8R-7b1iG6XB;+dK#6pPN( zq99k#3MW@Hew3zo_&8#3aTCJB-xLw*q#}`P0eOW-Hj#!W%FAs^7s4o&bs>Z|5n7YX zGzG1Rej^w}$BTgt*ghO^?Xi?okqHI@#rC<}G#QSBmhu6%AR0X)NkaA$PNIN!GdyX_fKdP{_$s4MCC-c-+ z2|_1xcY*%Kx-DzmPZo5$6ueGDtoDZnO#_th|>+A02Ud9EGNZ ztQM}tvI}0=tcZ58(7Crz8j#uGRLF_&7DASmIU(sqDqEE(%iWDu4K1}oOI4B_gBko& z-I9AiAyDM$tyg0?X^c)3fB1(1B7478TKAKcK_s7j|1JGv$=gtEsue$OXjZ%ZSQPO%@5x+Nm> z%0eVWoy$Tz{LM-`-nGl^Pu)h)?i9Xuw{zjIX!qROWH!UM0i$*<+ez)Iq$$`yQCjFT z{I~%!uL@@&L6L1K@q!Qbog^e*cqQZpC4;%r4}aBCbxQpbxX6thcFMfVWYJ6lNw7aq zkva*74mDgm10BdVv4(xy#jCd)@ySZ?xX>R9ySmK;AkbfwT6i+=YT7?5)#RwEr>EPj zW4t&U`74=oT!0BXgS19HO#Y}PR%h9UdvW;tnpkg64C1wx#6HgFLgUxd+HU01$P|7? zevT%L(pde9#BW09j6}3+$Z&8U9{zp}lE#)Ghx<+}79wKb2^1Pma-3vD7W_r^?5HTR z+lU<%nYD1d7AUI!pfVa#jb!K_*g-pMcP9!XcIG6|vNxUlZhD6=tP%e;lF)~!DS`w1 zjB1%d!vTe6p>|^xCKNmt^m!;Ww&^Tl-|LKVdt@C|jBCaC2Rx_@wt;mn%!tl3O> zKZ+bOl5r^9uJ{0q^#FO33&BjbAs88v{DG+~LbVZ)0vu5$)`B#&JX~pfqpwV*8y;RUraEf*;A$II~uKpvF|_ zy|IG7%##c^taA0Kx_<0DuEisgh>2y3yVo)W)j{6threS&AAQ$=YW&>@yMR=RU*LX6 z8BG^T5nf3QuGaBA(PRn6KdBP$`l=;ahk>_f^Ml0%bu3g6CO}87sX3{Ir@HEeL{u)6 zw)Dso6CrO@gaZ5oIowH|tr9WErSBBI@gd<-)7(uJVTuw zCRUy-9{!3~i#44WC7D8)vx0YwBVilEK(8cobA6bR3XSm_sTSMis%Bn?9_*@a9BkV7?n$-2MQ_wT;63B?L zAI)@Cka>Xe$>4zBA|U`;%xjrS-6`*;K$Ec(&l2}}@LZs124x?TZYg~Pm_ngQ*mqN* ziG9`+;jFUkOf7$TY&GC}N4#jVS;p0Os!(um$@EScz!r3I^p(uHaU;)a~i z0zICegcfXlf*kbv968|iNwUzLc}g4>9ILFXaiS!IDILa?jN7nT_Fm{&g+i2zokhMt z?-qrS=2{0?PhsfckHs~6QSUk+#hvB-0>{ExP~O7~a#S+j)0Gi#tz`!-O2p!wGYzdP zwrg)1GZ8h3A`prnvT*h&SO0mU3R062Rn&%H3c>ChgV}FA%3{5A@3*K}ZOr+B@y{rT zlfRLu@2N~v)W}W&X~AoI(;qv@r!K$t$+)fKwyu{nUJi%Mc&5MT?7bFA2@lq@>-D9w zYqQ{r+J?Ih73^P1eqfEW@=ht5;xmRvEEVN-Ep5I;objdyO=_m%VQ8H&}<5RypyNKLsU<3Esu^Fv3tvF_a3t&1r%9q8b(%;&QrV)CwM4g7@e3`o&WU_1Oq zmUI&K;qR#;lfLWtnM~#$t^AP&biAS-;2pjHJbd?(d_-uF>?My!HYD6y3A zv4{VocI}d?);I`V0jYARn;|t0?DSg;C~unT=6%HwsVdicA6Ae77BA9#@$KHI6SL3I zrHr$Y7`BgJ?0jjzcfV)9d;fCut^Eeo-pers?7w*SlmhnmUeNo~mo|WZJbp=E27R_` z;rE{IQU1#pRBG?}bNBh7SoqII2&?gXqTlX~Y_ajnmjQikG|cg!B4s`wy`Z{Yym&gc zzq|Ayti5laQmy0XyD#ilM(HfUvlkY8{QTup`w`N;y`cU^uZvNkQ2P3#Ub!^5*0|`1 zf=X|QgB>3r)z+hl}y>?rmr8t>Sj?+0&19=Xi`eX93>Vm4WBfPK@oc48Xxz8I@-; zfxLvPFK`>NS&^~TKHdj_af%{E7h*i-cz+gEi7|W_)=9(1NZU0WvLAQ@Iu489ce5YF z9gXdWaL0s_crb>x2cCop_Uj`tuA<+>y8g1RUwZd|&!eBAS{$ zNxXXSmk`@$|3-vos8RXA;H?*rzDuX#I~MK~W;oF-!hOl>*YL-(PO;tH$xu~;KJbRD zrr>J7dkreyFfIM|@>|inMOM12%|xhtg%_IEhYK#?a-WXz`1XSa?jX;x$Q#vgq0%Y? z?;DD7`-bjSR4K&l^y8cF-@m>3@bUB2yN}<0c*8iX=uWlr@xc@CBZVJQuCMS+FNXQ4 z>>6Upef)$48p+ETuLw(HoX8cPPr2)iv1;iD_1ab3>`sG$)RYz55989Qz7%)9t3A3~ ztvFu2V1w>V-6}V{eXj5npe;%_(l$A(DqO?@kDy%gD*PBXH)h1IaAvpgNWZ%nRLA3; z5ts33Umm3OsS%0yNz@QIzo5dGae5)~82uKWFd6M<2d0M4wzmU+Ydlc*_v#?V?{IbJ zunIp0Ax5;_`VhaW!jBlyXfCqLAUHJi0m%gXY&fLbk4oHq>cC#Vqk>?+#2aL4C`nMf znMgm6@kqKo50f`RjIdI%!tmL83^H!UHad`lL3$yF(la681r^s%O^D=1G1(GD^E5$fY@6b#vfWmjS98-6G7;%9E?ySTItxCV8%&>rWR zpb8bj5sm!7IlnZdd?;x)hph@o88sX9F$Xtj^6Ml>a9=bMeUi;2nx1N$2qbxt;+&tmrVX?zUJ?J1syfJj16r^IrU{&D!gAXeuaAj%LR5D6Q1RS zXE`C4UxkYcaT(`$8jQA>j!VD7TYm5y*kFL)!P(CaWOs+FSYBjEP?Vo=6$}Q+g}StV zFGiR6RTVsUIBGY*M?BuleTYlQrr{DMg-E^}&#U}PDT?fBs!4%K|4H`!{l#T~QOIxc zFqFF;oz7gj>kzAQ9(R*%l1+dhaJOJ$cidgg7tcmdFFEek%13E92=*}-?+5pT{r?|F KZX$N050+ax&QzG delta 19 YcmaFC_JWN|zMF#q1ek<3a>X$N053uV$^ZZW diff --git a/sapl/static/sapl/frontend/js/parlamentar.f0710dca.js b/sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js similarity index 100% rename from sapl/static/sapl/frontend/js/parlamentar.f0710dca.js rename to sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js diff --git a/sapl/static/sapl/frontend/js/parlamentar.f0710dca.js.gz b/sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js.gz similarity index 93% rename from sapl/static/sapl/frontend/js/parlamentar.f0710dca.js.gz rename to sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js.gz index 2f6b016a18c3194ca9fefc40a353d5d1f2982c9a..8caa759f5570a8507241ceb007bd94b4e3bc8789 100644 GIT binary patch delta 19 YcmX@dbB>2gzMF#q1elmNa=EYp04wDKdjJ3c delta 19 YcmX@dbB>2gzMF#q1ek<3a=EYp04y~FivR!s diff --git a/sapl/static/sapl/frontend/js/skins/content/dark/content.css.gz b/sapl/static/sapl/frontend/js/skins/content/dark/content.css.gz index c985046145f0ba3ed6c5bdd0d2d8396f4f6e9002..6d4c9f0cec53ccc29811708cd47aa0960d15ce58 100644 GIT binary patch delta 19 YcmaFK{F0eVzMF#q1elmNa@}VH057lvH2?qr delta 19 YcmaFK{F0eVzMF#q1ek<3a@}VH05AXqMF0Q* diff --git a/sapl/static/sapl/frontend/js/skins/content/dark/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/dark/content.js.gz index 0443ec65e43b6f8a90cc1c5410bda90b0a4e3e4f..9ecd6f1b1b80fe57b363468241d881209b1b475c 100644 GIT binary patch delta 19 YcmbQtGMR--zMF#q1elmNa&a;N03r_pwg3PC delta 19 YcmbQtGMR--zMF#q1ek<3a&a;N03u%k#sB~S diff --git a/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/content/dark/content.min.css.gz index c985046145f0ba3ed6c5bdd0d2d8396f4f6e9002..6d4c9f0cec53ccc29811708cd47aa0960d15ce58 100644 GIT binary patch delta 19 YcmaFK{F0eVzMF#q1elmNa@}VH057lvH2?qr delta 19 YcmaFK{F0eVzMF#q1ek<3a@}VH05AXqMF0Q* diff --git a/sapl/static/sapl/frontend/js/skins/content/default/content.css.gz b/sapl/static/sapl/frontend/js/skins/content/default/content.css.gz index 16b57032d93d5110365aac7334ac8222c8477504..56afc1e291d34134e4d6f20fe08e8a6cf1391ea5 100644 GIT binary patch delta 19 YcmX@Ze1@4zzMF#q1elmNavfp>04rhx-T(jq delta 19 YcmX@Ze1@4zzMF#q1ek<3avfp>04uTs?f?J) diff --git a/sapl/static/sapl/frontend/js/skins/content/default/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/default/content.js.gz index a33add13513147273bcba1522af6e715bfd0fb98..ddbe1c3f2b9d71ec6cc81b6e41ca8672fc5d1c8c 100644 GIT binary patch delta 19 Ycmey#{F9kWzMF#q1elmNa=m8+05T8+WdHyG delta 19 Ycmey#{F9kWzMF#q1ek<3a=m8+05V_%bpQYW diff --git a/sapl/static/sapl/frontend/js/skins/content/default/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/content/default/content.min.css.gz index 16b57032d93d5110365aac7334ac8222c8477504..56afc1e291d34134e4d6f20fe08e8a6cf1391ea5 100644 GIT binary patch delta 19 YcmX@Ze1@4zzMF#q1elmNavfp>04rhx-T(jq delta 19 YcmX@Ze1@4zzMF#q1ek<3avfp>04uTs?f?J) diff --git a/sapl/static/sapl/frontend/js/skins/content/document/content.css.gz b/sapl/static/sapl/frontend/js/skins/content/document/content.css.gz index 26e51fb6783ce4da6b46162ad4336844a3800f0d..cddbec4b36b5b967d9588ee54a1c341f3ae56ef1 100644 GIT binary patch delta 19 XcmeBU>0{xN@8)0t0Vd{+Tr5lgAyERS delta 19 XcmeBU>0{xN@8)0t0Vd&%Tr5lgA)x}d diff --git a/sapl/static/sapl/frontend/js/skins/content/document/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/document/content.js.gz index cf70a53bab06a6fa13fddc92f819a5bd39b8cc8b..343390fca97f065bac78718cb65cfd861dd9d652 100644 GIT binary patch delta 19 YcmdnZvYUlVzMF#q1elmNav3rK04M(gE&u=k delta 19 YcmdnZvYUlVzMF#q1ek<3av3rK04PrbJ^%m! diff --git a/sapl/static/sapl/frontend/js/skins/content/document/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/content/document/content.min.css.gz index 26e51fb6783ce4da6b46162ad4336844a3800f0d..cddbec4b36b5b967d9588ee54a1c341f3ae56ef1 100644 GIT binary patch delta 19 XcmeBU>0{xN@8)0t0Vd{+Tr5lgAyERS delta 19 XcmeBU>0{xN@8)0t0Vd&%Tr5lgA)x}d diff --git a/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css.gz b/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.css.gz index 2d4dc730e0ad9aafae47ee59f22b77fff686ac60..060c03104832e9984fe1acac2b23655b4d4630f1 100644 GIT binary patch delta 19 YcmaFE{DzrJzMF#q1elmNay?=M05Bp1J^%m! delta 19 YcmaFE{DzrJzMF#q1ek<3ay?=M05Ea{P5=M^ diff --git a/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/tinymce-5-dark/content.js.gz index 42641a2c5862dbbe06c40de7c78fe2af88ee3a44..f64a8e0b0dfec8e4e8ac43cb53127de7845c794a 100644 GIT binary patch delta 19 YcmbQuGMj}04rhx-T(jq delta 19 YcmX@Ze1@4zzMF#q1ek<3avfp>04uTs?f?J) diff --git a/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.js.gz index d7c7d80361842961c36dd2cc8c2f1b3e9cfdca00..f4d12f4c1dae8e36a7f147a019974a7d2dce0a85 100644 GIT binary patch delta 19 Ycmeyt{DYZGzMF#q1elmNa=l{&05R$WVgLXD delta 19 Ycmeyt{DYZGzMF#q1ek<3a=l{&05UoRasU7T diff --git a/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/content/tinymce-5/content.min.css.gz index 16b57032d93d5110365aac7334ac8222c8477504..56afc1e291d34134e4d6f20fe08e8a6cf1391ea5 100644 GIT binary patch delta 19 YcmX@Ze1@4zzMF#q1elmNavfp>04rhx-T(jq delta 19 YcmX@Ze1@4zzMF#q1ek<3avfp>04uTs?f?J) diff --git a/sapl/static/sapl/frontend/js/skins/content/writer/content.css.gz b/sapl/static/sapl/frontend/js/skins/content/writer/content.css.gz index d02d1625d6b8e196a267f8e9def8cdd68deede20..df963682a10efad192e27a1ba0f64f1578ea8632 100644 GIT binary patch delta 19 Ycmcb~e3O|=zMF#q1elmNa-C-c04-1i1poj5 delta 19 Ycmcb~e3O|=zMF#q1ek<3a-C-c04<;d6#xJL diff --git a/sapl/static/sapl/frontend/js/skins/content/writer/content.js.gz b/sapl/static/sapl/frontend/js/skins/content/writer/content.js.gz index 7a28a6f1892d97893d95d5e791137132f715f513..628f510c27ebc2acddca633e2fc1a140d84976e2 100644 GIT binary patch delta 19 XcmZo=X=UM(@8)0t0Vd{+T)!CsA^HQ0 delta 19 XcmZo=X=UM(@8)0t0Vd&%T)!CsB1!|B diff --git a/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/content/writer/content.min.css.gz index d02d1625d6b8e196a267f8e9def8cdd68deede20..df963682a10efad192e27a1ba0f64f1578ea8632 100644 GIT binary patch delta 19 Ycmcb~e3O|=zMF#q1elmNa-C-c04-1i1poj5 delta 19 Ycmcb~e3O|=zMF#q1ek<3a-C-c04<;d6#xJL diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.css.gz index 34ec545806fc8077fd03899b678a4c1f860b5145..5943b18ec211c497bdbce815401f7a48217cd628 100644 GIT binary patch delta 19 YcmeyQ@kxVAzMF#q1elmNa%G4B05t;yEdT%j delta 19 YcmeyQ@kxVAzMF#q1ek<3a%G4B05wwtJpcdz diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.css.gz index 0d163d9b66683a3344510e0037b1d4233e1eab62..f0bcd5b7247f3619a520b828da03a03b5d817c6a 100644 GIT binary patch delta 19 YcmbQNIa!lSzMF#q1elmNa&?LT04NIsk^lez delta 19 YcmbQNIa!lSzMF#q1ek<3a&?LT04Q4nq5uE@ diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.js.gz index d961f9d247b52baaf58226f54b978af53a9be314..3ff2508e345bae5fff9252b56e53ee4944f31146 100644 GIT binary patch delta 19 Ycmdn4yIq${zMF#q1elmNa;+5u04?nV2mk;8 delta 19 Ycmdn4yIq${zMF#q1ek<3a;+5u04_ZQ7ytkO diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.inline.min.css.gz index 7789bd14b1081421ebaf36109a09a27df3fe1768..dc4e173349a6e1681f5ccf6f0b4032d7c685355d 100644 GIT binary patch delta 19 YcmbQLIaQNOzMF#q1elmNa&?OU04P@jm;e9( delta 19 YcmbQLIaQNOzMF#q1ek<3a&?OU04S#er~m)} diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.js.gz index 978ce907716e3c6a7ecfe64b4014ec1108ec3b16..8e766e26af1f702314fc24aeeae13e60dba92ee6 100644 GIT binary patch delta 19 YcmbQNJ6V@YzMF#q1elmNa&?LU04S9MoB#j- delta 19 YcmbQNJ6V@YzMF#q1ek<3a&?LU04U`HtN;K2 diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/content.min.css.gz index 22306db44a58778be3b07935fd945edbf58c5cfb..3743c59e455089d2064d883996a1327c9fff5003 100644 GIT binary patch delta 19 YcmeyW@l}IMzMF#q1elmNa%GDE05x?4HUIzs delta 19 YcmeyW@l}IMzMF#q1ek<3a%GDE05!z~MgRZ+ diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.css.gz index 71ce365bf158e71e3ebbc7e583ea4d1e338e6a79..c3722dad06382317975d354c6e925138f5d610d6 100644 GIT binary patch delta 19 YcmZ3TzB-*tzMF#q1elmNaxF9l05kRkbpQYW delta 19 YcmZ3TzB-*tzMF#q1ek<3axF9l05nDfg#Z8m diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.js.gz index 89476cbf87702b969b132146f3b727f8968c5c4c..fe6fdbd62cc347b5af394cf44855627a04e687e7 100644 GIT binary patch delta 19 XcmZq3XvpA_@8)0t0Vd{+T;GfVF17@A delta 19 XcmZq3XvpA_@8)0t0Vd&%T;GfVF9rmL diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.min.css.gz index 4c16385681427de05c2d4edc62863857d71646ca..d8b112255af40a60fb130cc931e11361f8cda830 100644 GIT binary patch delta 19 YcmbP~J}I3`zMF#q1elmNa&;I305CuVDgXcg delta 19 YcmbP~J}I3`zMF#q1ek<3a&;I305FgQIsgCw diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.js.gz index 0e08727abe904fad26a778f0b3c7c08bf8184a31..9bee43ddc121e3f4d9f23f218c11e3594ff620fa 100644 GIT binary patch delta 19 YcmdnMw1J6BzMF#q1elmNa;Y%_045j%2mk;8 delta 19 YcmdnMw1J6BzMF#q1ek<3a;Y%_048Vy7ytkO diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide-dark/skin.shadowdom.min.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.css.gz index 420dd3b776df3649b514c4a1ab86744946ad58fa..4e9d37c7706ef808b04f1a29948210ed6aa0165c 100644 GIT binary patch delta 19 YcmZ3kxm=S=zMF#q1elmNa?KS104oCn&Hw-a delta 19 YcmZ3kxm=S=zMF#q1ek<3a?KS104q}i-T(jq diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.css.gz index 0d163d9b66683a3344510e0037b1d4233e1eab62..f0bcd5b7247f3619a520b828da03a03b5d817c6a 100644 GIT binary patch delta 19 YcmbQNIa!lSzMF#q1elmNa&?LT04NIsk^lez delta 19 YcmbQNIa!lSzMF#q1ek<3a&?LT04Q4nq5uE@ diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.js.gz index cbd225edb346ae7826cb60347e0f3ab59aee3637..fd81a92c30db43bb4c8cceb326e162f30ae5f7ce 100644 GIT binary patch delta 19 Ycmdm{yG@r%zMF#q1elmNa;*^q04>J^1poj5 delta 19 Ycmdm{yG@r%zMF#q1ek<3a;*^q04^5<6#xJL diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.inline.min.css.gz index 7789bd14b1081421ebaf36109a09a27df3fe1768..dc4e173349a6e1681f5ccf6f0b4032d7c685355d 100644 GIT binary patch delta 19 YcmbQLIaQNOzMF#q1elmNa&?OU04P@jm;e9( delta 19 YcmbQLIaQNOzMF#q1ek<3a&?OU04S#er~m)} diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.js.gz index a057845b5bef69fc79eddac0d7abc302f77cd61f..2df9da7e5b0c9242696ff83c37e92f3b902df7ea 100644 GIT binary patch delta 19 YcmX@6drX&0zMF#q1elmNa_tcV05B&6H2?qr delta 19 YcmX@6drX&0zMF#q1ek<3a_tcV05Eq1MF0Q* diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/content.min.css.gz index 1ebc80a9067e2e2cc66eaca453071eb3bc7cee14..bbf33469f6891262d675579aa2822c6b3769415a 100644 GIT binary patch delta 19 YcmZ3bxk{5uzMF#q1elmNaxD-604sF^*8l(j delta 19 YcmZ3bxk{5uzMF#q1ek<3axD-604v1<=Kufz diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.css.gz index dee7248c8deeb21c561c6a989f0de718e04389ca..35a2badac31888c51ca984c37d94278a397c45b7 100644 GIT binary patch delta 19 Ycmdm-zB!#szMF#q1elmNa;-E505v8AjQ{`u delta 19 Ycmdm-zB!#szMF#q1ek<3a;-E505x_5od5s; diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.js.gz index 37041921b4abeeed764aa11e39295d402d2e0402..82a6b2731b24c068952c60d79c0a9c1893059b8e 100644 GIT binary patch delta 19 YcmeyC{wR{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.js.gz index 1778a6bd1a3a0536b703c3de45fa0e5e406b4fc3..720333646cdaee1050defc63300ac8fcf8dd2444 100644 GIT binary patch delta 19 YcmdnQw26sJzMF#q1elmNa%nIE048Ju4gdfE delta 19 YcmdnQw26sJzMF#q1ek<3a%nIE04B5p9smFU diff --git a/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/oxide/skin.shadowdom.min.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.css.gz index 34ec545806fc8077fd03899b678a4c1f860b5145..5943b18ec211c497bdbce815401f7a48217cd628 100644 GIT binary patch delta 19 YcmeyQ@kxVAzMF#q1elmNa%G4B05t;yEdT%j delta 19 YcmeyQ@kxVAzMF#q1ek<3a%G4B05wwtJpcdz diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.css.gz index 0d163d9b66683a3344510e0037b1d4233e1eab62..f0bcd5b7247f3619a520b828da03a03b5d817c6a 100644 GIT binary patch delta 19 YcmbQNIa!lSzMF#q1elmNa&?LT04NIsk^lez delta 19 YcmbQNIa!lSzMF#q1ek<3a&?LT04Q4nq5uE@ diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.js.gz index 2dec3ccfe9e4db12d31484f4dc8767c0fcc24647..b91f433844fd9e4575204de5608dcd2fd630e229 100644 GIT binary patch delta 19 Ycmdm`yGxf#zMF#q1elmNa%~U;04`qy5dZ)H delta 19 Ycmdm`yGxf#zMF#q1ek<3a%~U;04}ctApigX diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.inline.min.css.gz index 7789bd14b1081421ebaf36109a09a27df3fe1768..dc4e173349a6e1681f5ccf6f0b4032d7c685355d 100644 GIT binary patch delta 19 YcmbQLIaQNOzMF#q1elmNa&?OU04P@jm;e9( delta 19 YcmbQLIaQNOzMF#q1ek<3a&?OU04S#er~m)} diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.js.gz index 8d02791894c0b8569fbcd35121e05d40d308926c..1d6ab1efe165387f7c21b3950a4bfdd2bcfb3220 100644 GIT binary patch delta 19 YcmbQPJ6)GczMF#q1elmNa`lP<04Xg4r~m)} delta 19 YcmbQPJ6)GczMF#q1ek<3a`lP<04aR~xBvhE diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/content.min.css.gz index 22306db44a58778be3b07935fd945edbf58c5cfb..3743c59e455089d2064d883996a1327c9fff5003 100644 GIT binary patch delta 19 YcmeyW@l}IMzMF#q1elmNa%GDE05x?4HUIzs delta 19 YcmeyW@l}IMzMF#q1ek<3a%GDE05!z~MgRZ+ diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.css.gz index cd06f235f561ecb7f4df28ae008842f1b525f297..766cfef56432436bff2705af5128f2df84ef5253 100644 GIT binary patch delta 19 Ycmdmyy(61TzMF#q1elmNa;-B305)y}rT_o{ delta 19 Ycmdmyy(61TzMF#q1ek<3a;-B305-k^wg3PC diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.js.gz index d41227c79c0f28405edfd27b9d1f46ca23ea08e5..474c49be1a526c5293864238619753f9551c7142 100644 GIT binary patch delta 19 YcmZ3Lvnq#6zMF#q1elmNaw(Vr05g39{{R30 delta 19 YcmZ3Lvnq#6zMF#q1ek<3aw(Vr05i=54*&oF diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.min.css.gz index 4a535e4ceaed86414ec5dac0cb7337eeeb9d8160..009e98b235d214a38324d14c7b30257f1378a8da 100644 GIT binary patch delta 19 YcmZ3Iy(F7UzMF#q1elmNa?LUY05f(3Y5)KL delta 19 YcmZ3Iy(F7UzMF#q1ek<3a?LUY05iq}dH?_b diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.js.gz index 6580325182b600f8292564f0b7222a00a3586010..c93b84484c51adca90afb42fe1606a8251320336 100644 GIT binary patch delta 19 YcmdnWw3UfVzMF#q1elmNa%nRH04CN07XSbN delta 19 YcmdnWw3UfVzMF#q1ek<3a%nRH04F8`CjbBd diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5-dark/skin.shadowdom.min.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.css.gz index 420dd3b776df3649b514c4a1ab86744946ad58fa..4e9d37c7706ef808b04f1a29948210ed6aa0165c 100644 GIT binary patch delta 19 YcmZ3kxm=S=zMF#q1elmNa?KS104oCn&Hw-a delta 19 YcmZ3kxm=S=zMF#q1ek<3a?KS104q}i-T(jq diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.css.gz index 0d163d9b66683a3344510e0037b1d4233e1eab62..f0bcd5b7247f3619a520b828da03a03b5d817c6a 100644 GIT binary patch delta 19 YcmbQNIa!lSzMF#q1elmNa&?LT04NIsk^lez delta 19 YcmbQNIa!lSzMF#q1ek<3a&?LT04Q4nq5uE@ diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.js.gz index 25d9b93201d196ec709489a92c00e62428df4a26..05ce39e15323691f2f887adc7789c2aba4617f38 100644 GIT binary patch delta 19 Ycmdm{yG@r%zMF#q1elmNa;*^q04>J^1poj5 delta 19 Ycmdm{yG@r%zMF#q1ek<3a;*^q04^5<6#xJL diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.inline.min.css.gz index 7789bd14b1081421ebaf36109a09a27df3fe1768..dc4e173349a6e1681f5ccf6f0b4032d7c685355d 100644 GIT binary patch delta 19 YcmbQLIaQNOzMF#q1elmNa&?OU04P@jm;e9( delta 19 YcmbQLIaQNOzMF#q1ek<3a&?OU04S#er~m)} diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.js.gz index 91643cc203a71afe760b01cf21989411e4408e16..7ec2c0f9c1398dac095474b852492ee46acc007f 100644 GIT binary patch delta 19 YcmX@6drX&0zMF#q1elmNa_tcV05B&6H2?qr delta 19 YcmX@6drX&0zMF#q1ek<3a_tcV05Eq1MF0Q* diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/content.min.css.gz index 1ebc80a9067e2e2cc66eaca453071eb3bc7cee14..bbf33469f6891262d675579aa2822c6b3769415a 100644 GIT binary patch delta 19 YcmZ3bxk{5uzMF#q1elmNaxD-604sF^*8l(j delta 19 YcmZ3bxk{5uzMF#q1ek<3axD-604v1<=Kufz diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.css.gz index b5731979a15319142a8c8487d7ba0ea333544e08..7268ff6c5dfe99bdb8725441f70c7d5a4b86d0d4 100644 GIT binary patch delta 19 YcmZ3Jy(XJWzMF#q1elmNaxF3i05qlqf&c&j delta 19 YcmZ3Jy(XJWzMF#q1ek<3axF3i05tXlk^lez diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.js.gz index dc253e25b04ee42983e14a24c33fc4b3fea0c68b..e690ee92e9edd406ff9eaa6e6ff2489f8f848023 100644 GIT binary patch delta 19 YcmbP~Gbx8lzMF#q1elmNa&ede059zWw*UYD delta 19 YcmbP~Gbx8lzMF#q1ek<3a&ede05ClR#{d8T diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.min.css.gz index 4a30afb9d10d29cf3168f15c8472a00402d90a6f..b9fb5dc1e2d617a6e1ca8c6c3dbd3466905a51c3 100644 GIT binary patch delta 19 YcmbQ5JvEz4zMF#q1elmNa&?;m05LoSJpcdz delta 19 YcmbQ5JvEz4zMF#q1ek<3a&?;m05OaNO#lD@ diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.js.gz index 20f07848f084d7b3a7a83ec1bd2dc9ed2476e994..e168b4158f83790a3b6d1aa8fcd9c006e4b442ca 100644 GIT binary patch delta 19 YcmdnQw26sJzMF#q1elmNa%nIE048Ju4gdfE delta 19 YcmdnQw26sJzMF#q1ek<3a%nIE04B5p9smFU diff --git a/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz b/sapl/static/sapl/frontend/js/skins/ui/tinymce-5/skin.shadowdom.min.css.gz index a0f08391f1583d62a69b4c244fef9caffc4778e6..3d198980216f1c9e42c6c1d87fdf7c65319cf3dc 100644 GIT binary patch delta 18 WcmeBR>R{rM@8)0t0Vd{&T>k(bI0J70 delta 18 WcmeBR>R{rM@8)0t0Vd&zT>k(bcmsa` diff --git a/sapl/templates/base.html b/sapl/templates/base.html index ec04b7742..057cd1086 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -251,7 +251,7 @@ {% endblock footer_container %} {% endif %} -
+
From b9fe48bc35683df36d99360a8540da3330ba159a Mon Sep 17 00:00:00 2001 From: Edward <9326037+edwardoliveira@users.noreply.github.com> Date: Wed, 27 Aug 2025 19:25:41 -0300 Subject: [PATCH 04/57] =?UTF-8?q?Refatora=20l=C3=B3gica=20de=20gera=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20CSV/json/xlsx=20(#3786)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CSV/xlsx/json refactoring Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> --- sapl/base/apps.py | 1 - sapl/materia/views.py | 23 +- sapl/norma/views.py | 7 +- sapl/protocoloadm/views.py | 8 +- sapl/sessao/views.py | 42 ++-- sapl/utils.py | 441 ++++++++++++++----------------------- 6 files changed, 199 insertions(+), 323 deletions(-) diff --git a/sapl/base/apps.py b/sapl/base/apps.py index 403d74bd1..7e4305ea8 100644 --- a/sapl/base/apps.py +++ b/sapl/base/apps.py @@ -1,4 +1,3 @@ - import django from django.utils.translation import ugettext_lazy as _ diff --git a/sapl/materia/views.py b/sapl/materia/views.py index a4f557d79..f64d8134b 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -2045,22 +2045,29 @@ class MateriaLegislativaPesquisaView(MultiFormatOutputMixin, FilterView): filterset_class = MateriaLegislativaFilterSet paginate_by = 50 - fields_base_report = [ - 'id', 'ano', 'numero', 'tipo__sigla', 'tipo__descricao', 'autoria__autor__nome', 'texto_original', 'ementa' + export_fields = [ + 'id', 'ano', 'numero', 'tipo__sigla', 'tipo__descricao', 'autoria', 'texto_original', 'ementa' ] - fields_report = { - 'csv': fields_base_report, - 'xlsx': fields_base_report, - 'json': fields_base_report, - } def hook_texto_original(self, obj): url = self.request.build_absolute_uri('/')[:-1] texto_original = obj.texto_original if not isinstance( obj, dict) else obj["texto_original"] - return f'{url}/media/{texto_original}' + def hook_autoria(self, obj): + """ + Hook específico para pegar nomes dos autores (reverse query) + """ + try: + autores = [ + str(autoria.autor.nome) + for autoria in obj.autoria_set.select_related('autor').all() + ] + return ', '.join(autores) + except AttributeError: + return '' + def get_filterset_kwargs(self, filterset_class): super().get_filterset_kwargs(filterset_class) diff --git a/sapl/norma/views.py b/sapl/norma/views.py index d746483e9..238650291 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -152,14 +152,9 @@ class NormaPesquisaView(MultiFormatOutputMixin, FilterView): filterset_class = NormaFilterSet paginate_by = 50 - fields_base_report = [ + export_fields = [ 'id', 'ano', 'numero', 'tipo__sigla', 'tipo__descricao', 'texto_integral', 'ementa' ] - fields_report = { - 'csv': fields_base_report, - 'xlsx': fields_base_report, - 'json': fields_base_report, - } def hook_texto_integral(self, obj): url = self.request.build_absolute_uri('/')[:-1] diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 1b572d792..fb6f48055 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -992,7 +992,6 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super(CreateView, self).get_context_data(**kwargs) autores_ativos = self.autores_ativos() - autores = [] autores.append(['0', '------']) for a in autores_ativos: @@ -1042,14 +1041,9 @@ class PesquisarDocumentoAdministrativoView(DocumentoAdministrativoMixin, paginate_by = 10 permission_required = ('protocoloadm.list_documentoadministrativo', ) - fields_base_report = [ + export_fields = [ 'id', 'ano', 'numero', 'tipo__sigla', 'tipo__descricao', 'assunto' ] - fields_report = { - 'csv': fields_base_report, - 'xlsx': fields_base_report, - 'json': fields_base_report, - } def get_filterset_kwargs(self, filterset_class): super(PesquisarDocumentoAdministrativoView, diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 84cb755e5..4835a17b6 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3813,22 +3813,23 @@ class PautaSessaoDetailView(PautaMultiFormatOutputMixin, DetailView): template_name = "sessao/pauta_sessao_detail.html" model = SessaoPlenaria - queryset_values_for_formats = False + export_fields = ( + ('id', 'ID'), + ('periodo', 'Período'), + ('titulo', 'Matéria'), + ('autor', 'Autor'), + ('ementa', 'Ementa'), + ('situacao', 'Situação') + ) - fields_base_report = [ - [('id', 'ID'), ('titulo', 'Matéria'), ('autor', 'Autor'), ('ementa', 'Ementa'), ('situacao', 'Situação')], - [('id', 'ID'), ('titulo', 'Matéria'), ('autor', 'Autor'), ('ementa', 'Ementa'), ('situacao', 'Situação')] - ] - fields_report = { - 'csv': fields_base_report, - 'xlsx': fields_base_report, - 'json': fields_base_report, - } + def hook_autor(self, obj): + return ','.join(obj['autor']) + + def hook_titulo(self, obj): + return str(obj['titulo']) - item_context = [ - ('materia_expediente', 'Matérias do Expediente'), - ('materias_ordem', 'Matérias da Ordem do Dia') - ] + def hook_situacao(self, obj): + return str(obj['situacao']) def get(self, request, *args, **kwargs): from sapl.relatorios.views import relatorio_pauta_sessao_weasy # Evitar import ciclico @@ -3888,7 +3889,8 @@ class PautaSessaoDetailView(PautaMultiFormatOutputMixin, DetailView): 'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"), 'processo': f'{str(numeracao.numero_materia)}/{str(numeracao.ano_materia)}' if numeracao else '-', 'autor': [str(x.autor) for x in m.materia.autoria_set.select_related('autor').all()], - 'turno': get_turno(ultima_tramitacao.turno) if ultima_tramitacao else '' + 'turno': get_turno(ultima_tramitacao.turno) if ultima_tramitacao else '', + 'periodo': 'expediente', }) context.update({'materia_expediente': materias_expediente}) @@ -3972,7 +3974,8 @@ class PautaSessaoDetailView(PautaMultiFormatOutputMixin, DetailView): 'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"), 'processo': f'{str(numeracao.numero_materia)}/{str(numeracao.ano_materia)}' if numeracao else '-', 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)], - 'turno': get_turno(ultima_tramitacao.turno) if ultima_tramitacao else '' + 'turno': get_turno(ultima_tramitacao.turno) if ultima_tramitacao else '', + 'periodo': 'ordem dia', }) context.update({ @@ -3998,14 +4001,9 @@ class PesquisarSessaoPlenariaView(MultiFormatOutputMixin, FilterView): queryset_values_for_formats = False - fields_base_report = [ + export_fields = [ 'id', 'data_inicio', 'hora_inicio', 'data_fim', 'hora_fim', '', ] - fields_report = { - 'csv': fields_base_report, - 'xlsx': fields_base_report, - 'json': fields_base_report, - } def get_filterset_kwargs(self, filterset_class): super().get_filterset_kwargs(filterset_class) diff --git a/sapl/utils.py b/sapl/utils.py index cddeb1f49..757e698d0 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -78,7 +78,6 @@ def is_weak_password(password): return len(password) < MIN_PASSWORD_LENGTH or not (pwd_has_lowercase and pwd_has_uppercase and pwd_has_number and pwd_has_special_char) - def groups_remove_user(user, groups_name): from django.contrib.auth.models import Group @@ -1169,12 +1168,12 @@ def from_date_to_datetime_utc(data): class OverwriteStorage(FileSystemStorage): - ''' + """ Solução derivada do gist: https://gist.github.com/fabiomontefuscolo/1584462 Muda o comportamento padrão do Django e o faz sobrescrever arquivos de mesmo nome que foram carregados pelo usuário ao invés de renomeá-los. - ''' + """ def get_available_name(self, name, max_length=None): if self.exists(name): @@ -1331,13 +1330,62 @@ def get_path_to_name_report_map(): } +class Row: + def __init__(self, cols, is_header = False): + self.cols = cols + self.is_header = is_header + + def __repr__(self): + return f"Row(columns={self.cols}, is_header={self.is_header})" + + +class Table: + def __init__(self, header = [], rows = []): + self.header = header + self.rows = rows + + def add_header(self, header): + if header.is_header: + self.header = header + else: + raise Exception(f"Row {header} is not header!") + + def append(self, row): + if not row.is_header: + self.rows.append(row) + else: + raise Exception(f"Row {row} is header!") + + def to_list(self): + return [self.header.cols] + [r.cols for r in self.rows] + + def size(self): + return len(self.rows) + + def __repr__(self): + return f"Table(Header={self.header}, Rows={self.rows})" + + class MultiFormatOutputMixin: - formats_impl = 'csv', 'xlsx', 'json' + formats_impl = ['csv', 'xlsx', 'json'] queryset_values_for_formats = True - def render_to_response(self, context, **response_kwargs): + export_fields = () + fields_by_format = None + def get_export_fields(self): + names = getattr(self, "export_fields", []) or [] + return names + + def get_fields_by_format(self): + provided = getattr(self, "fields_by_format", None) + if provided: + return {fmt: v for fmt, v in provided.items()} + fields = self.get_export_fields() + return {fmt: fields for fmt in self.formats_impl} + + def render_to_response(self, context, **response_kwargs): format_result = getattr(self.request, self.request.method).get( 'format', None) @@ -1356,183 +1404,157 @@ class MultiFormatOutputMixin: return super().render_to_response(context, **response_kwargs) def render_to_json(self, context): - object_list = context['object_list'] - if self.queryset_values_for_formats: - object_list = object_list.values( - *self.fields_report['json']) - - data = [] - for obj in object_list: - wr = list(self._write_row(obj, self.fields_report['json'])) - - if not data: - data.append([wr]) - continue - - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) - - for mri, multirows in enumerate(data): - if len(multirows) == 1: - v = multirows[0] - else: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' + fmt_map = self.get_fields_by_format() + export_fields = fmt_map['json'] + rows = [Row(cols=self._extract_row(obj, export_fields)) for obj in object_list] + table = Table(header=Row(export_fields, is_header=True), rows=rows) - data[mri] = dict( - map(lambda i, j: (i, j), self.fields_report['json'], v)) + headers = self._headers(export_fields) + if isinstance(export_fields, tuple): + export_fields = [f[0] for f in export_fields] json_metadata = { - 'headers': dict( - map(lambda i, j: (i, j), self.fields_report['json'], self._headers(self.fields_report['json']))), - 'results': data + 'headers': dict(zip(export_fields, headers)), + 'results': [dict(zip(export_fields, row.cols)) for row in table.rows], } - response = JsonResponse(json_metadata) - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.json"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - + response = self._set_response_params(JsonResponse(json_metadata), 'json') return response def render_to_csv(self, context): - response = HttpResponse(content_type='text/csv') - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.csv"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - writer = csv.writer(response, delimiter=";", - quoting=csv.QUOTE_NONNUMERIC) - object_list = context['object_list'] - if self.queryset_values_for_formats: - object_list = object_list.values( - *self.fields_report['csv']) - - data = [[list(self._headers(self.fields_report['csv']))], ] - for obj in object_list: - wr = list(self._write_row(obj, self.fields_report['csv'])) - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) - - for mri, multirows in enumerate(data): - if len(multirows) == 1: - writer.writerow(multirows[0]) - else: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' - - writer.writerow(v) + fmt_map = self.get_fields_by_format() + export_fields = fmt_map['csv'] + rows = [Row(self._extract_row(obj, export_fields)) for obj in object_list] + table = Table(header=Row(self._headers(export_fields), is_header=True), rows=rows) + response = self._set_response_params(HttpResponse(content_type='text/csv'), 'csv') + writer = csv.writer(response, + delimiter=";", + quoting=csv.QUOTE_NONNUMERIC) + writer.writerows(table.to_list()) return response def render_to_xlsx(self, context): - object_list = context['object_list'] - if self.queryset_values_for_formats: - object_list = object_list.values( - *self.fields_report['xlsx']) - - data = [[list(self._headers(self.fields_report['xlsx']))], ] - for obj in object_list: - wr = list(self._write_row(obj, self.fields_report['xlsx'])) - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) + fmt_map = self.get_fields_by_format() + field_names = fmt_map['xlsx'] + rows = [Row(self._extract_row(obj, field_names)) for obj in object_list] + table = Table(header=Row(self._headers(field_names), is_header=True), rows=rows) output = io.BytesIO() wb = Workbook(output, {'in_memory': True}) - ws = wb.add_worksheet() - for mri, multirows in enumerate(data): - if len(multirows) == 1: - for rc, cell in enumerate(multirows[0]): - ws.write(mri, rc, cell) - else: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' - - for rc, cell in enumerate(v): - ws.write(mri, rc, cell) + for row_idx, row in enumerate(table.to_list()): + for cell_idx, cell in enumerate(row): + ws.write(row_idx, cell_idx, cell) + ws.autofit() wb.close() - output.seek(0) - response = HttpResponse(output.read( - ), content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.xlsx"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - + response = self._set_response_params( + HttpResponse(output.read(), + content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"), + 'xlsx' + ) output.close() - return response - def _write_row(self, obj, fields_report): - - for fname in fields_report: + def _extract_row(self, obj, columns): + """Versão mais simples que não chama métodos""" + for col_name in columns: + if isinstance(col_name, tuple): + col_name = col_name[0] - if type(fname) is tuple: - fname = fname[0] - - if hasattr(self, f'hook_{fname}'): - v = getattr(self, f'hook_{fname}')(obj) - yield v + # Hook personalizado + if hasattr(self, f'hook_{col_name}'): + value = getattr(self, f'hook_{col_name}')(obj) + yield value continue + # Dicionário if isinstance(obj, dict): - yield obj[fname] + yield obj.get(col_name, '') continue - fname = fname.split('__') - - v = obj - for fp in fname: - v = getattr(v, fp) + # Navegação SEM chamar callables + try: + field_parts = col_name.split('__') + value = obj + for part in field_parts: + if value is None: + value = '' + break + value = getattr(value, part) + # NÃO chamamos callables - apenas pegamos o atributo + + # Tratamento para relacionamentos + if hasattr(value, 'all'): + items = value.all() + value = ' - '.join(str(item) for item in items) if items.exists() else '' + + yield str(value) if value is not None else '' + + except AttributeError: + # Variações para relacionamentos reversos + base_field = col_name.split('__')[0] + variations = [f'{base_field}_set', f'{base_field}s'] + + found = False + for variation in variations: + try: + new_field = col_name.replace(base_field, variation, 1) + field_parts = new_field.split('__') + value = obj + for part in field_parts: + value = getattr(value, part) + + if hasattr(value, 'all'): + items = value.all() + value = ' - '.join(str(item) for item in items) if items.exists() else '' + + yield str(value) if value is not None else '' + found = True + break + except AttributeError: + continue - if hasattr(v, 'all'): - v = ' - '.join(map(lambda x: str(x), v.all())) + if not found: + yield '' - yield v + def _set_response_params(self, response, extension): + response[ + 'Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.{extension}"' + response['Cache-Control'] = 'no-cache' + response['Pragma'] = 'no-cache' + response['Expires'] = 0 + return response - def _headers(self, fields_report): + def _headers(self, field_names): - for fname in fields_report: + for fname in field_names: verbose_name = [] - if hasattr(self, f'hook_header_{fname}'): + if hasattr(self, f'hook_header_{fname}'): # suporta extensao de funcionalidade h = getattr(self, f'hook_header_{fname}')() yield h continue if type(fname) is tuple: - verbose_name.append(fname[1]) + verbose_name.append(fname[1]) # suporta (field_name, alias) else: fname = fname.split('__') + # nem sempre isso vai funcionar, pois o model base + # pode ser diferente. Exemplo: pauta usa SessaoPlenaria, + # mas retornamos campos de MateriaLegislativa m = self.model for fp in fname: @@ -1554,156 +1576,17 @@ class MultiFormatOutputMixin: class PautaMultiFormatOutputMixin(MultiFormatOutputMixin): - def render_to_csv(self, context): - response = HttpResponse(content_type='text/csv') - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.csv"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - writer = csv.writer(response, delimiter=";", - quoting=csv.QUOTE_NONNUMERIC) - - writer.writerow(['Pauta da ' + str(context['sessaoplenaria'])]) - writer.writerow('') - - for item in self.item_context: - if item[0] in context: - - index = self.item_context.index(item) - writer.writerow([self.item_context[index][1]]) - - data = [[list(self._headers(self.fields_report['csv'][index]))], ] - for obj in context.get(item[0]): - wr = list(self._write_row(obj, self.fields_report['csv'][index])) - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) - - for mri, multirows in enumerate(data): - if len(multirows) == 1: - writer.writerow(multirows[0]) - else: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' - - writer.writerow(v) - writer.writerow('') + def __mutate_context(self, context): + context_materias = { + 'object_list': context.get('materias_ordem', []) + context.get('materia_expediente', []) + } + return context_materias - return response + def render_to_csv(self, context): + return super().render_to_csv(self.__mutate_context(context)) def render_to_json(self, context): - - json_metadata = {'sessaoplenaria': str(context['sessaoplenaria'])} - for item in self.item_context: - if item[0] in context: - index = self.item_context.index(item) - json_metadata.update({item[0]: {}}) - data = [] - - for obj in context.get(item[0]): - wr = list(self._write_row(obj, self.fields_report['json'][index])) - - if not data: - data.append([wr]) - continue - - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) - - for mri, multirows in enumerate(data): - if len(multirows) == 1: - try: - v = multirows[0] - except TypeError: - v = str(multirows[0]) - else: - try: - v = str(multirows[0]) - except TypeError: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' - - data[mri] = dict( - map(lambda i, j: (i[0], j if type(j) in [str, int, list] else str(j)), - self.fields_report['json'][index], v)) - - json_metadata.update({item[0]: { - 'headers': dict( - map(lambda i, j: (i[0], j), self.fields_report['json'][index], - self._headers(self.fields_report['json'][index]))), - 'results': data} - }) - response = JsonResponse(json_metadata) - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.json"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - - return response + return super().render_to_json(self.__mutate_context(context)) def render_to_xlsx(self, context): - - output = io.BytesIO() - wb = Workbook(output, {'in_memory': True}) - - ws = wb.add_worksheet() - ws.write('A1', 'Pauta da ' + str(context['sessaoplenaria'])) - row = 2 - - for item in self.item_context: - if item[0] in context: - index = self.item_context.index(item) - ws.write(row, 0, self.item_context[index][1]) - row += 1 - data = [[list(self._headers(self.fields_report['xlsx'][index]))], ] - - for obj in context.get(item[0]): - wr = list(self._write_row(obj, self.fields_report['xlsx'][index])) - if wr[0] != data[-1][0][0]: - data.append([wr]) - else: - data[-1].append(wr) - - for mri, multirows in enumerate(data): - if len(multirows) == 1: - for rc, cell in enumerate(multirows[0]): - try: - ws.write(row, rc, cell) - except TypeError: - ws.write(row, rc, str(cell)) - row += 1 - else: - v = multirows[0] - for ri, cols in enumerate(multirows[1:]): - for rc, cell in enumerate(cols): - if v[rc] != cell: - v[rc] = f'{v[rc]}\r\n{cell}' - - for rc, cell in enumerate(v): - ws.write(row, rc, cell) - row += 1 - row += 1 - ws.autofit() - wb.close() - - output.seek(0) - - response = HttpResponse(output.read( - ), content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") - response['Content-Disposition'] = f'attachment; filename="sapl_{self.request.resolver_match.url_name}.xlsx"' - response['Cache-Control'] = 'no-cache' - response['Pragma'] = 'no-cache' - response['Expires'] = 0 - - output.close() - - return response + return super().render_to_xlsx(self.__mutate_context(context)) From 6c4dbd1a5e7840f6e331d21156cc9505aa5b63c6 Mon Sep 17 00:00:00 2001 From: cristian-longhi Date: Tue, 2 Sep 2025 12:58:06 -0300 Subject: [PATCH 05/57] =?UTF-8?q?Ajustes=20solicitados=20-=20Relat=C3=B3ri?= =?UTF-8?q?o=20de=20Vota=C3=A7=C3=B5es=20Nominais=20(#3785)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implementa Relatório de Votações Nominais * Alterações solicitadas - Relatório de Votações Nominais * Apply suggestions from code review Todas as sugestões de alteração acatadas. Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> * Update views.py Conforme observação sobre o retorno da QuerySet, escolha da opção 2 - colocar o qs dentro dos if's. Também houve a alteração na view, utilizando diretamente a classe genérica MultiFormatOutputMixin. Com a refatoração efetuada, não foi necessário definir uma especificação da mesma. --------- Co-authored-by: root Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> --- sapl/relatorios/forms.py | 71 +++++++++++++++- sapl/relatorios/urls.py | 8 +- sapl/relatorios/views.py | 78 +++++++++++++++++- sapl/sessao/models.py | 13 +-- .../materia/materialegislativa_filter.html | 56 +++++++++++-- .../RelatorioVotacoesNominais_filter.html | 82 +++++++++++++++++++ .../relatorios/relatorio_votacao_nominal.html | 53 ++++++++++++ .../templates/relatorios/relatorios_list.html | 7 ++ 8 files changed, 351 insertions(+), 17 deletions(-) create mode 100644 sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html create mode 100644 sapl/templates/relatorios/relatorio_votacao_nominal.html diff --git a/sapl/relatorios/forms.py b/sapl/relatorios/forms.py index 59eb2d741..cfbf369c1 100644 --- a/sapl/relatorios/forms.py +++ b/sapl/relatorios/forms.py @@ -3,17 +3,19 @@ from crispy_forms.bootstrap import (FormActions) from crispy_forms.layout import (HTML, Button, Fieldset, Layout, Submit) from django import forms +from django.forms import ModelChoiceField from django.utils.translation import ugettext_lazy as _ +from django.db.models import Q from sapl.audiencia.models import AudienciaPublica from sapl.base.models import Autor from sapl.comissoes.models import Reuniao from sapl.crispy_layout_mixin import SaplFormHelper, to_row, form_actions from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa, MateriaEmTramitacao, UnidadeTramitacao, \ - StatusTramitacao + StatusTramitacao, TipoMateriaLegislativa from sapl.norma.models import NormaJuridica from sapl.protocoloadm.models import DocumentoAdministrativo -from sapl.sessao.models import SessaoPlenaria +from sapl.sessao.models import SessaoPlenaria, VotoParlamentar, RegistroVotacao from sapl.utils import FilterOverridesMetaMixin, choice_anos_com_normas, qs_override_django_filter, \ choice_anos_com_materias, choice_tipos_normas, autor_label, autor_modal @@ -68,6 +70,71 @@ class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): ) +class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet): + + tipo_id = django_filters.ModelChoiceFilter( + queryset=TipoMateriaLegislativa.objects.all(), + method='ordem_or_expediente', + label='Tipo de Matéria', + empty_label="---------" + ) + numero = django_filters.NumberFilter( + widget=forms.NumberInput(attrs={'class': 'form-control', 'step': 'any'}), + method='ordem_or_expediente', + label='Número' + ) + ano = django_filters.ChoiceFilter( + choices=list(choice_anos_com_materias()), + widget=forms.Select(attrs={'class': 'form-control'}), + method='ordem_or_expediente', + label='Ano da Matéria' + ) + + def ordem_or_expediente(self, queryset, name, value): + if value is None: + return queryset + value = getattr(value, "pk", value) + ordem_q = f"ordem__materia__{name}" + expediente_q = f"expediente__materia__{name}" + return queryset.filter(Q(**{ordem_q: val})|Q(**{expediente_q: val})) + return queryset + + class Meta(FilterOverridesMetaMixin): + model = RegistroVotacao + fields = ['data_hora'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.filters['data_hora'].label = 'Período (Data Inicial - Data Final)' + + row0= to_row([('tipo_id', 6), ('numero', 3), ('ano', 3)]) + + row1 = to_row([('data_hora', 12)]) + + buttons = FormActions( + *[ + HTML(""" +
+ + +
+ """) + ], + Submit('pesquisar', _('Pesquisar'), css_class='float-right', + onclick='return true;'), + css_class='form-group row justify-content-between', + ) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Pesquisa'), + row0, row1, + buttons) + ) + + class RelatorioAtasFilterSet(django_filters.FilterSet): class Meta(FilterOverridesMetaMixin): model = SessaoPlenaria diff --git a/sapl/relatorios/urls.py b/sapl/relatorios/urls.py index b27bfc55a..235becfab 100644 --- a/sapl/relatorios/urls.py +++ b/sapl/relatorios/urls.py @@ -11,7 +11,7 @@ from .views import (relatorio_capa_processo, RelatorioMateriasTramitacaoView, RelatorioMateriaAnoAssuntoView, RelatorioHistoricoTramitacaoView, RelatorioDataFimPrazoTramitacaoView, RelatorioPresencaSessaoView, RelatorioAtasView, RelatorioReuniaoView, RelatorioAudienciaView, RelatorioHistoricoTramitacaoAdmView, - RelatorioDocumentosAcessoriosView, RelatorioNormasPorAutorView) + RelatorioDocumentosAcessoriosView, RelatorioNormasPorAutorView, RelatorioVotacoesNominaisView) from ..base.views import EstatisticasAcessoNormas app_name = AppConfig.name @@ -95,6 +95,10 @@ urlpatterns = [ url(r'^sistema/relatorios/documentos_acessorios$', RelatorioDocumentosAcessoriosView.as_view(), name='relatorio_documentos_acessorios'), + url(r'^sistema/relatorios/votacoes_nominais$', + RelatorioVotacoesNominaisView.as_view(), + name='relatorio_votacoes_nominais'), url(r'^sistema/relatorios/normas-por-autor$', RelatorioNormasPorAutorView.as_view(), name='normas_por_autor'), -] \ No newline at end of file +] + diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 99a299abb..b96557e16 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -31,7 +31,8 @@ from sapl.relatorios.forms import RelatorioNormasPorAutorFilterSet, RelatorioHis RelatorioNormasVigenciaFilterSet, RelatorioNormasMesFilterSet, RelatorioMateriasPorAutorFilterSet, \ RelatorioMateriasPorAnoAutorTipoFilterSet, RelatorioMateriasTramitacaoFilterSet, RelatorioAudienciaFilterSet, \ RelatorioReuniaoFilterSet, RelatorioDataFimPrazoTramitacaoFilterSet, RelatorioHistoricoTramitacaoFilterSet, \ - RelatorioPresencaSessaoFilterSet, RelatorioAtasFilterSet, RelatorioDocumentosAcessoriosFilterSet + RelatorioPresencaSessaoFilterSet, RelatorioAtasFilterSet, RelatorioDocumentosAcessoriosFilterSet, \ + RelatorioVotacoesNominaisFilterSet from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, IntegranteMesa, JustificativaAusencia, Orador, OradorExpediente, @@ -50,7 +51,7 @@ from sapl.sessao.views import (get_identificacao_basica, get_mesa_diretora, from sapl.settings import MEDIA_URL from sapl.settings import STATIC_ROOT from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data, create_barcode, show_results_filter_set, \ - num_materias_por_tipo, parlamentares_ativos + num_materias_por_tipo, parlamentares_ativos, MultiFormatOutputMixin from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_etiqueta_protocolo_gerar, pdf_materia_gerar, @@ -1560,6 +1561,10 @@ def relatorio_documento_acessorio(obj, request, context): return cria_relatorio(request, context, 'relatorios/relatorio_documento_acessorio.html') +def relatorio_votacao_nominal(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_votacao_nominal.html') + + def relatorio_normas_por_autor(obj, request, context): return cria_relatorio(request, context, 'relatorios/relatorio_normas_por_autor.html') @@ -1880,6 +1885,75 @@ class RelatorioDocumentosAcessoriosView(RelatorioMixin, FilterView): return context +class RelatorioVotacoesNominaisView(RelatorioMixin, MultiFormatOutputMixin, FilterView): + model = VotoParlamentar + filterset_class = RelatorioVotacoesNominaisFilterSet + template_name = 'relatorios/RelatorioVotacoesNominais_filter.html' + relatorio = relatorio_votacao_nominal + paginate_by = 20 + + export_fields = [ + 'votacao_id', 'votacao', 'parlamentar__nome_parlamentar', 'voto' + ] + + def get_queryset(self): + query_params = Q(ordem__tipo_votacao=2)|Q(expediente__tipo_votacao=2) + if 'format' in self.request.GET: + order_fields = ['-votacao_id', 'parlamentar'] + qs = VotoParlamentar.objects.filter(query_params).order_by(*order_fields) + else: + order_fields = ['-id'] + qs = RegistroVotacao.objects.filter(query_params).order_by(*order_fields) + return qs + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context['title'] = _('Votações Nominais') + + if not self.filterset.form.is_valid(): + return context + + query_dict = self.request.GET.copy() + if 'page' in query_dict: + del query_dict['page'] + context['filter_url'] = f"&{query_dict.urlencode()}" if query_dict else '' + context['show_results'] = show_results_filter_set(query_dict) + + data_inicial = self.request.GET.get('data_hora_0', '') + data_final = self.request.GET.get('data_hora_1', '') + if not data_inicial: + data_inicial = "Data Inicial não definida" + if not data_final: + data_final = "Data Final não definida" + context['periodo'] = f"{data_inicial} - {data_final}" + + tipo_id = self.request.GET.get('tipo_id') + numero = self.request.GET.get('numero') + ano = self.request.GET.get('ano') + + if tipo_id: + context['tipo_materia'] = TipoMateriaLegislativa.objects.get(id=tipo_id) + if numero: + context['numero'] = int(numero) + if ano: + context['ano'] = ano + + if 'relatorio' not in self.request.GET: + paginator = context['paginator'] + page_obj = context['page_obj'] + + context['page_range'] = make_pagination( + page_obj.number, paginator.num_pages) + + context['qtde_votacoes'] = paginator.count + else: + self.paginate_by = None + context['qtde_votacoes'] = len(context['object_list']) + + return context + + class RelatorioAtasView(RelatorioMixin, FilterView): model = SessaoPlenaria filterset_class = RelatorioAtasFilterSet diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 55fe581a1..613068afe 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -641,11 +641,14 @@ class RegistroVotacao(models.Model): ordering = ('id',) def __str__(self): - return _('Ordem: %(ordem)s - Votação: %(votacao)s - ' - 'Matéria: %(materia)s') % { - 'ordem': self.ordem, - 'votacao': self.tipo_resultado_votacao, - 'materia': self.materia} + if self.ordem: + return _('Ordem: %(ordem)s - Votação: %(votacao)s') % { + 'ordem': self.ordem, + 'votacao': self.tipo_resultado_votacao} + else: + return _('Expediente: %(expediente)s - Votação: %(votacao)s') % { + 'expediente': self.expediente, + 'votacao': self.tipo_resultado_votacao} def clean(self): """Exatamente um dos campos ordem ou expediente deve estar preenchido. diff --git a/sapl/templates/materia/materialegislativa_filter.html b/sapl/templates/materia/materialegislativa_filter.html index 0c5064806..f74c5d5ab 100644 --- a/sapl/templates/materia/materialegislativa_filter.html +++ b/sapl/templates/materia/materialegislativa_filter.html @@ -108,19 +108,47 @@ Resultado:  {{m|resultado_votacao}}
{% endif %} {% if m.registrovotacao_set.exists %} +
+
Data Votação: +
+
{% for rv in m.registrovotacao_set.all %} {% if rv.ordem %} - - {{ rv.ordem.sessao_plenaria.data_inicio }} - + {{ rv.ordem.sessao_plenaria.data_inicio }} + {% if rv.ordem.tipo_votacao == 2 %} + - + Votação Nominal >>> + + + {% endif %} {% elif rv.expediente %} - - {{ rv.expediente.sessao_plenaria.data_inicio }} - + {{ rv.expediente.sessao_plenaria.data_inicio }} + {% if rv.expediente.tipo_votacao == 2 %} + - + Votação Nominal >>> + + + {% endif %} {% endif %}
{% endfor %} +
+
{% endif %} {% if m.tramitacao_set.first.data_tramitacao %} Data da última Tramitação:  {{m.tramitacao_set.first.data_tramitacao}}
@@ -215,6 +243,11 @@ {% block extra_js %} {% endblock extra_js %} diff --git a/sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html b/sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html new file mode 100644 index 000000000..72d6f0212 --- /dev/null +++ b/sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html @@ -0,0 +1,82 @@ +{% extends "crud/list.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block base_content %} + {% if not show_results %} + {% crispy filter.form %} + {% else %} +
+ {% with 'sapl.relatorios:relatorio_votacoes_nominais' as url_reverse %} + {% include "crud/format_options.html" %} + {% endwith %} +
+ + +

+ PARÂMETROS DE PESQUISA
+ {% if tipo_materia %} +  Tipo de Matéria: {{ tipo_materia }}
+ {% endif %} + {% if numero %} +  Número: {{ numero }}
+ {% endif %} + {% if ano %} +  Ano: {{ ano }}
+ {% endif %} +  Período: {{ periodo }}

+ + {% if object_list %} + + {% if qtde_votacoes > 1 %} +

Foram encontradas {{qtde_votacoes}} votações.


+ {% elif qtde_votacoes == 1 %} +

Foi encontrada {{qtde_votacoes}} votação.


+ {% endif %} + + + + + + + + + + {% for rv in object_list %} + + + + + {% endfor %} + +
Dados da Votação / MatériaParlamentar - Voto
+ {% if rv.ordem %} + {{ rv.ordem.materia }} - {{ rv.ordem.materia.ementa }}
+ Momento da Votação: Ordem do Dia - + {{ rv.ordem.sessao_plenaria }}
+ Data da Votação: {{ rv.data_hora|date:"d/m/Y" }}
+ Resultado: {{ rv.ordem.resultado }} + {% else %} + {{ rv.expediente.materia }} - {{ rv.expediente.materia.ementa }}
+ Momento da Votação: Expediente - + {{ rv.expediente.sessao_plenaria }}
+ Data da Votação: {{ rv.data_hora|date:"d/m/Y" }}
+ Resultado: {{ rv.expediente.resultado }} + {% endif %} +
+ {% for voto in rv.votoparlamentar_set.all|dictsort:"parlamentar.nome_parlamentar" %} + + {{ voto.parlamentar }} - {{ voto.voto }} +
+ {% endfor %} +
+ {% else %} +

Nenhuma votação encontrada com esses parâmetros.



+ {% endif %} + {% endif %} + {% if filter_url %} + {% include "paginacao.html" %} + {% endif %} +{% endblock base_content %} diff --git a/sapl/templates/relatorios/relatorio_votacao_nominal.html b/sapl/templates/relatorios/relatorio_votacao_nominal.html new file mode 100644 index 000000000..72773a4e8 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_votacao_nominal.html @@ -0,0 +1,53 @@ +{% extends "relatorios/base_relatorio.html" %} +{% load i18n %} +{% load common_tags %} +{% load static %} + +{% block content %} +

Votações Nominais

+ + PARÂMETROS DE PESQUISA:
+ {% if tipo_materia %} + Tipo de matéria: {{ tipo_materia }}
+ {% endif %} + {% if numero %} + Número: {{ numero }}
+ {% endif %} + {% if ano %} + Ano: {{ ano }}
+ {% endif %} + Período: {{ periodo }}
+
+ + {% if object_list %} + {% if qtde_votacoes > 1 %} +

Foram encontradas {{qtde_votacoes}} votações.

+ {% elif qtde_votacoes == 1 %} +

Foi encontrada {{qtde_votacoes}} votação.

+ {% endif %} + + {% for rv in object_list %} +
+ {% if rv.ordem %} + Matéria: {{ rv.ordem.materia }} - {{ rv.ordem.materia.ementa }}
+ Momento da Votação: Ordem do Dia - {{ rv.ordem.sessao_plenaria }}
+ Data da Votação: {{ rv.data_hora|date:"d/m/Y" }}
+ Resultado: {{ rv.ordem.resultado }}

+ {% else %} + Matéria: {{ rv.expediente.materia }} - {{ rv.expediente.materia.ementa }}
+ Momento da Votação: Expediente - {{ rv.expediente.sessao_plenaria }}
+ Data da Votação: {{ rv.data_hora|date:"d/m/Y" }}
+ Resultado: {{ rv.expediente.resultado }}

+ {% endif %} +
+
    + {% for voto in rv.votoparlamentar_set.all|dictsort:"parlamentar.nome_parlamentar" %} +
  • {{ voto.parlamentar }} - {{ voto.voto }}
  • + {% endfor %} +
+ {% endfor %} + {% else %} +

Nenhuma votação encontrada com esses parâmetros.



+ {% endif %} + +{% endblock content %} diff --git a/sapl/templates/relatorios/relatorios_list.html b/sapl/templates/relatorios/relatorios_list.html index 38346fa21..eec0843d0 100644 --- a/sapl/templates/relatorios/relatorios_list.html +++ b/sapl/templates/relatorios/relatorios_list.html @@ -127,6 +127,13 @@ Listagem e totalização de normas por autor, com filtros para tipo e período. {% endif %} + {% url 'sapl.relatorios:relatorio_votacoes_nominais' as relatorio_votacoes_nominais %} + {% if request|is_report_visible:relatorio_votacoes_nominais %} + + Votações Nominais + Votações Nominais em Expedientes e Ordens do Dia por data. + + {% endif %} From 2953b898b50ef826cafc013cebc0903446d036ab Mon Sep 17 00:00:00 2001 From: Edward <9326037+edwardoliveira@users.noreply.github.com> Date: Tue, 2 Sep 2025 13:00:53 -0300 Subject: [PATCH 06/57] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20da=20imagem=20bas?= =?UTF-8?q?e=20Docker=20(#3787)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update de imagem based Docker and libs Python Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> --- docker/Dockerfile | 174 +++++++---- docker/config/nginx/nginx.conf | 2 +- docker/docker-compose.yaml | 16 +- docker/gunicorn_start.sh | 50 --- docker/simple_gunicorn.sh | 3 +- docker/start.sh | 147 --------- docker/{ => startup_scripts}/create_admin.py | 0 docker/{ => startup_scripts}/genkey.py | 0 docker/startup_scripts/gunicorn.conf.py | 80 +++++ docker/{ => startup_scripts}/solr_cli.py | 18 +- docker/startup_scripts/start.sh | 289 ++++++++++++++++++ docker/{ => startup_scripts}/wait-for-pg.sh | 0 docker/{ => startup_scripts}/wait-for-solr.sh | 0 release.sh | 3 - requirements/dev-requirements.txt | 16 +- requirements/requirements.txt | 12 +- requirements/test-requirements.txt | 19 +- sapl/base/email_utils.py | 2 +- sapl/base/search_indexes.py | 2 +- sapl/base/templatetags/common_tags.py | 4 +- sapl/compilacao/forms.py | 2 +- sapl/compilacao/models.py | 4 +- sapl/lexml/forms.py | 2 +- sapl/lexml/models.py | 2 +- sapl/materia/forms.py | 2 +- sapl/materia/models.py | 28 +- sapl/materia/urls.py | 2 +- sapl/norma/forms.py | 2 +- sapl/norma/models.py | 4 +- sapl/norma/views.py | 2 +- sapl/parlamentares/models.py | 1 - sapl/protocoloadm/forms.py | 4 +- sapl/protocoloadm/views.py | 4 +- sapl/relatorios/views.py | 24 +- sapl/settings.py | 123 ++++++-- sapl/utils.py | 2 +- 36 files changed, 666 insertions(+), 379 deletions(-) delete mode 100755 docker/gunicorn_start.sh delete mode 100755 docker/start.sh rename docker/{ => startup_scripts}/create_admin.py (100%) rename docker/{ => startup_scripts}/genkey.py (100%) create mode 100644 docker/startup_scripts/gunicorn.conf.py rename docker/{ => startup_scripts}/solr_cli.py (95%) create mode 100755 docker/startup_scripts/start.sh rename docker/{ => startup_scripts}/wait-for-pg.sh (100%) rename docker/{ => startup_scripts}/wait-for-solr.sh (100%) diff --git a/docker/Dockerfile b/docker/Dockerfile index 6e5f27864..9fe3d6b75 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,73 +1,123 @@ -FROM python:3.9-slim-buster - -# Setup env -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 -ENV PYTHONDONTWRITEBYTECODE 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 vim python3-venv tzdata nodejs \ - fontconfig ttf-dejavu python nginx - -RUN mkdir -p /var/interlegis/sapl +# ---------- 1) BUILDER ---------- +FROM python:3.12-slim-bookworm AS builder + +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 \ + DEBIAN_FRONTEND=noninteractive \ + VENV_DIR=/opt/venv \ + PIP_NO_CACHE_DIR=on + +# Dev headers e toolchain só no builder +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential git pkg-config \ + libpq-dev libxml2-dev libjpeg-dev libssl-dev libffi-dev libxslt1-dev \ + libcairo2-dev libpango1.0-dev libgdk-pixbuf-2.0-dev libharfbuzz-dev \ + libfreetype6-dev zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + +# Venv independente do sistema +RUN python -m venv "${VENV_DIR}" \ + && "${VENV_DIR}/bin/pip" install --upgrade pip setuptools wheel + +WORKDIR /build + +# Copie APENAS os requirements primeiro para maximizar cache +COPY requirements/ ./requirements/ + +# Instale os requisitos de produção +# ATENÇÃO: se seu código importa prompt_toolkit em runtime, inclua em requirements.txt: +# prompt_toolkit>=3,<4 +RUN "${VENV_DIR}/bin/pip" install -r requirements/requirements.txt + +# Opcional: verificação de conflitos (falha cedo se faltar algo) +RUN "${VENV_DIR}/bin/pip" check || true + + +# ---------- 2) RUNTIME ---------- +FROM python:3.12-slim-bookworm AS runtime + +ARG WITH_GRAPHVIZ=1 +ARG WITH_POPPLER=1 +ARG WITH_PSQL_CLIENT=1 +ARG WITH_NGINX=1 + +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 \ + DEBIAN_FRONTEND=noninteractive \ + VENV_DIR=/opt/venv \ + PATH=/opt/venv/bin:$PATH \ + PIP_NO_CACHE_DIR=on + +# Pacotes de runtime (sem *-dev) +# Removi python3/python3-venv (já temos o Python da base) +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + curl jq bash tzdata fontconfig tini libmagic1 \ + libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf-2.0-0 \ + libharfbuzz0b libfreetype6 libjpeg62-turbo zlib1g fonts-dejavu-core; \ + if [ "$WITH_GRAPHVIZ" = "1" ]; then apt-get install -y --no-install-recommends graphviz; fi; \ + if [ "$WITH_POPPLER" = "1" ]; then apt-get install -y --no-install-recommends poppler-utils; fi; \ + if [ "$WITH_PSQL_CLIENT" = "1" ]; then apt-get install -y --no-install-recommends postgresql-client; fi; \ + if [ "$WITH_NGINX" = "1" ]; then apt-get install -y --no-install-recommends nginx; fi; \ + rm -rf /var/lib/apt/lists/* + +# Usuários/grupos (idempotente) +RUN useradd --system --no-create-home --shell /usr/sbin/nologin sapl || true \ + && groupadd -r nginx || true \ + && usermod -aG nginx www-data || true \ + && usermod -aG nginx sapl || true + +# Estrutura de diretórios +RUN mkdir -p /var/interlegis/sapl /var/interlegis/sapl/data /var/interlegis/sapl/media /var/interlegis/sapl/run \ + && chown -R root:nginx /var/interlegis/sapl /var/interlegis/sapl/run \ + && chmod -R g+rwX /var/interlegis/sapl \ + && chmod 2775 /var/interlegis/sapl /var/interlegis/sapl/run \ + && find /var/interlegis/sapl -type d -exec chmod g+s {} + WORKDIR /var/interlegis/sapl/ -ADD . /var/interlegis/sapl/ - -RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y --no-install-recommends $BUILD_PACKAGES $RUN_PACKAGES && \ - fc-cache -fv && \ - pip3 install --no-cache-dir --upgrade pip setuptools && \ - rm -f /etc/nginx/conf.d/* && \ - pip install --no-cache-dir -r /var/interlegis/sapl/requirements/dev-requirements.txt --upgrade setuptools && \ - SUDO_FORCE_REMOVE=yes apt-get purge -y --auto-remove $BUILD_PACKAGES && \ - apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* - -WORKDIR /var/interlegis/sapl/ -ADD . /var/interlegis/sapl/ - -COPY docker/start.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 - -COPY docker/config/nginx/sapl.conf /etc/nginx/conf.d -COPY docker/config/nginx/nginx.conf /etc/nginx/nginx.conf +# Traga o venv pré-instalado +COPY --from=builder ${VENV_DIR} ${VENV_DIR} + +# Código da aplicação (depois do venv para aproveitar cache) +COPY . /var/interlegis/sapl/ + +# Nginx (somente se instalado) +RUN if [ "$WITH_NGINX" = "1" ]; then \ + rm -f /etc/nginx/conf.d/*; \ + cp docker/config/nginx/sapl.conf /etc/nginx/conf.d/sapl.conf; \ + cp docker/config/nginx/nginx.conf /etc/nginx/nginx.conf; \ + fi + +# Scripts + gunicorn.conf no diretório da app +RUN install -m 755 docker/startup_scripts/start.sh /var/interlegis/sapl/start.sh \ + && install -m 755 docker/startup_scripts/wait-for-pg.sh /var/interlegis/sapl/wait-for-pg.sh \ + && install -m 755 docker/startup_scripts/wait-for-solr.sh /var/interlegis/sapl/wait-for-solr.sh \ + && install -m 644 docker/startup_scripts/solr_cli.py /var/interlegis/sapl/solr_cli.py \ + && install -m 644 docker/startup_scripts/create_admin.py /var/interlegis/sapl/create_admin.py \ + && install -m 644 docker/startup_scripts/genkey.py /var/interlegis/sapl/genkey.py \ + && install -m 644 docker/startup_scripts/gunicorn.conf.py /var/interlegis/sapl/gunicorn.conf.py + +# (Se possível, evite copiar .env no build. Use secrets/variáveis em runtime.) COPY docker/config/env_dockerfile /var/interlegis/sapl/sapl/.env -RUN python3 manage.py collectstatic --noinput --clear - -# Remove .env(fake) e sapl.db da imagem -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/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 && \ - ln -s /var/interlegis/sapl/sapl.log /var/log/sapl/sapl.log - -# Debian não possui usuário 'nginx' necessário para o Debian -RUN useradd --no-create-home nginx +# Logs (só se nginx estiver presente) +RUN if [ "$WITH_NGINX" = "1" ]; then \ + ln -sf /dev/stdout /var/log/nginx/access.log; \ + ln -sf /dev/stderr /var/log/nginx/error.log; \ + fi \ + && mkdir -p /var/log/sapl/ \ + && ln -sf /var/interlegis/sapl/sapl.log /var/log/sapl/sapl.log -ENV DEBIAN_FRONTEND teletype +# Cache de fontes e collectstatic +# NÃO atualizamos pip aqui (já veio pronto do builder) +RUN fc-cache -fv \ + && python manage.py collectstatic --noinput --clear \ + && rm -f /var/interlegis/sapl/sapl/.env /var/interlegis/sapl/sapl.db || true -EXPOSE 80/tcp 443/tcp +ENV DEBIAN_FRONTEND=teletype +EXPOSE 80 443 VOLUME ["/var/interlegis/sapl/data", "/var/interlegis/sapl/media", "/var/log/sapl/"] +ENTRYPOINT ["/usr/bin/tini","--"] CMD ["/var/interlegis/sapl/start.sh"] diff --git a/docker/config/nginx/nginx.conf b/docker/config/nginx/nginx.conf index 29b9e805c..e002a6905 100644 --- a/docker/config/nginx/nginx.conf +++ b/docker/config/nginx/nginx.conf @@ -1,4 +1,4 @@ -user nginx; +user www-data nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index b1832a241..83d2e6821 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -9,7 +9,9 @@ services: POSTGRES_PASSWORD: sapl POSTGRES_USER: sapl POSTGRES_DB: sapl - PGDATA : /var/lib/postgresql/data/ + PGDATA: /var/lib/postgresql/data/ + TZ: UTC + PG_TZ: UTC volumes: - sapldb_data:/var/lib/postgresql/data/ ports: @@ -31,10 +33,10 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC1 -# build: -# context: ../ -# dockerfile: ./docker/Dockerfile +# image: interlegis/sapl:3.1.164-RC1 + build: + context: ../ + dockerfile: ./docker/Dockerfile container_name: sapl labels: NAME: "sapl" @@ -51,7 +53,9 @@ services: EMAIL_HOST_PASSWORD: senhasmtp USE_SOLR: 'True' SOLR_COLLECTION: sapl - SOLR_URL: http://solr:solr@saplsolr:8983 + SOLR_URL: http://admin:solr@saplsolr:8983 + SOLR_USER: solr + SOLR_PASSWORD: solr IS_ZK_EMBEDDED: 'True' ENABLE_SAPN: 'False' TZ: America/Sao_Paulo diff --git a/docker/gunicorn_start.sh b/docker/gunicorn_start.sh deleted file mode 100755 index 9ef4b7982..000000000 --- a/docker/gunicorn_start.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash - -## -## -## PARA USO EXCLUSIVO DO CONTAINER DOCKER DO SAPL!!! -## EVITE USAR PARA CHAMADA DIRETAS -## -## - -# As seen in http://tutos.readthedocs.org/en/latest/source/ndg.html - -SAPL_DIR="/var/interlegis/sapl" - -# Seta um novo diretório foi passado como raiz para o SAPL -# caso esse tenha sido passado como parâmetro -if [ "$1" ] -then - SAPL_DIR="$1" -fi - -NAME="SAPL" # Name of the application (*) -DJANGODIR=/var/interlegis/sapl/ # Django project directory (*) -SOCKFILE=/var/interlegis/sapl/run/gunicorn.sock # we will communicate using this unix socket (*) -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=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 (*) - -echo "Starting $NAME as `whoami` on base dir $SAPL_DIR" - -# Create the run directory if it doesn't exist -RUNDIR=$(dirname $SOCKFILE) -test -d $RUNDIR || mkdir -p $RUNDIR - -# Start your Django Unicorn -# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon) -exec gunicorn ${DJANGO_WSGI_MODULE}:application \ - --name $NAME \ - --log-level debug \ - --timeout $TIMEOUT \ - --workers $NUM_WORKERS \ - --max-requests $MAX_REQUESTS \ - --user $USER \ - --access-logfile /var/log/sapl/access.log \ - --error-logfile /var/log/sapl/error.log \ - --bind=unix:$SOCKFILE diff --git a/docker/simple_gunicorn.sh b/docker/simple_gunicorn.sh index 977d44288..196e19dec 100755 --- a/docker/simple_gunicorn.sh +++ b/docker/simple_gunicorn.sh @@ -12,4 +12,5 @@ export PYTHONPATH=$DJANGODIR:$PYTHONPATH # Get eth0 IP and filter out the netmask portion (/24, e.g.) IP=`ip addr | grep 'inet .* eth0' | awk '{print $2}' | sed 's/\/[0-9]*//'` -gunicorn --bind $IP:8000 sapl.wsgi:application +#gunicorn --bind $IP:8000 sapl.wsgi:application +gunicorn -c gunicorn.conf.py sapl.wsgi:application diff --git a/docker/start.sh b/docker/start.sh deleted file mode 100755 index 7a9345fbb..000000000 --- a/docker/start.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env bash - -create_env() { - echo "[ENV FILE] creating .env file..." - # check if file exists - if [ -f "/var/interlegis/sapl/data/secret.key" ]; then - KEY=`cat /var/interlegis/sapl/data/secret.key` - else - KEY=`python3 genkey.py` - echo $KEY > data/secret.key - fi - - FILENAME="/var/interlegis/sapl/sapl/.env" - - if [ -z "${DATABASE_URL:-}" ]; then - DATABASE_URL="postgresql://sapl:sapl@sapldb:5432/sapl" - fi - - # ALWAYS replace the content of .env variable - # If want to conditionally create only if absent then use IF below - # if [ ! -f $FILENAME ]; then - - touch $FILENAME - - # explicitly use '>' to erase any previous content - echo "SECRET_KEY="$KEY > $FILENAME - # now only appends - echo "DATABASE_URL = "$DATABASE_URL >> $FILENAME - echo "DEBUG = ""${DEBUG-False}" >> $FILENAME - echo "EMAIL_USE_TLS = ""${USE_TLS-True}" >> $FILENAME - echo "EMAIL_PORT = ""${EMAIL_PORT-587}" >> $FILENAME - echo "EMAIL_HOST = ""${EMAIL_HOST-''}" >> $FILENAME - echo "EMAIL_HOST_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME - echo "EMAIL_HOST_PASSWORD = ""${EMAIL_HOST_PASSWORD-''}" >> $FILENAME - echo "EMAIL_SEND_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME - echo "DEFAULT_FROM_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME - echo "SERVER_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME - 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 "ENABLE_SAPN = ""${ENABLE_SAPN-False}" >> $FILENAME - - echo "[ENV FILE] done." -} - -create_env - -/bin/bash wait-for-pg.sh $DATABASE_URL - -yes yes | python3 manage.py migrate - - -## SOLR -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 "===================" - 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 wait-for-solr.sh $SOLR_URL - CHECK_SOLR_RETURN=$? - - if [ $CHECK_SOLR_RETURN == 1 ]; then - 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 & - # Enable SOLR switch on, creating if it doesn't exist on database - ./manage.py waffle_switch SOLR_SWITCH on --create - else - echo "Solr is offline, not possible to connect." - # Disable Solr switch off, creating if it doesn't exist on database - ./manage.py waffle_switch SOLR_SWITCH off --create - fi - -else - echo "Solr support is not initialized." - # Disable Solr switch off, creating if it doesn't exist on database - ./manage.py waffle_switch SOLR_SWITCH off --create -fi - -## Enable/Disable SAPN -if [ "${ENABLE_SAPN-False}" == "True" ] || [ "${ENABLE_SAPN-False}" == "true" ]; then - echo "Enabling SAPN" - ./manage.py waffle_switch SAPLN_SWITCH on --create -else - echo "Enabling SAPL" - ./manage.py waffle_switch SAPLN_SWITCH off --create -fi - - -echo "Creating admin user..." - -user_created=$(python3 create_admin.py 2>&1) - -echo $user_created - -cmd=$(echo $user_created | grep 'ADMIN_USER_EXISTS') -user_exists=$? - -cmd=$(echo $user_created | grep 'MISSING_ADMIN_PASSWORD') -lack_pwd=$? - -if [ $user_exists -eq 0 ]; then - echo "[SUPERUSER CREATION] User admin already exists. Not creating" -fi - -if [ $lack_pwd -eq 0 ]; then - echo "[SUPERUSER] Environment variable $ADMIN_PASSWORD for superuser admin was not set. Leaving container" - # return -1 -fi - -# Backfilling AuditLog's JSON field -time ./manage.py backfill_auditlog & - -echo "-------------------------------------" -echo "| ███████╗ █████╗ ██████╗ ██╗ |" -echo "| ██╔════╝██╔══██╗██╔══██╗██║ |" -echo "| ███████╗███████║██████╔╝██║ |" -echo "| ╚════██║██╔══██║██╔═══╝ ██║ |" -echo "| ███████║██║ ██║██║ ███████╗ |" -echo "| ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ |" -echo "-------------------------------------" - -/bin/sh gunicorn_start.sh & -/usr/sbin/nginx -g "daemon off;" diff --git a/docker/create_admin.py b/docker/startup_scripts/create_admin.py similarity index 100% rename from docker/create_admin.py rename to docker/startup_scripts/create_admin.py diff --git a/docker/genkey.py b/docker/startup_scripts/genkey.py similarity index 100% rename from docker/genkey.py rename to docker/startup_scripts/genkey.py diff --git a/docker/startup_scripts/gunicorn.conf.py b/docker/startup_scripts/gunicorn.conf.py new file mode 100644 index 000000000..95d2f0256 --- /dev/null +++ b/docker/startup_scripts/gunicorn.conf.py @@ -0,0 +1,80 @@ +# /var/interlegis/sapl/gunicorn.conf.py + +import os +import pathlib +import multiprocessing + +# ---- SAPL app configuration ---- +NAME = "SAPL" +DJANGODIR = "/var/interlegis/sapl" +SOCKFILE = f"unix:{DJANGODIR}/run/gunicorn.sock" +USER = "sapl" +GROUP = "nginx" +NUM_WORKERS = int(os.getenv("WEB_CONCURRENCY", "3")) +THREADS = int(os.getenv("GUNICORN_THREADS", "8")) +TIMEOUT = int(os.getenv("GUNICORN_TIMEOUT", "300")) +MAX_REQUESTS = 1000 +WORKER_CLASS = "gthread" +DJANGO_SETTINGS = "sapl.settings" +WSGI_APP = "sapl.wsgi:application" + +# ---- gunicorn settings ---- +# Equivalent of: --name +proc_name = NAME + +# Equivalent of: --bind=unix:... +# For quick testing via browser, you can switch to: bind = "0.0.0.0:8000" +bind = f"unix:{SOCKFILE}" +umask = 0o007 +user = USER +group = GROUP + +# Ensure imports work like in your script’s working dir +chdir = DJANGODIR + +# Allow starting with just: gunicorn -c gunicorn.conf.py +wsgi_app = WSGI_APP + +# Logs +loglevel = "debug" +accesslog = "/var/log/sapl/access.log" +errorlog = "/var/log/sapl/error.log" +# errorlog = "-" # send to stderr (so you see it in docker logs or terminal) +# accesslog = "-" # send to stdout +capture_output = True # capture print/tracebacks from app + +# Worker/process lifecycle +workers = NUM_WORKERS +worker_class = WORKER_CLASS +threads = THREADS +timeout = TIMEOUT +graceful_timeout = 30 +keepalive = 10 +backlog = 2048 +max_requests = MAX_REQUESTS +max_requests_jitter = 100 + +# Environment (same as exporting before running) +raw_env = [ + f"DJANGO_SETTINGS_MODULE={DJANGO_SETTINGS}", + # If you’re using ReportLab and seeing segfaults with PDFs, keep this: + # "RL_NOACCEL=1", +] + +# If you previously enabled preload and saw segfaults with native libs, keep it off: +preload_app = False + + +# Create the run/ directory for the UNIX socket (your script did this) +def on_starting(server): + pathlib.Path(SOCKFILE).parent.mkdir(parents=True, exist_ok=True) + + +# Close DB connections after fork (safer when using preload or certain DB drivers) +def post_fork(server, worker): + try: + from django import db + db.connections.close_all() + except Exception: + # Django not initialized yet or not available + pass diff --git a/docker/solr_cli.py b/docker/startup_scripts/solr_cli.py similarity index 95% rename from docker/solr_cli.py rename to docker/startup_scripts/solr_cli.py index d452d1fe9..e7600914a 100755 --- a/docker/solr_cli.py +++ b/docker/startup_scripts/solr_cli.py @@ -20,6 +20,8 @@ from kazoo.client import KazooClient # logging.basicConfig() +logging.captureWarnings(True) +logger = logging.getLogger(__name__) SECURITY_FILE_TEMPLATE = """ { @@ -49,6 +51,7 @@ def solr_hash_password(password: str, salt: str = None): salt (optional): base64 salt string returns: sha256 hash of password and salt (both base64 strings) """ + logger.debug("Generating Solr password") m = sha256() if salt is None: salt = secrets.token_bytes(32) @@ -67,32 +70,32 @@ def solr_hash_password(password: str, salt: str = None): def create_security_file(username, password): - print("Creating security.json file...") + logger.info("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!") + logger.info("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}...") + logger.info(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...") + logger.info("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')) + logger.info("file uploaded!") + logger.info(data.decode('utf-8')) zk.stop() except Exception as e: - print(e) + logger.error(e) sys.exit(-1) @@ -250,6 +253,7 @@ def setup_embedded_zk(solr_url): _, solr_user, solr_pwd, solr_host, solr_port = match.groups() if solr_user and solr_pwd and solr_host: + print(f"Creating Solr user {solr_user} with password {solr_pwd}") create_security_file(solr_user, solr_pwd) upload_security_file(solr_host) else: diff --git a/docker/startup_scripts/start.sh b/docker/startup_scripts/start.sh new file mode 100755 index 000000000..b612532bc --- /dev/null +++ b/docker/startup_scripts/start.sh @@ -0,0 +1,289 @@ +#!/usr/bin/env bash +set -Eeuo pipefail +IFS=$'\n\t' + +DATA_DIR="/var/interlegis/sapl/data" +APP_DIR="/var/interlegis/sapl/sapl" +ENV_FILE="$APP_DIR/.env" +SECRET_FILE="$DATA_DIR/secret.key" + +mkdir -p "$DATA_DIR" "$APP_DIR" + +log() { printf '[%s] %s\n' "$(date -Is)" "$*"; } +err() { printf '[%s] ERROR: %s\n' "$(date -Is)" "$*" >&2; } + +cleanup() { jobs -p | xargs -r kill 2>/dev/null || true; } +trap cleanup TERM INT EXIT + +# --- new function --- +configure_pg_timezone() { + : "${DATABASE_URL:=postgresql://sapl:sapl@sapldb:5432/sapl}" + : "${DB_TIMEZONE:=America/Sao_Paulo}" + : "${DB_NAME:=}" + : "${DB_ROLE:=}" + + log "Checking database/role timezone defaults…" + + # Detect DB and role if not provided + if [[ -z "$DB_NAME" ]]; then + DB_NAME="$(psql "$DATABASE_URL" -At -v ON_ERROR_STOP=1 -c 'select current_database();')" + fi + if [[ -z "$DB_ROLE" ]]; then + DB_ROLE="$(psql "$DATABASE_URL" -At -v ON_ERROR_STOP=1 -c 'select current_user;')" + fi + + # What is the effective timezone for this DB/role right now? + current_tz="$(psql "$DATABASE_URL" -At -v ON_ERROR_STOP=1 -c 'show time zone;')" + current_tz_lower="${current_tz,,}" + + # Consider these as already UTC + if [[ "$current_tz_lower" == "utc" || "$current_tz_lower" == "etc/utc" ]]; then + log "Timezone already UTC for DB='$DB_NAME' ROLE='$DB_ROLE' (SHOW TIME ZONE => $current_tz). Skipping ALTERs." + return + fi + + log "Timezone is '$current_tz' (not UTC). Applying persistent defaults…" + + # Persist at database level (requires DB owner or superuser) + if psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -q \ + -c "ALTER DATABASE \"$DB_NAME\" SET timezone TO '$DB_TIMEZONE';"; then + log "ALTER DATABASE \"$DB_NAME\" SET timezone TO '$DB_TIMEZONE' applied." + else + err "ALTER DATABASE \"$DB_NAME\" failed. Need DB owner or superuser." + exit 1 + fi + + # Persist at role level (requires superuser) + if psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -q \ + -c "ALTER ROLE \"$DB_ROLE\" SET timezone TO '$DB_TIMEZONE';"; then + log "ALTER ROLE \"$DB_ROLE\" SET timezone TO '$DB_TIMEZONE' applied." + else + err "ALTER ROLE \"$DB_ROLE\" failed. Need superuser privileges." + exit 1 + fi + + # Re-check (new session shows the new default) + verify_tz="$(psql "$DATABASE_URL" -At -v ON_ERROR_STOP=1 -c 'show time zone;')" + log "SHOW TIME ZONE now => $verify_tz (new sessions will inherit the defaults)." +} + + +create_secret() { + if [[ -f "$SECRET_FILE" ]]; then + SECRET_KEY="$(<"$SECRET_FILE")" + else + log "Generating SECRET_KEY..." + SECRET_KEY="$(python3 genkey.py)" + umask 177 + printf '%s\n' "$SECRET_KEY" > "$SECRET_FILE" + chmod 600 "$SECRET_FILE" + fi + export SECRET_KEY +} + +write_env_file() { + : "${DATABASE_URL:=postgresql://sapl:sapl@sapldb:5432/sapl}" + : "${DEBUG:=False}" + : "${EMAIL_USE_TLS:=True}" + : "${EMAIL_PORT:=587}" + : "${EMAIL_HOST:=}" + : "${EMAIL_HOST_USER:=}" + : "${EMAIL_HOST_PASSWORD:=}" + : "${DEFAULT_FROM_EMAIL:=$EMAIL_HOST_USER}" + : "${SERVER_EMAIL:=$EMAIL_HOST_USER}" + : "${USE_SOLR:=False}" + : "${SOLR_COLLECTION:=sapl}" + : "${SOLR_URL:=http://localhost:8983}" + : "${IS_ZK_EMBEDDED:=False}" + : "${NUM_SHARDS:=1}" + : "${RF:=1}" + : "${MAX_SHARDS_PER_NODE:=1}" + : "${ENABLE_SAPN:=False}" + + tmp="$(mktemp)" + { + printf 'SECRET_KEY=%s\n' "$SECRET_KEY" + printf 'DATABASE_URL=%s\n' "$DATABASE_URL" + printf 'DEBUG=%s\n' "$DEBUG" + printf 'EMAIL_USE_TLS=%s\n' "$EMAIL_USE_TLS" + printf 'EMAIL_PORT=%s\n' "$EMAIL_PORT" + printf 'EMAIL_HOST=%s\n' "$EMAIL_HOST" + printf 'EMAIL_HOST_USER=%s\n' "$EMAIL_HOST_USER" + printf 'EMAIL_HOST_PASSWORD=%s\n' "$EMAIL_HOST_PASSWORD" + printf 'EMAIL_SEND_USER=%s\n' "$EMAIL_HOST_USER" + printf 'DEFAULT_FROM_EMAIL=%s\n' "$DEFAULT_FROM_EMAIL" + printf 'SERVER_EMAIL=%s\n' "$SERVER_EMAIL" + printf 'USE_SOLR=%s\n' "$USE_SOLR" + printf 'SOLR_COLLECTION=%s\n' "$SOLR_COLLECTION" + printf 'SOLR_URL=%s\n' "$SOLR_URL" + printf 'IS_ZK_EMBEDDED=%s\n' "$IS_ZK_EMBEDDED" + printf 'NUM_SHARDS=%s\n' "$NUM_SHARDS" + printf 'RF=%s\n' "$RF" + printf 'MAX_SHARDS_PER_NODE=%s\n' "$MAX_SHARDS_PER_NODE" + printf 'ENABLE_SAPN=%s\n' "$ENABLE_SAPN" + } > "$tmp" + + chmod 600 "$tmp" + mv -f "$tmp" "$ENV_FILE" + log "[ENV] wrote $ENV_FILE" +} + +wait_for_pg() { + : "${DATABASE_URL:=postgresql://sapl:sapl@sapldb:5432/sapl}" + log "Waiting for Postgres..." + /bin/bash wait-for-pg.sh "$DATABASE_URL" +} + +migrate_db() { + log "Running Django migrations..." + python3 manage.py migrate --noinput +} + +# In start.sh (near your other helpers) +configure_solr() { + # respect envs, with sane defaults + local USE="${USE_SOLR:-False}" + local URL="${SOLR_URL:-http://admin:solr@localhost:8983}" + local COL="${SOLR_COLLECTION:-sapl}" + local SHARDS="${NUM_SHARDS:-1}" + local RF="${RF:-1}" + local MS="${MAX_SHARDS_PER_NODE:-1}" + local IS_ZK="${IS_ZK_EMBEDDED:-False}" + + # total wait time before we give up (seconds) + local WAIT_TIMEOUT="${SOLR_WAIT_TIMEOUT:-30}" + # per probe max seconds + local PROBE_TIMEOUT="${SOLR_PROBE_TIMEOUT:-3}" + # sleep between probes + local SLEEP_SECS="${SOLR_WAIT_INTERVAL:-2}" + + # feature flag OFF by default unless we confirm Solr + ./manage.py waffle_switch SOLR_SWITCH off --create || true + + # Fast exit if disabled + if [[ "${USE,,}" != "true" ]]; then + echo "[SOLR] USE_SOLR=$USE → skipping Solr initialization." + return 0 + fi + + echo "[SOLR] Best-effort wait (<= ${WAIT_TIMEOUT}s): $URL, collection=$COL" + + local deadline=$((SECONDS + WAIT_TIMEOUT)) + while (( SECONDS < deadline )); do + # Try a cheap SolrCloud endpoint; swap for /solr/admin/info/system if you prefer + if curl -fsS --max-time "${PROBE_TIMEOUT}" \ + "${URL%/}/solr/admin/collections?action=LIST" >/dev/null; then + echo "[SOLR] Reachable. Kicking off background configuration…" + + # optional flag if ZK is embedded + local ZK_FLAG="" + if [[ "${IS_ZK,,}" == "true" ]]; then + ZK_FLAG="--embedded_zk" + fi + + ( + set -Eeuo pipefail + python3 solr_cli.py \ + -u "$URL" -c "$COL" -s "$SHARDS" -rf "$RF" -ms "$MS" $ZK_FLAG + ./manage.py waffle_switch SOLR_SWITCH on --create + echo "[SOLR] Configuration done, SOLR_SWITCH=on." + ) >/var/log/sapl/solr_init.log 2>&1 & disown + + return 0 + fi + sleep "${SLEEP_SECS}" + done + + echo "[SOLR] Not reachable within ${WAIT_TIMEOUT}s. Proceeding without Solr (SOLR_SWITCH=off)." + return 0 +} + +configure_sapn() { + if [[ "${ENABLE_SAPN,,}" == "true" ]]; then + log "Enabling SAPN" + python3 manage.py waffle_switch SAPN_SWITCH on --create + else + log "Disabling SAPN" + python3 manage.py waffle_switch SAPN_SWITCH off --create + fi +} + +create_admin() { + log "Creating admin user..." + out="$(python3 create_admin.py 2>&1 || true)" + printf '%s\n' "$out" + + if grep -q 'MISSING_ADMIN_PASSWORD' <<<"$out"; then + err "[SUPERUSER] ADMIN_PASSWORD not set. Exiting." + exit 1 + fi +} + +fix_logging_and_socket_perms() { + local APP_DIR="/var/interlegis/sapl" + local LOG_FILE="$APP_DIR/sapl.log" + + # dirs + mkdir -p "$APP_DIR/run" + chown -R root:nginx "$APP_DIR" + chmod 2775 "$APP_DIR" "$APP_DIR/run" + chmod -R g+rwX "$APP_DIR" + + # new files/sockets → 660 + umask 0007 + + # ensure log file is owned by sapl and writable + install -Dm0660 /dev/null "$LOG_FILE" + chown sapl:nginx "$LOG_FILE" + + # stale socket cleanup (if any) + rm -f "$APP_DIR/run/gunicorn.sock" 2>/dev/null || true +} + +setup_cache_dir() { + # if you later move cache under /var/interlegis/sapl/cache, this line can read an env var + local CACHE_DIR="${DJANGO_CACHE_DIR:-/var/tmp/django_cache}" + + mkdir -p "$CACHE_DIR" + chown -R sapl:nginx "$CACHE_DIR" + chmod -R 2775 "$CACHE_DIR" + find "$CACHE_DIR" -type d -exec chmod g+s {} + + + # keep your global umask; 0007 ensures new files are rw for owner+group + umask 0007 +} + +start_services() { + log "Starting gunicorn..." + gunicorn -c gunicorn.conf.py & + log "Starting nginx..." + exec /usr/sbin/nginx -g "daemon off;" +} + +main() { + create_secret + write_env_file + wait_for_pg + configure_pg_timezone + migrate_db + configure_solr || true + configure_sapn + create_admin + setup_cache_dir + fix_logging_and_socket_perms + + cat <<'BANNER' +------------------------------------- +| ███████╗ █████╗ ██████╗ ██╗ | +| ██╔════╝██╔══██╗██╔══██╗██║ | +| ███████╗███████║██████╔╝██║ | +| ╚════██║██╔══██║██╔═══╝ ██║ | +| ███████║██║ ██║██║ ███████╗ | +| ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ | +------------------------------------- +BANNER + + start_services +} + +main "$@" diff --git a/docker/wait-for-pg.sh b/docker/startup_scripts/wait-for-pg.sh similarity index 100% rename from docker/wait-for-pg.sh rename to docker/startup_scripts/wait-for-pg.sh diff --git a/docker/wait-for-solr.sh b/docker/startup_scripts/wait-for-solr.sh similarity index 100% rename from docker/wait-for-solr.sh rename to docker/startup_scripts/wait-for-solr.sh diff --git a/release.sh b/release.sh index 3ee43b85a..e2928980b 100755 --- a/release.sh +++ b/release.sh @@ -76,9 +76,6 @@ function set_rc_version { fi FINAL_VERSION=$NEXT_RC_VERSION -## DEBUG -# echo "OLD_VERSION: $OLD_VERSION" -# echo "FINAL_VERSION: $FINAL_VERSION" } # Function to display Yes/No prompt with colored message diff --git a/requirements/dev-requirements.txt b/requirements/dev-requirements.txt index 56cdb1bb1..b7b662d5e 100644 --- a/requirements/dev-requirements.txt +++ b/requirements/dev-requirements.txt @@ -1,11 +1,11 @@ -r test-requirements.txt -autopep8==1.2.4 -beautifulsoup4==4.9.1 -django-debug-toolbar==1.11.1 -ipdb==0.13.3 -fancycompleter==0.9.1 -pdbpp==0.10.3 -pip-review==0.4 -pipdeptree==0.10.1 +autopep8==2.3.2 +beautifulsoup4==4.13.5 +django-debug-toolbar==3.2.4 +ipdb==0.13.13 +fancycompleter==0.11.1 +pdbpp==0.11.7 +pip-review==1.3.0 +pipdeptree==2.28.0 pydevd-pycharm~=203.7148.7 diff --git a/requirements/requirements.txt b/requirements/requirements.txt index a53ec010a..56c2459b4 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,7 +2,6 @@ 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 @@ -16,14 +15,18 @@ drf-spectacular==0.18.2 django-ratelimit==3.0.1 easy-thumbnails==2.8.5 python-decouple==3.1 -psycopg2-binary==2.8.6 +dj-database-url==0.5.0 +psycopg2-binary==2.9.9 pyyaml==6.0.1 pytz==2019.3 python-magic==0.4.15 unipath==1.1 -WeasyPrint==51 Pillow==10.3.0 -gunicorn==22.0.0 +rlPyCairo==0.3.0 +reportlab==4.2.0 +WeasyPrint==66 +trml2pdf==0.6 +gunicorn==23.0.0 more-itertools==8.2.0 pysolr==3.6.0 PyPDF4==1.27.0 @@ -37,5 +40,4 @@ django-prometheus==2.2.0 asn1crypto==1.5.1 XlsxWriter==3.2.0 -git+https://github.com/interlegis/trml2pdf git+https://github.com/interlegis/django-admin-bootstrapped diff --git a/requirements/test-requirements.txt b/requirements/test-requirements.txt index 5116d1fe7..2da40408f 100644 --- a/requirements/test-requirements.txt +++ b/requirements/test-requirements.txt @@ -1,11 +1,10 @@ -r requirements.txt -coverage==4.4 -django-webtest==1.9.7 -flake8==2.6.2 -isort==4.2.5 -model-bakery==1.1.0 -pep8==1.7.0 -pytest==5.4.3 -pytest-cov==2.10.0 -pytest-django==3.8.0 -webtest==2.0.21 +coverage==7.6.1 +django-webtest==1.9.8 +flake8==7.1.1 +isort==5.13.2 +model-bakery==1.5.0 +pycodestyle==2.12.1 +pytest==8.3.3 +pytest-cov==5.0.0 +WebTest==3.0.6 diff --git a/sapl/base/email_utils.py b/sapl/base/email_utils.py index 3ccf64690..2781e9876 100644 --- a/sapl/base/email_utils.py +++ b/sapl/base/email_utils.py @@ -21,7 +21,7 @@ def load_email_templates(templates, context={}): tpl = loader.get_template(t) email = tpl.render(context) if t.endswith(".html"): - email = email.replace('\n', '').replace('\r', '') + email = email.replace('\\n', '').replace('\r', '') emails.append(email) return emails diff --git a/sapl/base/search_indexes.py b/sapl/base/search_indexes.py index e76f00168..d0432aded 100644 --- a/sapl/base/search_indexes.py +++ b/sapl/base/search_indexes.py @@ -108,7 +108,7 @@ class TextExtractField(CharField): continue data += getattr(self, func)(value) + ' ' - data = data.replace('\n', ' ') + data = data.replace('\\n', ' ') return data diff --git a/sapl/base/templatetags/common_tags.py b/sapl/base/templatetags/common_tags.py index 9a60bf85e..84f61b64f 100644 --- a/sapl/base/templatetags/common_tags.py +++ b/sapl/base/templatetags/common_tags.py @@ -300,7 +300,7 @@ def youtube_url(value): # Test if YouTube video # tested on https://pythex.org/ value = value.lower() - youtube_pattern = "^((https?://)?(www\.)?youtube\.com\/watch\?v=)" + youtube_pattern = r"^((https?://)?(www\.)?youtube\.com\/watch\?v=)" r = re.findall(youtube_pattern, value) return True if r else False @@ -308,7 +308,7 @@ def youtube_url(value): @register.filter def facebook_url(value): value = value.lower() - facebook_pattern = "^((https?://)?((www|pt-br)\.)?facebook\.com(\/.+)?\/videos(\/.*)?)" + facebook_pattern = r"^((https?://)?((www|pt-br)\.)?facebook\.com(\/.+)?\/videos(\/.*)?)" r = re.findall(facebook_pattern, value) return True if r else False diff --git a/sapl/compilacao/forms.py b/sapl/compilacao/forms.py index 18c24cf1f..c4154ec00 100644 --- a/sapl/compilacao/forms.py +++ b/sapl/compilacao/forms.py @@ -987,7 +987,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm): p.pk, _('%s realizada em %s. %s') % ( p.tipo_publicacao, defaultfilters.date( - p.data, "d \d\e F \d\e Y"), + p.data, r"d \d\e F \d\e Y"), str(p.ta))) for p in pubs] dvs = Dispositivo.objects.order_by('ordem').filter( diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index 7b54fcb67..e8a32615e 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -287,7 +287,7 @@ class TextoArticulado(TimestampedMixin): return _('%(tipo)s nº %(numero)s, de %(data)s') % { 'tipo': self.tipo_ta, 'numero': numero, - 'data': defaultfilters.date(self.data, "d \d\e F \d\e Y").lower()} + 'data': defaultfilters.date(self.data, r"d \d\e F \d\e Y").lower()} def hash(self): from django.core import serializers @@ -943,7 +943,7 @@ class Publicacao(TimestampedMixin): def __str__(self): return _('%s realizada em %s \n %s') % ( self.tipo_publicacao, - defaultfilters.date(self.data, "d \d\e F \d\e Y"), + defaultfilters.date(self.data, r"d \d\e F \d\e Y"), self.ta) diff --git a/sapl/lexml/forms.py b/sapl/lexml/forms.py index 7904508af..8fd59b6ac 100644 --- a/sapl/lexml/forms.py +++ b/sapl/lexml/forms.py @@ -31,7 +31,7 @@ class LexmlProvedorForm(ModelForm): return cd if cd["xml"]: - xml = re.sub("\n|\t", "", cd["xml"].strip()) + xml = re.sub(r"\n|\t", "", cd["xml"].strip()) validar_xml(xml) validar_schema(xml) diff --git a/sapl/lexml/models.py b/sapl/lexml/models.py index 1a5d27144..e892877fe 100644 --- a/sapl/lexml/models.py +++ b/sapl/lexml/models.py @@ -25,7 +25,7 @@ class LexmlProvedor(models.Model): # LexmlRegistroProvedor def pretty_xml(self): import html safe_xml = html.escape(self.xml) - return safe_xml.replace('\n', '
').replace(' ', ' ') + return safe_xml.replace('\\n', '
').replace(' ', ' ') class Meta: verbose_name = _('Provedor Lexml') diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 7f3207214..c685109ae 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1716,7 +1716,7 @@ class TramitacaoEmLoteForm(ModelForm): ('texto', 12) ]) - documentos_checkbox_HTML = ''' + documentos_checkbox_HTML = r'''
Selecione as matérias para tramitação: diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 56c56d645..da2e0ac91 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -1,4 +1,3 @@ - from datetime import datetime from django.contrib.auth.models import Group @@ -21,8 +20,7 @@ from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey, texto_upload_path, get_settings_auth_user_model, OverwriteStorage) - -#from sapl.protocoloadm.models import Protocolo +# from sapl.protocoloadm.models import Protocolo EM_TRAMITACAO = [(1, 'Sim'), (0, 'Não')] @@ -185,7 +183,6 @@ def anexo_upload_path(instance, filename): class MateriaLegislativa(models.Model): - tipo = models.ForeignKey( TipoMateriaLegislativa, on_delete=models.PROTECT, @@ -282,7 +279,7 @@ class MateriaLegislativa(models.Model): Autor, through='Autoria', through_fields=('materia', 'autor'), - symmetrical=False,) + symmetrical=False, ) data_ultima_atualizacao = models.DateTimeField( blank=True, null=True, @@ -325,7 +322,7 @@ class MateriaLegislativa(models.Model): 'numero': self.numero, 'data': defaultfilters.date( self.data_apresentacao, - "d \d\e F \d\e Y" + r"d \d\e F \d\e Y" )} def data_entrada_protocolo(self): @@ -400,7 +397,7 @@ class Autoria(models.Model): class Meta: verbose_name = _('Autoria') verbose_name_plural = _('Autorias') - unique_together = (('autor', 'materia'), ) + unique_together = (('autor', 'materia'),) ordering = ('-primeiro_autor', 'autor__nome') def __str__(self): @@ -456,9 +453,9 @@ class PautaReuniao(models.Model): def __str__(self): return _('Reunião: %(reuniao)s' ' - Matéria: %(materia)s') % { - 'reuniao': self.reuniao, - 'materia': self.materia - } + 'reuniao': self.reuniao, + 'materia': self.materia + } class Anexada(models.Model): @@ -482,8 +479,8 @@ class Anexada(models.Model): def __str__(self): return _('Principal: %(materia_principal)s' ' - Anexada: %(materia_anexada)s') % { - 'materia_principal': self.materia_principal, - 'materia_anexada': self.materia_anexada} + 'materia_principal': self.materia_principal, + 'materia_anexada': self.materia_anexada} class AssuntoMateria(models.Model): @@ -755,7 +752,6 @@ class Parecer(models.Model): class Proposicao(models.Model): - autor = models.ForeignKey( Autor, null=True, @@ -978,13 +974,13 @@ class Proposicao(models.Model): return '%s nº _____ %s' % ( self.tipo, formats.date_format( self.data_envio if self.data_envio else timezone.now(), - "\d\e d \d\e F \d\e Y")) + r"\d\e d \d\e F \d\e Y")) class Meta: ordering = ['-data_recebimento'] verbose_name = _('Proposição') verbose_name_plural = _('Proposições') - unique_together = (('content_type', 'object_id'), ) + unique_together = (('content_type', 'object_id'),) permissions = ( ('detail_proposicao_enviada', _('Pode acessar detalhes de uma proposição enviada.')), @@ -1016,7 +1012,7 @@ class Proposicao(models.Model): 'numero': self.numero_proposicao, 'data': defaultfilters.date( self.data_envio if self.data_envio else timezone.now(), - "d \d\e F \d\e Y" + r"d \d\e F \d\e Y" )} def delete(self, using=None, keep_parents=False): diff --git a/sapl/materia/urls.py b/sapl/materia/urls.py index 272970b82..80d909e79 100644 --- a/sapl/materia/urls.py +++ b/sapl/materia/urls.py @@ -143,7 +143,7 @@ urlpatterns_proposicao = [ url(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(), name='proposicao-devolvida'), url(r'^proposicao/confirmar/P(?P[0-9A-Fa-f]+)/' - '(?P\d+)', ConfirmarProposicao.as_view(), + r'(?P\d+)', ConfirmarProposicao.as_view(), name='proposicao-confirmar'), url(r'^sistema/proposicao/tipo/', include(TipoProposicaoCrud.get_urls())), diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 5380b2993..3116f96c1 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -224,7 +224,7 @@ class NormaJuridicaForm(FileFieldCheckMixin, ModelForm): return cleaned_data import re - has_digits = re.sub('[^0-9]', '', cleaned_data['numero']) + has_digits = re.sub(r'[^0-9]', '', cleaned_data['numero']) if not has_digits: self.logger.error("Número de norma ({}) não pode conter somente letras.".format( cleaned_data['numero'])) diff --git a/sapl/norma/models.py b/sapl/norma/models.py index df672294d..668f93347 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -263,7 +263,7 @@ class NormaJuridica(models.Model): 'tipo': self.tipo, 'orgao_sigla': f'-{self.orgao.sigla}' if self.orgao else '', 'numero': numero_norma, - 'data': defaultfilters.date(self.data, "d \d\e F \d\e Y").lower()} + 'data': defaultfilters.date(self.data, r"d \d\e F \d\e Y").lower()} @property def epigrafe(self): @@ -278,7 +278,7 @@ class NormaJuridica(models.Model): return _('%(tipo)s nº %(numero)s, de %(data)s') % { 'tipo': self.tipo, 'numero': numero_norma, - 'data': defaultfilters.date(self.data, "d \d\e F \d\e Y").lower()} + 'data': defaultfilters.date(self.data, r"d \d\e F \d\e Y").lower()} def delete(self, using=None, keep_parents=False): texto_integral = self.texto_integral diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 238650291..27758a1ca 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -489,7 +489,7 @@ def recuperar_numero_norma(request): norma = NormaJuridica.objects.filter(**param).order_by( 'tipo', 'ano', 'numero').values_list('numero', flat=True) if norma: - numeros = sorted([int(re.sub("[^0-9].*", '', n)) for n in norma]) + numeros = sorted([int(re.sub(r"[^0-9].*", '', n)) for n in norma]) next_num = numeros.pop() + 1 response = JsonResponse({'numero': next_num, 'ano': param['ano']}) diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 42b314ac2..de451b555 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -4,7 +4,6 @@ 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 from sapl.base.models import Autor from sapl.decorators import vigencia_atual diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 58223f21c..58cd07568 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -1110,7 +1110,7 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): numero_protocolo = self.data['numero_protocolo'] ano_protocolo = self.data['ano_protocolo'] - complemento = re.sub('\s+', '', self.data['complemento']).upper() + complemento = re.sub(r'\s+', '', self.data['complemento']).upper() numero_documento = int(self.cleaned_data['numero']) tipo_documento = int(self.data['tipo']) ano_documento = int(self.data['ano']) @@ -1558,7 +1558,7 @@ class TramitacaoEmLoteAdmForm(ModelForm): ('texto', 12) ]) - documentos_checkbox_HTML = ''' + documentos_checkbox_HTML = r'''
Selecione os documentos para tramitação: diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index fb6f48055..b09f7680a 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -448,7 +448,7 @@ class DocumentoAdministrativoCrud(Crud): def form_valid(self, form): form.instance.complemento = re.sub( - '\s+', '', form.instance.complemento).upper() + r'\s+', '', form.instance.complemento).upper() return super().form_valid(form) class UpdateView(Crud.UpdateView): @@ -481,7 +481,7 @@ class DocumentoAdministrativoCrud(Crud): break form.instance.complemento = re.sub( - '\s+', '', form.instance.complemento).upper() + r'\s+', '', form.instance.complemento).upper() return super().form_valid(form) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index b96557e16..4766a8026 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -613,13 +613,13 @@ def get_sessao_plenaria(sessao, casa, user): if not is_empty(conteudo): # unescape HTML codes # https://github.com/interlegis/sapl/issues/1046 - conteudo = re.sub('style=".*?"', '', conteudo) - conteudo = re.sub('class=".*?"', '', conteudo) + conteudo = re.sub(r'style=".*?"', '', conteudo) + conteudo = re.sub(r'class=".*?"', '', conteudo) # OSTicket Ticket #796450 - conteudo = re.sub('align=".*?"', '', conteudo) - conteudo = re.sub('', '

', conteudo) + conteudo = re.sub(r'align=".*?"', '', conteudo) + conteudo = re.sub(r'', '

', conteudo) # OSTicket Ticket #796450 - conteudo = re.sub('', '
', conteudo) + conteudo = re.sub(r'', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -875,7 +875,7 @@ def get_sessao_plenaria(sessao, casa, user): # unescape HTML codes # https://github.com/interlegis/sapl/issues/1046 - conteudo = re.sub('style=".*?"', '', conteudo) + conteudo = re.sub(r'style=".*?"', '', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -895,7 +895,7 @@ def get_sessao_plenaria(sessao, casa, user): # unescape HTML codes # https://github.com/interlegis/sapl/issues/1046 - conteudo = re.sub('style=".*?"', '', conteudo) + conteudo = re.sub(r'style=".*?"', '', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -1322,13 +1322,13 @@ def get_pauta_sessao(sessao, casa): if not is_empty(conteudo): # unescape HTML codes # https://github.com/interlegis/sapl/issues/1046 - conteudo = re.sub('style=".*?"', '', conteudo) - conteudo = re.sub('class=".*?"', '', conteudo) + conteudo = re.sub(r'style=".*?"', '', conteudo) + conteudo = re.sub(r'class=".*?"', '', conteudo) # OSTicket Ticket #796450 - conteudo = re.sub('align=".*?"', '', conteudo) - conteudo = re.sub('', '

', conteudo) + conteudo = re.sub(r'align=".*?"', '', conteudo) + conteudo = re.sub(r'', '

', conteudo) # OSTicket Ticket #796450 - conteudo = re.sub('', '
', conteudo) + conteudo = re.sub(r'', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' diff --git a/sapl/settings.py b/sapl/settings.py index 9b7fa3c55..b946fb565 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -24,6 +24,8 @@ from unipath import Path logging.captureWarnings(True) +logger = logging.getLogger(__name__) + host = socket.gethostbyname_ex(socket.gethostname())[0] BASE_DIR = Path(__file__).ancestor(1) @@ -68,37 +70,37 @@ SAPL_APPS = ( ) INSTALLED_APPS = ( - 'django_admin_bootstrapped', # must come before django.contrib.admin - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.forms', + 'django_admin_bootstrapped', # must come before django.contrib.admin + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django.forms', - 'django_extensions', + 'django_extensions', - 'crispy_forms', + 'crispy_forms', - 'waffle', + 'waffle', - 'drf_spectacular', - 'rest_framework', - 'rest_framework.authtoken', - 'django_filters', + 'drf_spectacular', + 'rest_framework', + 'rest_framework.authtoken', + 'django_filters', - 'easy_thumbnails', - 'image_cropping', + 'easy_thumbnails', + 'image_cropping', - 'haystack', - 'django.contrib.postgres', + 'haystack', + 'django.contrib.postgres', - 'webpack_loader', + 'webpack_loader', - 'django_prometheus', + 'django_prometheus', -) + SAPL_APPS + ) + SAPL_APPS # FTS = Full Text Search # Desabilita a indexação textual até encontramos uma solução para a issue @@ -112,6 +114,10 @@ USE_SOLR = config('USE_SOLR', cast=bool, default=False) SOLR_URL = config('SOLR_URL', cast=str, default='http://localhost:8983') SOLR_COLLECTION = config('SOLR_COLLECTION', cast=str, default='sapl') +# FOR HAYSTACK 3.3.1 (Django >= 3) +# SOLR_USER = config('SOLR_USER', cast=str) +# SOLR_PASSWORD = config('SOLR_PASSWORD', cast=str) + if USE_SOLR: HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' # enable auto-index SEARCH_BACKEND = 'haystack.backends.solr_backend.SolrEngine' @@ -124,6 +130,10 @@ HAYSTACK_CONNECTIONS = { SEARCH_URL[0]: SEARCH_URL[1], 'BATCH_SIZE': 1000, 'TIMEOUT': 20, + # 'KWARGS': { + # 'timeout': 60, + # 'auth': (SOLR_USER, SOLR_PASSWORD), # Basic Auth + # }, }, } @@ -194,7 +204,7 @@ CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', - 'OPTIONS': {"MAX_ENTRIES": 1000}, + 'OPTIONS': {"MAX_ENTRIES": 10000}, } } @@ -230,17 +240,47 @@ WSGI_APPLICATION = 'sapl.wsgi.application' # Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases +# Parse DATABASE_URL +# dj-database-url==0.5.0 is the latest compatible with Django 2.2, later versions required Django >= 4 +# but it doesn't support OPTIONS tag, so we need setup_db_tz +# This should be removed once we are able to upgrade to Django >= 4 DATABASES = { - 'default': config( - 'DATABASE_URL', default='sqlite://:memory:', - cast=db_url, - ) + "default": config("DATABASE_URL", cast=db_url) } + +def setup_db_tz(): + db = DATABASES["default"] + # Normalize legacy engine alias returned by old dj-database-url + if db.get("ENGINE") == "django.db.backends.postgresql_psycopg2": + db["ENGINE"] = "django.db.backends.postgresql" + + # Force UTC per connection for Postgres (fixes Django’s utc_tzinfo_factory assertion) + if db.get("ENGINE") == "django.db.backends.postgresql": + opts = db.setdefault("OPTIONS", {}) + existing = (opts.get("options") or "").strip() + force_utc = "-c timezone=UTC" + opts["options"] = f"{existing} {force_utc}".strip() if existing else force_utc + + # ensure default TCP port if you use HOST; leave sockets alone if HOST is empty + if db.get("HOST") and not db.get("PORT"): + db["PORT"] = "5432" + + # Add connection lifetime + # in recent dj-database-url versions, replace by config("DATABASE_URL", conn_max_age=300) + db["CONN_MAX_AGE"] = 300 # keep connections for 5 minutes + + # Log if DEBUG mode + if config("DEBUG", default=False, cast=bool): + logger.debug("DB config: %r", db) + + +setup_db_tz() + IMAGE_CROPPING_JQUERY_URL = None THUMBNAIL_PROCESSORS = ( - 'image_cropping.thumbnail_processors.crop_corners', -) + thumbnail_settings.THUMBNAIL_PROCESSORS + 'image_cropping.thumbnail_processors.crop_corners', + ) + thumbnail_settings.THUMBNAIL_PROCESSORS THUMBNAIL_SOURCE_GENERATORS = ( 'sapl.utils.pil_image', @@ -271,7 +311,6 @@ WAFFLE_CREATE_MISSING_SWITCHES = True WAFFLE_LOG_MISSING_SWITCHES = True WAFFLE_ENABLE_ADMIN_PAGES = True - MAX_DOC_UPLOAD_SIZE = 150 * 1024 * 1024 # 150MB MAX_IMAGE_UPLOAD_SIZE = 2 * 1024 * 1024 # 2MB DATA_UPLOAD_MAX_MEMORY_SIZE = 10 * 1024 * 1024 # 10MB @@ -291,6 +330,30 @@ if not TIME_ZONE: USE_I18N = True USE_L10N = True USE_TZ = True + + +## +## Monkey patch of the Django 2.2 because latest version of psycopg2 returns DB time zone as UTC, +## but Django 2.2 requires an int! This should be removed once we are able to upgrade to Django >= 4 +## +import importlib +from django.utils.timezone import utc + +pg_utils = importlib.import_module("django.db.backends.postgresql.utils") + + +def _compat_utc_tzinfo_factory(offset): + try: + minutes = int(offset.total_seconds() // 60) if hasattr(offset, "total_seconds") else int(offset) + except Exception: + raise AssertionError("database connection isn't set to UTC") + if minutes != 0: + raise AssertionError("database connection isn't set to UTC") + return utc + + +pg_utils.utc_tzinfo_factory = _compat_utc_tzinfo_factory + # DATE_FORMAT = 'N j, Y' DATE_FORMAT = 'd/m/Y' SHORT_DATE_FORMAT = 'd/m/Y' diff --git a/sapl/utils.py b/sapl/utils.py index 757e698d0..19c9e4d4c 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -850,7 +850,7 @@ def texto_upload_path(instance, filename, subpath='', pk_first=False): seguida para armazenar o arquivo. """ - filename = re.sub('\s', '_', normalize(filename.strip()).lower()) + filename = re.sub(r'\s', '_', normalize(filename.strip()).lower()) from sapl.materia.models import Proposicao from sapl.protocoloadm.models import DocumentoAdministrativo From a2dd1b30ee9503f0013b9f84c504e1a0fc5e1ebd Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Tue, 2 Sep 2025 13:21:17 -0300 Subject: [PATCH 07/57] HOT-Fix: Conserta erro introduzido no PR #3785 --- sapl/relatorios/forms.py | 44 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/sapl/relatorios/forms.py b/sapl/relatorios/forms.py index cfbf369c1..c6edc7d49 100644 --- a/sapl/relatorios/forms.py +++ b/sapl/relatorios/forms.py @@ -70,34 +70,33 @@ class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): ) -class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet): +def ordem_or_expediente(queryset, name, value): + if value is None: + return queryset + value = getattr(value, "pk", value) + ordem_q = f"ordem__materia__{name}" + expediente_q = f"expediente__materia__{name}" + return queryset.filter(Q(**{ordem_q: value}) | Q(**{expediente_q: value})) + +class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet): tipo_id = django_filters.ModelChoiceFilter( - queryset=TipoMateriaLegislativa.objects.all(), - method='ordem_or_expediente', - label='Tipo de Matéria', - empty_label="---------" - ) + queryset=TipoMateriaLegislativa.objects.all(), + method='ordem_or_expediente', + label='Tipo de Matéria', + empty_label="---------" + ) numero = django_filters.NumberFilter( - widget=forms.NumberInput(attrs={'class': 'form-control', 'step': 'any'}), - method='ordem_or_expediente', - label='Número' - ) + widget=forms.NumberInput(attrs={'class': 'form-control', 'step': 'any'}), + method='ordem_or_expediente', + label='Número' + ) ano = django_filters.ChoiceFilter( choices=list(choice_anos_com_materias()), widget=forms.Select(attrs={'class': 'form-control'}), method='ordem_or_expediente', label='Ano da Matéria' - ) - - def ordem_or_expediente(self, queryset, name, value): - if value is None: - return queryset - value = getattr(value, "pk", value) - ordem_q = f"ordem__materia__{name}" - expediente_q = f"expediente__materia__{name}" - return queryset.filter(Q(**{ordem_q: val})|Q(**{expediente_q: val})) - return queryset + ) class Meta(FilterOverridesMetaMixin): model = RegistroVotacao @@ -108,7 +107,7 @@ class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet): self.filters['data_hora'].label = 'Período (Data Inicial - Data Final)' - row0= to_row([('tipo_id', 6), ('numero', 3), ('ano', 3)]) + row0 = to_row([('tipo_id', 6), ('numero', 3), ('ano', 3)]) row1 = to_row([('data_hora', 12)]) @@ -380,7 +379,8 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): @property def qs(self): parent = super(RelatorioDataFimPrazoTramitacaoFilterSet, self).qs - return parent.distinct().prefetch_related('materia__tipo').order_by('tramitacao__data_fim_prazo', 'materia__tipo', 'materia__numero') + return parent.distinct().prefetch_related('materia__tipo').order_by('tramitacao__data_fim_prazo', + 'materia__tipo', 'materia__numero') class Meta(FilterOverridesMetaMixin): model = MateriaEmTramitacao From 3a23de0cfdb2035e92bdeb95153d37e5f036e2c4 Mon Sep 17 00:00:00 2001 From: joaohortsenado <100957576+joaohortsenado@users.noreply.github.com> Date: Tue, 2 Sep 2025 15:50:30 -0300 Subject: [PATCH 08/57] feat: cria script para remocao de proposicoes de um autor (#3703) Co-authored-by: joao Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> --- scripts/remove_proposicoes_de_autor.py | 57 ++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 scripts/remove_proposicoes_de_autor.py diff --git a/scripts/remove_proposicoes_de_autor.py b/scripts/remove_proposicoes_de_autor.py new file mode 100644 index 000000000..cbd477103 --- /dev/null +++ b/scripts/remove_proposicoes_de_autor.py @@ -0,0 +1,57 @@ +import json +from django.contrib.auth import get_user_model +from datetime import datetime +from django.core.serializers.json import DjangoJSONEncoder + + +# Função para tratar a serialização de objetos datetime +class CustomJSONEncoder(DjangoJSONEncoder): + def default(self, obj): + if isinstance(obj, datetime): + return obj.isoformat() + return super().default(obj) + + +# Receber o nome do usuário como parâmetro +nome_usuario = input("Digite o nome do usuário: ") + +# Encontrar o usuário +User = get_user_model() +try: + usuario = User.objects.get(username=nome_usuario) +except User.DoesNotExist: + print(f"Usuário '{nome_usuario}' não encontrado.") + exit() + +# Encontrar o autor relacionado +try: + autor = OperadorAutor.objects.get(user=usuario).autor +except OperadorAutor.DoesNotExist: + print(f"Nenhum autor encontrado para o usuário '{nome_usuario}'.") + exit() + +# Buscar proposições não recebidas criadas por esse autor +proposicoes = Proposicao.objects.filter(autor=autor, data_recebimento__isnull=True) + +# Exibir a quantidade de registros +print(f"Total de proposições encontradas: {proposicoes.count()}") + +# Opção para imprimir todas as proposições filtradas +if input("Deseja imprimir todas as proposições? (s/n): ").lower() == 's': + for proposicao in proposicoes: + print(proposicao) + +# Escolha para proceder com a deleção +if input("Deseja proceder com a deleção das proposições? (s/n): ").lower() == 's': + # Backup dos dados com a customização para datetime + dados_backup = list(proposicoes.values()) + with open('backup_proposicoes.json', 'w') as file: + json.dump(dados_backup, file, cls=CustomJSONEncoder) + + # Deletar as proposições + num_proposicoes = proposicoes.count() + proposicoes.delete() + + print(f"{num_proposicoes} proposições foram deletadas. Backup realizado em 'backup_proposicoes.json'.") +else: + print("Deleção cancelada.") From 7d4b7017a8bbcb63a0671d1b684cd8664575f0e1 Mon Sep 17 00:00:00 2001 From: joaohortsenado <100957576+joaohortsenado@users.noreply.github.com> Date: Wed, 3 Sep 2025 17:21:55 -0300 Subject: [PATCH 09/57] Restringe tipos de arquivos para upload (#3794) restringe tipos de arquivos para upload --- sapl/utils.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/sapl/utils.py b/sapl/utils.py index 19c9e4d4c..9d6399c5e 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -594,7 +594,6 @@ TIPOS_TEXTO_PERMITIDOS = ( 'application/x-vnd.oasis.opendocument.text', 'application/pdf', 'application/x-pdf', - 'application/zip', 'application/acrobat', 'applications/vnd.pdf', 'text/pdf', @@ -608,9 +607,7 @@ TIPOS_TEXTO_PERMITIDOS = ( 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/xml', - 'application/octet-stream', 'text/xml', - 'text/html', ) TIPOS_IMG_PERMITIDOS = ( From c015681a9449289a1bf7641f5160f6aca30376f6 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 8 Sep 2025 14:15:11 -0300 Subject: [PATCH 10/57] Restaura prod settings de docker-compose --- docker/docker-compose.yaml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 83d2e6821..c545406c6 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -33,11 +33,11 @@ services: networks: - sapl-net sapl: -# image: interlegis/sapl:3.1.164-RC1 - build: - context: ../ - dockerfile: ./docker/Dockerfile - container_name: sapl + image: interlegis/sapl:3.1.164-RC1 +# build: +# context: ../ +# dockerfile: ./docker/Dockerfile +# container_name: sapl labels: NAME: "sapl" restart: always @@ -53,9 +53,7 @@ services: EMAIL_HOST_PASSWORD: senhasmtp USE_SOLR: 'True' SOLR_COLLECTION: sapl - SOLR_URL: http://admin:solr@saplsolr:8983 - SOLR_USER: solr - SOLR_PASSWORD: solr + SOLR_URL: http://solr:solr@saplsolr:8983 IS_ZK_EMBEDDED: 'True' ENABLE_SAPN: 'False' TZ: America/Sao_Paulo From c37080700712fccf4470148fc1f6ebf2c6e81aab Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 8 Sep 2025 14:36:52 -0300 Subject: [PATCH 11/57] Release: 3.1.164-RC2 --- CHANGES.md | 12 ++++++++++++ docker/docker-compose.yaml | 2 +- sapl/settings.py | 2 +- sapl/templates/base.html | 2 +- setup.py | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 3871796bb..2a6ca3229 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,16 @@ +3.1.164-RC2 / 2025-09-08 +======================== + + * Restaura prod settings de docker-compose + * Restringe tipos de arquivos para upload (#3794) + * feat: cria script para remocao de proposicoes de um autor (#3703) + * HOT-Fix: Conserta erro introduzido no PR #3785 + * Atualização da imagem base Docker (#3787) + * Ajustes solicitados - Relatório de Votações Nominais (#3785) + * Refatora lógica de geração de CSV/json/xlsx (#3786) + * Remove btn libras de media print (#3777) + 3.1.164-RC1 / 2025-08-05 ======================== diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index c545406c6..e84924050 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -33,7 +33,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC1 + image: interlegis/sapl:3.1.164-RC2 # build: # context: ../ # dockerfile: ./docker/Dockerfile diff --git a/sapl/settings.py b/sapl/settings.py index b946fb565..623f857e6 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -43,7 +43,7 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.164-RC1' +SAPL_VERSION = '3.1.164-RC2' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 057cd1086..bc25fdabe 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -200,7 +200,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - Release: 3.1.164-RC1 + Release: 3.1.164-RC2

diff --git a/setup.py b/setup.py index 401ea19d1..cc0c19b16 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ install_requires = [ ] setup( name='interlegis-sapl', - version='3.1.164-RC1', + version='3.1.164-RC2', packages=find_packages(), include_package_data=True, license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007', From 10691ac6f69cb17efcfc12a7ae38030b8b29539e Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Wed, 10 Sep 2025 12:45:48 -0300 Subject: [PATCH 12/57] Remove setup.py do projeto SAPL Remove legacy CI/CD stuff --- .travis.yml | 25 --------------------- MANIFEST.in | 8 ------- README.rst | 3 +-- release.sh | 4 +--- setup.py | 65 ----------------------------------------------------- 5 files changed, 2 insertions(+), 103 deletions(-) delete mode 100644 .travis.yml delete mode 100644 MANIFEST.in delete mode 100644 setup.py diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f9ef2fe97..000000000 --- a/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: python - -python: - - 3.7 - -services: - - postgresql - -install: - - pip install -r requirements/test-requirements.txt - -before_script: - - cp sapl/.env_test sapl/.env - - psql -c "CREATE USER sapl WITH PASSWORD 'sapl'" -U postgres; - - psql -c "CREATE DATABASE sapl OWNER sapl;" -U postgres - - ./scripts/django/check_migrations.sh - -script: - - ./manage.py migrate - - py.test --create-db - # - ./scripts/django/test_and_check_qa.sh - -addons: - hosts: - - 127.0.0.1 sapldb diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 7c730520d..000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,8 +0,0 @@ -include README.rst LICENSE.txt -include sapl/webpack-stats.json -recursive-include sapl *.html *.yaml -recursive-include sapl/static * -recursive-include sapl/relatorios/templates *.py -recursive-include sapl/compilacao *.sql -global-exclude __pycache__ -global-exclude *.py[co] diff --git a/README.rst b/README.rst index 5481ba985..fc082b9d5 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,4 @@ -.. image:: https://travis-ci.org/interlegis/sapl.svg?branch=3.1.x - :target: https://travis-ci.org/interlegis/sapl + *********************************************** diff --git a/release.sh b/release.sh index e2928980b..138e92f66 100755 --- a/release.sh +++ b/release.sh @@ -46,13 +46,11 @@ function change_files { if [[ "$OSTYPE" == "darwin"* ]]; then # MacOS (BSD sed) 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" sapl/templates/base.html sed -E -i "" "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/settings.py else # Linux (GNU sed) sed -i -E "s|$OLD_VERSION|$FINAL_VERSION|g" docker/docker-compose.yaml - sed -i -E "s|$OLD_VERSION|$FINAL_VERSION|g" setup.py sed -i -E "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/templates/base.html sed -i -E "s|$OLD_VERSION|$FINAL_VERSION|g" sapl/settings.py fi @@ -93,7 +91,7 @@ prompt_yes_no() { function commit_and_push { echo -e "${green_color}Committing new release $FINAL_VERSION...${color_reset}" - git add docker/docker-compose.yaml setup.py sapl/settings.py sapl/templates/base.html + git add docker/docker-compose.yaml sapl/settings.py sapl/templates/base.html git changelog --tag $FINAL_VERSION --prune-old -x > latest_changes.md cat latest_changes.md CHANGES.md > CHANGES.tmp mv CHANGES.tmp CHANGES.md diff --git a/setup.py b/setup.py deleted file mode 100644 index cc0c19b16..000000000 --- a/setup.py +++ /dev/null @@ -1,65 +0,0 @@ -import os - -from setuptools import find_packages, setup - -with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme: - README = readme.read() - -# allow setup.py to be run from any path -os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) - -install_requires = [ - 'django>=1.11.19,<3.0', - 'django-haystack==2.8.1', - 'django-filter==2.0.0', - 'djangorestframework==3.11.2', - 'dj-database-url==0.5.0', - 'django-braces==1.9.0', - 'django-crispy-forms==1.7.2', - 'django-extra-views==0.12.0', - 'django-model-utils==3.1.2', - 'django-extensions==2.1.4', - 'django-image-cropping==1.2.0', - 'django-webpack-loader==0.6.0', - 'drf-yasg==1.20.0', - 'easy-thumbnails==2.5', - 'python-decouple==3.1', - 'psycopg2-binary==2.7.6.1', - 'pyyaml==5.4', - 'pytz==2018.9', - 'python-magic==0.4.15', - 'unipath==1.1', - 'WeasyPrint==44', - 'gunicorn==22.0.0', - 'pysolr==3.6.0', - - # 'git+git://github.com/interlegis/trml2pdf.git', - # 'git+git://github.com/interlegis/django-admin-bootstrapped', -] -setup( - name='interlegis-sapl', - version='3.1.164-RC2', - packages=find_packages(), - include_package_data=True, - license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007', - description='SAPL - Legislative Process Support System', - long_description=README, - url='https://github.com/interlegis/sapl', - author='interlegis', - author_email='', - classifiers=[ - 'Environment :: Web Environment', - 'Framework :: Django', - 'Framework :: Django :: 1.9', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: BSD License', # example license - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Topic :: Internet :: WWW/HTTP', - 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', - ], - install_requires=install_requires, -) From 4792c784bf052a9db075fec549c244074694a9e5 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Wed, 10 Sep 2025 16:34:51 -0300 Subject: [PATCH 13/57] Fix read-only mount on k8s --- docker/Dockerfile | 2 +- docker/k8s/sapl-deploy.sh | 12 ++ docker/k8s/sapl-k8s.yaml | 218 ++++++++++++++++++++++++++++++++ docker/startup_scripts/start.sh | 18 ++- 4 files changed, 243 insertions(+), 7 deletions(-) create mode 100755 docker/k8s/sapl-deploy.sh create mode 100644 docker/k8s/sapl-k8s.yaml diff --git a/docker/Dockerfile b/docker/Dockerfile index 9fe3d6b75..831627ec8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -62,7 +62,7 @@ RUN set -eux; \ # Usuários/grupos (idempotente) RUN useradd --system --no-create-home --shell /usr/sbin/nologin sapl || true \ - && groupadd -r nginx || true \ + && groupadd -g 101 -r nginx || true \ && usermod -aG nginx www-data || true \ && usermod -aG nginx sapl || true diff --git a/docker/k8s/sapl-deploy.sh b/docker/k8s/sapl-deploy.sh new file mode 100755 index 000000000..0133704b8 --- /dev/null +++ b/docker/k8s/sapl-deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +kubectl create namespace sapl +mkdir -p ./sapl-secret-data +kubectl -n sapl create secret generic sapl-secretkey --from-file=./sapl-secret-data/ +kubectl apply -f sapl-k8s.yaml + +kubectl rollout status deployment/sapl -n sapl + +POD=$(kubectl get pod -n sapl -l app=sapl -o jsonpath='{.items[0].metadata.name}') +kubectl exec -n sapl "$POD" -- ls -l /var/interlegis/sapl/data + diff --git a/docker/k8s/sapl-k8s.yaml b/docker/k8s/sapl-k8s.yaml new file mode 100644 index 000000000..8a45e015e --- /dev/null +++ b/docker/k8s/sapl-k8s.yaml @@ -0,0 +1,218 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: sapl +--- +apiVersion: v1 +kind: Service +metadata: + name: sapldb + namespace: sapl +spec: + selector: + app: sapldb + ports: + - name: postgres + port: 5432 + targetPort: 5432 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sapldb-data + namespace: sapl +spec: + accessModes: ["ReadWriteOnce"] + storageClassName: local-path + resources: + requests: + storage: 5Gi # or 1Gi for solr-configsets +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: sapldb + namespace: sapl +spec: + serviceName: sapldb + replicas: 1 + selector: + matchLabels: + app: sapldb + template: + metadata: + labels: + app: sapldb + spec: + containers: + - name: postgres + image: postgres:10.5-alpine + env: + - name: POSTGRES_PASSWORD + value: "sapl" + - name: POSTGRES_USER + value: "sapl" + - name: POSTGRES_DB + value: "sapl" + - name: PGDATA + value: /var/lib/postgresql/data/ + - name: TZ + value: UTC + - name: PG_TZ + value: UTC + ports: + - containerPort: 5432 + volumeMounts: + - name: sapldb-data + mountPath: /var/lib/postgresql/data/ + volumes: + - name: sapldb-data + persistentVolumeClaim: + claimName: sapldb-data +--- +apiVersion: v1 +kind: Service +metadata: + name: saplsolr + namespace: sapl +spec: + selector: + app: saplsolr + ports: + - name: solr + port: 8983 + targetPort: 8983 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: solr-data + namespace: sapl +spec: + accessModes: ["ReadWriteOnce"] + storageClassName: local-path + resources: + requests: + storage: 5Gi # or 1Gi for solr-configsets +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: solr-configsets + namespace: sapl +spec: + accessModes: ["ReadWriteOnce"] + storageClassName: local-path + resources: + requests: + storage: 5Gi # or 1Gi for solr-configsets +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: saplsolr + namespace: sapl +spec: + serviceName: saplsolr + replicas: 1 + selector: + matchLabels: + app: saplsolr + template: + metadata: + labels: + app: saplsolr + spec: + containers: + - name: solr + image: solr:8.11 + command: ["bash","-lc","bin/solr start -c -f"] + ports: + - containerPort: 8983 + volumeMounts: + - name: solr-data + mountPath: /var/solr + - name: solr-configsets + mountPath: /opt/solr/server/solr/configsets + volumes: + - name: solr-data + persistentVolumeClaim: + claimName: solr-data + - name: solr-configsets + persistentVolumeClaim: + claimName: solr-configsets +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sapl-media + namespace: sapl +spec: + accessModes: ["ReadWriteOnce"] + storageClassName: local-path + resources: + requests: + storage: 5Gi # or 1Gi for solr-configsets +--- +apiVersion: v1 +kind: Service +metadata: + name: sapl + namespace: sapl +spec: + selector: + app: sapl + type: NodePort + ports: + - name: http + port: 80 + targetPort: 80 + nodePort: 30080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sapl + namespace: sapl +spec: + replicas: 1 + selector: + matchLabels: + app: sapl + template: + metadata: + labels: + app: sapl + spec: + containers: + - name: sapl + image: eribeiro/sapl:debug-k8s-1 + ports: + - containerPort: 80 + volumeMounts: + - name: data + mountPath: /var/interlegis/sapl/data + readOnly: true # secrets are always mounted read-only + volumes: + - name: data + secret: + secretName: sapl-secretkey + defaultMode: 0440 # ensures read-only + env: + - name: ADMIN_PASSWORD + value: "interlegis" + - name: ADMIN_EMAIL + value: "email@dominio.net" + - name: DEBUG + value: "False" + - name: EMAIL_PORT + value: "587" + - name: EMAIL_USE_TLS + value: "False" + - name: EMAIL_HOST + value: "smtp.dominio.net" + - name: EMAIL_HOST_USER + value: "usuariosmtp" + - name: EMAIL_SEND_USER + + diff --git a/docker/startup_scripts/start.sh b/docker/startup_scripts/start.sh index b612532bc..316d73f8a 100755 --- a/docker/startup_scripts/start.sh +++ b/docker/startup_scripts/start.sh @@ -2,12 +2,21 @@ set -Eeuo pipefail IFS=$'\n\t' +APP_DIR="/var/interlegis/sapl" DATA_DIR="/var/interlegis/sapl/data" -APP_DIR="/var/interlegis/sapl/sapl" +MEDIA_DIR="/var/interlegis/sapl/media" +RUN_DIR="/var/interlegis/sapl/run" + ENV_FILE="$APP_DIR/.env" SECRET_FILE="$DATA_DIR/secret.key" -mkdir -p "$DATA_DIR" "$APP_DIR" +chown -R root:nginx "$RUN_DIR" || true +chown -R root:nginx "$MEDIA_DIR" || true +chmod -R g+rwX "$RUN_DIR" || true +chmod -R g+rwX "$MEDIA_DIR" || true + +# setgid bit on our writable trees (not data/) +find "$RUN_DIR" "$MEDIA_DIR" -type d -exec chmod g+s {} + 2>/dev/null || true log() { printf '[%s] %s\n' "$(date -Is)" "$*"; } err() { printf '[%s] ERROR: %s\n' "$(date -Is)" "$*" >&2; } @@ -76,7 +85,6 @@ create_secret() { SECRET_KEY="$(python3 genkey.py)" umask 177 printf '%s\n' "$SECRET_KEY" > "$SECRET_FILE" - chmod 600 "$SECRET_FILE" fi export SECRET_KEY } @@ -225,9 +233,7 @@ fix_logging_and_socket_perms() { # dirs mkdir -p "$APP_DIR/run" - chown -R root:nginx "$APP_DIR" - chmod 2775 "$APP_DIR" "$APP_DIR/run" - chmod -R g+rwX "$APP_DIR" + chmod 2775 "$APP_DIR/run" # new files/sockets → 660 umask 0007 From 04dcffa7d29d24e463a34a48056f3b4a6a79fd5b Mon Sep 17 00:00:00 2001 From: Edward <9326037+edwardoliveira@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:37:33 -0300 Subject: [PATCH 14/57] Health and Ready endpoints (#3788) feat: Adiciona health check endpoints Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com> --- sapl/api/urls.py | 7 +- sapl/api/views.py | 15 +--- sapl/api/views_health.py | 106 ++++++++++++++++++++++++ sapl/endpoint_restriction_middleware.py | 2 +- sapl/health.py | 36 ++++++++ sapl/metrics.py | 12 +++ sapl/settings.py | 2 +- sapl/urls.py | 8 ++ 8 files changed, 167 insertions(+), 21 deletions(-) create mode 100644 sapl/api/views_health.py create mode 100644 sapl/health.py create mode 100644 sapl/metrics.py diff --git a/sapl/api/urls.py b/sapl/api/urls.py index a51ea2a80..1ab636707 100644 --- a/sapl/api/urls.py +++ b/sapl/api/urls.py @@ -1,15 +1,13 @@ - from django.conf.urls import include, url from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, \ SpectacularRedocView from rest_framework.authtoken.views import obtain_auth_token from sapl.api.deprecated import SessaoPlenariaViewSet -from sapl.api.views import AppVersionView, recria_token,\ - SaplApiViewSetConstrutor +from sapl.api.views import recria_token, SaplApiViewSetConstrutor from .apps import AppConfig - +from .views_health import HealthzView, ReadyzView app_name = AppConfig.name @@ -38,7 +36,6 @@ urlpatterns = [ url(r'^api/', include(urlpatterns_api_doc)), url(r'^api/', include(urlpatterns_router)), - url(r'^api/version', AppVersionView.as_view()), url(r'^api/auth/token$', obtain_auth_token), url(r'^api/recriar-token/(?P\d*)$', recria_token, name="recria_token"), ] diff --git a/sapl/api/views.py b/sapl/api/views.py index a9c0686e8..fac2eeeeb 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -1,6 +1,7 @@ import logging from django.conf import settings +from django.http import HttpResponse, JsonResponse from rest_framework.authtoken.models import Token from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import IsAuthenticated, IsAdminUser @@ -21,20 +22,6 @@ def recria_token(request, pk): return Response({"message": "Token recriado com sucesso!", "token": token.key}) -class AppVersionView(APIView): - permission_classes = (IsAuthenticated,) - - def get(self, request): - content = { - 'name': 'SAPL', - 'description': 'Sistema de Apoio ao Processo Legislativo', - 'version': settings.SAPL_VERSION, - 'user': request.user.username, - 'is_authenticated': request.user.is_authenticated, - } - return Response(content) - - SaplApiViewSetConstrutor = ApiViewSetConstrutor SaplApiViewSetConstrutor.import_modules([ 'sapl.api.views_audiencia', diff --git a/sapl/api/views_health.py b/sapl/api/views_health.py new file mode 100644 index 000000000..bd7e6eaad --- /dev/null +++ b/sapl/api/views_health.py @@ -0,0 +1,106 @@ +import logging +import traceback + +from django.http import HttpResponse, JsonResponse +from django.utils import timezone +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status +from django.conf import settings +from sapl.health import check_app, check_db, check_cache + +COMMON_HEADERS = { + "Cache-Control": "no-store, no-cache, must-revalidate, max-age=0", + "Pragma": "no-cache", +} + + +def _format_plain(ok: bool) -> HttpResponse: + return HttpResponse("OK\n" if ok else "UNHEALTHY\n", + status=status.HTTP_200_OK if ok else status.HTTP_503_SERVICE_UNAVAILABLE, + content_type="text/plain") + + +class HealthzView(APIView): + authentication_classes = [] + permission_classes = [] + + logger = logging.getLogger(__name__) + + def get(self, request): + try: + ok, msg, ms = check_app() + payload = { + "status": "OK" if ok else "UNHEALTHY", + "checks": {"app": {"ok": ok, "latency_ms": round(ms, 1), "error": msg}}, + "version": settings.SAPL_VERSION, + "time": timezone.now().isoformat(), + } + if request.query_params.get("fmt") == "txt": + return _format_plain(ok) + return Response(payload, + status=status.HTTP_200_OK if ok else status.HTTP_503_SERVICE_UNAVAILABLE, + headers=COMMON_HEADERS) + except Exception as e: + self.logger.error(traceback.format_exc()) + return "An internal error has occurred!" + + + +class ReadyzView(APIView): + authentication_classes = [] + permission_classes = [] + + logger = logging.getLogger(__name__) + + def get(self, request): + try: + checks = { + "app": check_app(), + "db": check_db(), + "cache": check_cache(), + } + payload_checks = { + name: {"ok": r[0], "latency_ms": round(r[2], 1), "error": r[1]} + for name, r in checks.items() + } + ok = all(r[0] for r in checks.values()) + payload = { + "status": "ok" if ok else "unhealthy", + "checks": payload_checks, + "version": settings.SAPL_VERSION, + "time": timezone.now().isoformat(), + } + if request.query_params.get("fmt") == "txt": + return _format_plain(ok) + return Response(payload, + status=status.HTTP_200_OK if ok else status.HTTP_503_SERVICE_UNAVAILABLE, + headers=COMMON_HEADERS) + except Exception as e: + self.logger.error(traceback.format_exc()) + return "An internal error has occurred!" + + +class AppzVersionView(APIView): + authentication_classes = [] + permission_classes = [] + + logger = logging.getLogger(__name__) + + def get(self, request): + try: + payload = { + 'name': 'SAPL', + 'description': 'Sistema de Apoio ao Processo Legislativo', + 'version': settings.SAPL_VERSION, + } + if request.query_params.get("fmt") == "txt": + return HttpResponse(f"{payload['version']} {payload['name']}", + status=status.HTTP_200_OK, + content_type="text/plain") + return Response(payload, + status=status.HTTP_200_OK, + headers=COMMON_HEADERS) + except Exception as e: + self.logger.error(traceback.format_exc()) + return "An internal error has occurred!" diff --git a/sapl/endpoint_restriction_middleware.py b/sapl/endpoint_restriction_middleware.py index b815b4a2e..ac892ca6f 100644 --- a/sapl/endpoint_restriction_middleware.py +++ b/sapl/endpoint_restriction_middleware.py @@ -18,7 +18,7 @@ ALLOWED_IPS = [ 'ff00::/8' ] -RESTRICTED_ENDPOINTS = ['/metrics'] +RESTRICTED_ENDPOINTS = ['/metrics', '/health', '/ready', '/version'] class EndpointRestrictionMiddleware: diff --git a/sapl/health.py b/sapl/health.py new file mode 100644 index 000000000..fca19ad5c --- /dev/null +++ b/sapl/health.py @@ -0,0 +1,36 @@ +# core/health.py +import logging +import time +from typing import Tuple, Optional +from django.db import connection +from django.core.cache import cache + +logger = logging.getLogger(__name__) + + +def check_app() -> Tuple[bool, Optional[str], float]: + t0 = time.monotonic() + return True, None, (time.monotonic() - t0) * 1000 + + +def check_db() -> Tuple[bool, Optional[str], float]: + t0 = time.monotonic() + try: + with connection.cursor() as cur: + cur.execute("SELECT 1") + cur.fetchone() + return True, None, (time.monotonic() - t0) * 1000 + except Exception as e: + logging.error(e) + return False, "An internal error has occurred!", (time.monotonic() - t0) * 1000 + + +def check_cache() -> Tuple[bool, Optional[str], float]: + t0 = time.monotonic() + try: + cache.set("_hc", "1", 5) + ok = cache.get("_hc") == "1" + return ok, None if ok else "Cache get/set failed", (time.monotonic() - t0) * 1000 + except Exception as e: + logging.error(e) + return False, "An internal error has occurred!", (time.monotonic() - t0) * 1000 diff --git a/sapl/metrics.py b/sapl/metrics.py new file mode 100644 index 000000000..02081b2ac --- /dev/null +++ b/sapl/metrics.py @@ -0,0 +1,12 @@ +from prometheus_client import CollectorRegistry, Gauge, generate_latest, CONTENT_TYPE_LATEST + + +def health_registry(check_results: dict) -> bytes: + """ + check_results: {"app": True/False, "db": True/False, ...} + """ + reg = CollectorRegistry() + g = Gauge("app_health", "1 if healthy, 0 if unhealthy", ["component"], registry=reg) + for comp, ok in check_results.items(): + g.labels(component=comp).set(1 if ok else 0) + return generate_latest(reg) diff --git a/sapl/settings.py b/sapl/settings.py index 623f857e6..bd85ae7c0 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -149,9 +149,9 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', - 'django_prometheus.middleware.PrometheusAfterMiddleware', 'waffle.middleware.WaffleMiddleware', 'sapl.middleware.CheckWeakPasswordMiddleware', + 'django_prometheus.middleware.PrometheusAfterMiddleware', ] if DEBUG: INSTALLED_APPS += ('debug_toolbar',) diff --git a/sapl/urls.py b/sapl/urls.py index 0481a246b..4943c7ca5 100644 --- a/sapl/urls.py +++ b/sapl/urls.py @@ -36,6 +36,8 @@ import sapl.redireciona_urls.urls import sapl.relatorios.urls import sapl.sessao.urls +from sapl.api.views_health import AppzVersionView, HealthzView, ReadyzView + urlpatterns = [] urlpatterns += [ @@ -69,6 +71,12 @@ urlpatterns += [ path("robots.txt", TemplateView.as_view( template_name="robots.txt", content_type="text/plain")), + # Health and Readiness + url(r'^version/$', AppzVersionView.as_view(), name="version"), + url(r"^health/$", HealthzView.as_view(), name="health"), + url(r"^ready/$", ReadyzView.as_view(), name="ready"), + + # Monitoring path(r'', include('django_prometheus.urls')), ] From bda00ac9c996b8d2dfd27b43071447a6d25d860c Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Tue, 16 Sep 2025 20:04:37 -0300 Subject: [PATCH 15/57] Release: 3.1.164-RC3 --- CHANGES.md | 7 +++++++ docker/docker-compose.yaml | 2 +- sapl/settings.py | 2 +- sapl/templates/base.html | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 2a6ca3229..6902a4f67 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,11 @@ +3.1.164-RC3 / 2025-09-16 +======================== + + * Health and Ready endpoints (#3788) + * Fix read-only mount on k8s + * Remove setup.py do projeto SAPL + 3.1.164-RC2 / 2025-09-08 ======================== diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index e84924050..20c75374a 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -33,7 +33,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC2 + image: interlegis/sapl:3.1.164-RC3 # build: # context: ../ # dockerfile: ./docker/Dockerfile diff --git a/sapl/settings.py b/sapl/settings.py index bd85ae7c0..5a0fdef73 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -43,7 +43,7 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.164-RC2' +SAPL_VERSION = '3.1.164-RC3' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/sapl/templates/base.html b/sapl/templates/base.html index bc25fdabe..5679f718a 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -200,7 +200,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - Release: 3.1.164-RC2 + Release: 3.1.164-RC3

From 3faba84bc8d51782fbbade84ad3f4557dfef57d1 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Wed, 17 Sep 2025 20:06:57 -0300 Subject: [PATCH 16/57] =?UTF-8?q?Fix=20recibo=20proposi=C3=A7=C3=A3o=20e?= =?UTF-8?q?=20adiciona=20rate=20limiter=20em=20mat=C3=A9ria=20e=20norma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 7 +++++++ docker/config/nginx/sapl.conf | 2 +- docker/startup_scripts/gunicorn.conf.py | 3 ++- docker/startup_scripts/start.sh | 5 +---- requirements/requirements.txt | 3 +-- sapl/base/views.py | 2 +- sapl/materia/views.py | 9 +++++++- sapl/norma/views.py | 7 +++++++ sapl/sessao/views.py | 5 +++++ sapl/utils.py | 28 ++++++++++++++----------- scripts/gunicorn_start.sh | 4 ++-- 11 files changed, 51 insertions(+), 24 deletions(-) diff --git a/.dockerignore b/.dockerignore index 318700ad6..4ff7fdc82 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,3 +12,10 @@ bower .travis.yml .env .idea +.DS_Store +.coveragerc +*.swp +.coveragerc +.drone.yml +.github +release.sh diff --git a/docker/config/nginx/sapl.conf b/docker/config/nginx/sapl.conf index 18641045e..a55731d02 100644 --- a/docker/config/nginx/sapl.conf +++ b/docker/config/nginx/sapl.conf @@ -7,7 +7,7 @@ upstream sapl_server { server { listen 80; - server_name sapl.test; + server_name sapl.prod; client_max_body_size 4G; diff --git a/docker/startup_scripts/gunicorn.conf.py b/docker/startup_scripts/gunicorn.conf.py index 95d2f0256..6bdcacb02 100644 --- a/docker/startup_scripts/gunicorn.conf.py +++ b/docker/startup_scripts/gunicorn.conf.py @@ -52,7 +52,8 @@ graceful_timeout = 30 keepalive = 10 backlog = 2048 max_requests = MAX_REQUESTS -max_requests_jitter = 100 +max_requests_jitter = 200 +worker_max_memory_per_child = 300 * 1024 * 1024 # 300 MB cap # Environment (same as exporting before running) raw_env = [ diff --git a/docker/startup_scripts/start.sh b/docker/startup_scripts/start.sh index 316d73f8a..bd98bdfc0 100755 --- a/docker/startup_scripts/start.sh +++ b/docker/startup_scripts/start.sh @@ -4,19 +4,16 @@ IFS=$'\n\t' APP_DIR="/var/interlegis/sapl" DATA_DIR="/var/interlegis/sapl/data" -MEDIA_DIR="/var/interlegis/sapl/media" RUN_DIR="/var/interlegis/sapl/run" ENV_FILE="$APP_DIR/.env" SECRET_FILE="$DATA_DIR/secret.key" chown -R root:nginx "$RUN_DIR" || true -chown -R root:nginx "$MEDIA_DIR" || true chmod -R g+rwX "$RUN_DIR" || true -chmod -R g+rwX "$MEDIA_DIR" || true # setgid bit on our writable trees (not data/) -find "$RUN_DIR" "$MEDIA_DIR" -type d -exec chmod g+s {} + 2>/dev/null || true +find "$RUN_DIR" -type d -exec chmod g+s {} + 2>/dev/null || true log() { printf '[%s] %s\n' "$(date -Is)" "$*"; } err() { printf '[%s] ERROR: %s\n' "$(date -Is)" "$*" >&2; } diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 56c2459b4..aea9f52db 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -22,8 +22,7 @@ pytz==2019.3 python-magic==0.4.15 unipath==1.1 Pillow==10.3.0 -rlPyCairo==0.3.0 -reportlab==4.2.0 +reportlab==3.6.13 WeasyPrint==66 trml2pdf==0.6 gunicorn==23.0.0 diff --git a/sapl/base/views.py b/sapl/base/views.py index ce3a0a717..7c935d421 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -68,7 +68,7 @@ class IndexView(TemplateView): @method_decorator(ratelimit(key=lambda group, request: get_client_ip(request), - rate='20/m', + rate='10/m', method=ratelimit.UNSAFE, block=True), name='dispatch') class LoginSapl(views.LoginView): diff --git a/sapl/materia/views.py b/sapl/materia/views.py index f64d8134b..ce158228b 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -24,7 +24,6 @@ from django.shortcuts import render from django.template import loader from django.urls import reverse from django.utils import formats, timezone -from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from django.views.generic import CreateView, ListView, TemplateView, UpdateView from django.views.generic.base import RedirectView @@ -32,6 +31,9 @@ from django.views.generic.edit import FormView from django_filters.views import FilterView import weasyprint +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator + import sapl from sapl.base.email_utils import do_envia_email_confirmacao from sapl.base.models import Autor, CasaLegislativa, AppConfig as BaseAppConfig @@ -1459,6 +1461,7 @@ class TramitacaoCrud(MasterDetailCrud): return initial + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class ListView(MasterDetailCrud.ListView): def get_queryset(self): @@ -1531,6 +1534,7 @@ class TramitacaoCrud(MasterDetailCrud): return HttpResponseRedirect(url) + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class DetailView(MasterDetailCrud.DetailView): template_name = "materia/tramitacao_detail.html" @@ -1908,6 +1912,7 @@ class MateriaLegislativaCrud(Crud): def get_success_url(self): return self.search_url + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class DetailView(Crud.DetailView): layout_key = 'MateriaLegislativaDetail' @@ -1920,6 +1925,7 @@ class MateriaLegislativaCrud(Crud): pk=self.kwargs['pk']) return context + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class ListView(Crud.ListView, RedirectView): def get_redirect_url(self, *args, **kwargs): @@ -2040,6 +2046,7 @@ class AcompanhamentoExcluirView(TemplateView): return HttpResponseRedirect(self.get_success_url()) +@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class MateriaLegislativaPesquisaView(MultiFormatOutputMixin, FilterView): model = MateriaLegislativa filterset_class = MateriaLegislativaFilterSet diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 27758a1ca..488e73c90 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -19,6 +19,9 @@ from django.views.generic.edit import FormView from django_filters.views import FilterView import weasyprint +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator + from sapl import settings import sapl from sapl.base.models import AppConfig @@ -147,6 +150,7 @@ class NormaRelacionadaCrud(MasterDetailCrud): layout_key = 'NormaRelacionadaDetail' +@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class NormaPesquisaView(MultiFormatOutputMixin, FilterView): model = NormaJuridica filterset_class = NormaFilterSet @@ -232,6 +236,7 @@ class AnexoNormaJuridicaCrud(MasterDetailCrud): initial['ano'] = self.object.ano return initial + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class DetailView(MasterDetailCrud.DetailView): form_class = AnexoNormaJuridicaForm layout_key = 'AnexoNormaJuridica' @@ -280,6 +285,7 @@ class NormaCrud(Crud): namespace = self.model._meta.app_config.name return reverse('%s:%s' % (namespace, 'norma_pesquisa')) + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class DetailView(Crud.DetailView): def get(self, request, *args, **kwargs): estatisticas_acesso_normas = AppConfig.objects.first().estatisticas_acesso_normas @@ -337,6 +343,7 @@ class NormaCrud(Crud): layout_key = 'NormaJuridicaCreate' + @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class ListView(Crud.ListView): def get(self, request, *args, **kwargs): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 4835a17b6..7df367379 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -28,6 +28,9 @@ from django.views.generic.edit import FormMixin from django_filters.views import FilterView import pytz +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator + from sapl.base.models import AppConfig as AppsAppConfig from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud, @@ -3794,6 +3797,7 @@ class SessaoListView(ListView): return context +@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class PautaSessaoView(TemplateView): model = SessaoPlenaria template_name = "sessao/pauta_inexistente.html" @@ -3809,6 +3813,7 @@ class PautaSessaoView(TemplateView): reverse('sapl.sessao:pauta_sessao_detail', kwargs={'pk': sessao.pk})) +@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') class PautaSessaoDetailView(PautaMultiFormatOutputMixin, DetailView): template_name = "sessao/pauta_sessao_detail.html" model = SessaoPlenaria diff --git a/sapl/utils.py b/sapl/utils.py index 9d6399c5e..6554c5aea 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -419,21 +419,25 @@ def get_base_url(request): return "{0}://{1}".format(protocol, current_domain) -def create_barcode(value, width=170, height=50): - ''' - creates a base64 encoded barcode PNG image - ''' +def create_barcode(value, width=170, height=50, dpi=72): + """ + creates a base64 encoded barcode PNG image + """ from base64 import b64encode from reportlab.graphics.barcode import createBarcodeDrawing + value_bytes = bytes(value, "ascii") - barcode = createBarcodeDrawing('Code128', - value=value_bytes, - barWidth=width, - height=height, - fontSize=2, - humanReadable=True) - data = b64encode(barcode.asString('png')) - return data.decode('utf-8') + barcode = createBarcodeDrawing( + 'Code128', + value=value_bytes, + barWidth=width, + height=height, + fontSize=2, + humanReadable=True + ) + # Lower DPI prevents Cairo surface from blowing up + png_bytes = barcode.asString("png", dpi=dpi) + return b64encode(png_bytes).decode("utf-8") YES_NO_CHOICES = [(True, _('Sim')), (False, _('Não'))] diff --git a/scripts/gunicorn_start.sh b/scripts/gunicorn_start.sh index d01503235..bd2932985 100755 --- a/scripts/gunicorn_start.sh +++ b/scripts/gunicorn_start.sh @@ -15,8 +15,8 @@ then fi NAME="SAPL" # Name of the application (*) -DJANGODIR=$SAPL_DIR/ # Django project directory (*) -SOCKFILE=$SAPL_DIR/run/gunicorn.sock # we will communicate using this unix socket (*) +DJANGODIR="$SAPL_DIR/" # Django project directory (*) +SOCKFILE="$SAPL_DIR/run/gunicorn.sock" # we will communicate using this unix socket (*) USER=`whoami` # the user to run as (*) GROUP=`whoami` # the group to run as (*) NUM_WORKERS=3 # how many worker processes should Gunicorn spawn (*) From b63a0cec38ddef03d5885c254dd2f605b63b66c2 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 22 Sep 2025 14:06:04 -0300 Subject: [PATCH 17/57] Release: 3.1.164-RC4 --- CHANGES.md | 6 ++++++ docker/docker-compose.yaml | 2 +- sapl/settings.py | 2 +- sapl/templates/base.html | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 6902a4f67..f977fe2b5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,10 @@ +3.1.164-RC4 / 2025-09-22 +======================== + + * Fix recibo proposição e adiciona rate limiter em matéria e norma + * Release: 3.1.164-RC3 + 3.1.164-RC3 / 2025-09-16 ======================== diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 20c75374a..cd8b7a2a1 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -33,7 +33,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC3 + image: interlegis/sapl:3.1.164-RC4 # build: # context: ../ # dockerfile: ./docker/Dockerfile diff --git a/sapl/settings.py b/sapl/settings.py index 5a0fdef73..c31b6b3b9 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -43,7 +43,7 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.164-RC3' +SAPL_VERSION = '3.1.164-RC4' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 5679f718a..a53524bd4 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -200,7 +200,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - Release: 3.1.164-RC3 + Release: 3.1.164-RC4

From 12cb253e58f987821d93348fad31c077c46ee74d Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 22 Sep 2025 17:04:24 -0300 Subject: [PATCH 18/57] Hot-fix: rate limiter get_ip --- sapl/base/views.py | 7 ++++--- sapl/materia/views.py | 27 +++++++++++++++++++++------ sapl/norma/views.py | 24 ++++++++++++++++++------ sapl/sessao/views.py | 14 ++++++++++---- sapl/utils.py | 12 ++++++++++-- 5 files changed, 63 insertions(+), 21 deletions(-) diff --git a/sapl/base/views.py b/sapl/base/views.py index 7c935d421..68493dc04 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -51,7 +51,7 @@ from sapl.sessao.models import (Bancada, SessaoPlenaria) from sapl.settings import EMAIL_SEND_USER from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, google_recaptcha_configured, - get_client_ip, sapn_is_enabled, is_weak_password) + get_client_ip, sapn_is_enabled, is_weak_password, ratelimit_ip) from .forms import (AlterarSenhaForm, CasaLegislativaForm, ConfiguracoesAppForm, EstatisticasAcessoNormasForm) from .models import AppConfig, CasaLegislativa @@ -67,10 +67,11 @@ class IndexView(TemplateView): return TemplateView.get(self, request, *args, **kwargs) -@method_decorator(ratelimit(key=lambda group, request: get_client_ip(request), +@method_decorator(ratelimit(key=ratelimit_ip, rate='10/m', method=ratelimit.UNSAFE, - block=True), name='dispatch') + block=True), + name='dispatch') class LoginSapl(views.LoginView): template_name = 'base/login.html' authentication_form = LoginForm diff --git a/sapl/materia/views.py b/sapl/materia/views.py index ce158228b..cfd9306c5 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -56,7 +56,7 @@ from sapl.utils import (autor_label, autor_modal, gerar_hash_arquivo, get_base_u get_client_ip, get_mime_type_from_file_extension, lista_anexados, mail_service_configured, montar_row_autor, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, get_tempfile_dir, - google_recaptcha_configured, MultiFormatOutputMixin) + google_recaptcha_configured, MultiFormatOutputMixin, ratelimit_ip) from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, AnexadaEmLoteFilterSet, AdicionarVariasAutoriasFilterSet, @@ -1461,7 +1461,10 @@ class TramitacaoCrud(MasterDetailCrud): return initial - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class ListView(MasterDetailCrud.ListView): def get_queryset(self): @@ -1534,7 +1537,10 @@ class TramitacaoCrud(MasterDetailCrud): return HttpResponseRedirect(url) - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class DetailView(MasterDetailCrud.DetailView): template_name = "materia/tramitacao_detail.html" @@ -1912,7 +1918,10 @@ class MateriaLegislativaCrud(Crud): def get_success_url(self): return self.search_url - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class DetailView(Crud.DetailView): layout_key = 'MateriaLegislativaDetail' @@ -1925,7 +1934,10 @@ class MateriaLegislativaCrud(Crud): pk=self.kwargs['pk']) return context - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class ListView(Crud.ListView, RedirectView): def get_redirect_url(self, *args, **kwargs): @@ -2046,7 +2058,10 @@ class AcompanhamentoExcluirView(TemplateView): return HttpResponseRedirect(self.get_success_url()) -@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') +@method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class MateriaLegislativaPesquisaView(MultiFormatOutputMixin, FilterView): model = MateriaLegislativa filterset_class = MateriaLegislativaFilterSet diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 488e73c90..b82d83d39 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -30,8 +30,8 @@ from sapl.compilacao.views import IntegracaoTaView from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud, make_pagination) from sapl.materia.models import Orgao -from sapl.utils import show_results_filter_set, get_client_ip,\ - sapn_is_enabled, MultiFormatOutputMixin +from sapl.utils import show_results_filter_set, get_client_ip, \ + sapn_is_enabled, MultiFormatOutputMixin, ratelimit_ip from .forms import (AnexoNormaJuridicaForm, NormaFilterSet, NormaJuridicaForm, NormaPesquisaSimplesForm, NormaRelacionadaForm, @@ -150,7 +150,10 @@ class NormaRelacionadaCrud(MasterDetailCrud): layout_key = 'NormaRelacionadaDetail' -@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') +@method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class NormaPesquisaView(MultiFormatOutputMixin, FilterView): model = NormaJuridica filterset_class = NormaFilterSet @@ -236,7 +239,10 @@ class AnexoNormaJuridicaCrud(MasterDetailCrud): initial['ano'] = self.object.ano return initial - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class DetailView(MasterDetailCrud.DetailView): form_class = AnexoNormaJuridicaForm layout_key = 'AnexoNormaJuridica' @@ -285,7 +291,10 @@ class NormaCrud(Crud): namespace = self.model._meta.app_config.name return reverse('%s:%s' % (namespace, 'norma_pesquisa')) - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class DetailView(Crud.DetailView): def get(self, request, *args, **kwargs): estatisticas_acesso_normas = AppConfig.objects.first().estatisticas_acesso_normas @@ -343,7 +352,10 @@ class NormaCrud(Crud): layout_key = 'NormaJuridicaCreate' - @method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') + @method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class ListView(Crud.ListView): def get(self, request, *args, **kwargs): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 7df367379..63f6a39e7 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -48,8 +48,8 @@ from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm, OrdemExpedien 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,\ - MultiFormatOutputMixin, PautaMultiFormatOutputMixin +from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip, \ + MultiFormatOutputMixin, PautaMultiFormatOutputMixin, ratelimit_ip from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm, @@ -3797,7 +3797,10 @@ class SessaoListView(ListView): return context -@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') +@method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class PautaSessaoView(TemplateView): model = SessaoPlenaria template_name = "sessao/pauta_inexistente.html" @@ -3813,7 +3816,10 @@ class PautaSessaoView(TemplateView): reverse('sapl.sessao:pauta_sessao_detail', kwargs={'pk': sessao.pk})) -@method_decorator(ratelimit(key='ip', rate='10/m', block=True), name='dispatch') +@method_decorator(ratelimit(key=ratelimit_ip, + rate='10/m', + block=True), + name='dispatch') class PautaSessaoDetailView(PautaMultiFormatOutputMixin, DetailView): template_name = "sessao/pauta_sessao_detail.html" model = SessaoPlenaria diff --git a/sapl/utils.py b/sapl/utils.py index 6554c5aea..ee97094aa 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -402,12 +402,20 @@ def xstr(s): def get_client_ip(request): + from ratelimit.core import ip_mask x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: - ip = request.META.get('REMOTE_ADDR') - return ip + ip = request.META.get('HTTP_X_REAL_IP') or request.META.get('REMOTE_ADDR') or '0.0.0.0' + return ip_mask(ip) + + +def ratelimit_ip(group, request): + """ + Ignore group param in django-ratelimit==3.0.1 + """ + return get_client_ip(request) def get_base_url(request): From e6970585039d3c23fefa21402f7ec850ea22fed0 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 22 Sep 2025 17:26:47 -0300 Subject: [PATCH 19/57] Adiciona smoke test for rate limiter --- scripts/test_ratelimiter.sh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100755 scripts/test_ratelimiter.sh diff --git a/scripts/test_ratelimiter.sh b/scripts/test_ratelimiter.sh new file mode 100755 index 000000000..e67651c5c --- /dev/null +++ b/scripts/test_ratelimiter.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +#URL=http://localhost:8000/materia/4379 +URL=http://localhost:8000/norma/pesquisar +#URL=http://localhost/norma/pesquisar + +for i in $(seq 1 6); do + curl -sS -o /dev/null -w "req=$i http=%{http_code} time=%{time_total}\n" "$URL" +done From 3f0d61bdb6b46d8c41ce54d2f9fca4183fd5c9cc Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 22 Sep 2025 17:27:41 -0300 Subject: [PATCH 20/57] Release: 3.1.164-RC5 --- CHANGES.md | 7 ++++++- docker/docker-compose.yaml | 2 +- sapl/settings.py | 2 +- sapl/templates/base.html | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f977fe2b5..677aea561 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,9 +1,14 @@ +3.1.164-RC5 / 2025-09-22 +======================== + + * Adiciona smoke test for rate limiter + * Hot-fix: rate limiter get ip + 3.1.164-RC4 / 2025-09-22 ======================== * Fix recibo proposição e adiciona rate limiter em matéria e norma - * Release: 3.1.164-RC3 3.1.164-RC3 / 2025-09-16 ======================== diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index cd8b7a2a1..66c788241 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -33,7 +33,7 @@ services: networks: - sapl-net sapl: - image: interlegis/sapl:3.1.164-RC4 + image: interlegis/sapl:3.1.164-RC5 # build: # context: ../ # dockerfile: ./docker/Dockerfile diff --git a/sapl/settings.py b/sapl/settings.py index c31b6b3b9..511c7f2e8 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -43,7 +43,7 @@ ALLOWED_HOSTS = ['*'] LOGIN_REDIRECT_URL = '/' LOGIN_URL = '/login/?next=' -SAPL_VERSION = '3.1.164-RC4' +SAPL_VERSION = '3.1.164-RC5' if DEBUG: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/sapl/templates/base.html b/sapl/templates/base.html index a53524bd4..1a077f4b1 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -200,7 +200,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - Release: 3.1.164-RC4 + Release: 3.1.164-RC5

From 55f9312ae1eb2056216761700353c55381c8a694 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 29 Sep 2025 14:16:38 -0300 Subject: [PATCH 21/57] Refatora rate limiter --- sapl/audiencia/views.py | 9 ++- sapl/base/views.py | 8 ++- sapl/comissoes/views.py | 11 ++- sapl/crud/base.py | 96 +++++++++++++++----------- sapl/materia/views.py | 40 ++++++----- sapl/middleware.py | 3 + sapl/norma/views.py | 20 ++---- sapl/parlamentares/views.py | 19 ++++- sapl/protocoloadm/views.py | 27 +++++++- sapl/relatorios/views.py | 67 +++++++++++++++++- sapl/sessao/views.py | 15 +++- sapl/settings.py | 2 + sapl/static/.well-known/traffic-advice | 5 ++ sapl/urls.py | 15 ++++ scripts/test_ratelimiter.sh | 9 ++- 15 files changed, 257 insertions(+), 89 deletions(-) create mode 100644 sapl/static/.well-known/traffic-advice diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py index 443fc81e8..d5ea7f710 100755 --- a/sapl/audiencia/views.py +++ b/sapl/audiencia/views.py @@ -9,6 +9,12 @@ from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, MasterDetailCrud from .forms import AudienciaForm, AnexoAudienciaPublicaForm from .models import AudienciaPublica, AnexoAudienciaPublica +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator + +from ..settings import RATE_LIMITER_RATE +from ..utils import ratelimit_ip + def index(request): return HttpResponse("Audiência Pública") @@ -105,6 +111,3 @@ class AnexoAudienciaPublicaCrud(MasterDetailCrud): qs = super(MasterDetailCrud.ListView, self).get_queryset() kwargs = {self.crud.parent_field: self.kwargs['pk']} return qs.filter(**kwargs).order_by('-data', '-id') - - class DetailView(AudienciaPublicaMixin, MasterDetailCrud.DetailView): - pass diff --git a/sapl/base/views.py b/sapl/base/views.py index 68493dc04..2b53aa57c 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -48,7 +48,7 @@ from sapl.parlamentares.models import ( from sapl.protocoloadm.models import (Anexado, Protocolo) from sapl.relatorios.views import (relatorio_estatisticas_acesso_normas) from sapl.sessao.models import (Bancada, SessaoPlenaria) -from sapl.settings import EMAIL_SEND_USER +from sapl.settings import EMAIL_SEND_USER, RATE_LIMITER_RATE from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, google_recaptcha_configured, get_client_ip, sapn_is_enabled, is_weak_password, ratelimit_ip) @@ -68,7 +68,7 @@ class IndexView(TemplateView): @method_decorator(ratelimit(key=ratelimit_ip, - rate='10/m', + rate=RATE_LIMITER_RATE, method=ratelimit.UNSAFE, block=True), name='dispatch') @@ -1400,6 +1400,10 @@ class SaplSearchView(SearchView): return context +@method_decorator(ratelimit(key=ratelimit_ip, + rate=RATE_LIMITER_RATE, + block=True), + name='dispatch') class PesquisarAuditLogView(PermissionRequiredMixin, FilterView): model = AuditLog filterset_class = AuditLogFilterSet diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py index 5d3e450c2..6017ae2b3 100644 --- a/sapl/comissoes/views.py +++ b/sapl/comissoes/views.py @@ -28,11 +28,16 @@ from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud, RP_LIST) from sapl.materia.models import (MateriaEmTramitacao, MateriaLegislativa, PautaReuniao, Tramitacao) -from sapl.utils import show_results_filter_set +from sapl.utils import show_results_filter_set, ratelimit_ip from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, Participacao, Periodo, Reuniao, TipoComissao) +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator + +from ..settings import RATE_LIMITER_RATE + def pegar_url_composicao(pk): participacao = Participacao.objects.get(id=pk) @@ -333,6 +338,10 @@ class RemovePautaView(PermissionRequiredMixin, CreateView): return HttpResponseRedirect(success_url) +@method_decorator(ratelimit(key=ratelimit_ip, + rate=RATE_LIMITER_RATE, + block=True), + name='dispatch') class AdicionaPautaView(PermissionRequiredMixin, FilterView): filterset_class = PautaReuniaoFilterSet template_name = 'comissoes/pauta.html' diff --git a/sapl/crud/base.py b/sapl/crud/base.py index ceaef7580..fd091ec52 100644 --- a/sapl/crud/base.py +++ b/sapl/crud/base.py @@ -26,7 +26,11 @@ from sapl.crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display from sapl.crispy_layout_mixin import SaplFormHelper from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST) -from sapl.utils import normalize +from sapl.settings import RATE_LIMITER_RATE +from sapl.utils import normalize, ratelimit_ip + +from ratelimit.decorators import ratelimit +from django.utils.decorators import method_decorator logger = logging.getLogger(settings.BASE_DIR.name) @@ -101,7 +105,6 @@ variáveis do crud: class SearchMixin(models.Model): - search = models.TextField(blank=True, default='') logger = logging.getLogger(__name__) @@ -238,7 +241,7 @@ class PermissionRequiredContainerCrudMixin(PermissionRequiredMixin): @property def container_field_set(self): - if hasattr(self, 'crud') and\ + if hasattr(self, 'crud') and \ not hasattr(self.crud, 'container_field_set'): self.crud.container_field_set = '' if hasattr(self, 'crud'): @@ -267,12 +270,11 @@ class CrudBaseMixin(CrispyLayoutFormMixin): obj.public = [] if hasattr(self, 'permission_required') and self.permission_required: - self.permission_required = tuple( ( self.permission(pr) for pr in ( set(self.permission_required) - set(obj.public) - ) + ) ) ) @@ -337,9 +339,9 @@ class CrudBaseMixin(CrispyLayoutFormMixin): if not obj.DetailView.permission_required: return self.resolve_url(ACTION_DETAIL, args=(self.object.id,)) else: - return self.resolve_url(ACTION_DETAIL, args=(self.object.id,))\ + return self.resolve_url(ACTION_DETAIL, args=(self.object.id,)) \ if self.request.user.has_perm( - self.permission(RP_DETAIL)) else '' + self.permission(RP_DETAIL)) else '' @property def update_url(self): @@ -347,9 +349,9 @@ class CrudBaseMixin(CrispyLayoutFormMixin): if not obj.UpdateView.permission_required: return self.resolve_url(ACTION_UPDATE, args=(self.object.id,)) else: - return self.resolve_url(ACTION_UPDATE, args=(self.object.id,))\ + return self.resolve_url(ACTION_UPDATE, args=(self.object.id,)) \ if self.request.user.has_perm( - self.permission(RP_CHANGE)) else '' + self.permission(RP_CHANGE)) else '' @property def delete_url(self): @@ -357,9 +359,9 @@ class CrudBaseMixin(CrispyLayoutFormMixin): if not obj.DeleteView.permission_required: return self.resolve_url(ACTION_DELETE, args=(self.object.id,)) else: - return self.resolve_url(ACTION_DELETE, args=(self.object.id,))\ + return self.resolve_url(ACTION_DELETE, args=(self.object.id,)) \ if self.request.user.has_perm( - self.permission(RP_DELETE)) else '' + self.permission(RP_DELETE)) else '' @property def openapi_url(self): @@ -388,6 +390,10 @@ class CrudBaseMixin(CrispyLayoutFormMixin): return self.model._meta.verbose_name_plural +@method_decorator(ratelimit(key=ratelimit_ip, + rate=RATE_LIMITER_RATE, + block=True), + name='dispatch') class CrudListView(PermissionRequiredContainerCrudMixin, ListView): permission_required = (RP_LIST,) logger = logging.getLogger(__name__) @@ -496,7 +502,7 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView): if m: ss = get_field_display(m, n[-1])[1] ss = ( - ('
' if '
',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},A=function(){function o(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=o.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 o=m["default"].contains(r!==null?r:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!o)return;var i=this.getTipElement();var s=g.getUID(this.constructor.NAME);i.setAttribute("id",s);this.element.setAttribute("aria-describedby",s);this.setContent();if(this.config.animation)m["default"](i).addClass(ir);var a=typeof this.config.placement==="function"?this.config.placement.call(this,i,this.element):this.config.placement;var l=this._getAttachment(a);this.addAttachmentClass(l);var c=this._getContainer();m["default"](i).data(this.constructor.DATA_KEY,this);if(!m["default"].contains(this.element.ownerDocument.documentElement,this.tip))m["default"](i).appendTo(c);m["default"](this.element).trigger(this.constructor.Event.INSERTED);this._popper=new F["default"](this.element,i,this._getPopperConfig(l));m["default"](i).addClass(sr);m["default"](i).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(ir)){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 o=m["default"].Event(this.constructor.Event.HIDE);var i=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(o);if(o.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(ir)){var s=g.getTransitionDurationFromElement(r);m["default"](r).one(g.TRANSITION_END,i).emulateTransitionEnd(s)}else i();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(ir+" "+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(or.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(ir);this.config.animation=false;this.hide();this.show();this.config.animation=n};o._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 o(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(o,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 o}(),M=(m["default"].fn[O]=A._jQueryInterface,m["default"].fn[O].Constructor=A,m["default"].fn[O].noConflict=function(){m["default"].fn[O]=tr;return A._jQueryInterface},"popover"),yr="4.6.2",_r="bs.popover",N="."+_r,wr=m["default"].fn[M],xr="bs-popover",Cr=new RegExp("(^|\\s)"+xr+"\\S+","g"),kr="fade",Sr="show",Tr=".popover-header",Dr=".popover-body",Or=a({},A.Default,{placement:"right",trigger:"click",content:"",template:''}),Er=a({},A.DefaultType,{content:"(string|element|function)"}),Ar={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},Mr=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(Tr),this.getTitle());var n=this._getContent();if(typeof n==="function")n=n.call(this.element);this.setElementContent(t.find(Dr),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 M}},{key:"DATA_KEY",get:function e(){return _r}},{key:"Event",get:function e(){return Ar}},{key:"EVENT_KEY",get:function e(){return N}},{key:"DefaultType",get:function e(){return Er}}]);return r}(A),P=(m["default"].fn[M]=Mr._jQueryInterface,m["default"].fn[M].Constructor=Mr,m["default"].fn[M].noConflict=function(){m["default"].fn[M]=wr;return Mr._jQueryInterface},"scrollspy"),Nr="4.6.2",Pr="bs.scrollspy",Rr="."+Pr,Ir,Lr=m["default"].fn[P],Hr="dropdown-item",R="active",Br="activate"+Rr,Fr="scroll"+Rr,zr="load"+Rr+".data-api",jr="offset",Wr="position",Vr='[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:Wr;var o=this._config.method==="auto"?n:this._config.method;var i=o===Wr?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)[o]().top+i,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(Rr);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 o=this._targets[this._targets.length-1];if(this._activeTarget!==o)this._activate(o);return}if(this._activeTarget&&t0){this._activeTarget=null;this._clear();return}for(var i=this._offsets.length;i--;){var s=this._activeTarget!==this._targets[i]&&t>=this._offsets[i]&&(typeof this._offsets[i+1]==="undefined"||t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertChangesToDMP=function(e){for(var t,n,r=[],o=0;o{"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("")}},4321:(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(5255))&&n.__esModule?n:{default:n}).default;(t.arrayDiff=r).tokenize=function(e){return e.slice()},r.join=r.removeEmpty=function(e){return e}},5255:(e,t)=>{"use strict";function n(){}Object.defineProperty(t,"__esModule",{value:!0}),(t.default=n).prototype={diff:function(s,a){var e=2=d&&u<=p+1)return c([{value:this.join(a),count:a.length}]);var m=-1/0,g=1/0;function o(){for(var e=Math.max(m,-h);e<=Math.min(g,h);e+=2){var t=void 0,n=f[e-1],r=f[e+1],o=(n&&(f[e-1]=void 0),!1),i=(r&&(i=r.oldPos-e,o=r&&0<=i&&i=d&&u<=p+1)return c(function(e,t,n,r,o){var i,s=[];for(;t;)s.push(t),i=t.previousComponent,delete t.previousComponent,t=i;s.reverse();for(var a=0,l=s.length,c=0,u=0;ae.length?t:e}),h.value=e.join(d)):h.value=e.join(n.slice(c,c+h.count)),c+=h.count,h.added||(u+=h.count))}var f=s[l-1];1=d&&(g=Math.min(g,e-1)),u<=p+1&&(m=Math.max(m,e+1))}else f[e]=void 0}h++}if(t)!function e(){setTimeout(function(){if(nr)return t();o()||e()},0)}();else for(;h<=n&&Date.now()<=r;){var i=o();if(i)return i}},addToPath:function(e,t,n,r){var o=e.lastComponent;return o&&o.added===t&&o.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:o.count+1,added:t,removed:n,previousComponent:o.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:o}}},extractCommon:function(e,t,n,r){for(var o=t.length,i=n.length,s=e.oldPos,a=s-r,l=0;a+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(5255))&&n.__esModule?n:{default:n}).default;t.characterDiff=r},4079:(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(5255))&&n.__esModule?n:{default:n}).default;(t.cssDiff=r).tokenize=function(e){return e.split(/([{}:;,]|\s+)/)}},3728:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffJson=function(e,t,n){return i.diff(e,t,n)},t.canonicalize=d,t.jsonDiff=void 0;var r=(o=n(5255))&&o.__esModule?o:{default:o},o=n(9268);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,i=new r.default;function d(e,t,n,r,o){var i,s;for(t=t||[],n=n||[],r&&(e=r(o,e)),i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffLines=function(e,t,n){return i.diff(e,t,n)},t.diffTrimmedLines=function(e,t,n){n=(0,o.generateOptions)(n,{ignoreWhitespace:!0});return i.diff(e,t,n)},t.lineDiff=void 0;var r=(r=n(5255))&&r.__esModule?r:{default:r},o=n(6065);var i=new r.default;(t.lineDiff=i).tokenize=function(e){var t=[],n=(e=this.options.stripTrailingCr?e.replace(/\r\n/g,"\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(5255))&&n.__esModule?n:{default:n}).default;(t.sentenceDiff=r).tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)}},3422:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diffWords=function(e,t,n){return n=(0,o.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(5255))&&r.__esModule?r:{default:r},o=n(6065);var i=/^[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 o.diffChars}}),Object.defineProperty(t,"diffWords",{enumerable:!0,get:function(){return i.diffWords}}),Object.defineProperty(t,"diffWordsWithSpace",{enumerable:!0,get:function(){return i.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,"reversePatch",{enumerable:!0,get:function(){return p.reversePatch}}),Object.defineProperty(t,"structuredPatch",{enumerable:!0,get:function(){return m.structuredPatch}}),Object.defineProperty(t,"createTwoFilesPatch",{enumerable:!0,get:function(){return m.createTwoFilesPatch}}),Object.defineProperty(t,"createPatch",{enumerable:!0,get:function(){return m.createPatch}}),Object.defineProperty(t,"formatPatch",{enumerable:!0,get:function(){return m.formatPatch}}),Object.defineProperty(t,"convertChangesToDMP",{enumerable:!0,get:function(){return g.convertChangesToDMP}}),Object.defineProperty(t,"convertChangesToXML",{enumerable:!0,get:function(){return v.convertChangesToXML}});var r=(t=n(5255))&&t.__esModule?t:{default:t},o=n(6687),i=n(3422),s=n(9268),a=n(883),l=n(4079),c=n(3728),u=n(4321),d=n(5467),h=n(3020),f=n(8555),p=n(7769),m=n(5104),g=n(6583),v=n(1591)},5467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.applyPatch=i,t.applyPatches=function(e,o){"string"==typeof e&&(e=(0,O.parsePatch)(e));var t=0;!function n(){var r=e[t++];if(!r)return o.complete();o.loadFile(r,function(e,t){if(e)return o.complete(e);e=i(t,r,o),o.patched(r,e,function(e){if(e)return o.complete(e);n()})})}()};var O=n(3020),E=(t=n(1439))&&t.__esModule?t:{default:t};function i(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,o,i){return s(e,e,t,n,r,o,i)};var i=n(9268);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&&i.length<=l.context&&(e=/\n$/.test(s),n=/\n$/.test(a),r=0==i.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 o=0,i=0,s=0,a=0;for(;oe.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(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 r(r){for(var e=1;e{"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 o=!0,i=!1,s=!1,a=1;return function e(){if(o&&!s){if(i?a++:o=!1,t+a<=r)return a;s=!0}if(!i)return s||(o=!0),n<=t-a?-a++:(i=!0,e())}}},6065:(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}},6371:(e,t,n)=>{var r;n(4692);window.Zepto,n=[n(4692)],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,o=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(o||o==="0")t=o;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(i!==C.val()&&!h.data("changed"))h.trigger("change");h.data("changed",false)}).on("blur.mask",function(){i=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,o,i,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,o=t.length,i=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>i)n=o*10;else if(r>=n&&r!==i){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(),o=h.data("mask-previus-value")||"";setTimeout(function(){C.setCaret(C.calculateCaretPosition(o))},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+"",o=0,i=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;o=i-1;s=a-1;p=function(){return o>-1&&s>-1}}else{f=i-1;p=function(){return o0,[t,e,h,C.invalid,x])}};h=a(h);var k=this,i=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,o;!function(){"use strict";o=[n(4692)],void 0!==(o="function"==typeof(r=function(te){"use strict";te.ui=te.ui||{};var I=te.ui.version="1.13.3",L=0,H=Array.prototype.hasOwnProperty,a=Array.prototype.slice,B=(te.cleanData=function(o){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")}o(e)}}(te.cleanData),te.widget=function(e,n,t){var r,o,i;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];o=te[a][e]=function(e,t){if(!this||!this._createWidget)return new o(e,t);if(arguments.length)this._createWidget(e,t)};te.extend(o,r,{version:t.version,_proto:te.extend({},t),_childConstructors:[]});i=new n;i.options=te.widget.extend({},i.options);te.each(t,function(t,i){if(typeof i!=="function"){s[t]=i;return}s[t]=function(){function r(){return n.prototype[t].apply(this,arguments)}function o(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=o;n=i.apply(this,arguments);this._super=e;this._superApply=t;return n}}()});o.prototype=te.widget.extend(i,{widgetEventPrefix:r?i.widgetEventPrefix||e:e},s,{constructor:o,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,o,t._proto)});delete r._childConstructors}else n._childConstructors.push(o);te.widget.bridge(e,o);return o},te.widget.extend=function(e){var t=a.call(arguments,1);var n=0;var r=t.length;var o;var i;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 o;var i;if(arguments.length===0)return te.widget.extend({},this.options);if(typeof e==="string"){n={};r=e.split(".");e=r.shift();if(r.length){o=n[e]=te.widget.extend({},this.options[e]);for(i=0;i"+"
"),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 o=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:o<0?"top":r>0?"bottom":"middle"};if(fx(C(r),C(o)))i.important="horizontal";else i.important="vertical";d.using.call(this,e,i)};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,o=n.width,i=e.left-t.collisionPosition.marginLeft,s=r-i,a=i+t.collisionWidth-o-r,l;if(t.collisionWidth>o)if(s>0&&a<=0){l=e.left+s+t.collisionWidth-o-r;e.left+=s-l}else if(a>0&&s<=0)e.left=r;else if(s>a)e.left=r+o-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-i,e.left)},top:function(e,t){var n=t.within,r=n.isWindow?n.scrollTop:n.offset.top,o=t.within.height,i=e.top-t.collisionPosition.marginTop,s=r-i,a=i+t.collisionHeight-o-r,l;if(t.collisionHeight>o)if(s>0&&a<=0){l=e.top+s+t.collisionHeight-o-r;e.top+=s-l}else if(a>0&&s<=0)e.top=r;else if(s>a)e.top=r+o-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-i,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,o=n.width,i=n.isWindow?n.scrollLeft:n.offset.left,s=e.left-t.collisionPosition.marginLeft,a=s-i,l=s+t.collisionWidth-o-i,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-o-r;if(h<0||h0){f=e.left-t.collisionPosition.marginLeft+c+u+d-i;if(f>0||C(f)0){f=e.top-t.collisionPosition.marginTop+u+d+h-i;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),o=r&&t.parse(r),i=t.space||"rgba";if(o){n=a[i](o);a[f[i].cache]=n[f[i].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(o,e,t,n){if(o===undefined){this._rgba=[null,null,null,null];return this}if(o.jquery||o.nodeType){o=d(o).css(e);e=undefined}var i=this,r=b(o),s=this._rgba=[];if(e!==undefined){o=[o,e,t,n];r="array"}if(r==="string")return this.parse(_(o)||g._default);if(r==="array"){v(f.rgba.props,function(e,t){s[t.idx]=y(o[t.idx],t)});return this}if(r==="object"){if(o instanceof h)v(f,function(e,t){if(o[t.cache])i[t.cache]=o[t.cache].slice()});else v(f,function(e,n){var r=n.cache;v(n.props,function(e,t){if(!i[r]&&n.to){if(e==="alpha"||o[e]==null)return;i[r]=n.to(i._rgba)}i[r][t.idx]=y(o[e],t,true)});if(i[r]&&d.inArray(null,i[r].slice(0,3))<0){if(i[r][3]==null)i[r][3]=1;if(n.from)i._rgba=n.from(i[r])}});return this}},is:function(e){var o=h(e),i=true,s=this;v(f,function(e,t){var n,r=o[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){i=r[t.idx]===n[t.idx];return i}})}return i});return i},_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],o=a[n],i=p[t.type]||{};if(o===null)return;if(r===null)c[n]=o;else{if(i.mod)if(o-r>i.mod/2)r+=i.mod;else if(r-o>i.mod/2)r-=i.mod;c[n]=y((o-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,o=e[3],i=Math.max(t,n,r),s=Math.min(t,n,r),a=i-s,l=i+s,c=l*.5,u,d;if(s===i)u=0;else if(t===i)u=60*(n-r)/a+360;else if(n===i)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,o==null?1:o]},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],o=e[3],i=r<=.5?r*(1+n):r+n-r*n,s=2*r-i;return[Math.round(w(s,i,t+1/3)*255),Math.round(w(s,i,t)*255),Math.round(w(s,i,t-1/3)*255),o]},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),o=r==="array"||r==="object"?e:arguments,i=this[s].slice();v(n,function(e,t){var n=o[r==="object"?e:t.idx];if(n==null)n=i[t.idx];i[t.idx]=y(n,t)});if(c){t=h(c(i));t[s]=i;return t}else return h(i)};v(n,function(s,a){if(h.fn[s])return;h.fn[s]=function(e){var t,n,r,o,i=b(e);if(s==="alpha")o=this._hsla?"hsla":"rgba";else o=l;t=this[o]();n=t[a.idx];if(i==="undefined")return n;if(i==="function"){e=e.call(this,n);i=b(e)}if(e==null&&a.empty)return this;if(i==="string"){r=Z.exec(e);if(r)e=n+parseFloat(r[2])*(r[1]==="+"?1:-1)}t[a.idx]=e;return this[o](t)}})}),(h.hook=function(e){var t=e.split(" ");v(t,function(e,i){d.cssHooks[i]={set:function(e,t){var n,r,o="";if(t!=="transparent"&&(b(t)!=="string"||(n=_(t)))){t=h(n||t);if(!m.rgba&&t._rgba[3]!==1){r=i==="backgroundColor"?e.parentNode:e;while((o===""||o==="transparent")&&r&&r.style)try{o=d.css(r,"backgroundColor");r=r.parentNode}catch(e){}t=t.blend(o&&o!=="transparent"?o:"_default")}t=t.toRgbaString()}try{e.style[i]=t}catch(e){}}};d.fx.step[i]=function(e){if(!e.colorInit){e.start=h(e.elem,i);e.end=h(e.end);e.colorInit=true}d.cssHooks[i].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"},T="ui-effects-",t="ui-effects-style",D="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,o={};if(r&&r.length&&r[0]&&r[r[0]]){n=r.length;while(n--){t=r[n];if(typeof r[t]==="string")o[G(t)]=r[t]}}else for(t in r)if(typeof r[t]==="string")o[t]=r[t];return o}function J(e,t){var n={},r,o;for(r in t){o=t[r];if(e[r]!==o)if(!K[r])if(te.fx.step[r]||!isNaN(parseFloat(o)))n[r]=o}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(o,e,t,n){var i=te.speed(e,t,n);return this.queue(function(){var n=te(this),e=n.attr("class")||"",t,r=i.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(o[t])n[t+"Class"](o[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({},i,{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,"")})});i.complete.call(n[0])})})},te.fn.extend({addClass:function(o){return function(e,t,n,r){return t?te.effects.animateClass.call(this,{add:e},t,n,r):o.apply(this,arguments)}}(te.fn.addClass),removeClass:function(o){return function(e,t,n,r){return arguments.length>1?te.effects.animateClass.call(this,{remove:e},t,n,r):o.apply(this,arguments)}}(te.fn.removeClass),toggleClass:function(i){return function(e,t,n,r,o){if(typeof t==="boolean"||t===undefined)if(!n)return i.apply(this,arguments);else return te.effects.animateClass.call(this,t?{add:e}:{remove:e},n,r,o);else return te.effects.animateClass.call(this,{toggle:e},t,n,r)}}(te.fn.toggleClass),switchClass:function(e,t,n,r,o){return te.effects.animateClass.call(this,{add:t,remove:e},n,r,o)}}),te.expr&&te.expr.pseudos&&te.expr.pseudos.animated)te.expr.pseudos.animated=function(t){return function(e){return!!te(e).data(D)||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()},o=document.activeElement;try{o.id}catch(e){o=document.body}n.wrap(e);if(n[0]===o||te.contains(n[0],o))te(o).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(),o=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,i=o.exec(e)||["",0,n,r,0];return{top:parseFloat(i[1])||0,right:i[2]==="auto"?n:parseFloat(i[2]),bottom:i[3]==="auto"?r:parseFloat(i[3]),left:parseFloat(i[4])||0}}te.extend(te.effects,{version:"1.13.3",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,o=n!=="vertical"?(t||100)/100:1;return{height:e.height()*o,width:e.width()*r,outerHeight:e.outerHeight()*o,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(T+"placeholder",t)}e.css({position:n,left:r.left,top:r.top});return t},removePlaceholder:function(e){var t=T+"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,o,i){i=i||{};te.each(e,function(e,t){var n=r.cssUnit(t);if(n[0]>0)i[t]=n[0]*o+n[1]});return i}}),te.fn.extend({effect:function(){var o=O.apply(this,arguments),i=te.effects.effect[o.effect],s=i.mode,e=o.queue,t=e||"fx",a=o.complete,l=o.mode,c=[],n=function(e){var t=te(this),n=te.effects.mode(t,l)||s;t.data(D,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||!i)if(l)return this[l](o.duration,a);else return this.each(function(){if(a)a.call(this)});function r(e){var t=te(this);function n(){t.removeData(D);te.effects.cleanUp(t);if(o.mode==="hide")t.hide();r()}function r(){if(typeof a==="function")a.call(t[0]);if(typeof e==="function")e()}o.mode=c.shift();if(te.uiBackCompat!==false&&!s)if(t.is(":hidden")?l==="hide":l==="show"){t[l]();r()}else i.call(t[0],o,r);else if(o.mode==="none"){t[l]();r()}else i.call(t[0],o,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),o=r.css("position")==="fixed",i=te("body"),s=o?i.scrollTop():0,a=o?i.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:o?"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 A={},ee=(te.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,e){A[e]=function(e){return Math.pow(e,t+2)}}),te.extend(A,{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(A,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),o=e.direction||"up",i=r.cssClip(),s={clip:te.extend({},i)},a=te.effects.createPlaceholder(r);s.clip[n[o][0]]=s.clip[n[o][1]];if(e.mode==="show"){r.cssClip(s.clip);if(a)a.css(te.effects.clipToBox(s));s.clip=i}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,o,i=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=i.queue().length;te.effects.createPlaceholder(i);o=i.css(m);if(!u)u=i[m==="top"?"outerHeight":"outerWidth"]()/3;if(l){r={opacity:1};r[m]=o;i.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]=o;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:o+(h?s*p:0),top:i+(h?a*m:0),opacity:h?0:1}).animate({left:o+(h?0:s*p),top:i+(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,o=r==="show",i=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[i?0:1];f.clip[c[0]]=s;p.clip[c[0]]=s;p.clip[c[1]]=0;if(o){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(o,t){var e,i,n,r=te(this),s=["fontSize"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=o.mode,u=c!=="effect",d=o.scale||"both",h=o.origin||["middle","center"],f=r.css("position"),p=r.position(),m=te.effects.scaledDimensions(r),g=o.from||m,v=o.to||te.effects.scaledDimensions(r,0);te.effects.createPlaceholder(r);if(c==="show"){n=g;g=v;v=n}i={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(i.from.y!==i.to.y){g=te.effects.setTransition(r,a,i.from.y,g);v=te.effects.setTransition(r,a,i.to.y,v)}if(i.from.x!==i.to.x){g=te.effects.setTransition(r,l,i.from.x,g);v=te.effects.setTransition(r,l,i.to.x,v)}}if(d==="content"||d==="both")if(i.from.y!==i.to.y){g=te.effects.setTransition(r,s,i.from.y,g);v=te.effects.setTransition(r,s,i.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*i.from.y,width:t.width*i.from.x,outerHeight:t.outerHeight*i.from.y,outerWidth:t.outerWidth*i.from.x},r={height:t.height*i.to.y,width:t.width*i.to.x,outerHeight:t.height*i.to.y,outerWidth:t.width*i.to.x};if(i.from.y!==i.to.y){n=te.effects.setTransition(e,a,i.from.y,n);r=te.effects.setTransition(e,a,i.to.y,r)}if(i.from.x!==i.to.x){n=te.effects.setTransition(e,l,i.from.x,n);r=te.effects.setTransition(e,l,i.to.x,r)}if(u)te.effects.saveStyle(e);e.css(n);e.animate(r,o.duration,o.easing,function(){if(u)te.effects.restoreStyle(e)})})}r.animate(v,{queue:false,duration:o.duration,easing:o.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,o=parseInt(e.percent,10)||(parseInt(e.percent,10)===0?0:r!=="effect"?0:100),i=te.extend(true,{from:te.effects.scaledDimensions(n),to:te.effects.scaledDimensions(n,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);if(e.fade){i.from.opacity=1;i.to.opacity=0}te.effects.effect.size.call(this,i,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,o=r==="show",i=r==="hide",s=o||i,a=(e.times||5)*2+(s?1:0),l=e.duration/a,c=0,u=1,d=n.queue().length;if(o||!n.is(":visible")){n.css("opacity",0).show();c=1}for(;u0&&o.is(":visible")}if(/^(input|select|textarea|button|object)$/.test(a)){i=!e.disabled;if(i){s=te(e).closest("fieldset")[0];if(s)i=!s.disabled}}else if("a"===a)i=e.href||t;else i=t;return i&&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,o;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();o=e.add(e.length?e.siblings():this.siblings());t="label[for='"+te.escapeSelector(n)+"']";r=r.add(o.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)/,o=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"||!o.length?te(this[0].ownerDocument||document):o},Te=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)}}),De=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.3",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),o=false;switch(e.keyCode){case t.RIGHT:case t.DOWN:o=this.headers[(r+1)%n];break;case t.LEFT:case t.UP:o=this.headers[(r-1+n)%n];break;case t.SPACE:case t.ENTER:this._eventHandler(e);break;case t.HOME:o=this.headers[0];break;case t.END:o=this.headers[n-1];break}if(o){te(e.target).attr("tabIndex",-1);te(o).attr("tabIndex",0);te(o).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,o=this.active,i=te(e.currentTarget),s=i[0]===o[0],a=s&&r.collapsible,l=a?te():i.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:a?te():i,newPanel:l};e.preventDefault();if(s&&!r.collapsible||this._trigger("beforeActivate",e,u)===false)return;r.active=a?false:this.headers.index(i);this.active=s?te():i;this._toggle(u);this._removeClass(o,"ui-accordion-header-active","ui-state-active");if(r.icons){t=o.children(".ui-accordion-header-icon");this._removeClass(t,null,r.icons.activeHeader)._addClass(t,null,r.icons.header)}if(!s){this._removeClass(i,"ui-accordion-header-collapsed")._addClass(i,"ui-accordion-header-active","ui-state-active");if(r.icons){n=i.children(".ui-accordion-header-icon");this._removeClass(n,null,r.icons.header)._addClass(n,null,r.icons.activeHeader)}this._addClass(i.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,o,i,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,o,i=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:i=false;n=this.previousFilter||"";o=false;r=e.keyCode>=96&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode);clearTimeout(this.filterTimer);if(r===n)o=true;else r=n+r;t=this._filterMenuItems(r);t=o&&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(i)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,o,i=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);i._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(i._isDivider(e))i._addClass(e,"ui-menu-divider","ui-widget-content")});r=t.not(".ui-menu-item, .ui-menu-divider");o=r.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()});this._addClass(r,"ui-menu-item")._addClass(o,"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,o;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"));o=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper");this._addClass(o,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,o,i,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;o=this.activeMenu.scrollTop();i=this.activeMenu.height();s=e.outerHeight();if(r<0)this.activeMenu.scrollTop(o+r);else if(r+s>i)this.activeMenu.scrollTop(o+r-i+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,o,e=this.element[0].nodeName.toLowerCase(),t=e==="textarea",i=e==="input";this.isMultiLine=t||!i&&this._isContentEditable(this.element);this.valueMethod=this.element[t||i?"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;o=true;r=true;return}n=false;o=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(o){o=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("