Heroku
tcp/443
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1926e27d0926e27d0926e27d0926e27d0926e27d0926e27d0
Public Swagger UI/API detected at path: /webjars/swagger-ui/index.html
Open service 76.223.11.49:443 · planification-dev.lps.nc
2026-01-09 08:15
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Language: en
Content-Length: 9096
Content-Type: text/html;charset=UTF-8
Date: Fri, 09 Jan 2026 08:15:59 GMT
Expires: 0
Last-Modified: Wed, 12 Nov 2025 23:15:04 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Pragma: no-cache
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=IymGK%2FOdX6pOT5CPJfQ2xxJFwJ5ktn3%2FTxbcZ%2F7JzxI%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1767946559"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=IymGK%2FOdX6pOT5CPJfQ2xxJFwJ5ktn3%2FTxbcZ%2F7JzxI%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1767946559"
Server: Heroku
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Planification
<!doctype html>
<html lang="fr" data-critters-container>
<head>
<meta charset="utf-8">
<title>Planification</title>
<base href="/">
<!--IE11-->
<!-- HTML5 Shim and Respond.js IE11 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 11]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Meta -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, user-scalable=0, minimal-ui" name="viewport">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content name="description">
<meta content name="keywords">
<!-- Favicon icon -->
<link href="assets/icons/apple-icon-57x57.png" rel="apple-touch-icon" sizes="57x57">
<link href="assets/icons/apple-icon-60x60.png" rel="apple-touch-icon" sizes="60x60">
<link href="assets/icons/apple-icon-72x72.png" rel="apple-touch-icon" sizes="72x72">
<link href="assets/icons/apple-icon-76x76.png" rel="apple-touch-icon" sizes="76x76">
<link href="assets/icons/apple-icon-114x114.png" rel="apple-touch-icon" sizes="114x114">
<link href="assets/icons/apple-icon-120x120.png" rel="apple-touch-icon" sizes="120x120">
<link href="assets/icons/apple-icon-144x144.png" rel="apple-touch-icon" sizes="144x144">
<link href="assets/icons/apple-icon-152x152.png" rel="apple-touch-icon" sizes="152x152">
<link href="assets/icons/apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180">
<link href="assets/icons/android-icon-192x192.png" rel="icon" sizes="192x192" type="image/png">
<link href="assets/icons/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="assets/icons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png">
<link href="assets/icons/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link href="manifest.webmanifest" rel="manifest">
<meta content="#ffffff" name="msapplication-TileColor">
<meta content="/ms-icon-144x144.png" name="msapplication-TileImage">
<meta content="#ffffff" name="theme-color">
<style>@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13, 110, 253;--bs-secondary-rgb:108, 117, 125;--bs-success-rgb:25, 135, 84;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 193, 7;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:248, 249, 250;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:0, 0, 0;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Em
Open service 76.223.11.49:443 · planification-dev.lps.nc
2026-01-02 12:27
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Language: en
Content-Length: 9096
Content-Type: text/html;charset=UTF-8
Date: Fri, 02 Jan 2026 12:27:12 GMT
Expires: 0
Last-Modified: Wed, 12 Nov 2025 23:15:04 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Pragma: no-cache
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=lOfbXuGkWv3bHC8GNNshhuPKFMLGO5qvJn6lODt%2B%2BWM%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1767356832"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=lOfbXuGkWv3bHC8GNNshhuPKFMLGO5qvJn6lODt%2B%2BWM%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1767356832"
Server: Heroku
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Planification
<!doctype html>
<html lang="fr" data-critters-container>
<head>
<meta charset="utf-8">
<title>Planification</title>
<base href="/">
<!--IE11-->
<!-- HTML5 Shim and Respond.js IE11 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 11]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Meta -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, user-scalable=0, minimal-ui" name="viewport">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content name="description">
<meta content name="keywords">
<!-- Favicon icon -->
<link href="assets/icons/apple-icon-57x57.png" rel="apple-touch-icon" sizes="57x57">
<link href="assets/icons/apple-icon-60x60.png" rel="apple-touch-icon" sizes="60x60">
<link href="assets/icons/apple-icon-72x72.png" rel="apple-touch-icon" sizes="72x72">
<link href="assets/icons/apple-icon-76x76.png" rel="apple-touch-icon" sizes="76x76">
<link href="assets/icons/apple-icon-114x114.png" rel="apple-touch-icon" sizes="114x114">
<link href="assets/icons/apple-icon-120x120.png" rel="apple-touch-icon" sizes="120x120">
<link href="assets/icons/apple-icon-144x144.png" rel="apple-touch-icon" sizes="144x144">
<link href="assets/icons/apple-icon-152x152.png" rel="apple-touch-icon" sizes="152x152">
<link href="assets/icons/apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180">
<link href="assets/icons/android-icon-192x192.png" rel="icon" sizes="192x192" type="image/png">
<link href="assets/icons/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="assets/icons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png">
<link href="assets/icons/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link href="manifest.webmanifest" rel="manifest">
<meta content="#ffffff" name="msapplication-TileColor">
<meta content="/ms-icon-144x144.png" name="msapplication-TileImage">
<meta content="#ffffff" name="theme-color">
<style>@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13, 110, 253;--bs-secondary-rgb:108, 117, 125;--bs-success-rgb:25, 135, 84;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 193, 7;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:248, 249, 250;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:0, 0, 0;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Em
Open service 76.223.11.49:443 · planification-dev.lps.nc
2025-12-22 18:19
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Language: en
Content-Length: 9096
Content-Type: text/html;charset=UTF-8
Date: Mon, 22 Dec 2025 18:19:52 GMT
Expires: 0
Last-Modified: Wed, 12 Nov 2025 23:15:04 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Pragma: no-cache
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=vOfw2yAx8QSyIJjm1HiKmlYdxyBcJSXnXI71KOjM75I%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1766427593"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=vOfw2yAx8QSyIJjm1HiKmlYdxyBcJSXnXI71KOjM75I%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1766427593"
Server: Heroku
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Planification
<!doctype html>
<html lang="fr" data-critters-container>
<head>
<meta charset="utf-8">
<title>Planification</title>
<base href="/">
<!--IE11-->
<!-- HTML5 Shim and Respond.js IE11 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 11]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Meta -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, user-scalable=0, minimal-ui" name="viewport">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content name="description">
<meta content name="keywords">
<!-- Favicon icon -->
<link href="assets/icons/apple-icon-57x57.png" rel="apple-touch-icon" sizes="57x57">
<link href="assets/icons/apple-icon-60x60.png" rel="apple-touch-icon" sizes="60x60">
<link href="assets/icons/apple-icon-72x72.png" rel="apple-touch-icon" sizes="72x72">
<link href="assets/icons/apple-icon-76x76.png" rel="apple-touch-icon" sizes="76x76">
<link href="assets/icons/apple-icon-114x114.png" rel="apple-touch-icon" sizes="114x114">
<link href="assets/icons/apple-icon-120x120.png" rel="apple-touch-icon" sizes="120x120">
<link href="assets/icons/apple-icon-144x144.png" rel="apple-touch-icon" sizes="144x144">
<link href="assets/icons/apple-icon-152x152.png" rel="apple-touch-icon" sizes="152x152">
<link href="assets/icons/apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180">
<link href="assets/icons/android-icon-192x192.png" rel="icon" sizes="192x192" type="image/png">
<link href="assets/icons/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="assets/icons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png">
<link href="assets/icons/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link href="manifest.webmanifest" rel="manifest">
<meta content="#ffffff" name="msapplication-TileColor">
<meta content="/ms-icon-144x144.png" name="msapplication-TileImage">
<meta content="#ffffff" name="theme-color">
<style>@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13, 110, 253;--bs-secondary-rgb:108, 117, 125;--bs-success-rgb:25, 135, 84;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 193, 7;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:248, 249, 250;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:0, 0, 0;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Em
Open service 76.223.11.49:443 · planification-dev.lps.nc
2025-12-20 18:52
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Language: en
Content-Length: 9096
Content-Type: text/html;charset=UTF-8
Date: Sat, 20 Dec 2025 18:52:07 GMT
Expires: 0
Last-Modified: Wed, 12 Nov 2025 23:15:04 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Pragma: no-cache
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=%2BkMfCnnz37XM8Wrc%2BK3QL3JQgEL6NjWSvAVzz8PJrDg%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1766256727"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=%2BkMfCnnz37XM8Wrc%2BK3QL3JQgEL6NjWSvAVzz8PJrDg%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1766256727"
Server: Heroku
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Planification
<!doctype html>
<html lang="fr" data-critters-container>
<head>
<meta charset="utf-8">
<title>Planification</title>
<base href="/">
<!--IE11-->
<!-- HTML5 Shim and Respond.js IE11 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 11]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Meta -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, user-scalable=0, minimal-ui" name="viewport">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content name="description">
<meta content name="keywords">
<!-- Favicon icon -->
<link href="assets/icons/apple-icon-57x57.png" rel="apple-touch-icon" sizes="57x57">
<link href="assets/icons/apple-icon-60x60.png" rel="apple-touch-icon" sizes="60x60">
<link href="assets/icons/apple-icon-72x72.png" rel="apple-touch-icon" sizes="72x72">
<link href="assets/icons/apple-icon-76x76.png" rel="apple-touch-icon" sizes="76x76">
<link href="assets/icons/apple-icon-114x114.png" rel="apple-touch-icon" sizes="114x114">
<link href="assets/icons/apple-icon-120x120.png" rel="apple-touch-icon" sizes="120x120">
<link href="assets/icons/apple-icon-144x144.png" rel="apple-touch-icon" sizes="144x144">
<link href="assets/icons/apple-icon-152x152.png" rel="apple-touch-icon" sizes="152x152">
<link href="assets/icons/apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180">
<link href="assets/icons/android-icon-192x192.png" rel="icon" sizes="192x192" type="image/png">
<link href="assets/icons/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="assets/icons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png">
<link href="assets/icons/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link href="manifest.webmanifest" rel="manifest">
<meta content="#ffffff" name="msapplication-TileColor">
<meta content="/ms-icon-144x144.png" name="msapplication-TileImage">
<meta content="#ffffff" name="theme-color">
<style>@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13, 110, 253;--bs-secondary-rgb:108, 117, 125;--bs-success-rgb:25, 135, 84;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 193, 7;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:248, 249, 250;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:0, 0, 0;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Em