diff --git a/.github/workflows/.tests-and-publish-python.yml b/.github/workflows/.tests-and-publish-python.yml index c0d1cd261..9f9fd2a57 100644 --- a/.github/workflows/.tests-and-publish-python.yml +++ b/.github/workflows/.tests-and-publish-python.yml @@ -313,6 +313,8 @@ jobs: images: | fittrackee/fittrackee ${{ env.GITHUB_REGISTRY }}/${{ env.GITHUB_IMAGE_NAME}} + tags: | + type=pep440,pattern={{version}},prefix=v - name: Build and push Docker images id: push diff --git a/CHANGELOG.md b/CHANGELOG.md index 656ea6517..f77b7918a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,51 @@ # Change log +## Version 0.9.0b6 (2025/01/05) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#677](https://github.com/SamR1/FitTrackee/pull/677) - Add notification preferences +* [PR#678](https://github.com/SamR1/FitTrackee/pull/678) - Display users who like comment/workout + +### Bugs Fixed + +* [d743abf](https://github.com/SamR1/FitTrackee/commit/d743abf0e59a3c7cc1e11adbd9c8d0214d0c7da7) - display missing errors in user profile + + +**Note:** This release contains database migration (see upgrade instructions in [documentation](https://samr1.github.io/FitTrackee/en/installation.html#upgrade)) + + +## Version 0.9.0b5 (2024/12/30) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#675](https://github.com/SamR1/FitTrackee/pull/675) - CLI - create user with provided role + +### Bugs Fixed + +* [PR#671](https://github.com/SamR1/FitTrackee/pull/671) - Fix sport icon when unauthenticated user displays user profile +* [PR#674](https://github.com/SamR1/FitTrackee/pull/674) - Fix display of privacy policy message with privacy extension +* [2e9f9d](https://github.com/SamR1/FitTrackee/commit/2e9f9d69eb38d5f310236944d45b4b60d8faff20) - fix translations +* [edc677](https://github.com/SamR1/FitTrackee/commit/edc6776c922925746762f7ac76c267feda7cde2f) - Fix notification icons + +### Misc + +* [174240](https://github.com/SamR1/FitTrackee/commit/174240f1d9dc702d4346c85e6add4022af2a88c6) - add tags input to docker image build job + + ## Version 0.8.13 (2024/12/29) ### Translations -* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galicien) +* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galician) Translation status: - Basque: 100% diff --git a/VERSION b/VERSION index e3156f0a5..a4424ac30 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9.0b4 +0.9.0b6 diff --git a/docs/en/.buildinfo b/docs/en/.buildinfo index 1be8d2f1b..ae4573550 100644 --- a/docs/en/.buildinfo +++ b/docs/en/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 1f40293afebca1273c520c0d2b420351 +config: 99d8b9a616473d517d6f312337cba177 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/en/_images/administration-menu.png b/docs/en/_images/administration-menu.png index 2f93b829b..91499b4aa 100644 Binary files a/docs/en/_images/administration-menu.png and b/docs/en/_images/administration-menu.png differ diff --git a/docs/en/_images/dashboard.png b/docs/en/_images/dashboard.png index c064ace1f..40e6a0038 100644 Binary files a/docs/en/_images/dashboard.png and b/docs/en/_images/dashboard.png differ diff --git a/docs/en/_images/equipment-detail.png b/docs/en/_images/equipment-detail.png index 3c12d59a6..36ecc92de 100644 Binary files a/docs/en/_images/equipment-detail.png and b/docs/en/_images/equipment-detail.png differ diff --git a/docs/en/_images/equipments-list.png b/docs/en/_images/equipments-list.png index b98f005c7..7ce983124 100644 Binary files a/docs/en/_images/equipments-list.png and b/docs/en/_images/equipments-list.png differ diff --git a/docs/en/_images/notifications.png b/docs/en/_images/notifications.png index a6cb3e9be..2f7fe2992 100644 Binary files a/docs/en/_images/notifications.png and b/docs/en/_images/notifications.png differ diff --git a/docs/en/_images/oauth2-app-authorization.png b/docs/en/_images/oauth2-app-authorization.png index 75855a4d4..3d015216e 100644 Binary files a/docs/en/_images/oauth2-app-authorization.png and b/docs/en/_images/oauth2-app-authorization.png differ diff --git a/docs/en/_images/oauth2-client-creation.png b/docs/en/_images/oauth2-client-creation.png index 536cef1c2..9d3e3e0dc 100644 Binary files a/docs/en/_images/oauth2-client-creation.png and b/docs/en/_images/oauth2-client-creation.png differ diff --git a/docs/en/_images/sports-administration.png b/docs/en/_images/sports-administration.png index 18bfb8d76..9502c41a0 100644 Binary files a/docs/en/_images/sports-administration.png and b/docs/en/_images/sports-administration.png differ diff --git a/docs/en/_images/statistics-by-sport.png b/docs/en/_images/statistics-by-sport.png index cf9b1f348..1d30728af 100644 Binary files a/docs/en/_images/statistics-by-sport.png and b/docs/en/_images/statistics-by-sport.png differ diff --git a/docs/en/_images/statistics-by-time-period.png b/docs/en/_images/statistics-by-time-period.png index 605279616..42089ffb7 100644 Binary files a/docs/en/_images/statistics-by-time-period.png and b/docs/en/_images/statistics-by-time-period.png differ diff --git a/docs/en/_images/users-directory.png b/docs/en/_images/users-directory.png index c33ace233..ba1d8cfad 100644 Binary files a/docs/en/_images/users-directory.png and b/docs/en/_images/users-directory.png differ diff --git a/docs/en/_images/workout-detail.png b/docs/en/_images/workout-detail.png index 90b83515e..2a14e54cf 100644 Binary files a/docs/en/_images/workout-detail.png and b/docs/en/_images/workout-detail.png differ diff --git a/docs/en/_images/workouts-list.png b/docs/en/_images/workouts-list.png index 03da44de7..599bac832 100644 Binary files a/docs/en/_images/workouts-list.png and b/docs/en/_images/workouts-list.png differ diff --git a/docs/en/_sources/api/auth.rst.txt b/docs/en/_sources/api/auth.rst.txt index 2d6b1ef44..ecf1523b8 100644 --- a/docs/en/_sources/api/auth.rst.txt +++ b/docs/en/_sources/api/auth.rst.txt @@ -12,6 +12,7 @@ Authentication and account auth.edit_user_preferences, auth.edit_user_sport_preferences, auth.reset_user_sport_preferences, + auth.edit_user_notifications_preferences, auth.edit_picture, auth.del_picture, auth.request_password_reset, diff --git a/docs/en/_sources/api/comments.rst.txt b/docs/en/_sources/api/comments.rst.txt index f1d3862da..4d64ebd9b 100644 --- a/docs/en/_sources/api/comments.rst.txt +++ b/docs/en/_sources/api/comments.rst.txt @@ -9,6 +9,7 @@ Comments comments.update_workout_comment, comments.like_comment, comments.undo_comment_like, + comments.get_comment_likes, comments.appeal_comment_suspension, comments.delete_workout_comment diff --git a/docs/en/_sources/api/workouts.rst.txt b/docs/en/_sources/api/workouts.rst.txt index 8c15e90c2..9a5f6875d 100644 --- a/docs/en/_sources/api/workouts.rst.txt +++ b/docs/en/_sources/api/workouts.rst.txt @@ -18,4 +18,5 @@ Workouts workouts.delete_workout, workouts.like_workout, workouts.undo_workout_like, + workouts.get_workout_likes, workouts.appeal_workout_suspension diff --git a/docs/en/_sources/changelog.md.txt b/docs/en/_sources/changelog.md.txt index 656ea6517..f77b7918a 100644 --- a/docs/en/_sources/changelog.md.txt +++ b/docs/en/_sources/changelog.md.txt @@ -1,10 +1,51 @@ # Change log +## Version 0.9.0b6 (2025/01/05) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#677](https://github.com/SamR1/FitTrackee/pull/677) - Add notification preferences +* [PR#678](https://github.com/SamR1/FitTrackee/pull/678) - Display users who like comment/workout + +### Bugs Fixed + +* [d743abf](https://github.com/SamR1/FitTrackee/commit/d743abf0e59a3c7cc1e11adbd9c8d0214d0c7da7) - display missing errors in user profile + + +**Note:** This release contains database migration (see upgrade instructions in [documentation](https://samr1.github.io/FitTrackee/en/installation.html#upgrade)) + + +## Version 0.9.0b5 (2024/12/30) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#675](https://github.com/SamR1/FitTrackee/pull/675) - CLI - create user with provided role + +### Bugs Fixed + +* [PR#671](https://github.com/SamR1/FitTrackee/pull/671) - Fix sport icon when unauthenticated user displays user profile +* [PR#674](https://github.com/SamR1/FitTrackee/pull/674) - Fix display of privacy policy message with privacy extension +* [2e9f9d](https://github.com/SamR1/FitTrackee/commit/2e9f9d69eb38d5f310236944d45b4b60d8faff20) - fix translations +* [edc677](https://github.com/SamR1/FitTrackee/commit/edc6776c922925746762f7ac76c267feda7cde2f) - Fix notification icons + +### Misc + +* [174240](https://github.com/SamR1/FitTrackee/commit/174240f1d9dc702d4346c85e6add4022af2a88c6) - add tags input to docker image build job + + ## Version 0.8.13 (2024/12/29) ### Translations -* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galicien) +* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galician) Translation status: - Basque: 100% diff --git a/docs/en/_sources/cli.rst.txt b/docs/en/_sources/cli.rst.txt index 274b93b83..9e84ec0c0 100644 --- a/docs/en/_sources/cli.rst.txt +++ b/docs/en/_sources/cli.rst.txt @@ -98,6 +98,7 @@ Remove blacklisted tokens expired for more than provided number of days. """""""""""""""""""""" .. versionadded:: 0.7.15 .. versionchanged:: 0.8.4 User preference for interface language is added. +.. versionchanged:: 0.9.0 Add option for user role. Create a user account. @@ -121,6 +122,8 @@ Create a user account. - User password (if not provided, a random password is generated). * - ``--lang LANGUAGE`` - User preference for interface language (two-letter code, ISO 639-1). If not provided or not supported, it falls back to English ('en'). + * - ``--role [owner|admin|moderator|user]`` + - User role (default: 'user'). @@ -160,7 +163,7 @@ Modify a user account (role, active status, email and password). - Username. * - ``--set-admin BOOLEAN`` - [DEPRECATED] Add/remove admin rights (when adding admin rights, it also activates user account if not active). - * - ``--set-role ROLE`` + * - ``--set-role [owner|admin|moderator|user]`` - Set user role (when setting 'moderator', 'admin' and 'owner' role, it also activates user account if not active). * - ``--activate`` - Activate user account. diff --git a/docs/en/_sources/features.rst.txt b/docs/en/_sources/features.rst.txt index ac43cde5a..d90c8bf2e 100644 --- a/docs/en/_sources/features.rst.txt +++ b/docs/en/_sources/features.rst.txt @@ -225,6 +225,14 @@ Notifications - Users with administration rights can also receive notifications on user creation. - Users can mark notifications as read or unread. +- Notifications can be disabled or enabled the following events in user preferences: + + - follow request and follow + - follow request approval when follow request approval is manual + - like on comment or workout + - comment on workout + - mention on comment + - user registration (if authenticated user has administration rights) Dashboard ========= diff --git a/docs/en/_static/documentation_options.js b/docs/en/_static/documentation_options.js index f9c277e7f..4904a8dea 100644 --- a/docs/en/_static/documentation_options.js +++ b/docs/en/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.9.0b4', + VERSION: '0.9.0b6', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/en/api/auth.html b/docs/en/api/auth.html index 813d484fe..397f76009 100644 --- a/docs/en/api/auth.html +++ b/docs/en/api/auth.html @@ -6,7 +6,7 @@ - Authentication and account - FitTrackee 0.9.0b4 documentation + Authentication and account - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation
diff --git a/docs/en/api/comments.html b/docs/en/api/comments.html index 2fa3e4fe9..ea3ee05b2 100644 --- a/docs/en/api/comments.html +++ b/docs/en/api/comments.html @@ -6,7 +6,7 @@ - Comments - FitTrackee 0.9.0b4 documentation + Comments - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -754,6 +754,76 @@

Comments +
+
+GET /api/comments/(string: comment_short_id)/likes
+

Get users who like comment.

+

Scope: workouts:read

+

Example request:

+
POST /api/comments/WJgTwtqFpnPrHYAK5eX9Pw/likes HTTP/1.1
+Content-Type: application/json
+
+
+

Example response:

+
HTTP/1.1 200 OK
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": [
+        {
+          "created_at": "Sun, 31 Dec 2017 09:00:00 GMT",
+          "followers": 0,
+          "following": 0,
+          "nb_workouts": 1,
+          "picture": false,
+          "role": "user",
+          "suspended_at": null,
+          "username": "Sam"
+        }
+      ]
+    },
+    "status": "success"
+  }
+
+
+
+
Parameters:
+
    +
  • comment_short_id (string) – comment short id

  • +
+
+
Query Parameters:
+
    +
  • page (integer) – page if using pagination (default: 1)

  • +
+
+
Request Headers:
+
    +
  • Authorization – OAuth 2.0 Bearer Token for comment with +private and followers_only visibility

  • +
+
+
Status Codes:
+
    +
  • 200 OKsuccess

  • +
  • 401 Unauthorized

      +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

    • +
    +

  • +
  • 403 Forbidden

      +
    • you do not have permissions

    • +
    • you do not have permissions, your account is suspended

    • +
    +

  • +
  • 404 Not Foundcomment not found

  • +
+
+
+
+
POST /api/comments/(string: comment_short_id)/suspension/appeal
@@ -915,7 +985,7 @@

Comments

- + diff --git a/docs/en/api/configuration.html b/docs/en/api/configuration.html index da0687fb9..f157569b4 100644 --- a/docs/en/api/configuration.html +++ b/docs/en/api/configuration.html @@ -6,7 +6,7 @@ - Configuration - FitTrackee 0.9.0b4 documentation + Configuration - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -315,7 +315,7 @@

Configuration "privacy_policy": null, "privacy_policy_date": null, "stats_workouts_limit": 10000, - "version": "0.9.0b4", + "version": "0.9.0b6", "weather_provider": null }, "status": "success" @@ -361,7 +361,7 @@

Configuration "privacy_policy": null, "privacy_policy_date": null, "stats_workouts_limit": 10000, - "version": "0.9.0b4", + "version": "0.9.0b6", "weather_provider": null }, "status": "success" @@ -503,7 +503,7 @@

Configuration +

diff --git a/docs/en/api/equipment_types.html b/docs/en/api/equipment_types.html index 1757697b1..91cbced14 100644 --- a/docs/en/api/equipment_types.html +++ b/docs/en/api/equipment_types.html @@ -6,7 +6,7 @@ - Equipment Types - FitTrackee 0.9.0b4 documentation + Equipment Types - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -640,7 +640,7 @@

Equipment Types +

diff --git a/docs/en/api/equipments.html b/docs/en/api/equipments.html index da376e67b..195d0455e 100644 --- a/docs/en/api/equipments.html +++ b/docs/en/api/equipments.html @@ -6,7 +6,7 @@ - Equipments - FitTrackee 0.9.0b4 documentation + Equipments - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -872,7 +872,7 @@

Equipments +

diff --git a/docs/en/api/follow_requests.html b/docs/en/api/follow_requests.html index 4975fd874..24e049df9 100644 --- a/docs/en/api/follow_requests.html +++ b/docs/en/api/follow_requests.html @@ -6,7 +6,7 @@ - Follow requests - FitTrackee 0.9.0b4 documentation + Follow requests - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -547,7 +547,7 @@

Follow requests +

diff --git a/docs/en/api/index.html b/docs/en/api/index.html index a3a1b5dc9..f95015b85 100644 --- a/docs/en/api/index.html +++ b/docs/en/api/index.html @@ -6,7 +6,7 @@ - API documentation - FitTrackee 0.9.0b4 documentation + API documentation - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -363,7 +363,7 @@

API documentation +

diff --git a/docs/en/api/notifications.html b/docs/en/api/notifications.html index ddcad786d..edcee7775 100644 --- a/docs/en/api/notifications.html +++ b/docs/en/api/notifications.html @@ -6,7 +6,7 @@ - Notifications - FitTrackee 0.9.0b4 documentation + Notifications - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -681,7 +681,7 @@

Notifications +

diff --git a/docs/en/api/oauth2.html b/docs/en/api/oauth2.html index 94c8db458..65020a2a6 100644 --- a/docs/en/api/oauth2.html +++ b/docs/en/api/oauth2.html @@ -6,7 +6,7 @@ - OAuth2 - FitTrackee 0.9.0b4 documentation + OAuth2 - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -894,7 +894,7 @@

OAuth2

- + diff --git a/docs/en/api/records.html b/docs/en/api/records.html index b6de7bf31..fa27921d2 100644 --- a/docs/en/api/records.html +++ b/docs/en/api/records.html @@ -6,7 +6,7 @@ - Records - FitTrackee 0.9.0b4 documentation + Records - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -462,7 +462,7 @@

Records

- + diff --git a/docs/en/api/reports.html b/docs/en/api/reports.html index f0ab77217..7c94fdbfa 100644 --- a/docs/en/api/reports.html +++ b/docs/en/api/reports.html @@ -6,7 +6,7 @@ - Reports - FitTrackee 0.9.0b4 documentation + Reports - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -1071,7 +1071,7 @@

Reports

- + diff --git a/docs/en/api/sports.html b/docs/en/api/sports.html index f8ad946cf..9b0d19095 100644 --- a/docs/en/api/sports.html +++ b/docs/en/api/sports.html @@ -6,7 +6,7 @@ - Sports - FitTrackee 0.9.0b4 documentation + Sports - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -682,7 +682,7 @@

Sports

- + diff --git a/docs/en/api/stats.html b/docs/en/api/stats.html index 972e490ef..4802045d2 100644 --- a/docs/en/api/stats.html +++ b/docs/en/api/stats.html @@ -6,7 +6,7 @@ - Statistics - FitTrackee 0.9.0b4 documentation + Statistics - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -725,7 +725,7 @@

Statistics +

diff --git a/docs/en/api/timeline.html b/docs/en/api/timeline.html index ca385de42..f5bdb0071 100644 --- a/docs/en/api/timeline.html +++ b/docs/en/api/timeline.html @@ -6,7 +6,7 @@ - Timeline - FitTrackee 0.9.0b4 documentation + Timeline - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -499,7 +499,7 @@

Timeline

- + diff --git a/docs/en/api/users.html b/docs/en/api/users.html index d594a093e..7ac882fa8 100644 --- a/docs/en/api/users.html +++ b/docs/en/api/users.html @@ -6,7 +6,7 @@ - Users - FitTrackee 0.9.0b4 documentation + Users - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -1704,7 +1704,7 @@

Users

- + diff --git a/docs/en/api/workouts.html b/docs/en/api/workouts.html index 1bf2c8b6e..cc4bdfa94 100644 --- a/docs/en/api/workouts.html +++ b/docs/en/api/workouts.html @@ -6,7 +6,7 @@ - Workouts - FitTrackee 0.9.0b4 documentation + Workouts - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -1791,6 +1791,91 @@

Workouts +
+
+GET /api/workouts/(string: workout_short_id)/likes
+

Get users who like the workout.

+

Example request:

+
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/likes HTTP/1.1
+
+
+

Example responses:

+
    +
  • success:

  • +
+
HTTP/1.1 200 OK
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": [
+        {
+          "created_at": "Sun, 31 Dec 2017 09:00:00 GMT",
+          "followers": 0,
+          "following": 0,
+          "nb_workouts": 1,
+          "picture": false,
+          "role": "user",
+          "suspended_at": null,
+          "username": "Sam"
+        }
+      ]
+    },
+    "status": "success"
+  }
+
+
+
    +
  • workout not found:

  • +
+
HTTP/1.1 404 NOT FOUND
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": []
+    },
+    "status": "not found"
+  }
+
+
+
+
Parameters:
+
    +
  • workout_short_id (string) – workout short id

  • +
+
+
Query Parameters:
+
    +
  • page (integer) – page if using pagination (default: 1)

  • +
+
+
Request Headers:
+
    +
  • Authorization – OAuth 2.0 Bearer Token for workout with +private or followers_only visibility

  • +
+
+
Status Codes:
+
    +
  • 200 OKsuccess

  • +
  • 401 Unauthorized

      +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

    • +
    +

  • +
  • 403 Forbidden

      +
    • you do not have permissions

    • +
    • you do not have permissions, your account is suspended

    • +
    +

  • +
  • 404 Not Foundworkout not found

  • +
+
+
+
+
POST /api/workouts/(string: workout_short_id)/suspension/appeal
@@ -1901,7 +1986,7 @@

Workouts

- + diff --git a/docs/en/changelog.html b/docs/en/changelog.html index f7903b169..dfaeba77e 100644 --- a/docs/en/changelog.html +++ b/docs/en/changelog.html @@ -6,7 +6,7 @@ - Change log - FitTrackee 0.9.0b4 documentation + Change log - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -288,12 +288,55 @@

Change log

+
+

Version 0.9.0b6 (2025/01/05)

+

This is a pre-release. Don’t install this version in production, you may not be able to safely downgrade to a stable version.
If you find bugs, please report them.

+
+

Features and enhancements

+
    +
  • PR#677 - Add notification preferences

  • +
  • PR#678 - Display users who like comment/workout

  • +
+
+
+

Bugs Fixed

+
    +
  • d743abf - display missing errors in user profile

  • +
+

Note: This release contains database migration (see upgrade instructions in documentation)

+
+
+
+

Version 0.9.0b5 (2024/12/30)

+

This is a pre-release. Don’t install this version in production, you may not be able to safely downgrade to a stable version.
If you find bugs, please report them.

+
+

Features and enhancements

+
    +
  • PR#675 - CLI - create user with provided role

  • +
+
+
+

Bugs Fixed

+
    +
  • PR#671 - Fix sport icon when unauthenticated user displays user profile

  • +
  • PR#674 - Fix display of privacy policy message with privacy extension

  • +
  • 2e9f9d - fix translations

  • +
  • edc677 - Fix notification icons

  • +
+
+
+

Misc

+
    +
  • 174240 - add tags input to docker image build job

  • +
+
+

Version 0.8.13 (2024/12/29)

Translations

    -
  • PR#667 - Translations update (Galicien)

  • +
  • PR#667 - Translations update (Galician)

Translation status:

- + diff --git a/docs/en/cli.html b/docs/en/cli.html index 270927219..87992b1f7 100644 --- a/docs/en/cli.html +++ b/docs/en/cli.html @@ -6,7 +6,7 @@ - Command line interface - FitTrackee 0.9.0b4 documentation + Command line interface - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
FitTrackee 0.9.0b4 +
FitTrackee 0.9.0b6 documentation
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -408,6 +408,9 @@

ftcli

Changed in version 0.8.4: User preference for interface language is added.

+
+

Changed in version 0.9.0: Add option for user role.

+

Create a user account.

Note

@@ -440,6 +443,9 @@

ftcli

--lang LANGUAGE

User preference for interface language (two-letter code, ISO 639-1). If not provided or not supported, it falls back to English (‘en’).

+

--role [owner|admin|moderator|user]

+

User role (default: ‘user’).

+

@@ -497,7 +503,7 @@

ftcli

--set-admin BOOLEAN

[DEPRECATED] Add/remove admin rights (when adding admin rights, it also activates user account if not active).

-

--set-role ROLE

+

--set-role [owner|admin|moderator|user]

Set user role (when setting ‘moderator’, ‘admin’ and ‘owner’ role, it also activates user account if not active).

--activate

@@ -604,7 +610,7 @@

ftcli - + diff --git a/docs/en/features.html b/docs/en/features.html index 31931e701..c8c77c512 100644 --- a/docs/en/features.html +++ b/docs/en/features.html @@ -6,7 +6,7 @@ - Features - FitTrackee 0.9.0b4 documentation + Features - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -604,6 +604,16 @@

Notifications

- + diff --git a/docs/en/genindex.html b/docs/en/genindex.html index 96086b5dd..44ddf8ef3 100644 --- a/docs/en/genindex.html +++ b/docs/en/genindex.html @@ -4,7 +4,7 @@ - Index - FitTrackee 0.9.0b4 documentation + Index - FitTrackee 0.9.0b6 documentation @@ -167,7 +167,7 @@
-
@@ -195,7 +195,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -394,7 +394,7 @@

E

- + diff --git a/docs/en/http-routingtable.html b/docs/en/http-routingtable.html index 0608fbabc..e355c6582 100644 --- a/docs/en/http-routingtable.html +++ b/docs/en/http-routingtable.html @@ -4,7 +4,7 @@ - HTTP Routing Table - FitTrackee 0.9.0b4 documentation + HTTP Routing Table - FitTrackee 0.9.0b6 documentation @@ -167,7 +167,7 @@
-
@@ -195,7 +195,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -332,6 +332,12 @@

HTTP Routing Table

GET /api/comments/(string:comment_short_id) + + + + GET /api/comments/(string:comment_short_id)/likes + + @@ -560,6 +566,12 @@

HTTP Routing Table

GET /api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id) + + + + GET /api/workouts/(string:workout_short_id)/likes + + @@ -650,6 +662,12 @@

HTTP Routing Table

POST /api/auth/profile/edit + + + + POST /api/auth/profile/edit/notifications + + @@ -963,7 +981,7 @@

HTTP Routing Table

- + diff --git a/docs/en/index.html b/docs/en/index.html index 34b4a144c..c664fb851 100644 --- a/docs/en/index.html +++ b/docs/en/index.html @@ -6,7 +6,7 @@ - FitTrackee 0.9.0b4 documentation + FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -370,7 +370,7 @@

Table of contents +

diff --git a/docs/en/installation.html b/docs/en/installation.html index 80e9f38a7..b475de958 100644 --- a/docs/en/installation.html +++ b/docs/en/installation.html @@ -6,7 +6,7 @@ - Installation - FitTrackee 0.9.0b4 documentation + Installation - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -1584,7 +1584,7 @@

NixOS

- + diff --git a/docs/en/oauth.html b/docs/en/oauth.html index d96903c1e..c27055078 100644 --- a/docs/en/oauth.html +++ b/docs/en/oauth.html @@ -6,7 +6,7 @@ - OAuth 2.0 - FitTrackee 0.9.0b4 documentation + OAuth 2.0 - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -481,7 +481,7 @@

Resources +

diff --git a/docs/en/objects.inv b/docs/en/objects.inv index ba55906d6..fd6a3f93f 100644 Binary files a/docs/en/objects.inv and b/docs/en/objects.inv differ diff --git a/docs/en/search.html b/docs/en/search.html index fb7a63bbb..d3df9cb39 100644 --- a/docs/en/search.html +++ b/docs/en/search.html @@ -7,7 +7,7 @@ -Search - FitTrackee 0.9.0b4 +<title>Search - FitTrackee 0.9.0b6 documentation @@ -170,7 +170,7 @@
-
@@ -198,7 +198,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -328,7 +328,7 @@
- + diff --git a/docs/en/searchindex.js b/docs/en/searchindex.js index b4d528bb7..34d4cb058 100644 --- a/docs/en/searchindex.js +++ b/docs/en/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"API documentation": [[6, null]], "API rate limits": [[20, "api-rate-limits"]], "About": [[18, "about"]], "Account & preferences": [[18, "account-preferences"]], "Administration": [[18, "administration"], [18, "id8"]], "Administrator": [[23, null]], "Application": [[18, "application"]], "Authentication and account": [[0, null]], "Bugs Fixed": [[16, "bugs-fixed"], [16, "id3"], [16, "id5"], [16, "id7"], [16, "id15"], [16, "id18"], [16, "id21"], [16, "id26"], [16, "id32"], [16, "id37"], [16, "id41"], [16, "id44"], [16, "id46"], [16, "id50"], [16, "id54"], [16, "id58"], [16, "id61"], [16, "id64"], [16, "id67"], [16, "id68"], [16, "id71"], [16, "id73"], [16, "id75"], [16, "id78"], [16, "id81"], [16, "id89"], [16, "id92"], [16, "id95"], [16, "id98"], [16, "id110"], [16, "id115"], [16, "id117"], [16, "id121"], [16, "id124"], [16, "id127"], [16, "id129"], [16, "id132"], [16, "id135"], [16, "id137"], [16, "id140"], [16, "id143"], [16, "id146"], [16, "id151"], [16, "id153"], [16, "id155"], [16, "id157"], [16, "id160"], [16, "id162"], [16, "id168"], [16, "id171"], [16, "id173"], [16, "id175"], [16, "id182"], [16, "id187"], [16, "id189"], [16, "id191"], [16, "id194"], [16, "id196"], [16, "id198"], [16, "id202"], [16, "id212"], [16, "id215"], [16, "id217"], [16, "id220"], [16, "id227"]], "Change log": [[16, null]], "Command line interface": [[17, null]], "Comments": [[1, null], [18, "comments"]], "Configuration": [[2, null], [18, "configuration"]], "Dashboard": [[18, "dashboard"], [18, "id4"]], "Database": [[17, "database"]], "Deployment": [[20, "deployment"]], "Dev environment": [[20, "dev-environment"], [20, "id5"]], "Development": [[20, "development"]], "Docker": [[20, "docker"], [20, "id6"]], "Documentation": [[16, "documentation"], [16, "id85"], [16, "id119"]], "Emails": [[20, "emails"]], "Endpoints:": [[6, null]], "Environment variables": [[20, "environment-variables"]], "Equipment Types": [[3, null], [18, "equipment-types"]], "Equipments": [[4, null], [18, "equipments"], [18, "id6"]], "Failed to upload or download files": [[23, "failed-to-upload-or-download-files"]], "Features": [[16, "features"], [16, "id139"], [16, "id149"], [16, "id159"], [18, null]], "Features and enhancements": [[16, "features-and-enhancements"], [16, "id2"], [16, "id6"], [16, "id11"], [16, "id14"], [16, "id20"], [16, "id25"], [16, "id29"], [16, "id36"], [16, "id40"], [16, "id49"], [16, "id53"], [16, "id57"], [16, "id60"], [16, "id77"], [16, "id80"], [16, "id88"], [16, "id91"], [16, "id97"], [16, "id102"], [16, "id104"], [16, "id106"], [16, "id109"], [16, "id120"], [16, "id126"]], "FitTrackee": [[19, null]], "FitTrackee fails to start": [[23, "fittrackee-fails-to-start"]], "Flow": [[21, "flow"]], "Follow requests": [[5, null]], "From PyPI": [[20, "from-pypi"], [20, "id3"]], "From sources": [[20, "from-sources"], [20, "id4"]], "Import tools": [[22, "import-tools"]], "Installation": [[20, null], [20, "id2"]], "Installation scripts": [[22, "installation-scripts"]], "Interactions": [[18, "interactions"]], "Issues Closed": [[16, "issues-closed"], [16, "id131"], [16, "id134"], [16, "id138"], [16, "id142"], [16, "id145"], [16, "id148"], [16, "id150"], [16, "id154"], [16, "id156"], [16, "id158"], [16, "id163"], [16, "id167"], [16, "id170"], [16, "id172"], [16, "id174"], [16, "id176"], [16, "id178"], [16, "id180"], [16, "id185"], [16, "id188"], [16, "id190"], [16, "id193"], [16, "id195"], [16, "id197"], [16, "id200"], [16, "id204"], [16, "id206"], [16, "id208"], [16, "id211"], [16, "id213"], [16, "id216"], [16, "id218"], [16, "id222"], [16, "id225"], [16, "id228"]], "Likes": [[18, "likes"]], "Main dependencies": [[20, "main-dependencies"]], "Map images are not displayed but map is shown in Workout detail": [[23, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Map tile server": [[20, "map-tile-server"]], "Misc": [[16, "misc"], [16, "id4"], [16, "id8"], [16, "id10"], [16, "id13"], [16, "id17"], [16, "id24"], [16, "id28"], [16, "id31"], [16, "id35"], [16, "id39"], [16, "id43"], [16, "id48"], [16, "id52"], [16, "id56"], [16, "id63"], [16, "id66"], [16, "id70"], [16, "id72"], [16, "id76"], [16, "id83"], [16, "id86"], [16, "id94"], [16, "id101"], [16, "id112"], [16, "id114"], [16, "id130"], [16, "id144"], [16, "id147"], [16, "id164"], [16, "id166"], [16, "id183"], [16, "id192"], [16, "id199"], [16, "id203"], [16, "id210"], [16, "id221"], [16, "id224"]], "Moderation": [[18, "moderation"]], "New Features": [[16, "new-features"], [16, "id177"], [16, "id179"], [16, "id181"], [16, "id186"], [16, "id201"], [16, "id205"], [16, "id207"], [16, "id209"], [16, "id214"], [16, "id219"], [16, "id223"], [16, "id226"], [16, "id229"]], "NixOS": [[20, "nixos"]], "Notifications": [[7, null], [18, "notifications"], [18, "id7"]], "OAuth 2.0": [[21, null]], "OAuth Apps": [[18, "oauth-apps"]], "OAuth2": [[8, null], [17, "oauth2"]], "Prerequisites": [[20, "prerequisites"]], "Privacy policy": [[18, "privacy-policy"]], "Prod environment": [[20, "prod-environment"]], "Production": [[20, "production"]], "Production environment": [[20, "production-environment"]], "Pull Requests": [[16, "pull-requests"], [16, "id133"], [16, "id136"], [16, "id152"], [16, "id161"], [16, "id165"], [16, "id169"], [16, "id184"]], "Records": [[9, null]], "Reports": [[10, null]], "Resources": [[21, "resources"]], "Scopes": [[21, "scopes"]], "Screenshots": [[18, "screenshots"]], "Security": [[16, "security"]], "Sports": [[11, null], [18, "sports"], [18, "id3"]], "Statistics": [[12, null], [18, "statistics"], [18, "id5"]], "Table of contents": [[19, "table-of-contents"]], "Third-party tools": [[22, null]], "Timeline": [[13, null]], "Translations": [[16, "translations"], [16, "id1"], [16, "id9"], [16, "id12"], [16, "id16"], [16, "id19"], [16, "id22"], [16, "id23"], [16, "id27"], [16, "id30"], [16, "id33"], [16, "id34"], [16, "id38"], [16, "id42"], [16, "id45"], [16, "id47"], [16, "id51"], [16, "id55"], [16, "id59"], [16, "id62"], [16, "id65"], [16, "id69"], [16, "id74"], [16, "id79"], [16, "id82"], [16, "id84"], [16, "id87"], [16, "id90"], [16, "id93"], [16, "id96"], [16, "id99"], [16, "id100"], [16, "id103"], [16, "id105"], [16, "id107"], [16, "id108"], [16, "id111"], [16, "id113"], [16, "id116"], [16, "id118"], [16, "id122"], [16, "id123"], [16, "id125"], [16, "id128"], [16, "id141"], [18, "translations"]], "Troubleshooting": [[24, null]], "Upgrade": [[20, "upgrade"]], "Users": [[14, null], [17, "users"], [18, "users"], [18, "id2"]], "Users directory": [[18, "users-directory"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[16, "version-0-1-0-first-release-2018-07-04"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[16, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.2.0 - Statistics (2019/07/07)": [[16, "version-0-2-0-statistics-2019-07-07"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[16, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[16, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[16, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[16, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[16, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.3.0 - Administration (2020/07/15)": [[16, "version-0-3-0-administration-2020-07-15"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[16, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.4.1 (2020/12/31)": [[16, "version-0-4-1-2020-12-31"]], "Version 0.4.2 (2021/01/03)": [[16, "version-0-4-2-2021-01-03"]], "Version 0.4.3 (2021/01/10)": [[16, "version-0-4-3-2021-01-10"]], "Version 0.4.4 (2021/01/31)": [[16, "version-0-4-4-2021-01-31"]], "Version 0.4.5 (2021/02/17)": [[16, "version-0-4-5-2021-02-17"]], "Version 0.4.6 (2021/02/21)": [[16, "version-0-4-6-2021-02-21"]], "Version 0.4.7 (2021/04/07)": [[16, "version-0-4-7-2021-04-07"]], "Version 0.4.8 (2021/07/03)": [[16, "version-0-4-8-2021-07-03"]], "Version 0.4.9 (2021/07/16)": [[16, "version-0-4-9-2021-07-16"]], "Version 0.5.0 (2021/11/14)": [[16, "version-0-5-0-2021-11-14"]], "Version 0.5.1 (2021/11/30)": [[16, "version-0-5-1-2021-11-30"]], "Version 0.5.2 (2021/12/19)": [[16, "version-0-5-2-2021-12-19"]], "Version 0.5.3 (2022/01/01)": [[16, "version-0-5-3-2022-01-01"]], "Version 0.5.4 (2022/01/01)": [[16, "version-0-5-4-2022-01-01"]], "Version 0.5.5 (2022/01/19)": [[16, "version-0-5-5-2022-01-19"]], "Version 0.5.6 (2022/02/05)": [[16, "version-0-5-6-2022-02-05"]], "Version 0.5.7 (2022/02/13)": [[16, "version-0-5-7-2022-02-13"]], "Version 0.6.0 (2022/03/27)": [[16, "version-0-6-0-2022-03-27"]], "Version 0.6.1 (2022/03/27)": [[16, "version-0-6-1-2022-03-27"]], "Version 0.6.10 (2022/07/13)": [[16, "version-0-6-10-2022-07-13"]], "Version 0.6.11 (2022/07/27)": [[16, "version-0-6-11-2022-07-27"]], "Version 0.6.12 (2022/09/14)": [[16, "version-0-6-12-2022-09-14"]], "Version 0.6.2 (2022/04/03)": [[16, "version-0-6-2-2022-04-03"]], "Version 0.6.3 (2022/04/09)": [[16, "version-0-6-3-2022-04-09"]], "Version 0.6.4 (2022/04/23)": [[16, "version-0-6-4-2022-04-23"]], "Version 0.6.5 (2022/04/24)": [[16, "version-0-6-5-2022-04-24"]], "Version 0.6.6 (2022/05/29)": [[16, "version-0-6-6-2022-05-29"]], "Version 0.6.7 (2022/06/11)": [[16, "version-0-6-7-2022-06-11"]], "Version 0.6.8 (2022/06/22)": [[16, "version-0-6-8-2022-06-22"]], "Version 0.6.9 (2022/07/03)": [[16, "version-0-6-9-2022-07-03"]], "Version 0.7.0 (2022/09/19)": [[16, "version-0-7-0-2022-09-19"]], "Version 0.7.1 (2022/09/21)": [[16, "version-0-7-1-2022-09-21"]], "Version 0.7.10 (2022/12/21)": [[16, "version-0-7-10-2022-12-21"]], "Version 0.7.11 (2022/12/31)": [[16, "version-0-7-11-2022-12-31"]], "Version 0.7.12 (2023/02/16)": [[16, "version-0-7-12-2023-02-16"]], "Version 0.7.13 (2023/03/05)": [[16, "version-0-7-13-2023-03-05"]], "Version 0.7.14 (2023/03/08)": [[16, "version-0-7-14-2023-03-08"]], "Version 0.7.15 (2023/04/12)": [[16, "version-0-7-15-2023-04-12"]], "Version 0.7.16 (2023/05/29)": [[16, "version-0-7-16-2023-05-29"]], "Version 0.7.17 (2023/06/03)": [[16, "version-0-7-17-2023-06-03"]], "Version 0.7.18 (2023/06/25)": [[16, "version-0-7-18-2023-06-25"]], "Version 0.7.19 (2023/07/15)": [[16, "version-0-7-19-2023-07-15"]], "Version 0.7.2 (2022/09/21)": [[16, "version-0-7-2-2022-09-21"]], "Version 0.7.20 (2023/07/22)": [[16, "version-0-7-20-2023-07-22"]], "Version 0.7.21 (2023/07/30)": [[16, "version-0-7-21-2023-07-30"]], "Version 0.7.22 (2023/08/23)": [[16, "version-0-7-22-2023-08-23"]], "Version 0.7.23 (2023/09/14)": [[16, "version-0-7-23-2023-09-14"]], "Version 0.7.24 (2023/10/04)": [[16, "version-0-7-24-2023-10-04"]], "Version 0.7.25 (2023/10/08)": [[16, "version-0-7-25-2023-10-08"]], "Version 0.7.26 (2023/11/19)": [[16, "version-0-7-26-2023-11-19"]], "Version 0.7.27 (2023/12/20)": [[16, "version-0-7-27-2023-12-20"]], "Version 0.7.28 (2023/12/23)": [[16, "version-0-7-28-2023-12-23"]], "Version 0.7.29 (2024/01/06)": [[16, "version-0-7-29-2024-01-06"]], "Version 0.7.3 (2022/11/01)": [[16, "version-0-7-3-2022-11-01"]], "Version 0.7.30 (2024/02/04)": [[16, "version-0-7-30-2024-02-04"]], "Version 0.7.31 (2024/02/10)": [[16, "version-0-7-31-2024-02-10"]], "Version 0.7.32 (2024/03/10)": [[16, "version-0-7-32-2024-03-10"]], "Version 0.7.4 (2022/11/05)": [[16, "version-0-7-4-2022-11-05"]], "Version 0.7.5 (2022/11/09)": [[16, "version-0-7-5-2022-11-09"]], "Version 0.7.6 (2022/11/09)": [[16, "version-0-7-6-2022-11-09"]], "Version 0.7.7 (2022/11/27)": [[16, "version-0-7-7-2022-11-27"]], "Version 0.7.8 (2022/11/30)": [[16, "version-0-7-8-2022-11-30"]], "Version 0.7.9 (2022/12/11)": [[16, "version-0-7-9-2022-12-11"]], "Version 0.8.0 (2024/04/21)": [[16, "version-0-8-0-2024-04-21"]], "Version 0.8.1 (2024/05/01)": [[16, "version-0-8-1-2024-05-01"]], "Version 0.8.10 (2024/10/09)": [[16, "version-0-8-10-2024-10-09"]], "Version 0.8.11 (2024/10/30)": [[16, "version-0-8-11-2024-10-30"]], "Version 0.8.12 (2024/11/17)": [[16, "version-0-8-12-2024-11-17"]], "Version 0.8.13 (2024/12/29)": [[16, "version-0-8-13-2024-12-29"]], "Version 0.8.2 (2024/05/08)": [[16, "version-0-8-2-2024-05-08"]], "Version 0.8.3 (2024/05/09)": [[16, "version-0-8-3-2024-05-09"]], "Version 0.8.4 (2024/05/22)": [[16, "version-0-8-4-2024-05-22"]], "Version 0.8.5 (2024/06/29)": [[16, "version-0-8-5-2024-06-29"]], "Version 0.8.6 (2024/08/03)": [[16, "version-0-8-6-2024-08-03"]], "Version 0.8.7 (2024/08/25)": [[16, "version-0-8-7-2024-08-25"]], "Version 0.8.8 (2024/09/01)": [[16, "version-0-8-8-2024-09-01"]], "Version 0.8.9 (2024/09/21)": [[16, "version-0-8-9-2024-09-21"]], "Version 0.9.0b1 (2024/12/14)": [[16, "version-0-9-0b1-2024-12-14"]], "Version 0.9.0b2 (2024/12/14)": [[16, "version-0-9-0b2-2024-12-14"]], "Version 0.9.0b3 (2024/12/18)": [[16, "version-0-9-0b3-2024-12-18"]], "Version 0.9.0b4 (2024/12/23)": [[16, "version-0-9-0b4-2024-12-23"]], "Weather data": [[20, "weather-data"]], "Workout detail": [[18, "workout-detail"]], "Workouts": [[15, null], [18, "workouts"], [18, "id1"]], "Workouts list": [[18, "workouts-list"]], "Yunohost": [[20, "yunohost"]], "ftcli db drop": [[17, "ftcli-db-drop"]], "ftcli db upgrade": [[17, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[17, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[17, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[17, "ftcli-users-clean-tokens"]], "ftcli users create": [[17, "ftcli-users-create"]], "ftcli users export_archives": [[17, "ftcli-users-export-archives"]], "ftcli users update": [[17, "ftcli-users-update"]]}, "docnames": ["api/auth", "api/comments", "api/configuration", "api/equipment_types", "api/equipments", "api/follow_requests", "api/index", "api/notifications", "api/oauth2", "api/records", "api/reports", "api/sports", "api/stats", "api/timeline", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/auth.rst", "api/comments.rst", "api/configuration.rst", "api/equipment_types.rst", "api/equipments.rst", "api/follow_requests.rst", "api/index.rst", "api/notifications.rst", "api/oauth2.rst", "api/records.rst", "api/reports.rst", "api/sports.rst", "api/stats.rst", "api/timeline.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "indexentries": {"api_rate_limits": [[20, "envvar-API_RATE_LIMITS", false]], "app_log": [[20, "envvar-APP_LOG", false]], "app_port": [[20, "envvar-APP_PORT", false]], "app_secret_key": [[20, "envvar-APP_SECRET_KEY", false]], "app_settings": [[20, "envvar-APP_SETTINGS", false]], "app_workers": [[20, "envvar-APP_WORKERS", false]], "database_dir": [[20, "envvar-DATABASE_DIR", false]], "database_disable_pooling": [[20, "envvar-DATABASE_DISABLE_POOLING", false]], "database_url": [[20, "envvar-DATABASE_URL", false]], "default_staticmap": [[20, "envvar-DEFAULT_STATICMAP", false]], "email_url": [[20, "envvar-EMAIL_URL", false]], "environment variable": [[20, "envvar-API_RATE_LIMITS", false], [20, "envvar-APP_LOG", false], [20, "envvar-APP_PORT", false], [20, "envvar-APP_SECRET_KEY", false], [20, "envvar-APP_SETTINGS", false], [20, "envvar-APP_WORKERS", false], [20, "envvar-DATABASE_DIR", false], [20, "envvar-DATABASE_DISABLE_POOLING", false], [20, "envvar-DATABASE_URL", false], [20, "envvar-DEFAULT_STATICMAP", false], [20, "envvar-EMAIL_URL", false], [20, "envvar-FLASK_APP", false], [20, "envvar-HOST", false], [20, "envvar-LOG_DIR", false], [20, "envvar-MAP_ATTRIBUTION", false], [20, "envvar-PORT", false], [20, "envvar-POSTGRES_DB", false], [20, "envvar-POSTGRES_PASSWORD", false], [20, "envvar-POSTGRES_USER", false], [20, "envvar-REDIS_DIR", false], [20, "envvar-REDIS_URL", false], [20, "envvar-SENDER_EMAIL", false], [20, "envvar-STATICMAP_SUBDOMAINS", false], [20, "envvar-TILE_SERVER_URL", false], [20, "envvar-UI_URL", false], [20, "envvar-UPLOAD_DIR", false], [20, "envvar-UPLOAD_FOLDER", false], [20, "envvar-VITE_APP_API_URL", false], [20, "envvar-WEATHER_API_KEY", false], [20, "envvar-WEATHER_API_PROVIDER", false], [20, "envvar-WORKERS_PROCESSES", false]], "flask_app": [[20, "envvar-FLASK_APP", false]], "host": [[20, "envvar-HOST", false]], "log_dir": [[20, "envvar-LOG_DIR", false]], "map_attribution": [[20, "envvar-MAP_ATTRIBUTION", false]], "port": [[20, "envvar-PORT", false]], "postgres_db": [[20, "envvar-POSTGRES_DB", false]], "postgres_password": [[20, "envvar-POSTGRES_PASSWORD", false]], "postgres_user": [[20, "envvar-POSTGRES_USER", false]], "redis_dir": [[20, "envvar-REDIS_DIR", false]], "redis_url": [[20, "envvar-REDIS_URL", false]], "sender_email": [[20, "envvar-SENDER_EMAIL", false]], "staticmap_subdomains": [[20, "envvar-STATICMAP_SUBDOMAINS", false]], "tile_server_url": [[20, "envvar-TILE_SERVER_URL", false]], "ui_url": [[20, "envvar-UI_URL", false]], "upload_dir": [[20, "envvar-UPLOAD_DIR", false]], "upload_folder": [[20, "envvar-UPLOAD_FOLDER", false]], "vite_app_api_url": [[20, "envvar-VITE_APP_API_URL", false]], "weather_api_key": [[20, "envvar-WEATHER_API_KEY", false]], "weather_api_provider \ud83c\udd95": [[20, "envvar-WEATHER_API_PROVIDER", false]], "workers_processes": [[20, "envvar-WORKERS_PROCESSES", false]]}, "objects": {"": [[10, 0, 1, "patch--api-appeals-(string-appeal_id)", "/api/appeals/(string:appeal_id)"], [0, 1, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 2, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 2, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 1, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 1, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 1, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 2, 1, "get--api-auth-account-sanctions-(string-action_short_id)", "/api/auth/account/sanctions/(string:action_short_id)"], [0, 1, 1, "post--api-auth-account-sanctions-(string-action_short_id)-appeal", "/api/auth/account/sanctions/(string:action_short_id)/appeal"], [0, 2, 1, "get--api-auth-account-suspension", "/api/auth/account/suspension"], [0, 1, 1, "post--api-auth-account-suspension-appeal", "/api/auth/account/suspension/appeal"], [0, 2, 1, "get--api-auth-blocked-users", "/api/auth/blocked-users"], [0, 1, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 1, 1, "post--api-auth-login", "/api/auth/login"], [0, 1, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 1, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 1, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 3, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 1, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 0, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 1, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 1, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 3, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 1, 1, "post--api-auth-register", "/api/auth/register"], [1, 3, 1, "delete--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 2, 1, "get--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 0, 1, "patch--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like", "/api/comments/(string:comment_short_id)/like"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like-undo", "/api/comments/(string:comment_short_id)/like/undo"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-suspension-appeal", "/api/comments/(string:comment_short_id)/suspension/appeal"], [2, 2, 1, "get--api-config", "/api/config"], [2, 0, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-equipment-types", "/api/equipment-types"], [3, 2, 1, "get--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [3, 0, 1, "patch--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [4, 2, 1, "get--api-equipments", "/api/equipments"], [4, 1, 1, "post--api-equipments", "/api/equipments"], [4, 3, 1, "delete--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 2, 1, "get--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 0, 1, "patch--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 1, 1, "post--api-equipments-(string-equipment_short_id)-refresh", "/api/equipments/(string:equipment_short_id)/refresh"], [5, 2, 1, "get--api-follow-requests", "/api/follow-requests"], [5, 1, 1, "post--api-follow-requests-(user_name)-accept", "/api/follow-requests/(user_name)/accept"], [5, 1, 1, "post--api-follow-requests-(user_name)-reject", "/api/follow-requests/(user_name)/reject"], [7, 2, 1, "get--api-notifications", "/api/notifications"], [7, 0, 1, "patch--api-notifications-(string-notification_id)", "/api/notifications/(string:notification_id)"], [7, 1, 1, "post--api-notifications-mark-all-as-read", "/api/notifications/mark-all-as-read"], [7, 2, 1, "get--api-notifications-types", "/api/notifications/types"], [7, 2, 1, "get--api-notifications-unread", "/api/notifications/unread"], [8, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [8, 1, 1, "post--api-oauth-apps", "/api/oauth/apps"], [8, 3, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [8, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [8, 1, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [8, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [8, 1, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [8, 1, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [8, 1, 1, "post--api-oauth-token", "/api/oauth/token"], [2, 2, 1, "get--api-ping", "/api/ping"], [9, 2, 1, "get--api-records", "/api/records"], [10, 2, 1, "get--api-reports", "/api/reports"], [10, 1, 1, "post--api-reports", "/api/reports"], [10, 2, 1, "get--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 0, 1, "patch--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 1, 1, "post--api-reports-(int-report_id)-actions", "/api/reports/(int:report_id)/actions"], [10, 2, 1, "get--api-reports-unresolved", "/api/reports/unresolved"], [11, 2, 1, "get--api-sports", "/api/sports"], [11, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [11, 0, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [12, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [12, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [12, 2, 1, "get--api-stats-all", "/api/stats/all"], [13, 2, 1, "get--api-timeline", "/api/timeline"], [14, 2, 1, "get--api-users", "/api/users"], [14, 3, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [14, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [14, 0, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [14, 1, 1, "post--api-users-(user_name)-block", "/api/users/(user_name)/block"], [14, 1, 1, "post--api-users-(user_name)-follow", "/api/users/(user_name)/follow"], [14, 2, 1, "get--api-users-(user_name)-followers", "/api/users/(user_name)/followers"], [14, 2, 1, "get--api-users-(user_name)-following", "/api/users/(user_name)/following"], [14, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [14, 2, 1, "get--api-users-(user_name)-sanctions", "/api/users/(user_name)/sanctions"], [14, 1, 1, "post--api-users-(user_name)-unblock", "/api/users/(user_name)/unblock"], [14, 1, 1, "post--api-users-(user_name)-unfollow", "/api/users/(user_name)/unfollow"], [14, 2, 1, "get--api-users-(user_name)-workouts", "/api/users/(user_name)/workouts"], [15, 2, 1, "get--api-workouts", "/api/workouts"], [15, 1, 1, "post--api-workouts", "/api/workouts"], [15, 3, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 0, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [1, 2, 1, "get--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [1, 1, 1, "post--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like", "/api/workouts/(string:workout_short_id)/like"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like-undo", "/api/workouts/(string:workout_short_id)/like/undo"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-suspension-appeal", "/api/workouts/(string:workout_short_id)/suspension/appeal"], [15, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [15, 1, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [20, 4, 1, "-", "API_RATE_LIMITS"], [20, 4, 1, "-", "APP_LOG"], [20, 4, 1, "-", "APP_PORT"], [20, 4, 1, "-", "APP_SECRET_KEY"], [20, 4, 1, "-", "APP_SETTINGS"], [20, 4, 1, "-", "APP_WORKERS"], [20, 4, 1, "-", "DATABASE_DIR"], [20, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [20, 4, 1, "-", "DATABASE_URL"], [20, 4, 1, "-", "DEFAULT_STATICMAP"], [20, 4, 1, "-", "EMAIL_URL"], [20, 4, 1, "-", "FLASK_APP"], [20, 4, 1, "-", "HOST"], [20, 4, 1, "-", "LOG_DIR"], [20, 4, 1, "-", "MAP_ATTRIBUTION"], [20, 4, 1, "-", "PORT"], [20, 4, 1, "-", "POSTGRES_DB"], [20, 4, 1, "-", "POSTGRES_PASSWORD"], [20, 4, 1, "-", "POSTGRES_USER"], [20, 4, 1, "-", "REDIS_DIR"], [20, 4, 1, "-", "REDIS_URL"], [20, 4, 1, "-", "SENDER_EMAIL"], [20, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [20, 4, 1, "-", "TILE_SERVER_URL"], [20, 4, 1, "-", "UI_URL"], [20, 4, 1, "-", "UPLOAD_DIR"], [20, 4, 1, "-", "UPLOAD_FOLDER"], [20, 4, 1, "-", "VITE_APP_API_URL"], [20, 4, 1, "-", "WEATHER_API_KEY"], [20, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [20, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[15, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objnames": {"0": ["http", "patch", "HTTP patch"], "1": ["http", "post", "HTTP post"], "2": ["http", "get", "HTTP get"], "3": ["http", "delete", "HTTP delete"], "4": ["std", "envvar", "environment variable"]}, "objtypes": {"0": "http:patch", "1": "http:post", "2": "http:get", "3": "http:delete", "4": "std:envvar"}, "terms": {"": [4, 15, 16, 18, 20], "0": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "00": [0, 4, 5, 9, 13, 14, 15], "000": 18, "000000": 0, "01": [0, 1, 9, 10, 12, 13, 14, 15], "02": [5, 14, 15], "03": [14, 15], "04": [0, 7, 10, 13, 14, 15], "06": [4, 7, 8, 12, 14], "0667062": 8, "06ba975": 16, "07": [0, 7, 9, 13, 14, 15], "075aeb9": 16, "08": [0, 4, 7, 9, 13, 14, 15], "09": [0, 7, 10, 14, 15], "0b4": 2, "0mb": [0, 15], "1": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "10": [0, 1, 2, 4, 5, 7, 9, 13, 14, 15, 18, 20], "100": [15, 16, 18], "1000": 12, "10000": [2, 15], "101": [12, 16], "104": [15, 16], "1048576": 2, "10485760": 2, "106": 16, "109": 16, "10mb": 18, "11": [0, 9, 14, 15, 18, 20], "112": 16, "113": 16, "115": 16, "116": 16, "12": [0, 9, 10, 14, 15, 20, 22], "121": 16, "123": 16, "1232004": 15, "12341": 12, "1234538": 15, "1239": 7, "125": 16, "126": 16, "1267": 12, "127": [16, 20], "129": 16, "12fb835fa26c": 7, "13": [0, 1, 9, 13, 14, 15, 17, 18, 20], "131": 16, "134": 16, "135": 16, "1375986": 16, "138": 16, "14": [0, 1, 8, 13, 14, 15], "140": 16, "145": 16, "146": 16, "149": 16, "15": [12, 15, 17, 18, 20], "150": 12, "151": 16, "152": 16, "155": 16, "156": [12, 16], "1563529507772": 15, "158": 15, "16": [1, 12, 14, 15, 18], "160": 16, "161": 16, "162": 16, "1658660147": 8, "167": 16, "169": 16, "17": [0, 5, 10, 13, 14, 15], "171": 16, "173": 16, "175": 16, "177": 16, "178": [12, 16], "18": [0, 9, 10, 14, 15, 18, 20], "180": 16, "189071": 16, "19": [15, 18], "190": 16, "191": 16, "192": 16, "193": 16, "195": 16, "196": 16, "197": 16, "1m": 20, "1mb": [18, 20], "2": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "20": [14, 15, 18], "200": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "201": [0, 1, 4, 10, 15, 16], "2016": 15, "2017": [12, 14, 15], "2018": [12, 13, 14, 15], "2019": [0, 9, 12, 13, 14, 15], "2021": [5, 14], "2022": 8, "2023": [0, 4, 14, 20], "2024": [0, 1, 7, 10, 14, 15], "203": 12, "204": [0, 1, 4, 8, 14, 15], "208": [15, 16], "209": 16, "21": [4, 10], "210": 16, "212": 16, "213": 16, "22": 15, "223": 16, "224": 16, "225": 16, "23": [15, 20], "230": 16, "231": [15, 16], "232": 16, "234": 15, "236": 16, "237": 16, "239": 16, "24": [1, 15, 20], "241": 16, "242": 16, "244": 16, "246": 16, "247": 16, "25": [10, 15, 20], "250": 16, "252": 16, "255": 15, "257": 16, "258": 16, "259": 16, "26": [15, 20], "260": 16, "261": 16, "264": 16, "265": 16, "266": 16, "26and": 20, "27": [0, 8, 10, 14, 15, 18], "270": 16, "271": 16, "273": 16, "274": 16, "275": 16, "278": 16, "279": [15, 16], "28": 4, "280": [15, 16], "282": [12, 16], "287": 16, "289": 16, "29": [4, 10], "290": 16, "2930": 15, "294": 16, "296": 16, "297": 16, "298": 16, "299": 16, "2bcff2e": 16, "2e1ee2c": 16, "2ordfncv6vprkfp3yrcyht": [1, 15], "2ukrviyshoakg8qsuknus4": 4, "2ule2hwhsnycs2vhbsikb9": 14, "3": [0, 1, 3, 11, 12, 13, 14, 15, 18, 20], "30": [0, 10, 12, 15, 20], "300": 20, "3000": 20, "301": [16, 20], "304": 16, "305": 16, "307": 16, "308": 16, "31": [0, 14, 15, 18, 20], "310": 16, "314": 16, "315": 16, "318": 16, "319": 16, "32": 15, "320": 16, "323": 16, "328": 16, "329": 16, "33": [12, 16], "3320": 12, "333": 16, "338": 16, "34": [1, 16], "34614d5": 16, "35": [0, 7, 15, 16], "350": 16, "351": 16, "352": 16, "354": 16, "356": 16, "357": 16, "358": 16, "359": 16, "36": 16, "365": 16, "366": 16, "367": 16, "369": 16, "37": 16, "370": 16, "371": 16, "374": 16, "375": 16, "376": 16, "377": 16, "38": 10, "380": 16, "381": 16, "382": 16, "3821e37": 16, "384": 16, "386": 16, "388": 16, "39": 15, "390": 16, "391": 16, "393": 16, "394": 16, "395": 16, "397": 16, "398": 16, "399": 16, "3aread": 21, "3awrit": 21, "3b6fa25": 16, "3c8d9c2": 16, "3f": 20, "3rd": [15, 21], "4": [0, 3, 11, 12, 13, 14, 15, 17, 18, 20], "40": 16, "400": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 16], "401": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "402": 16, "403": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "404": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "406": 16, "407": 16, "409": 16, "40and": 20, "41": [15, 16], "410": 16, "4109": 15, "411": 16, "413": [0, 15], "415": 16, "416": 16, "417": 16, "418": 16, "42": [15, 16], "421": 16, "422": 16, "426": 16, "427": [15, 16], "428": 16, "43": [0, 9, 13, 14, 15, 16], "431": 16, "433": 16, "435": 15, "436": 16, "438": 16, "44": [14, 15, 16], "441": 16, "443": 20, "444": 16, "449": 16, "44ff": 7, "45": [0, 1, 14, 15], "450": 16, "455": 16, "456": 16, "46": [12, 16], "464": 16, "465": 20, "468": 16, "469": 16, "47": [12, 15, 16], "471": 16, "472": 16, "473": 16, "474": 16, "475": 16, "476": 16, "477": 16, "478": [15, 16], "479": 16, "48": [5, 12, 14], "481": 16, "482": 16, "484": 16, "488": 16, "489": 16, "49": [0, 10, 14], "490": 16, "494": 16, "495": 16, "496": 16, "499": [15, 16], "4c3fc34": 16, "5": [3, 8, 11, 12, 14, 15, 17, 18, 20], "50": [0, 4, 5, 12, 14, 16, 20], "500": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16], "5000": 20, "502": 16, "504": 16, "506": 16, "507": 16, "5078118": 15, "5079733": 15, "508": 16, "51": [13, 14, 15], "510": 16, "511": 16, "512": 16, "517587": 15, "51758b4": 16, "52": [1, 15, 16], "521": 16, "524": 16, "526": 16, "527": 16, "528": 16, "53": [8, 16], "530": 16, "531": 16, "532": 16, "533": 16, "534": 16, "536": 16, "537": 16, "538": 16, "54": 16, "540": 16, "542": 16, "543": 16, "5432": 20, "544": 16, "545": 16, "546": 16, "55": [14, 15], "550": 16, "551": 16, "555": 16, "556": 16, "557": 16, "558": 16, "56": [10, 16], "560627": 15, "563": 16, "564": 16, "565": 16, "566": 16, "57": [15, 16], "571": 16, "575": 16, "58": [0, 14, 16], "582": 16, "583": 16, "587": [16, 20], "588": 16, "59": [12, 14, 15, 16], "590": 16, "591": 16, "592": 16, "593": 16, "595": 16, "598": 16, "6": [0, 3, 4, 11, 14, 15, 17, 18, 20], "60": 16, "600": 16, "603": 16, "604": 16, "607": 16, "608": 16, "609": 16, "60e164d": 16, "61": 16, "610": 16, "612": 16, "613": 12, "614": 16, "616": 16, "617": 16, "618": 16, "62": 16, "620": 16, "621": [15, 16], "622": 16, "624": 16, "625": 16, "626": 16, "628": 16, "629": 16, "63": 15, "631": 16, "633": 16, "634": 16, "635": 16, "636": 16, "637": 16, "639": [16, 17], "64": 16, "640": 16, "645": 16, "651": 16, "652": 16, "655": 16, "657": 16, "659": 16, "66": 16, "660": 16, "662": 16, "664": 16, "666": 16, "667": 16, "668": 16, "67": [0, 12, 14, 16], "673": 16, "6dxczvmrhkar72shuz9pwd": [0, 14], "6e215aa": 16, "6nvxvayoh9zkr8rmxhu54t": 14, "7": [15, 17, 18, 20, 21], "70": 16, "71": 16, "72": 16, "720": 0, "73": 16, "7380": 15, "74": 16, "75": 16, "7641": 12, "78": 12, "79": 16, "7pdujhcvhya4hv29jzqngg": 0, "8": [0, 15, 17, 18, 20, 21], "80": [16, 20], "8025": 20, "81": 16, "82": 16, "83": 16, "84": 16, "85": 16, "864000": 8, "87": 16, "877fa0f": 16, "88": 16, "89": 16, "895": [0, 14], "8aa4cff": 16, "9": [0, 2, 9, 14, 15, 17, 18, 20, 21], "90": 16, "91": 16, "92": 16, "924": 0, "93": 16, "93706": 15, "95": [12, 16], "97": [0, 9, 13, 14, 15, 16], "98": 16, "981933": 15, "99": [12, 16], "9960": 12, "A": [4, 14, 16, 17, 18, 20, 23], "AS": [0, 9, 13, 14, 15], "And": 16, "BY": 20, "For": [12, 15, 18, 20, 21], "If": [0, 4, 8, 12, 14, 15, 16, 17, 18, 20, 21], "In": [16, 18], "It": [0, 1, 14, 15, 16, 18, 19, 21], "NO": [0, 1, 4, 8, 14, 15], "NOT": [0, 3, 4, 8, 11, 15], "No": [0, 1, 4, 8, 14, 15, 16, 19], "Not": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15], "OF": 20, "On": [18, 20], "One": 20, "The": [0, 4, 15, 16, 18, 20, 21, 23], "There": [18, 20], "To": [16, 20, 21], "WITH": 20, "With": [18, 20], "_": [0, 16], "__main__": 20, "_blank": 20, "a012": 7, "a458f5f": 16, "aaron": 21, "abil": 16, "abl": 16, "about": [2, 16, 20, 21], "absolut": [20, 23], "ac075ec36dc25dcc20c270d2005f0398": 15, "accept": [0, 5], "accepted_polici": 0, "accepted_privacy_polici": 0, "access": [0, 3, 4, 8, 11, 12, 14, 16, 18, 20, 21], "access_token": 8, "accord": 18, "account": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22], "action": [10, 16, 18], "action_short_id": 0, "action_typ": [0, 10, 14], "activ": [0, 3, 4, 11, 14, 16, 17, 18, 19, 20], "ad": [0, 4, 15, 16, 17, 18, 20, 21], "adapt": [18, 20], "add": [1, 14, 15, 16, 17, 18, 19, 20], "addit": [14, 16, 18, 20], "address": [0, 18, 20], "admin": [0, 2, 3, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20], "admin_contact": 2, "administr": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 21, 24], "aff4d68": 16, "affect": [10, 16, 18], "after": [0, 8, 14, 16, 18, 20, 21], "again": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "agplv3": 16, "agre": [0, 16, 18], "alert": 16, "all": [3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 20], "allow": [0, 2, 4, 15, 16, 17, 18, 19, 20, 21], "along": 15, "alphanumer": [0, 16], "alpin": 18, "alreadi": [0, 4, 5, 10, 16, 17], "also": [16, 17, 18, 19, 20], "altern": 16, "although": 18, "altitud": [16, 18], "alwai": 20, "amd64": 20, "among": 16, "an": [0, 4, 8, 11, 14, 15, 16, 18, 20, 21, 23], "analysi": [0, 15, 16, 18], "analysis_vis": [0, 15], "analyz": 18, "android": 19, "ani": [4, 15, 20], "anoth": [0, 4, 18, 20], "antialia": 16, "anymor": 16, "anyon": 18, "apach": 19, "api": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21], "api_rate_limit": 20, "apikei": 20, "app": [0, 8, 16, 19, 20, 21], "app_log": 20, "app_port": 20, "app_secret_kei": 20, "app_set": 20, "app_work": 20, "appeal": [0, 1, 10, 14, 15, 18, 20], "appeal_id": 10, "appear": [0, 18], "appli": [17, 18], "applic": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "application_directori": 20, "approv": [0, 10, 14, 16, 18], "apr": 15, "ar": [0, 4, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22, 24], "archiv": [0, 2, 16, 17, 18, 20], "archive_rgjsr3fhr5yp": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "archlinux": 20, "area": 16, "arg": [17, 20], "argument": [4, 17], "arm64": 20, "arrai": [0, 4, 8, 15], "arrow": [16, 18], "asc": [5, 7, 10, 14, 15], "ascent": [0, 9, 13, 14, 15, 16, 18], "asset": 20, "assign": 18, "associ": [0, 4, 8, 15, 16, 18], "astridx": 16, "attribut": [16, 20], "auth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "auth_token": 0, "authent": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 21], "authlib": [8, 20, 21], "author": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 21], "authorization_cod": [8, 21], "autoescap": 16, "automat": [0, 18], "avail": [0, 9, 17, 18, 20, 21, 22], "ave_spe": [13, 14, 15], "ave_speed_from": 15, "ave_speed_to": 15, "averag": [9, 12, 15, 16, 18], "average_asc": 12, "average_desc": 12, "average_dist": 12, "average_dur": 12, "average_spe": 12, "avoid": [16, 18], "awesom": 20, "axi": [15, 16, 18], "b": 20, "b1536fc": 16, "b29ed7a": 16, "b748459": 16, "b862a77": 16, "back": 17, "background": 16, "backup": 20, "backward": 20, "bad": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15], "base": 20, "basqu": [16, 18], "bcc568e": 16, "be26f35a": 7, "bearer": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "becom": 16, "been": [10, 16, 19, 20], "befor": [16, 18, 20], "begin": 20, "behind": 21, "being": 18, "below": [16, 20], "better": [16, 21], "between": [4, 16, 18], "bike": [3, 4, 11, 15, 16, 18], "bin": 20, "bio": [0, 5, 14], "biographi": 0, "birth": [0, 16], "birth_dat": [0, 5, 14], "bjornclauw": 16, "black": 16, "blacklist": [0, 17], "block": [0, 10, 14, 16, 18], "blocked_us": 0, "boat": 18, "bodi": [16, 20, 21], "bokm\u00e5l": [16, 18], "boolean": [0, 2, 3, 4, 7, 8, 10, 11, 14, 17], "boosterl": 16, "bound": [13, 14, 15], "brief": 4, "browser": [0, 16, 18], "build": [16, 20], "bulgarian": [16, 18], "button": 16, "by_id": 8, "by_sport": 12, "by_tim": 12, "byakurau": 16, "byte": 0, "c": [15, 20], "c88a515": 16, "calcul": [0, 12, 16, 18], "calendar": [16, 18], "callback": [8, 21], "can": [0, 1, 3, 4, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23], "cannot": [4, 16, 18], "card": 16, "cart": 20, "case": [4, 15, 18, 20], "cb9d02f": 16, "cc": 20, "cc3fe1c": 16, "cc4287e": 16, "cd": 20, "challeng": [8, 21], "chang": [0, 4, 17, 18, 19, 20, 21], "changelog": 20, "charact": [0, 4, 15, 16, 20], "chart": [15, 16, 18, 20], "chart_data": 15, "check": [2, 11, 16, 20, 23], "check_workout": 11, "checkbox": 16, "choos": [16, 18], "chosen": 20, "ci": [16, 20], "cleanup": 16, "clear": 20, "cli": [14, 16, 17, 18, 20], "click": 16, "clickabl": 16, "client": [0, 8, 14, 16, 18, 20, 21], "client_client_id": 8, "client_descript": 8, "client_id": [8, 21], "client_max_body_s": [20, 23], "client_nam": 8, "client_secret": 8, "client_uri": 8, "clone": 20, "code": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "code_challeng": [8, 21], "code_challenge_method": [8, 21], "code_verifi": 8, "color": [0, 11, 16, 18], "com": [0, 2, 8, 10, 14, 16, 20, 21], "come": 18, "comma": [16, 20], "command": [16, 18, 19, 20], "comment": [0, 6, 10, 15, 16, 21], "comment_id": 10, "comment_short_id": 1, "comment_suspens": 10, "comment_unsuspens": 10, "complet": [0, 16, 18], "compos": 20, "comradekingu": 16, "config": [2, 16, 20, 23], "configur": [6, 16, 20, 21], "confirm": [0, 8, 16, 18, 20], "confusedalex": 16, "contact": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 18], "contain": [16, 18, 20], "content": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "contribut": 16, "contributor": [2, 16, 20, 22], "control": [16, 18, 20], "coordin": 20, "copi": [2, 20], "copyright": [2, 20], "core": 16, "correctli": 16, "correspond": [0, 20], "could": 16, "countri": 18, "cp": 20, "creat": [0, 1, 4, 8, 10, 15, 16, 18, 20, 21], "create_app": 20, "created_at": [0, 1, 5, 7, 10, 14, 15], "creation": [0, 16, 18], "creation_d": [4, 13, 14, 15], "creativecommon": 20, "credenti": [0, 20], "criteria": [10, 14, 15], "critic": 23, "cross": [8, 18, 20, 21], "current": [0, 4, 14, 16], "custom": [16, 18, 20], "cycl": [11, 15, 16, 18], "czech": [16, 18], "d": [0, 12, 15, 20], "dai": [16, 17, 18, 20], "dan": 15, "danielsiersleben": 16, "dark": [0, 16, 18], "darkski": [16, 20], "dashboard": 16, "data": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 21], "databas": [16, 18, 20, 23], "database_dir": 20, "database_disable_pool": 20, "database_url": [16, 20, 23], "date": [0, 12, 15, 16, 18], "date_format": 0, "date_str": 0, "davidhenrythoreau": 16, "db": 20, "dd": 0, "de": [0, 3, 14, 20], "deactiv": [14, 18], "debian": [20, 22], "dec": [0, 1, 5, 7, 10, 14, 15], "default": [0, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 20], "default_equipment_id": 0, "default_for_sport_id": 4, "default_staticmap": [16, 20], "defin": [16, 18], "definit": 16, "delet": [0, 1, 4, 8, 14, 15, 16, 17, 18], "depend": [16, 18], "deploy": 16, "deprec": [16, 17], "desc": [5, 7, 10, 14, 15, 18], "descent": [13, 14, 15, 16, 18], "describ": [10, 20], "descript": [4, 8, 13, 14, 15, 16, 17, 18, 20], "detail": [14, 16, 20, 24], "detect": 16, "dev": 16, "develop": [16, 17, 19], "diagnost": 20, "dialect": 23, "differ": [14, 16, 18], "direct": [16, 18], "directli": 20, "directori": [0, 16, 20], "disabl": [0, 16, 17, 18, 20], "discontinu": 20, "discours": 18, "displai": [0, 15, 16, 17, 18, 19, 20, 21, 24], "display_asc": 0, "distanc": [0, 9, 13, 14, 15, 16, 18], "distance_from": 15, "distance_to": 15, "dkm": 16, "do": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20], "docker": 16, "dockerhub": 20, "document": [19, 20, 21, 23], "doe": [0, 4, 5, 12, 14, 15, 16, 18], "don": [0, 16], "dotenv": 16, "dotlambda": 16, "doubl": 15, "down": [16, 20], "downgrad": 16, "download": [0, 15, 16, 18, 20, 24], "dperruso": 16, "dramatiq": [16, 17, 20], "drop": 16, "dropdown": [16, 18], "due": 16, "durat": [9, 13, 14, 15, 16, 18], "duration_from": 15, "duration_to": 15, "dure": [0, 1, 4, 10, 15], "dutch": [16, 18], "e": [0, 20], "e2": 16, "ea0ac99": 16, "each": 18, "easi": 16, "edit": [0, 16, 18], "electr": 18, "elev": [0, 15, 16, 18, 20], "els": 20, "email": [0, 2, 10, 14, 16, 17, 18, 23], "email_to_confirm": 0, "email_url": [20, 23], "empti": [15, 16, 17, 20], "en": [0, 17], "enabl": [0, 2, 14, 18, 20], "encod": [16, 20], "encount": 20, "encrypt": 18, "end": [12, 15], "endpoint": [0, 2, 3, 4, 8, 11, 14, 16, 20, 21], "engin": [16, 20, 23], "english": [0, 16, 17, 18], "enter": [16, 18], "entiti": [0, 15], "entri": [16, 18, 20], "entrypoint": 16, "enumer": 20, "env": [16, 20], "environ": [16, 17, 23], "equal": 2, "equip": [0, 6, 13, 14, 15, 16, 21], "equipment_id": [0, 15], "equipment_short_id": 4, "equipment_typ": [3, 4], "equipment_type_id": [3, 4], "equipment_type_label": 4, "erral": 16, "error": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 15, 16, 18, 20, 23], "escap": 15, "estim": 16, "eu": 16, "europ": 0, "evalu": 16, "even": [16, 18], "event": 18, "ewm": 16, "exampl": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "exc": 23, "exce": [0, 4, 15, 16], "exceed": 16, "except": [14, 18, 20, 23], "exchang": 21, "exclud": 18, "exec": 20, "execstart": 20, "execut": [16, 20], "exhaust": 19, "exist": [0, 4, 5, 7, 10, 12, 14, 15, 16, 18, 19, 20], "exit": [17, 20], "expect": [10, 20], "expir": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "expires_at": 8, "expires_in": 8, "explain": [0, 10], "export": [0, 16, 17, 18, 19, 20], "extens": [0, 15, 20], "extrem": 18, "f2aec30": 16, "f96dcef": 16, "fa33f4d996844a5c73ecd1ae24456ab8": 15, "fail": [16, 24], "fall": 17, "fallback": 0, "fals": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 15, 20], "farthest": [9, 16, 18], "fb10602": 16, "fd": [0, 9, 13, 14, 15], "featur": [19, 20], "fetch": [18, 21], "field": [14, 16], "file": [0, 2, 15, 16, 17, 18, 19, 20, 22, 24], "file_nam": 0, "file_s": 0, "filenam": 0, "filter": [10, 15, 16, 18], "find": 16, "finish": 16, "first": [0, 4, 8, 18, 21], "first_nam": [0, 5, 14], "fit": [20, 22], "fitotrack": 19, "fittracke": [4, 8, 17, 18, 20, 21, 22, 24], "fittrackee_cli": 20, "fittrackee_host": 21, "fittrackee_instal": 22, "fittrackee_work": [16, 20], "fittrackee_ynh": 20, "fix": 20, "flake8": 16, "flask": [16, 20], "flask_app": 20, "flaticon": 20, "float": [0, 15], "fmstrat": 16, "folder": 20, "follow": [0, 1, 6, 7, 9, 10, 14, 15, 16, 18, 20, 21, 22, 23], "follow_request": [5, 7], "followers_onli": [0, 1, 14, 15], "fond": 20, "footer": 16, "forbidden": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "forc": [4, 18], "forgeri": [8, 21], "fork": 20, "form": [0, 8, 15, 16], "format": [0, 12, 15, 16, 18], "forward": [20, 21], "found": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "fr": [0, 20], "frame": 12, "franc": 20, "freepik": 20, "french": 18, "fri": 15, "from": [4, 5, 7, 8, 12, 15, 16, 18, 19, 21, 22], "ft": 16, "ftcli": 20, "full": [16, 18], "fullchain": 20, "fullscreen": 16, "furo": 16, "galician": [16, 18], "galicien": 16, "gallegonovato": 16, "gard": 15, "garmin": 22, "gener": [8, 16, 17, 18, 20, 21], "german": [16, 18, 20], "get": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "gif": 0, "git": 20, "github": [16, 20], "give": 20, "given": [0, 8, 12, 18], "gl": 0, "gmt": [0, 1, 4, 5, 7, 8, 9, 10, 13, 14, 15], "gnu": 16, "gorgobacka": 16, "gp": [16, 18], "gpl": 19, "gpx": [0, 8, 15, 16, 18, 19, 20, 22], "gpx_limit_import": 2, "gpxpy": [0, 16, 18, 20], "grai": 16, "grammar": 16, "grant": [8, 21], "grant_typ": 8, "graph": [16, 18], "great": 1, "greater": [2, 16], "guid": 20, "gunicorn": [20, 23], "gz": 20, "gzip": 0, "h": [15, 18], "ha": [0, 1, 4, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20], "handl": [0, 16, 18, 20, 23], "happen": 18, "has_equip": 3, "has_next": [0, 5, 7, 8, 10, 14], "has_prev": [0, 5, 7, 8, 10, 14], "has_workout": 11, "have": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "he": 14, "header": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "health": 2, "heavi": [19, 20], "help": [17, 20], "hexadecim": 0, "hgzyfxgvwkcepdq3vyk67q": 15, "hi": [0, 4, 14, 16, 18], "hidden": [14, 16, 18], "hide": [16, 18], "hide_profile_in_users_directori": 0, "higher": 20, "highest": [0, 9, 18], "hike": [11, 16, 18], "histor": 20, "home": 20, "host": [16, 20], "hour": 20, "hourli": 20, "how": 20, "href": [2, 20], "html": 16, "http": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "http2": 20, "hub": 16, "hv9kwvdtbhhyfvml7phovq": 10, "hvybqybra7wwxpastwr4v2": [0, 9, 13, 14, 15], "i": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24], "i18n": 16, "icon": [16, 20], "id": [0, 1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "imag": [0, 14, 15, 16, 18, 20, 24], "imperi": [0, 16, 18], "imperial_unit": 0, "implement": [16, 21], "import": [8, 16, 18, 20], "in_progress": 0, "inact": [0, 4, 14, 15, 18, 20], "includ": 16, "incompat": 20, "incomplet": 17, "inconsist": 16, "incorrect": [4, 16, 18], "increas": 23, "index": 15, "indic": 18, "individu": 18, "info": [0, 16, 18], "inform": [0, 2, 16, 18, 19, 20], "init": 16, "initi": [16, 20], "initialis": 16, "input": 16, "insensit": [15, 20], "insid": 20, "instal": [16, 19], "instanc": [2, 8, 16, 18, 20, 21], "instead": [16, 18], "instruct": [0, 16, 18, 20], "int": [0, 3, 4, 8, 10, 11, 15], "integ": [0, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "interact": 21, "interceptor": 16, "interfac": [0, 16, 18, 19, 20], "intern": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15], "introduc": 16, "invalid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "invalidemailurlschem": 23, "ip": 20, "is_act": [0, 3, 4, 10, 11, 14], "is_active_for_us": 11, "is_email_sending_en": 2, "is_followed_bi": [0, 7, 10, 14], "is_registration_en": 2, "is_reported_user_warn": 10, "iso": 17, "isort": 16, "issu": [8, 18, 19, 20], "issued_at": 8, "italian": [16, 18], "item": 4, "its": [18, 20], "j": [15, 16, 20], "jan": [13, 14, 15], "jat255": 16, "javascript": [16, 20], "jderuit": 16, "jinja": 16, "jmlich": 16, "john_do": 14, "johndo": 14, "jpeg": 14, "jpg": 0, "json": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "jul": [0, 9, 13, 14, 15], "juli": 8, "jwt": 20, "kayak": 18, "kayak_boat": 3, "kcj6hdgqqpkaakqmfqj8jv": 14, "kd5wyhwltvozw6o3au5m4j": 15, "keep": [16, 18, 19, 20], "kei": [16, 18, 20], "keyboard": 16, "kjxavsturjvoah2wvcegef": [13, 14, 15], "km": [15, 18], "koen": 16, "komoot": 20, "label": [3, 4, 11, 16, 18], "lang": [0, 16, 17], "languag": [0, 16, 17, 18], "larg": [0, 15, 18, 20], "larger": [20, 23], "last": [0, 14, 16, 18, 20], "last_nam": [0, 5, 14], "lastli": 16, "latitud": 15, "launch": 16, "lavoi": 16, "layer": [16, 20], "layout": 16, "ld": [0, 9, 13, 14, 15], "le": 15, "leaflet": [15, 20], "least": [7, 10, 13, 15, 20], "legal": 20, "legitim": 16, "length": 15, "less": [4, 16], "let": 16, "letter": 17, "level": [1, 15, 16, 18], "librari": [8, 16, 20, 21], "licenc": 20, "licens": [16, 19, 20], "lift": [18, 20], "light": 18, "like": [1, 14, 15, 16, 20], "likes_count": [1, 14, 15], "limit": [4, 16, 18], "line": [18, 19, 20], "link": [16, 20], "lint": 20, "linux": 20, "list": [8, 16, 19, 20], "listen": 20, "ll": 20, "load": [16, 23], "loader": 16, "local": [0, 16, 19, 20], "localhost": [16, 20], "locat": [0, 5, 14, 20], "lock": 18, "log": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23], "log_dir": 20, "logfil": 20, "login": [0, 16], "logo": 20, "logout": [0, 16], "longer": [4, 16, 18, 20, 23], "longest": [9, 16, 18], "longitud": 15, "lower": 16, "lukasitali": 16, "m": [0, 9, 12, 13, 14, 15], "made": 20, "mai": [16, 18, 19, 20], "mail": 20, "mailhog": 20, "mainten": 20, "major": 16, "make": [16, 20], "makefil": 20, "malform": 0, "manag": [16, 17, 18, 20], "mandatori": [4, 8, 10, 12, 15, 16, 17, 20, 21], "manual": 18, "manually_approves_follow": 0, "map": [0, 13, 14, 15, 16, 18, 19, 24], "map_attribut": [2, 20], "map_id": 15, "map_til": 15, "map_vis": [0, 14, 15], "mar": [0, 4, 14], "mara21": 16, "march": [16, 20], "mariusz": 16, "mariuz": 16, "mark": [7, 16, 18], "markdown": [16, 18], "marked_as_read": 7, "marker": 16, "match": [0, 15, 16, 18], "max": [2, 5, 14, 15, 16, 17, 18], "max_alt": [13, 14, 15], "max_single_file_s": 2, "max_spe": [13, 14, 15], "max_speed_from": 15, "max_speed_to": 15, "max_us": 2, "max_zip_file_s": 2, "maxim": 15, "maximum": [9, 15, 16, 17, 18], "md": 16, "measur": 16, "mention": [1, 7, 18, 20], "menu": 16, "messag": [0, 2, 5, 8, 14, 15, 16, 17, 18, 20], "method": [8, 20, 21], "metric": 18, "mi": 16, "microsecond": 16, "migrat": [16, 17, 20], "min": 16, "min_alt": [13, 14, 15], "mind": 18, "minim": [15, 20, 21], "minimum": [2, 3, 10, 11, 12, 14, 16, 18], "minut": 20, "miss": [0, 16], "mm": 0, "mmm": 0, "mmy3qpl3vcfukjgffbncjv": 0, "mobil": [16, 19], "modal": 16, "mode": [0, 16], "model": 16, "moder": [10, 12, 14, 16, 17], "modifi": [0, 16, 17, 18, 20], "modification_d": [1, 13, 14, 15], "modul": [16, 20], "moment": 18, "mon": [13, 14, 15], "mondai": [0, 12, 18], "mondstern": 16, "month": [12, 16, 18], "monthli": 18, "more": [16, 17, 18, 19, 20], "morn": 15, "most": 21, "mountain": [11, 16, 18], "mous": 16, "move": [13, 14, 15, 16], "movement": 16, "multi": 20, "multipart": [0, 8, 15], "multipl": [16, 18], "must": [0, 2, 4, 8, 11, 14, 15, 16, 18, 20, 21, 23], "mv": 20, "my": 4, "mynixo": 20, "mzydicyyfktg3gga2x8afu": 1, "n": 0, "name": [0, 5, 8, 14, 16, 18, 20], "nano": 20, "navig": 16, "nb": 0, "nb_sport": [0, 5, 14], "nb_workout": [0, 1, 5, 7, 10, 14, 15], "nbsp": 20, "necessari": [18, 20], "nederland": 16, "need": [15, 16, 18, 20, 21], "net": 20, "netinstal": 22, "network": 20, "new": [0, 4, 14, 17, 18, 20, 21], "new_email": 14, "new_password": 0, "newli": [0, 17, 20], "next": [16, 18], "next_workout": [13, 14, 15], "nginx": [16, 18, 20, 21, 23], "nice": 1, "nixpkg": 20, "nl": 0, "no_gpx": 15, "node": 20, "nofollow": 20, "non": [3, 11, 19], "none": 15, "noopen": 20, "noreferr": 20, "norwegian": [16, 18], "nosuchmoduleerror": 23, "notat": 20, "note": [0, 10, 13, 14, 15, 16, 18, 20], "notif": [6, 16, 20, 21], "notification_id": 7, "notification_typ": 7, "nov": [1, 15], "now": [0, 12, 15, 16, 17, 18, 20], "null": [0, 1, 2, 4, 5, 7, 10, 11, 13, 14, 15, 16], "number": [2, 5, 14, 15, 16, 17, 18, 20], "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 8, "o": 20, "o22a27s2abpuoxjbxv3ujdox": 8, "oauth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20], "oauth2": [6, 21], "oauthlib": 21, "object": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "object_id": 10, "object_typ": 10, "occur": 18, "office365": 20, "offset": 16, "ok": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "old": 20, "omit": 20, "onc": [0, 1, 15], "ondrejzivni": 16, "one": [0, 4, 7, 10, 13, 15, 18], "ongo": 0, "onli": [0, 1, 4, 8, 12, 14, 15, 16, 17, 18, 20, 21], "open": [16, 18, 19, 20], "openstreetmap": [2, 16, 20], "opentrack": 19, "oper": [18, 20], "option": [4, 7, 8, 16, 17, 20, 21], "order": [5, 7, 10, 14, 15, 16, 18, 21], "order_bi": [10, 14, 15], "org": [2, 20], "origin": 18, "osm": 20, "osmfr": 20, "other": [0, 4, 14, 18, 20], "otherwis": [15, 18, 20], "ou": 16, "out": 0, "outdoor": [16, 18, 19, 20], "over": 16, "overlap": 16, "overrid": 18, "overridden": 18, "overwrit": 20, "own": [4, 10, 14, 19], "owner": [4, 14, 16, 17, 18, 20], "packag": [16, 20], "paf38": 16, "page": [0, 5, 7, 8, 10, 13, 14, 15, 16, 18], "pagin": [0, 5, 7, 8, 10, 13, 14, 15], "par": [16, 20], "par_pag": 14, "paraglid": [16, 18], "parallel": 16, "paramet": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21], "parecki": 21, "pari": 0, "pars": [16, 20], "part": [0, 15, 16], "parti": [8, 15, 18, 19, 21], "partial": 16, "particular": 18, "pass": 20, "password": [0, 14, 16, 17, 18, 20], "passwordwith": 20, "patch": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "path": [20, 23], "paus": [13, 14, 15, 16], "payload": [0, 1, 2, 3, 8, 10, 11, 14, 15], "pem": 20, "pend": 7, "per": [5, 14, 15, 16, 20], "per_pag": [5, 14, 15], "perform": 18, "perhap": 4, "period": [12, 18, 20], "permiss": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "pg_dump": 20, "pictur": [0, 1, 5, 7, 10, 14, 15, 16], "piec": [4, 18], "pil": 16, "ping": 2, "pip": 20, "pipenv": 16, "pkce": [8, 21], "platform": 20, "pleas": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "plot": 0, "plugin": 23, "pluja": 16, "png": [0, 15, 20], "poetri": [16, 20], "point": [16, 20], "polici": [0, 2, 16], "polish": [16, 18], "pong": 2, "pool": 20, "port": 20, "portugues": [16, 18], "posit": [16, 18], "possibl": [16, 18, 19, 20], "post": [0, 1, 4, 5, 7, 8, 10, 14, 15, 21], "postgr": [16, 23], "postgres_db": 20, "postgres_password": 20, "postgres_us": 20, "postgresql": [16, 20, 23], "postgresql10": 16, "pr": 16, "pre": 16, "prefer": [0, 14, 15, 16, 17], "prepar": 16, "present": [16, 18], "prevent": [8, 20, 21], "previous": 16, "previous_workout": [13, 14, 15], "prior": 18, "privaci": [0, 2, 16], "privacy_polici": 2, "privacy_policy_d": 2, "privat": [0, 1, 14, 15, 16, 18], "privileg": 20, "privkei": 20, "problem": 16, "process": [0, 5, 10, 16, 17, 20], "product": 16, "productionconfig": 20, "profil": [0, 8, 10, 16, 18, 21], "project": 20, "proto": [20, 21], "provid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23], "proxi": [20, 21], "proxy_add_x_forwarded_for": 20, "proxy_pass": 20, "proxy_redirect": 20, "proxy_set_head": [20, 21], "psjeexbjz2jjnqctcpxvvf": 15, "public": [0, 1, 15, 18], "publish": 16, "pull": 20, "purpos": [16, 20], "pwd": 20, "py": 20, "python": [16, 20, 21], "q": 14, "qrj7by6h2iyjsv8sersfgv": 4, "queri": [0, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "queue": 20, "quot": 15, "qwerty287": 16, "r": 20, "random": 17, "randomli": 20, "rate": 16, "reach": 18, "reactiv": [10, 18], "read": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21], "read_statu": 7, "readi": 20, "readm": 16, "real": 20, "reason": [0, 10, 14], "rebuild": 16, "recalcul": 18, "receiv": [5, 7, 18], "recent": 18, "recommend": [8, 20, 21], "record": [0, 5, 6, 13, 14, 15, 16, 18], "record_typ": [0, 9, 13, 14, 15], "redi": [16, 17, 20], "redirect": [8, 16, 21], "redirect_uri": 8, "redis_dir": 20, "redis_url": 20, "reduc": 16, "refacto": 16, "refactor": 16, "refresh": [4, 8, 16], "refresh_token": 8, "regardless": [14, 18], "regist": [0, 2, 16, 18, 20], "registr": [0, 2, 16, 17, 18, 20, 21], "registri": 20, "reject": [5, 10, 18, 20], "rel": 20, "relat": [17, 18, 20], "relationship": 14, "releas": [18, 20], "relev": 16, "remain": [16, 18], "remote_addr": 20, "remov": [1, 4, 14, 15, 16, 17, 18, 20], "renam": 16, "replac": [15, 16, 20], "repo": 20, "report": [6, 14, 16, 18, 21], "report_act": 10, "report_id": [10, 14], "reported_bi": 10, "reported_com": 10, "reported_us": 10, "reported_workout": 10, "repositori": 20, "request": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21], "request_uri": 20, "requir": [0, 4, 16, 20, 21], "requisit": 16, "resend": 0, "resent": 0, "reset": [0, 14, 16, 17, 18, 20], "reset_password": 14, "resolut": 16, "resolv": [10, 18], "resolved_at": 10, "resolved_bi": 10, "respons": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "response_typ": [8, 21], "rest": 21, "restart": 20, "restartsec": 20, "restrict": 18, "result": 16, "return": [0, 1, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20], "return_equip": 15, "review": [16, 18], "revok": [0, 8], "rework": 16, "ride": 16, "right": [14, 16, 17, 18, 20, 21], "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 8, "role": [0, 1, 2, 3, 7, 10, 11, 12, 14, 15, 16, 17, 18, 20], "rout": [16, 20], "row": 18, "ruff": 16, "rule": 18, "run": [11, 16, 17, 18, 20, 21], "runner": 19, "russian": [16, 18], "s256": [8, 21], "sa": 20, "safe": 16, "sam": [0, 1, 5, 9, 10, 13, 14, 15], "same": [4, 16, 18, 20], "samr1": 20, "sanction": [0, 14, 18], "sanit": 16, "sat": 14, "save": [1, 4, 10, 16, 18], "schema": 20, "scheme": [20, 21], "scope": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "screen": [16, 18], "script": 16, "search": 16, "second": [4, 15], "secret": [8, 20, 21], "section": 16, "secur": 21, "see": [4, 16, 18, 19, 20, 21, 23], "seem": 16, "segment": [13, 14, 15, 16, 18], "segment_id": 15, "select": [0, 15, 18], "semant": 20, "send": [0, 14, 16, 18, 20], "sender": 20, "sender_email": 20, "sent": [14, 16, 18, 20, 21], "separ": [18, 20, 21], "serv": [16, 20], "server": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 18, 19], "server_nam": 20, "servic": [16, 20], "session": [18, 21], "set": [4, 14, 16, 17, 18, 20, 21, 23], "sever": [16, 19, 20], "sh": 22, "shell": 20, "shoe": [3, 4, 18], "short": [1, 4, 7, 15], "should": [16, 18, 20], "show": [16, 17, 20], "shown": [16, 21, 24], "shura0": 16, "shut": [16, 20], "side": 16, "signatur": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "sikmir": 16, "simontb": 16, "simpl": 20, "simplest": 20, "simplifi": [16, 21], "sinc": [16, 20, 21], "singl": [2, 14, 16, 18, 20], "site": [8, 21], "size": [0, 2, 15, 16, 18, 20], "ski": [3, 18], "skylan0916": 16, "slothj": 16, "slow": 16, "small": 16, "smtp": [16, 20], "snowsho": [3, 16, 18], "so": [20, 21], "social": 16, "some": [4, 5, 7, 10, 13, 14, 15, 16, 18, 19, 20, 21], "sorri": 0, "sort": [5, 7, 10, 14, 15, 18], "sou": 20, "sourc": 18, "space": 21, "spanish": [16, 18], "spawn": 20, "special": [16, 20], "specif": [18, 20], "specifi": 16, "speed": [0, 9, 15, 16, 18, 20], "spinner": 16, "sport": [0, 2, 4, 6, 12, 15, 16, 20], "sport_id": [0, 4, 9, 11, 12, 13, 14, 15], "sport_label": 4, "sports_list": [0, 5, 14], "sql": 20, "sqlalchemi": [16, 20, 23], "ssl": 20, "ssl_certif": 20, "ssl_certificate_kei": 20, "stabl": 16, "standard": [16, 20], "standarderror": 20, "standardoutput": 20, "start": [0, 12, 15, 16, 18, 20, 24], "start_elevation_at_zero": 0, "startlimitintervalsec": 20, "starttl": 20, "startup": 20, "stat": [12, 16], "state": [8, 21], "static": [16, 18, 20], "staticmap": 20, "staticmap_subdomain": [16, 20], "statist": [2, 6], "stats_workouts_limit": 2, "statu": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "step": 20, "sticki": 16, "still": [16, 18, 19, 20], "stop": [0, 16, 18, 20], "stopped_speed_threshold": [0, 11], "store": [18, 19, 21], "strategi": 20, "strava": 22, "street": [18, 19], "strength": 16, "string": [0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15, 20, 21], "strong": 20, "subdomain": [15, 16, 20], "subject": 20, "success": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "successfulli": 0, "suggest": 18, "sun": [0, 1, 9, 10, 13, 14, 15], "sundai": [12, 15, 18], "suppli": 4, "support": [0, 8, 16, 17, 18, 20, 21, 23], "suspend": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "suspended_at": [0, 1, 7, 10, 14, 15], "suspens": [0, 1, 14, 15, 18, 20], "swim": [16, 18], "swimrun": [16, 18], "switch": 16, "synchron": 22, "syntax": 18, "syslog": 20, "syslogidentifi": 20, "system": [18, 20], "systemd": 20, "t": [0, 16, 23], "t2zeeuxvuy3pla8meeufyk": 1, "tab": 21, "tabl": 16, "taken": [0, 18], "tar": 20, "target": 20, "task": 20, "team": 18, "templat": 16, "term": [16, 20], "test": [16, 20], "text": [0, 1, 10, 14, 15, 18], "text_html": 1, "text_vis": 1, "textarea": 16, "than": [2, 4, 14, 16, 17], "thank": [16, 20, 22], "thei": [15, 18, 20, 21], "them": [16, 18, 19], "theme": [16, 18], "thi": [0, 3, 4, 8, 11, 14, 15, 16, 17, 18, 19, 20], "third": [18, 19, 21], "those": 4, "thovi98": 16, "threshold": [0, 16, 18], "thu": [5, 8, 14], "thunderforest": [16, 20], "tile": [15, 16, 18], "tile_server_url": 20, "time": [0, 12, 15, 16, 18], "timelin": [6, 16, 18], "timeout": [20, 23], "timezon": [0, 15, 16, 18], "titl": [13, 14, 15, 16, 18], "tl": [16, 20], "token": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "token_typ": 8, "too": [0, 15], "tool": [16, 18, 19, 20], "tooltip": [16, 18], "total": [0, 4, 5, 7, 8, 10, 12, 14, 16, 18], "total_asc": [0, 12], "total_dist": [0, 4, 5, 12, 14], "total_dur": [0, 4, 5, 12, 14], "total_mov": 4, "total_workout": 12, "track": [16, 19], "tracke": 20, "trail": [16, 18], "trainer": [3, 18], "transport": [11, 16, 18], "traxi": 16, "trekk": [16, 18], "troubleshoot": 19, "true": [0, 1, 2, 3, 4, 7, 8, 10, 11, 14, 15, 16, 20], "truncat": 15, "try": [0, 1, 3, 4, 7, 11, 13, 14, 15], "tue": [4, 15], "two": 17, "type": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "typescript": 20, "typo": 16, "u": 20, "uberspac": 20, "ubuntu": 20, "ui": 16, "ui_url": 20, "unauthent": 18, "unauthor": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "unblock": 14, "unchang": 18, "uncom": 20, "under": [19, 20], "underscor": 0, "undo": [1, 14, 15], "unencrypt": 20, "unfilt": 0, "unfollow": [14, 18], "uniqu": [8, 21], "unit": [0, 16, 20], "unless": 4, "unlik": 18, "unread": [7, 18], "unresolv": [10, 18], "unstabl": [19, 20], "unwant": [16, 18], "up": [16, 18, 19, 20], "updat": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15, 16, 18, 20], "updated_at": [0, 10, 14], "upgrad": 16, "upload": [2, 16, 17, 18, 20, 22, 24], "upload_dir": 20, "upload_fold": [20, 23], "uploads_dir_s": 12, "uri": 16, "url": [0, 8, 16, 18, 20, 21, 23], "urtzai": 16, "us": [0, 4, 5, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21], "usag": [17, 20], "use_dark_mod": 0, "use_raw_gpx_spe": 0, "user": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 21], "user_id": [0, 4], "user_nam": [5, 12, 14], "user_suspens": [0, 10], "user_unsuspens": 10, "user_warn": 10, "usernam": [0, 1, 5, 7, 10, 12, 14, 15, 16, 17, 18, 20], "util": 20, "uuid": [15, 16], "v0": [16, 20], "v2": 20, "v3": 19, "valid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23], "valu": [0, 4, 8, 9, 10, 13, 14, 15, 16, 18, 20, 21, 23], "variabl": [16, 23], "variou": 16, "venv": 20, "verifi": [8, 21], "version": [2, 17, 18, 20, 21], "via": [14, 18, 20], "view": [16, 18, 20], "violat": 18, "virtual": [16, 18], "virtualenv": [16, 20], "visibl": [0, 1, 13, 14, 15, 16, 18], "visual": [18, 20], "visualcross": 16, "vite_app_api_url": 20, "volum": 20, "voodoopt": 16, "vtt": 15, "vue": [16, 20], "vue3": 20, "vue_app_api_url": 20, "vuex": 20, "w": 16, "wa": [0, 4, 10, 16, 18, 20], "wai": [18, 20], "walk": [11, 16, 18], "want": 20, "wantedbi": 20, "warn": [15, 16, 18, 20], "water": [16, 18], "weather": [16, 18], "weather_api": 20, "weather_api_kei": 20, "weather_api_provid": [16, 20], "weather_end": [13, 14, 15], "weather_provid": 2, "weather_start": [13, 14, 15], "web": [0, 19, 20, 21], "weblat": [16, 18], "websit": 8, "wed": [0, 7, 10, 14, 15], "week": [0, 12, 16, 18], "weekend": 16, "weekm": [0, 12], "were": 16, "wget": 20, "when": [0, 1, 2, 14, 15, 16, 17, 18, 20], "where": 20, "whether": 4, "which": [0, 18], "while": 18, "white": 16, "who": 18, "whose": [18, 21], "why": 10, "wind": [16, 18], "window": 20, "with_analysi": 15, "with_follow": 14, "with_gpx": [13, 14, 15], "with_hidden_us": 14, "with_inact": 14, "with_suspend": 14, "without": [0, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 19], "wjgtwtqfpnprhyak5ex9pw": 1, "work": 20, "worker": [16, 17, 20, 23], "workers_process": 20, "workflow": 16, "workingdirectori": 20, "workout": [0, 1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 22, 24], "workout_d": [0, 9, 13, 14, 15], "workout_id": [0, 1, 9, 10, 13, 14, 15], "workout_short_id": [1, 15], "workout_suspens": [10, 14], "workout_unsuspens": 10, "workout_vis": [14, 15], "workouts_count": [4, 14], "workouts_vis": [0, 14], "write": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 14, 15, 18, 21], "written": 20, "www": [2, 20], "x": [0, 15, 16, 20, 21], "xmgz": 16, "xml": 15, "xxxx": 20, "xzf": 20, "y": [0, 12, 15, 20], "yarn": 20, "year": [12, 18], "yet": [16, 19], "yml": 20, "you": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20], "your": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "yyyi": 0, "z": [15, 20], "z2ze5qzrnmvmndejpphask": 10, "zero": [0, 16, 18], "zip": [0, 2, 15, 16, 18], "zone": 0, "zoom": 15}, "titles": ["Authentication and account", "Comments", "Configuration", "Equipment Types", "Equipments", "Follow requests", "API documentation", "Notifications", "OAuth2", "Records", "Reports", "Sports", "Statistics", "Timeline", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "titleterms": {"0": [16, 21], "01": 16, "02": 16, "03": 16, "04": 16, "05": 16, "06": 16, "07": 16, "08": 16, "09": 16, "0b1": 16, "0b2": 16, "0b3": 16, "0b4": 16, "1": 16, "10": 16, "11": 16, "12": 16, "13": 16, "14": 16, "15": 16, "16": 16, "17": 16, "18": 16, "19": 16, "2": [16, 21], "20": 16, "2018": 16, "2019": 16, "2020": 16, "2021": 16, "2022": 16, "2023": 16, "2024": 16, "21": 16, "22": 16, "23": 16, "24": 16, "25": 16, "26": 16, "27": 16, "28": 16, "29": 16, "3": 16, "30": 16, "31": 16, "32": 16, "4": 16, "5": 16, "6": 16, "7": 16, "8": 16, "9": 16, "about": 18, "account": [0, 18], "administr": [16, 18, 23], "api": [6, 20], "app": 18, "applic": 18, "ar": 23, "authent": 0, "avail": 16, "bug": 16, "chang": 16, "clean": 17, "clean_arch": 17, "clean_token": 17, "close": 16, "command": 17, "comment": [1, 18], "configur": [2, 18], "content": 19, "creat": 17, "dashboard": 18, "data": 20, "databas": 17, "db": 17, "depend": 20, "deploy": 20, "detail": [18, 23], "dev": 20, "develop": 20, "directori": 18, "displai": 23, "docker": 20, "document": [6, 16], "download": 23, "drop": 17, "email": 20, "endpoint": 6, "enhanc": 16, "environ": 20, "equip": [3, 4, 18], "export_arch": 17, "fail": 23, "featur": [16, 18], "file": 23, "first": 16, "fittracke": [16, 19, 23], "fix": 16, "flow": 21, "follow": 5, "french": 16, "from": 20, "ftcli": 17, "i": 23, "imag": 23, "import": 22, "improv": 16, "instal": [20, 22], "interact": 18, "interfac": 17, "issu": 16, "like": 18, "limit": 20, "line": 17, "list": 18, "log": 16, "main": 20, "map": [20, 23], "minor": 16, "misc": 16, "moder": 18, "new": 16, "nixo": 20, "notif": [7, 18], "oauth": [18, 21], "oauth2": [8, 17], "parti": 22, "polici": 18, "prefer": 18, "prerequisit": 20, "privaci": 18, "prod": 20, "product": 20, "pull": 16, "pypi": [16, 20], "rate": 20, "record": 9, "releas": 16, "report": 10, "request": [5, 16], "resourc": 21, "scope": 21, "screenshot": 18, "script": 22, "secur": 16, "server": 20, "shown": 23, "sourc": 20, "sport": [11, 18], "start": 23, "statist": [12, 16, 18], "tabl": 19, "third": 22, "tile": 20, "timelin": 13, "tool": 22, "translat": [16, 18], "troubleshoot": 24, "type": [3, 18], "updat": 17, "upgrad": [17, 20], "upload": 23, "user": [14, 17, 18], "variabl": 20, "version": 16, "weather": 20, "workout": [15, 18, 23], "yunohost": 20}}) \ No newline at end of file +Search.setIndex({"alltitles": {"API documentation": [[6, null]], "API rate limits": [[20, "api-rate-limits"]], "About": [[18, "about"]], "Account & preferences": [[18, "account-preferences"]], "Administration": [[18, "administration"], [18, "id8"]], "Administrator": [[23, null]], "Application": [[18, "application"]], "Authentication and account": [[0, null]], "Bugs Fixed": [[16, "bugs-fixed"], [16, "id2"], [16, "id5"], [16, "id8"], [16, "id10"], [16, "id12"], [16, "id20"], [16, "id23"], [16, "id26"], [16, "id31"], [16, "id37"], [16, "id42"], [16, "id46"], [16, "id49"], [16, "id51"], [16, "id55"], [16, "id59"], [16, "id63"], [16, "id66"], [16, "id69"], [16, "id72"], [16, "id73"], [16, "id76"], [16, "id78"], [16, "id80"], [16, "id83"], [16, "id86"], [16, "id94"], [16, "id97"], [16, "id100"], [16, "id103"], [16, "id115"], [16, "id120"], [16, "id122"], [16, "id126"], [16, "id129"], [16, "id132"], [16, "id134"], [16, "id137"], [16, "id140"], [16, "id142"], [16, "id145"], [16, "id148"], [16, "id151"], [16, "id156"], [16, "id158"], [16, "id160"], [16, "id162"], [16, "id165"], [16, "id167"], [16, "id173"], [16, "id176"], [16, "id178"], [16, "id180"], [16, "id187"], [16, "id192"], [16, "id194"], [16, "id196"], [16, "id199"], [16, "id201"], [16, "id203"], [16, "id207"], [16, "id217"], [16, "id220"], [16, "id222"], [16, "id225"], [16, "id232"]], "Change log": [[16, null]], "Command line interface": [[17, null]], "Comments": [[1, null], [18, "comments"]], "Configuration": [[2, null], [18, "configuration"]], "Dashboard": [[18, "dashboard"], [18, "id4"]], "Database": [[17, "database"]], "Deployment": [[20, "deployment"]], "Dev environment": [[20, "dev-environment"], [20, "id5"]], "Development": [[20, "development"]], "Docker": [[20, "docker"], [20, "id6"]], "Documentation": [[16, "documentation"], [16, "id90"], [16, "id124"]], "Emails": [[20, "emails"]], "Endpoints:": [[6, null]], "Environment variables": [[20, "environment-variables"]], "Equipment Types": [[3, null], [18, "equipment-types"]], "Equipments": [[4, null], [18, "equipments"], [18, "id6"]], "Failed to upload or download files": [[23, "failed-to-upload-or-download-files"]], "Features": [[16, "features"], [16, "id144"], [16, "id154"], [16, "id164"], [18, null]], "Features and enhancements": [[16, "features-and-enhancements"], [16, "id1"], [16, "id4"], [16, "id7"], [16, "id11"], [16, "id16"], [16, "id19"], [16, "id25"], [16, "id30"], [16, "id34"], [16, "id41"], [16, "id45"], [16, "id54"], [16, "id58"], [16, "id62"], [16, "id65"], [16, "id82"], [16, "id85"], [16, "id93"], [16, "id96"], [16, "id102"], [16, "id107"], [16, "id109"], [16, "id111"], [16, "id114"], [16, "id125"], [16, "id131"]], "FitTrackee": [[19, null]], "FitTrackee fails to start": [[23, "fittrackee-fails-to-start"]], "Flow": [[21, "flow"]], "Follow requests": [[5, null]], "From PyPI": [[20, "from-pypi"], [20, "id3"]], "From sources": [[20, "from-sources"], [20, "id4"]], "Import tools": [[22, "import-tools"]], "Installation": [[20, null], [20, "id2"]], "Installation scripts": [[22, "installation-scripts"]], "Interactions": [[18, "interactions"]], "Issues Closed": [[16, "issues-closed"], [16, "id136"], [16, "id139"], [16, "id143"], [16, "id147"], [16, "id150"], [16, "id153"], [16, "id155"], [16, "id159"], [16, "id161"], [16, "id163"], [16, "id168"], [16, "id172"], [16, "id175"], [16, "id177"], [16, "id179"], [16, "id181"], [16, "id183"], [16, "id185"], [16, "id190"], [16, "id193"], [16, "id195"], [16, "id198"], [16, "id200"], [16, "id202"], [16, "id205"], [16, "id209"], [16, "id211"], [16, "id213"], [16, "id216"], [16, "id218"], [16, "id221"], [16, "id223"], [16, "id227"], [16, "id230"], [16, "id233"]], "Likes": [[18, "likes"]], "Main dependencies": [[20, "main-dependencies"]], "Map images are not displayed but map is shown in Workout detail": [[23, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Map tile server": [[20, "map-tile-server"]], "Misc": [[16, "misc"], [16, "id3"], [16, "id9"], [16, "id13"], [16, "id15"], [16, "id18"], [16, "id22"], [16, "id29"], [16, "id33"], [16, "id36"], [16, "id40"], [16, "id44"], [16, "id48"], [16, "id53"], [16, "id57"], [16, "id61"], [16, "id68"], [16, "id71"], [16, "id75"], [16, "id77"], [16, "id81"], [16, "id88"], [16, "id91"], [16, "id99"], [16, "id106"], [16, "id117"], [16, "id119"], [16, "id135"], [16, "id149"], [16, "id152"], [16, "id169"], [16, "id171"], [16, "id188"], [16, "id197"], [16, "id204"], [16, "id208"], [16, "id215"], [16, "id226"], [16, "id229"]], "Moderation": [[18, "moderation"]], "New Features": [[16, "new-features"], [16, "id182"], [16, "id184"], [16, "id186"], [16, "id191"], [16, "id206"], [16, "id210"], [16, "id212"], [16, "id214"], [16, "id219"], [16, "id224"], [16, "id228"], [16, "id231"], [16, "id234"]], "NixOS": [[20, "nixos"]], "Notifications": [[7, null], [18, "notifications"], [18, "id7"]], "OAuth 2.0": [[21, null]], "OAuth Apps": [[18, "oauth-apps"]], "OAuth2": [[8, null], [17, "oauth2"]], "Prerequisites": [[20, "prerequisites"]], "Privacy policy": [[18, "privacy-policy"]], "Prod environment": [[20, "prod-environment"]], "Production": [[20, "production"]], "Production environment": [[20, "production-environment"]], "Pull Requests": [[16, "pull-requests"], [16, "id138"], [16, "id141"], [16, "id157"], [16, "id166"], [16, "id170"], [16, "id174"], [16, "id189"]], "Records": [[9, null]], "Reports": [[10, null]], "Resources": [[21, "resources"]], "Scopes": [[21, "scopes"]], "Screenshots": [[18, "screenshots"]], "Security": [[16, "security"]], "Sports": [[11, null], [18, "sports"], [18, "id3"]], "Statistics": [[12, null], [18, "statistics"], [18, "id5"]], "Table of contents": [[19, "table-of-contents"]], "Third-party tools": [[22, null]], "Timeline": [[13, null]], "Translations": [[16, "translations"], [16, "id6"], [16, "id14"], [16, "id17"], [16, "id21"], [16, "id24"], [16, "id27"], [16, "id28"], [16, "id32"], [16, "id35"], [16, "id38"], [16, "id39"], [16, "id43"], [16, "id47"], [16, "id50"], [16, "id52"], [16, "id56"], [16, "id60"], [16, "id64"], [16, "id67"], [16, "id70"], [16, "id74"], [16, "id79"], [16, "id84"], [16, "id87"], [16, "id89"], [16, "id92"], [16, "id95"], [16, "id98"], [16, "id101"], [16, "id104"], [16, "id105"], [16, "id108"], [16, "id110"], [16, "id112"], [16, "id113"], [16, "id116"], [16, "id118"], [16, "id121"], [16, "id123"], [16, "id127"], [16, "id128"], [16, "id130"], [16, "id133"], [16, "id146"], [18, "translations"]], "Troubleshooting": [[24, null]], "Upgrade": [[20, "upgrade"]], "Users": [[14, null], [17, "users"], [18, "users"], [18, "id2"]], "Users directory": [[18, "users-directory"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[16, "version-0-1-0-first-release-2018-07-04"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[16, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.2.0 - Statistics (2019/07/07)": [[16, "version-0-2-0-statistics-2019-07-07"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[16, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[16, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[16, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[16, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[16, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.3.0 - Administration (2020/07/15)": [[16, "version-0-3-0-administration-2020-07-15"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[16, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.4.1 (2020/12/31)": [[16, "version-0-4-1-2020-12-31"]], "Version 0.4.2 (2021/01/03)": [[16, "version-0-4-2-2021-01-03"]], "Version 0.4.3 (2021/01/10)": [[16, "version-0-4-3-2021-01-10"]], "Version 0.4.4 (2021/01/31)": [[16, "version-0-4-4-2021-01-31"]], "Version 0.4.5 (2021/02/17)": [[16, "version-0-4-5-2021-02-17"]], "Version 0.4.6 (2021/02/21)": [[16, "version-0-4-6-2021-02-21"]], "Version 0.4.7 (2021/04/07)": [[16, "version-0-4-7-2021-04-07"]], "Version 0.4.8 (2021/07/03)": [[16, "version-0-4-8-2021-07-03"]], "Version 0.4.9 (2021/07/16)": [[16, "version-0-4-9-2021-07-16"]], "Version 0.5.0 (2021/11/14)": [[16, "version-0-5-0-2021-11-14"]], "Version 0.5.1 (2021/11/30)": [[16, "version-0-5-1-2021-11-30"]], "Version 0.5.2 (2021/12/19)": [[16, "version-0-5-2-2021-12-19"]], "Version 0.5.3 (2022/01/01)": [[16, "version-0-5-3-2022-01-01"]], "Version 0.5.4 (2022/01/01)": [[16, "version-0-5-4-2022-01-01"]], "Version 0.5.5 (2022/01/19)": [[16, "version-0-5-5-2022-01-19"]], "Version 0.5.6 (2022/02/05)": [[16, "version-0-5-6-2022-02-05"]], "Version 0.5.7 (2022/02/13)": [[16, "version-0-5-7-2022-02-13"]], "Version 0.6.0 (2022/03/27)": [[16, "version-0-6-0-2022-03-27"]], "Version 0.6.1 (2022/03/27)": [[16, "version-0-6-1-2022-03-27"]], "Version 0.6.10 (2022/07/13)": [[16, "version-0-6-10-2022-07-13"]], "Version 0.6.11 (2022/07/27)": [[16, "version-0-6-11-2022-07-27"]], "Version 0.6.12 (2022/09/14)": [[16, "version-0-6-12-2022-09-14"]], "Version 0.6.2 (2022/04/03)": [[16, "version-0-6-2-2022-04-03"]], "Version 0.6.3 (2022/04/09)": [[16, "version-0-6-3-2022-04-09"]], "Version 0.6.4 (2022/04/23)": [[16, "version-0-6-4-2022-04-23"]], "Version 0.6.5 (2022/04/24)": [[16, "version-0-6-5-2022-04-24"]], "Version 0.6.6 (2022/05/29)": [[16, "version-0-6-6-2022-05-29"]], "Version 0.6.7 (2022/06/11)": [[16, "version-0-6-7-2022-06-11"]], "Version 0.6.8 (2022/06/22)": [[16, "version-0-6-8-2022-06-22"]], "Version 0.6.9 (2022/07/03)": [[16, "version-0-6-9-2022-07-03"]], "Version 0.7.0 (2022/09/19)": [[16, "version-0-7-0-2022-09-19"]], "Version 0.7.1 (2022/09/21)": [[16, "version-0-7-1-2022-09-21"]], "Version 0.7.10 (2022/12/21)": [[16, "version-0-7-10-2022-12-21"]], "Version 0.7.11 (2022/12/31)": [[16, "version-0-7-11-2022-12-31"]], "Version 0.7.12 (2023/02/16)": [[16, "version-0-7-12-2023-02-16"]], "Version 0.7.13 (2023/03/05)": [[16, "version-0-7-13-2023-03-05"]], "Version 0.7.14 (2023/03/08)": [[16, "version-0-7-14-2023-03-08"]], "Version 0.7.15 (2023/04/12)": [[16, "version-0-7-15-2023-04-12"]], "Version 0.7.16 (2023/05/29)": [[16, "version-0-7-16-2023-05-29"]], "Version 0.7.17 (2023/06/03)": [[16, "version-0-7-17-2023-06-03"]], "Version 0.7.18 (2023/06/25)": [[16, "version-0-7-18-2023-06-25"]], "Version 0.7.19 (2023/07/15)": [[16, "version-0-7-19-2023-07-15"]], "Version 0.7.2 (2022/09/21)": [[16, "version-0-7-2-2022-09-21"]], "Version 0.7.20 (2023/07/22)": [[16, "version-0-7-20-2023-07-22"]], "Version 0.7.21 (2023/07/30)": [[16, "version-0-7-21-2023-07-30"]], "Version 0.7.22 (2023/08/23)": [[16, "version-0-7-22-2023-08-23"]], "Version 0.7.23 (2023/09/14)": [[16, "version-0-7-23-2023-09-14"]], "Version 0.7.24 (2023/10/04)": [[16, "version-0-7-24-2023-10-04"]], "Version 0.7.25 (2023/10/08)": [[16, "version-0-7-25-2023-10-08"]], "Version 0.7.26 (2023/11/19)": [[16, "version-0-7-26-2023-11-19"]], "Version 0.7.27 (2023/12/20)": [[16, "version-0-7-27-2023-12-20"]], "Version 0.7.28 (2023/12/23)": [[16, "version-0-7-28-2023-12-23"]], "Version 0.7.29 (2024/01/06)": [[16, "version-0-7-29-2024-01-06"]], "Version 0.7.3 (2022/11/01)": [[16, "version-0-7-3-2022-11-01"]], "Version 0.7.30 (2024/02/04)": [[16, "version-0-7-30-2024-02-04"]], "Version 0.7.31 (2024/02/10)": [[16, "version-0-7-31-2024-02-10"]], "Version 0.7.32 (2024/03/10)": [[16, "version-0-7-32-2024-03-10"]], "Version 0.7.4 (2022/11/05)": [[16, "version-0-7-4-2022-11-05"]], "Version 0.7.5 (2022/11/09)": [[16, "version-0-7-5-2022-11-09"]], "Version 0.7.6 (2022/11/09)": [[16, "version-0-7-6-2022-11-09"]], "Version 0.7.7 (2022/11/27)": [[16, "version-0-7-7-2022-11-27"]], "Version 0.7.8 (2022/11/30)": [[16, "version-0-7-8-2022-11-30"]], "Version 0.7.9 (2022/12/11)": [[16, "version-0-7-9-2022-12-11"]], "Version 0.8.0 (2024/04/21)": [[16, "version-0-8-0-2024-04-21"]], "Version 0.8.1 (2024/05/01)": [[16, "version-0-8-1-2024-05-01"]], "Version 0.8.10 (2024/10/09)": [[16, "version-0-8-10-2024-10-09"]], "Version 0.8.11 (2024/10/30)": [[16, "version-0-8-11-2024-10-30"]], "Version 0.8.12 (2024/11/17)": [[16, "version-0-8-12-2024-11-17"]], "Version 0.8.13 (2024/12/29)": [[16, "version-0-8-13-2024-12-29"]], "Version 0.8.2 (2024/05/08)": [[16, "version-0-8-2-2024-05-08"]], "Version 0.8.3 (2024/05/09)": [[16, "version-0-8-3-2024-05-09"]], "Version 0.8.4 (2024/05/22)": [[16, "version-0-8-4-2024-05-22"]], "Version 0.8.5 (2024/06/29)": [[16, "version-0-8-5-2024-06-29"]], "Version 0.8.6 (2024/08/03)": [[16, "version-0-8-6-2024-08-03"]], "Version 0.8.7 (2024/08/25)": [[16, "version-0-8-7-2024-08-25"]], "Version 0.8.8 (2024/09/01)": [[16, "version-0-8-8-2024-09-01"]], "Version 0.8.9 (2024/09/21)": [[16, "version-0-8-9-2024-09-21"]], "Version 0.9.0b1 (2024/12/14)": [[16, "version-0-9-0b1-2024-12-14"]], "Version 0.9.0b2 (2024/12/14)": [[16, "version-0-9-0b2-2024-12-14"]], "Version 0.9.0b3 (2024/12/18)": [[16, "version-0-9-0b3-2024-12-18"]], "Version 0.9.0b4 (2024/12/23)": [[16, "version-0-9-0b4-2024-12-23"]], "Version 0.9.0b5 (2024/12/30)": [[16, "version-0-9-0b5-2024-12-30"]], "Version 0.9.0b6 (2025/01/05)": [[16, "version-0-9-0b6-2025-01-05"]], "Weather data": [[20, "weather-data"]], "Workout detail": [[18, "workout-detail"]], "Workouts": [[15, null], [18, "workouts"], [18, "id1"]], "Workouts list": [[18, "workouts-list"]], "Yunohost": [[20, "yunohost"]], "ftcli db drop": [[17, "ftcli-db-drop"]], "ftcli db upgrade": [[17, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[17, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[17, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[17, "ftcli-users-clean-tokens"]], "ftcli users create": [[17, "ftcli-users-create"]], "ftcli users export_archives": [[17, "ftcli-users-export-archives"]], "ftcli users update": [[17, "ftcli-users-update"]]}, "docnames": ["api/auth", "api/comments", "api/configuration", "api/equipment_types", "api/equipments", "api/follow_requests", "api/index", "api/notifications", "api/oauth2", "api/records", "api/reports", "api/sports", "api/stats", "api/timeline", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/auth.rst", "api/comments.rst", "api/configuration.rst", "api/equipment_types.rst", "api/equipments.rst", "api/follow_requests.rst", "api/index.rst", "api/notifications.rst", "api/oauth2.rst", "api/records.rst", "api/reports.rst", "api/sports.rst", "api/stats.rst", "api/timeline.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "indexentries": {"api_rate_limits": [[20, "envvar-API_RATE_LIMITS", false]], "app_log": [[20, "envvar-APP_LOG", false]], "app_port": [[20, "envvar-APP_PORT", false]], "app_secret_key": [[20, "envvar-APP_SECRET_KEY", false]], "app_settings": [[20, "envvar-APP_SETTINGS", false]], "app_workers": [[20, "envvar-APP_WORKERS", false]], "database_dir": [[20, "envvar-DATABASE_DIR", false]], "database_disable_pooling": [[20, "envvar-DATABASE_DISABLE_POOLING", false]], "database_url": [[20, "envvar-DATABASE_URL", false]], "default_staticmap": [[20, "envvar-DEFAULT_STATICMAP", false]], "email_url": [[20, "envvar-EMAIL_URL", false]], "environment variable": [[20, "envvar-API_RATE_LIMITS", false], [20, "envvar-APP_LOG", false], [20, "envvar-APP_PORT", false], [20, "envvar-APP_SECRET_KEY", false], [20, "envvar-APP_SETTINGS", false], [20, "envvar-APP_WORKERS", false], [20, "envvar-DATABASE_DIR", false], [20, "envvar-DATABASE_DISABLE_POOLING", false], [20, "envvar-DATABASE_URL", false], [20, "envvar-DEFAULT_STATICMAP", false], [20, "envvar-EMAIL_URL", false], [20, "envvar-FLASK_APP", false], [20, "envvar-HOST", false], [20, "envvar-LOG_DIR", false], [20, "envvar-MAP_ATTRIBUTION", false], [20, "envvar-PORT", false], [20, "envvar-POSTGRES_DB", false], [20, "envvar-POSTGRES_PASSWORD", false], [20, "envvar-POSTGRES_USER", false], [20, "envvar-REDIS_DIR", false], [20, "envvar-REDIS_URL", false], [20, "envvar-SENDER_EMAIL", false], [20, "envvar-STATICMAP_SUBDOMAINS", false], [20, "envvar-TILE_SERVER_URL", false], [20, "envvar-UI_URL", false], [20, "envvar-UPLOAD_DIR", false], [20, "envvar-UPLOAD_FOLDER", false], [20, "envvar-VITE_APP_API_URL", false], [20, "envvar-WEATHER_API_KEY", false], [20, "envvar-WEATHER_API_PROVIDER", false], [20, "envvar-WORKERS_PROCESSES", false]], "flask_app": [[20, "envvar-FLASK_APP", false]], "host": [[20, "envvar-HOST", false]], "log_dir": [[20, "envvar-LOG_DIR", false]], "map_attribution": [[20, "envvar-MAP_ATTRIBUTION", false]], "port": [[20, "envvar-PORT", false]], "postgres_db": [[20, "envvar-POSTGRES_DB", false]], "postgres_password": [[20, "envvar-POSTGRES_PASSWORD", false]], "postgres_user": [[20, "envvar-POSTGRES_USER", false]], "redis_dir": [[20, "envvar-REDIS_DIR", false]], "redis_url": [[20, "envvar-REDIS_URL", false]], "sender_email": [[20, "envvar-SENDER_EMAIL", false]], "staticmap_subdomains": [[20, "envvar-STATICMAP_SUBDOMAINS", false]], "tile_server_url": [[20, "envvar-TILE_SERVER_URL", false]], "ui_url": [[20, "envvar-UI_URL", false]], "upload_dir": [[20, "envvar-UPLOAD_DIR", false]], "upload_folder": [[20, "envvar-UPLOAD_FOLDER", false]], "vite_app_api_url": [[20, "envvar-VITE_APP_API_URL", false]], "weather_api_key": [[20, "envvar-WEATHER_API_KEY", false]], "weather_api_provider \ud83c\udd95": [[20, "envvar-WEATHER_API_PROVIDER", false]], "workers_processes": [[20, "envvar-WORKERS_PROCESSES", false]]}, "objects": {"": [[10, 0, 1, "patch--api-appeals-(string-appeal_id)", "/api/appeals/(string:appeal_id)"], [0, 1, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 2, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 2, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 1, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 1, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 1, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 2, 1, "get--api-auth-account-sanctions-(string-action_short_id)", "/api/auth/account/sanctions/(string:action_short_id)"], [0, 1, 1, "post--api-auth-account-sanctions-(string-action_short_id)-appeal", "/api/auth/account/sanctions/(string:action_short_id)/appeal"], [0, 2, 1, "get--api-auth-account-suspension", "/api/auth/account/suspension"], [0, 1, 1, "post--api-auth-account-suspension-appeal", "/api/auth/account/suspension/appeal"], [0, 2, 1, "get--api-auth-blocked-users", "/api/auth/blocked-users"], [0, 1, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 1, 1, "post--api-auth-login", "/api/auth/login"], [0, 1, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 1, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 1, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 3, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 1, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 0, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 1, 1, "post--api-auth-profile-edit-notifications", "/api/auth/profile/edit/notifications"], [0, 1, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 1, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 3, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 1, 1, "post--api-auth-register", "/api/auth/register"], [1, 3, 1, "delete--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 2, 1, "get--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 0, 1, "patch--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like", "/api/comments/(string:comment_short_id)/like"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like-undo", "/api/comments/(string:comment_short_id)/like/undo"], [1, 2, 1, "get--api-comments-(string-comment_short_id)-likes", "/api/comments/(string:comment_short_id)/likes"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-suspension-appeal", "/api/comments/(string:comment_short_id)/suspension/appeal"], [2, 2, 1, "get--api-config", "/api/config"], [2, 0, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-equipment-types", "/api/equipment-types"], [3, 2, 1, "get--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [3, 0, 1, "patch--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [4, 2, 1, "get--api-equipments", "/api/equipments"], [4, 1, 1, "post--api-equipments", "/api/equipments"], [4, 3, 1, "delete--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 2, 1, "get--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 0, 1, "patch--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 1, 1, "post--api-equipments-(string-equipment_short_id)-refresh", "/api/equipments/(string:equipment_short_id)/refresh"], [5, 2, 1, "get--api-follow-requests", "/api/follow-requests"], [5, 1, 1, "post--api-follow-requests-(user_name)-accept", "/api/follow-requests/(user_name)/accept"], [5, 1, 1, "post--api-follow-requests-(user_name)-reject", "/api/follow-requests/(user_name)/reject"], [7, 2, 1, "get--api-notifications", "/api/notifications"], [7, 0, 1, "patch--api-notifications-(string-notification_id)", "/api/notifications/(string:notification_id)"], [7, 1, 1, "post--api-notifications-mark-all-as-read", "/api/notifications/mark-all-as-read"], [7, 2, 1, "get--api-notifications-types", "/api/notifications/types"], [7, 2, 1, "get--api-notifications-unread", "/api/notifications/unread"], [8, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [8, 1, 1, "post--api-oauth-apps", "/api/oauth/apps"], [8, 3, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [8, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [8, 1, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [8, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [8, 1, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [8, 1, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [8, 1, 1, "post--api-oauth-token", "/api/oauth/token"], [2, 2, 1, "get--api-ping", "/api/ping"], [9, 2, 1, "get--api-records", "/api/records"], [10, 2, 1, "get--api-reports", "/api/reports"], [10, 1, 1, "post--api-reports", "/api/reports"], [10, 2, 1, "get--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 0, 1, "patch--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 1, 1, "post--api-reports-(int-report_id)-actions", "/api/reports/(int:report_id)/actions"], [10, 2, 1, "get--api-reports-unresolved", "/api/reports/unresolved"], [11, 2, 1, "get--api-sports", "/api/sports"], [11, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [11, 0, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [12, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [12, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [12, 2, 1, "get--api-stats-all", "/api/stats/all"], [13, 2, 1, "get--api-timeline", "/api/timeline"], [14, 2, 1, "get--api-users", "/api/users"], [14, 3, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [14, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [14, 0, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [14, 1, 1, "post--api-users-(user_name)-block", "/api/users/(user_name)/block"], [14, 1, 1, "post--api-users-(user_name)-follow", "/api/users/(user_name)/follow"], [14, 2, 1, "get--api-users-(user_name)-followers", "/api/users/(user_name)/followers"], [14, 2, 1, "get--api-users-(user_name)-following", "/api/users/(user_name)/following"], [14, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [14, 2, 1, "get--api-users-(user_name)-sanctions", "/api/users/(user_name)/sanctions"], [14, 1, 1, "post--api-users-(user_name)-unblock", "/api/users/(user_name)/unblock"], [14, 1, 1, "post--api-users-(user_name)-unfollow", "/api/users/(user_name)/unfollow"], [14, 2, 1, "get--api-users-(user_name)-workouts", "/api/users/(user_name)/workouts"], [15, 2, 1, "get--api-workouts", "/api/workouts"], [15, 1, 1, "post--api-workouts", "/api/workouts"], [15, 3, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 0, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [1, 2, 1, "get--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [1, 1, 1, "post--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like", "/api/workouts/(string:workout_short_id)/like"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like-undo", "/api/workouts/(string:workout_short_id)/like/undo"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-likes", "/api/workouts/(string:workout_short_id)/likes"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-suspension-appeal", "/api/workouts/(string:workout_short_id)/suspension/appeal"], [15, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [15, 1, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [20, 4, 1, "-", "API_RATE_LIMITS"], [20, 4, 1, "-", "APP_LOG"], [20, 4, 1, "-", "APP_PORT"], [20, 4, 1, "-", "APP_SECRET_KEY"], [20, 4, 1, "-", "APP_SETTINGS"], [20, 4, 1, "-", "APP_WORKERS"], [20, 4, 1, "-", "DATABASE_DIR"], [20, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [20, 4, 1, "-", "DATABASE_URL"], [20, 4, 1, "-", "DEFAULT_STATICMAP"], [20, 4, 1, "-", "EMAIL_URL"], [20, 4, 1, "-", "FLASK_APP"], [20, 4, 1, "-", "HOST"], [20, 4, 1, "-", "LOG_DIR"], [20, 4, 1, "-", "MAP_ATTRIBUTION"], [20, 4, 1, "-", "PORT"], [20, 4, 1, "-", "POSTGRES_DB"], [20, 4, 1, "-", "POSTGRES_PASSWORD"], [20, 4, 1, "-", "POSTGRES_USER"], [20, 4, 1, "-", "REDIS_DIR"], [20, 4, 1, "-", "REDIS_URL"], [20, 4, 1, "-", "SENDER_EMAIL"], [20, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [20, 4, 1, "-", "TILE_SERVER_URL"], [20, 4, 1, "-", "UI_URL"], [20, 4, 1, "-", "UPLOAD_DIR"], [20, 4, 1, "-", "UPLOAD_FOLDER"], [20, 4, 1, "-", "VITE_APP_API_URL"], [20, 4, 1, "-", "WEATHER_API_KEY"], [20, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [20, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[15, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objnames": {"0": ["http", "patch", "HTTP patch"], "1": ["http", "post", "HTTP post"], "2": ["http", "get", "HTTP get"], "3": ["http", "delete", "HTTP delete"], "4": ["std", "envvar", "environment variable"]}, "objtypes": {"0": "http:patch", "1": "http:post", "2": "http:get", "3": "http:delete", "4": "std:envvar"}, "terms": {"": [4, 15, 16, 18, 20], "0": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "00": [0, 1, 4, 5, 9, 13, 14, 15], "000": 18, "000000": 0, "01": [0, 1, 9, 10, 12, 13, 14, 15], "02": [5, 14, 15], "03": [14, 15], "04": [0, 7, 10, 13, 14, 15], "06": [4, 7, 8, 12, 14], "0667062": 8, "06ba975": 16, "07": [0, 7, 9, 13, 14, 15], "075aeb9": 16, "08": [0, 4, 7, 9, 13, 14, 15], "09": [0, 1, 7, 10, 14, 15], "0b6": 2, "0mb": [0, 15], "1": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "10": [0, 1, 2, 4, 5, 7, 9, 13, 14, 15, 18, 20], "100": [15, 16, 18], "1000": 12, "10000": [2, 15], "101": [12, 16], "104": [15, 16], "1048576": 2, "10485760": 2, "106": 16, "109": 16, "10mb": 18, "11": [0, 9, 14, 15, 18, 20], "112": 16, "113": 16, "115": 16, "116": 16, "12": [0, 9, 10, 14, 15, 20, 22], "121": 16, "123": 16, "1232004": 15, "12341": 12, "1234538": 15, "1239": 7, "125": 16, "126": 16, "1267": 12, "127": [16, 20], "129": 16, "12fb835fa26c": 7, "13": [0, 1, 9, 13, 14, 15, 17, 18, 20], "131": 16, "134": 16, "135": 16, "1375986": 16, "138": 16, "14": [0, 1, 8, 13, 14, 15], "140": 16, "145": 16, "146": 16, "149": 16, "15": [12, 15, 17, 18, 20], "150": 12, "151": 16, "152": 16, "155": 16, "156": [12, 16], "1563529507772": 15, "158": 15, "16": [1, 12, 14, 15, 18], "160": 16, "161": 16, "162": 16, "1658660147": 8, "167": 16, "169": 16, "17": [0, 5, 10, 13, 14, 15], "171": 16, "173": 16, "174240": 16, "175": 16, "177": 16, "178": [12, 16], "18": [0, 9, 10, 14, 15, 18, 20], "180": 16, "189071": 16, "19": [15, 18], "190": 16, "191": 16, "192": 16, "193": 16, "195": 16, "196": 16, "197": 16, "1m": 20, "1mb": [18, 20], "2": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "20": [14, 15, 18], "200": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "201": [0, 1, 4, 10, 15, 16], "2016": 15, "2017": [1, 12, 14, 15], "2018": [12, 13, 14, 15], "2019": [0, 9, 12, 13, 14, 15], "2021": [5, 14], "2022": 8, "2023": [0, 4, 14, 20], "2024": [0, 1, 7, 10, 14, 15], "203": 12, "204": [0, 1, 4, 8, 14, 15], "208": [15, 16], "209": 16, "21": [4, 10], "210": 16, "212": 16, "213": 16, "22": 15, "223": 16, "224": 16, "225": 16, "23": [15, 20], "230": 16, "231": [15, 16], "232": 16, "234": 15, "236": 16, "237": 16, "239": 16, "24": [1, 15, 20], "241": 16, "242": 16, "244": 16, "246": 16, "247": 16, "25": [10, 15, 20], "250": 16, "252": 16, "255": 15, "257": 16, "258": 16, "259": 16, "26": [15, 20], "260": 16, "261": 16, "264": 16, "265": 16, "266": 16, "26and": 20, "27": [0, 8, 10, 14, 15, 18], "270": 16, "271": 16, "273": 16, "274": 16, "275": 16, "278": 16, "279": [15, 16], "28": 4, "280": [15, 16], "282": [12, 16], "287": 16, "289": 16, "29": [4, 10], "290": 16, "2930": 15, "294": 16, "296": 16, "297": 16, "298": 16, "299": 16, "2bcff2e": 16, "2e1ee2c": 16, "2e9f9d": 16, "2ordfncv6vprkfp3yrcyht": [1, 15], "2ukrviyshoakg8qsuknus4": 4, "2ule2hwhsnycs2vhbsikb9": 14, "3": [0, 1, 3, 11, 12, 13, 14, 15, 18, 20], "30": [0, 10, 12, 15, 20], "300": 20, "3000": 20, "301": [16, 20], "304": 16, "305": 16, "307": 16, "308": 16, "31": [0, 1, 14, 15, 18, 20], "310": 16, "314": 16, "315": 16, "318": 16, "319": 16, "32": 15, "320": 16, "323": 16, "328": 16, "329": 16, "33": [12, 16], "3320": 12, "333": 16, "338": 16, "34": [1, 16], "34614d5": 16, "35": [0, 7, 15, 16], "350": 16, "351": 16, "352": 16, "354": 16, "356": 16, "357": 16, "358": 16, "359": 16, "36": 16, "365": 16, "366": 16, "367": 16, "369": 16, "37": 16, "370": 16, "371": 16, "374": 16, "375": 16, "376": 16, "377": 16, "38": 10, "380": 16, "381": 16, "382": 16, "3821e37": 16, "384": 16, "386": 16, "388": 16, "39": 15, "390": 16, "391": 16, "393": 16, "394": 16, "395": 16, "397": 16, "398": 16, "399": 16, "3aread": 21, "3awrit": 21, "3b6fa25": 16, "3c8d9c2": 16, "3f": 20, "3rd": [15, 21], "4": [0, 3, 11, 12, 13, 14, 15, 17, 18, 20], "40": 16, "400": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 16], "401": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "402": 16, "403": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "404": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "406": 16, "407": 16, "409": 16, "40and": 20, "41": [15, 16], "410": 16, "4109": 15, "411": 16, "413": [0, 15], "415": 16, "416": 16, "417": 16, "418": 16, "42": [15, 16], "421": 16, "422": 16, "426": 16, "427": [15, 16], "428": 16, "43": [0, 9, 13, 14, 15, 16], "431": 16, "433": 16, "435": 15, "436": 16, "438": 16, "44": [14, 15, 16], "441": 16, "443": 20, "444": 16, "449": 16, "44ff": 7, "45": [0, 1, 14, 15], "450": 16, "455": 16, "456": 16, "46": [12, 16], "464": 16, "465": 20, "468": 16, "469": 16, "47": [12, 15, 16], "471": 16, "472": 16, "473": 16, "474": 16, "475": 16, "476": 16, "477": 16, "478": [15, 16], "479": 16, "48": [5, 12, 14], "481": 16, "482": 16, "484": 16, "488": 16, "489": 16, "49": [0, 10, 14], "490": 16, "494": 16, "495": 16, "496": 16, "499": [15, 16], "4c3fc34": 16, "5": [3, 8, 11, 12, 14, 15, 17, 18, 20], "50": [0, 4, 5, 12, 14, 16, 20], "500": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16], "5000": 20, "502": 16, "504": 16, "506": 16, "507": 16, "5078118": 15, "5079733": 15, "508": 16, "51": [13, 14, 15], "510": 16, "511": 16, "512": 16, "517587": 15, "51758b4": 16, "52": [1, 15, 16], "521": 16, "524": 16, "526": 16, "527": 16, "528": 16, "53": [8, 16], "530": 16, "531": 16, "532": 16, "533": 16, "534": 16, "536": 16, "537": 16, "538": 16, "54": 16, "540": 16, "542": 16, "543": 16, "5432": 20, "544": 16, "545": 16, "546": 16, "55": [14, 15], "550": 16, "551": 16, "555": 16, "556": 16, "557": 16, "558": 16, "56": [10, 16], "560627": 15, "563": 16, "564": 16, "565": 16, "566": 16, "57": [15, 16], "571": 16, "575": 16, "58": [0, 14, 16], "582": 16, "583": 16, "587": [16, 20], "588": 16, "59": [12, 14, 15, 16], "590": 16, "591": 16, "592": 16, "593": 16, "595": 16, "598": 16, "6": [0, 3, 4, 11, 14, 15, 17, 18, 20], "60": 16, "600": 16, "603": 16, "604": 16, "607": 16, "608": 16, "609": 16, "60e164d": 16, "61": 16, "610": 16, "612": 16, "613": 12, "614": 16, "616": 16, "617": 16, "618": 16, "62": 16, "620": 16, "621": [15, 16], "622": 16, "624": 16, "625": 16, "626": 16, "628": 16, "629": 16, "63": 15, "631": 16, "633": 16, "634": 16, "635": 16, "636": 16, "637": 16, "639": [16, 17], "64": 16, "640": 16, "645": 16, "651": 16, "652": 16, "655": 16, "657": 16, "659": 16, "66": 16, "660": 16, "662": 16, "664": 16, "666": 16, "667": 16, "668": 16, "67": [0, 12, 14, 16], "671": 16, "673": 16, "674": 16, "675": 16, "677": 16, "678": 16, "6dxczvmrhkar72shuz9pwd": [0, 14], "6e215aa": 16, "6nvxvayoh9zkr8rmxhu54t": 14, "7": [15, 17, 18, 20, 21], "70": 16, "71": 16, "72": 16, "720": 0, "73": 16, "7380": 15, "74": 16, "75": 16, "7641": 12, "78": 12, "79": 16, "7pdujhcvhya4hv29jzqngg": 0, "8": [0, 15, 17, 18, 20, 21], "80": [16, 20], "8025": 20, "81": 16, "82": 16, "83": 16, "84": 16, "85": 16, "864000": 8, "87": 16, "877fa0f": 16, "88": 16, "89": 16, "895": [0, 14], "8aa4cff": 16, "9": [0, 2, 9, 14, 15, 17, 18, 20, 21], "90": 16, "91": 16, "92": 16, "924": 0, "93": 16, "93706": 15, "95": [12, 16], "97": [0, 9, 13, 14, 15, 16], "98": 16, "981933": 15, "99": [12, 16], "9960": 12, "A": [4, 14, 16, 17, 18, 20, 23], "AS": [0, 9, 13, 14, 15], "And": 16, "BY": 20, "For": [12, 15, 18, 20, 21], "If": [0, 4, 8, 12, 14, 15, 16, 17, 18, 20, 21], "In": [16, 18], "It": [0, 1, 14, 15, 16, 18, 19, 21], "NO": [0, 1, 4, 8, 14, 15], "NOT": [0, 3, 4, 8, 11, 15], "No": [0, 1, 4, 8, 14, 15, 16, 19], "Not": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15], "OF": 20, "On": [18, 20], "One": 20, "The": [0, 4, 15, 16, 18, 20, 21, 23], "There": [18, 20], "To": [16, 20, 21], "WITH": 20, "With": [18, 20], "_": [0, 16], "__main__": 20, "_blank": 20, "a012": 7, "a458f5f": 16, "aaron": 21, "abil": 16, "abl": 16, "about": [2, 16, 20, 21], "absolut": [20, 23], "ac075ec36dc25dcc20c270d2005f0398": 15, "accept": [0, 5], "accepted_polici": 0, "accepted_privacy_polici": 0, "access": [0, 3, 4, 8, 11, 12, 14, 16, 18, 20, 21], "access_token": 8, "accord": 18, "account": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22], "account_cr": 0, "action": [10, 16, 18], "action_short_id": 0, "action_typ": [0, 10, 14], "activ": [0, 3, 4, 11, 14, 16, 17, 18, 19, 20], "ad": [0, 4, 15, 16, 17, 18, 20, 21], "adapt": [18, 20], "add": [1, 14, 15, 16, 17, 18, 19, 20], "addit": [14, 16, 18, 20], "address": [0, 18, 20], "admin": [2, 3, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20], "admin_contact": 2, "administr": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 21, 24], "aff4d68": 16, "affect": [10, 16, 18], "after": [0, 8, 14, 16, 18, 20, 21], "again": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "agplv3": 16, "agre": [0, 16, 18], "alert": 16, "all": [3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 20], "allow": [0, 2, 4, 15, 16, 17, 18, 19, 20, 21], "along": 15, "alphanumer": [0, 16], "alpin": 18, "alreadi": [0, 4, 5, 10, 16, 17], "also": [16, 17, 18, 19, 20], "altern": 16, "although": 18, "altitud": [16, 18], "alwai": 20, "amd64": 20, "among": 16, "an": [0, 4, 8, 11, 14, 15, 16, 18, 20, 21, 23], "analysi": [0, 15, 16, 18], "analysis_vis": [0, 15], "analyz": 18, "android": 19, "ani": [4, 15, 20], "anoth": [0, 4, 18, 20], "antialia": 16, "anymor": 16, "anyon": 18, "apach": 19, "api": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21], "api_rate_limit": 20, "apikei": 20, "app": [0, 8, 16, 19, 20, 21], "app_log": 20, "app_port": 20, "app_secret_kei": 20, "app_set": 20, "app_work": 20, "appeal": [0, 1, 10, 14, 15, 18, 20], "appeal_id": 10, "appear": [0, 18], "appli": [17, 18], "applic": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "application_directori": 20, "approv": [0, 10, 14, 16, 18], "apr": 15, "ar": [0, 4, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22, 24], "archiv": [0, 2, 16, 17, 18, 20], "archive_rgjsr3fhr5yp": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "archlinux": 20, "area": 16, "arg": [17, 20], "argument": [4, 17], "arm64": 20, "arrai": [0, 4, 8, 15], "arrow": [16, 18], "asc": [5, 7, 10, 14, 15], "ascent": [0, 9, 13, 14, 15, 16, 18], "asset": 20, "assign": 18, "associ": [0, 4, 8, 15, 16, 18], "astridx": 16, "attribut": [16, 20], "auth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "auth_token": 0, "authent": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 18, 21], "authlib": [8, 20, 21], "author": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 21], "authorization_cod": [8, 21], "autoescap": 16, "automat": [0, 18], "avail": [0, 9, 17, 18, 20, 21, 22], "ave_spe": [13, 14, 15], "ave_speed_from": 15, "ave_speed_to": 15, "averag": [9, 12, 15, 16, 18], "average_asc": 12, "average_desc": 12, "average_dist": 12, "average_dur": 12, "average_spe": 12, "avoid": [16, 18], "awesom": 20, "axi": [15, 16, 18], "b": 20, "b1536fc": 16, "b29ed7a": 16, "b748459": 16, "b862a77": 16, "back": 17, "background": 16, "backup": 20, "backward": 20, "bad": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15], "base": 20, "basqu": [16, 18], "bcc568e": 16, "be26f35a": 7, "bearer": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "becom": 16, "been": [10, 16, 19, 20], "befor": [16, 18, 20], "begin": 20, "behind": 21, "being": 18, "below": [16, 20], "better": [16, 21], "between": [4, 16, 18], "bike": [3, 4, 11, 15, 16, 18], "bin": 20, "bio": [0, 5, 14], "biographi": 0, "birth": [0, 16], "birth_dat": [0, 5, 14], "bjornclauw": 16, "black": 16, "blacklist": [0, 17], "block": [0, 10, 14, 16, 18], "blocked_us": 0, "boat": 18, "bodi": [16, 20, 21], "bokm\u00e5l": [16, 18], "boolean": [0, 2, 3, 4, 7, 8, 10, 11, 14, 17], "boosterl": 16, "bound": [13, 14, 15], "brief": 4, "browser": [0, 16, 18], "build": [16, 20], "bulgarian": [16, 18], "button": 16, "by_id": 8, "by_sport": 12, "by_tim": 12, "byakurau": 16, "byte": 0, "c": [15, 20], "c88a515": 16, "calcul": [0, 12, 16, 18], "calendar": [16, 18], "callback": [8, 21], "can": [0, 1, 3, 4, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23], "cannot": [4, 16, 18], "card": 16, "cart": 20, "case": [4, 15, 18, 20], "cb9d02f": 16, "cc": 20, "cc3fe1c": 16, "cc4287e": 16, "cd": 20, "challeng": [8, 21], "chang": [0, 4, 17, 18, 19, 20, 21], "changelog": 20, "charact": [0, 4, 15, 16, 20], "chart": [15, 16, 18, 20], "chart_data": 15, "check": [2, 11, 16, 20, 23], "check_workout": 11, "checkbox": 16, "choos": [16, 18], "chosen": 20, "ci": [16, 20], "cleanup": 16, "clear": 20, "cli": [14, 16, 17, 18, 20], "click": 16, "clickabl": 16, "client": [0, 8, 14, 16, 18, 20, 21], "client_client_id": 8, "client_descript": 8, "client_id": [8, 21], "client_max_body_s": [20, 23], "client_nam": 8, "client_secret": 8, "client_uri": 8, "clone": 20, "code": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "code_challeng": [8, 21], "code_challenge_method": [8, 21], "code_verifi": 8, "color": [0, 11, 16, 18], "com": [0, 2, 8, 10, 14, 16, 20, 21], "come": 18, "comma": [16, 20], "command": [16, 18, 19, 20], "comment": [0, 6, 10, 15, 16, 21], "comment_id": 10, "comment_lik": 0, "comment_short_id": 1, "comment_suspens": 10, "comment_unsuspens": 10, "complet": [0, 16, 18], "compos": 20, "comradekingu": 16, "config": [2, 16, 20, 23], "configur": [6, 16, 20, 21], "confirm": [0, 8, 16, 18, 20], "confusedalex": 16, "contact": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 18], "contain": [16, 18, 20], "content": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "contribut": 16, "contributor": [2, 16, 20, 22], "control": [16, 18, 20], "coordin": 20, "copi": [2, 20], "copyright": [2, 20], "core": 16, "correctli": 16, "correspond": [0, 20], "could": 16, "countri": 18, "cp": 20, "creat": [0, 1, 4, 8, 10, 15, 16, 18, 20, 21], "create_app": 20, "created_at": [0, 1, 5, 7, 10, 14, 15], "creation": [0, 16, 18], "creation_d": [4, 13, 14, 15], "creativecommon": 20, "credenti": [0, 20], "criteria": [10, 14, 15], "critic": 23, "cross": [8, 18, 20, 21], "current": [0, 4, 14, 16], "custom": [16, 18, 20], "cycl": [11, 15, 16, 18], "czech": [16, 18], "d": [0, 12, 15, 20], "d743abf": 16, "dai": [16, 17, 18, 20], "dan": 15, "danielsiersleben": 16, "dark": [0, 16, 18], "darkski": [16, 20], "dashboard": 16, "data": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 21], "databas": [16, 18, 20, 23], "database_dir": 20, "database_disable_pool": 20, "database_url": [16, 20, 23], "date": [0, 12, 15, 16, 18], "date_format": 0, "date_str": 0, "davidhenrythoreau": 16, "db": 20, "dd": 0, "de": [0, 3, 14, 20], "deactiv": [14, 18], "debian": [20, 22], "dec": [0, 1, 5, 7, 10, 14, 15], "default": [0, 1, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20], "default_equipment_id": 0, "default_for_sport_id": 4, "default_staticmap": [16, 20], "defin": [16, 18], "definit": 16, "delet": [0, 1, 4, 8, 14, 15, 16, 17, 18], "depend": [16, 18], "deploy": 16, "deprec": [16, 17], "desc": [5, 7, 10, 14, 15, 18], "descent": [13, 14, 15, 16, 18], "describ": [10, 20], "descript": [4, 8, 13, 14, 15, 16, 17, 18, 20], "detail": [14, 16, 20, 24], "detect": 16, "dev": 16, "develop": [16, 17, 19], "diagnost": 20, "dialect": 23, "differ": [14, 16, 18], "direct": [16, 18], "directli": 20, "directori": [0, 16, 20], "disabl": [0, 16, 17, 18, 20], "discontinu": 20, "discours": 18, "displai": [0, 15, 16, 17, 18, 19, 20, 21, 24], "display_asc": 0, "distanc": [0, 9, 13, 14, 15, 16, 18], "distance_from": 15, "distance_to": 15, "dkm": 16, "do": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20], "docker": 16, "dockerhub": 20, "document": [19, 20, 21, 23], "doe": [0, 4, 5, 12, 14, 15, 16, 18], "don": [0, 16], "dotenv": 16, "dotlambda": 16, "doubl": 15, "down": [16, 20], "downgrad": 16, "download": [0, 15, 16, 18, 20, 24], "dperruso": 16, "dramatiq": [16, 17, 20], "drop": 16, "dropdown": [16, 18], "due": 16, "durat": [9, 13, 14, 15, 16, 18], "duration_from": 15, "duration_to": 15, "dure": [0, 1, 4, 10, 15], "dutch": [16, 18], "e": [0, 20], "e2": 16, "ea0ac99": 16, "each": 18, "easi": 16, "edc677": 16, "edit": [0, 16, 18], "electr": 18, "elev": [0, 15, 16, 18, 20], "els": 20, "email": [0, 2, 10, 14, 16, 17, 18, 23], "email_to_confirm": 0, "email_url": [20, 23], "empti": [15, 16, 17, 20], "en": [0, 17], "enabl": [0, 2, 14, 18, 20], "encod": [16, 20], "encount": 20, "encrypt": 18, "end": [12, 15], "endpoint": [0, 2, 3, 4, 8, 11, 14, 16, 20, 21], "engin": [16, 20, 23], "english": [0, 16, 17, 18], "enter": [16, 18], "entiti": [0, 15], "entri": [16, 18, 20], "entrypoint": 16, "enumer": 20, "env": [16, 20], "environ": [16, 17, 23], "equal": 2, "equip": [0, 6, 13, 14, 15, 16, 21], "equipment_id": [0, 15], "equipment_short_id": 4, "equipment_typ": [3, 4], "equipment_type_id": [3, 4], "equipment_type_label": 4, "erral": 16, "error": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 15, 16, 18, 20, 23], "escap": 15, "estim": 16, "eu": 16, "europ": 0, "evalu": 16, "even": [16, 18], "event": 18, "ewm": 16, "exampl": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "exc": 23, "exce": [0, 4, 15, 16], "exceed": 16, "except": [14, 18, 20, 23], "exchang": 21, "exclud": 18, "exec": 20, "execstart": 20, "execut": [16, 20], "exhaust": 19, "exist": [0, 4, 5, 7, 10, 12, 14, 15, 16, 18, 19, 20], "exit": [17, 20], "expect": [10, 20], "expir": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "expires_at": 8, "expires_in": 8, "explain": [0, 10], "export": [0, 16, 17, 18, 19, 20], "extens": [0, 15, 16, 20], "extrem": 18, "f2aec30": 16, "f96dcef": 16, "fa33f4d996844a5c73ecd1ae24456ab8": 15, "fail": [16, 24], "fall": 17, "fallback": 0, "fals": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 15, 20], "farthest": [9, 16, 18], "fb10602": 16, "fd": [0, 9, 13, 14, 15], "featur": [19, 20], "fetch": [18, 21], "field": [14, 16], "file": [0, 2, 15, 16, 17, 18, 19, 20, 22, 24], "file_nam": 0, "file_s": 0, "filenam": 0, "filter": [10, 15, 16, 18], "find": 16, "finish": 16, "first": [0, 4, 8, 18, 21], "first_nam": [0, 5, 14], "fit": [20, 22], "fitotrack": 19, "fittracke": [4, 8, 17, 18, 20, 21, 22, 24], "fittrackee_cli": 20, "fittrackee_host": 21, "fittrackee_instal": 22, "fittrackee_work": [16, 20], "fittrackee_ynh": 20, "fix": 20, "flake8": 16, "flask": [16, 20], "flask_app": 20, "flaticon": 20, "float": [0, 15], "fmstrat": 16, "folder": 20, "follow": [0, 1, 6, 7, 9, 10, 14, 15, 16, 18, 20, 21, 22, 23], "follow_request": [0, 5, 7], "follow_request_approv": 0, "followers_onli": [0, 1, 14, 15], "fond": 20, "footer": 16, "forbidden": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "forc": [4, 18], "forgeri": [8, 21], "fork": 20, "form": [0, 8, 15, 16], "format": [0, 12, 15, 16, 18], "forward": [20, 21], "found": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "fr": [0, 20], "frame": 12, "franc": 20, "freepik": 20, "french": 18, "fri": 15, "from": [4, 5, 7, 8, 12, 15, 16, 18, 19, 21, 22], "ft": 16, "ftcli": 20, "full": [16, 18], "fullchain": 20, "fullscreen": 16, "furo": 16, "galician": [16, 18], "gallegonovato": 16, "gard": 15, "garmin": 22, "gener": [8, 16, 17, 18, 20, 21], "german": [16, 18, 20], "get": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "gif": 0, "git": 20, "github": [16, 20], "give": 20, "given": [0, 8, 12, 18], "gl": 0, "gmt": [0, 1, 4, 5, 7, 8, 9, 10, 13, 14, 15], "gnu": 16, "gorgobacka": 16, "gp": [16, 18], "gpl": 19, "gpx": [0, 8, 15, 16, 18, 19, 20, 22], "gpx_limit_import": 2, "gpxpy": [0, 16, 18, 20], "grai": 16, "grammar": 16, "grant": [8, 21], "grant_typ": 8, "graph": [16, 18], "great": 1, "greater": [2, 16], "guid": 20, "gunicorn": [20, 23], "gz": 20, "gzip": 0, "h": [15, 18], "ha": [0, 1, 4, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20], "handl": [0, 16, 18, 20, 23], "happen": 18, "has_equip": 3, "has_next": [0, 5, 7, 8, 10, 14], "has_prev": [0, 5, 7, 8, 10, 14], "has_workout": 11, "have": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "he": 14, "header": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "health": 2, "heavi": [19, 20], "help": [17, 20], "hexadecim": 0, "hgzyfxgvwkcepdq3vyk67q": 15, "hi": [0, 4, 14, 16, 18], "hidden": [14, 16, 18], "hide": [16, 18], "hide_profile_in_users_directori": 0, "higher": 20, "highest": [0, 9, 18], "hike": [11, 16, 18], "histor": 20, "home": 20, "host": [16, 20], "hour": 20, "hourli": 20, "how": 20, "href": [2, 20], "html": 16, "http": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "http2": 20, "hub": 16, "hv9kwvdtbhhyfvml7phovq": 10, "hvybqybra7wwxpastwr4v2": [0, 9, 13, 14, 15], "i": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24], "i18n": 16, "icon": [16, 20], "id": [0, 1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "imag": [0, 14, 15, 16, 18, 20, 24], "imperi": [0, 16, 18], "imperial_unit": 0, "implement": [16, 21], "import": [8, 16, 18, 20], "in_progress": 0, "inact": [0, 4, 14, 15, 18, 20], "includ": 16, "incompat": 20, "incomplet": 17, "inconsist": 16, "incorrect": [4, 16, 18], "increas": 23, "index": 15, "indic": 18, "individu": 18, "info": [0, 16, 18], "inform": [0, 2, 16, 18, 19, 20], "init": 16, "initi": [16, 20], "initialis": 16, "input": 16, "insensit": [15, 20], "insid": 20, "instal": [16, 19], "instanc": [2, 8, 16, 18, 20, 21], "instead": [16, 18], "instruct": [0, 16, 18, 20], "int": [0, 3, 4, 8, 10, 11, 15], "integ": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "interact": 21, "interceptor": 16, "interfac": [0, 16, 18, 19, 20], "intern": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15], "introduc": 16, "invalid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "invalidemailurlschem": 23, "ip": 20, "is_act": [0, 3, 4, 10, 11, 14], "is_active_for_us": 11, "is_email_sending_en": 2, "is_followed_bi": [0, 7, 10, 14], "is_registration_en": 2, "is_reported_user_warn": 10, "iso": 17, "isort": 16, "issu": [8, 18, 19, 20], "issued_at": 8, "italian": [16, 18], "item": 4, "its": [18, 20], "j": [15, 16, 20], "jan": [13, 14, 15], "jat255": 16, "javascript": [16, 20], "jderuit": 16, "jinja": 16, "jmlich": 16, "job": 16, "john_do": 14, "johndo": 14, "jpeg": 14, "jpg": 0, "json": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "jul": [0, 9, 13, 14, 15], "juli": 8, "jwt": 20, "kayak": 18, "kayak_boat": 3, "kcj6hdgqqpkaakqmfqj8jv": 14, "kd5wyhwltvozw6o3au5m4j": 15, "keep": [16, 18, 19, 20], "kei": [16, 18, 20], "keyboard": 16, "kjxavsturjvoah2wvcegef": [13, 14, 15], "km": [15, 18], "koen": 16, "komoot": 20, "label": [3, 4, 11, 16, 18], "lang": [0, 16, 17], "languag": [0, 16, 17, 18], "larg": [0, 15, 18, 20], "larger": [20, 23], "last": [0, 14, 16, 18, 20], "last_nam": [0, 5, 14], "lastli": 16, "latitud": 15, "launch": 16, "lavoi": 16, "layer": [16, 20], "layout": 16, "ld": [0, 9, 13, 14, 15], "le": 15, "leaflet": [15, 20], "least": [7, 10, 13, 15, 20], "legal": 20, "legitim": 16, "length": 15, "less": [4, 16], "let": 16, "letter": 17, "level": [1, 15, 16, 18], "librari": [8, 16, 20, 21], "licenc": 20, "licens": [16, 19, 20], "lift": [18, 20], "light": 18, "like": [0, 1, 14, 15, 16, 20], "likes_count": [1, 14, 15], "limit": [4, 16, 18], "line": [18, 19, 20], "link": [16, 20], "lint": 20, "linux": 20, "list": [8, 16, 19, 20], "listen": 20, "ll": 20, "load": [16, 23], "loader": 16, "local": [0, 16, 19, 20], "localhost": [16, 20], "locat": [0, 5, 14, 20], "lock": 18, "log": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23], "log_dir": 20, "logfil": 20, "login": [0, 16], "logo": 20, "logout": [0, 16], "longer": [4, 16, 18, 20, 23], "longest": [9, 16, 18], "longitud": 15, "lower": 16, "lukasitali": 16, "m": [0, 9, 12, 13, 14, 15], "made": 20, "mai": [16, 18, 19, 20], "mail": 20, "mailhog": 20, "mainten": 20, "major": 16, "make": [16, 20], "makefil": 20, "malform": 0, "manag": [16, 17, 18, 20], "mandatori": [4, 8, 10, 12, 15, 16, 17, 20, 21], "manual": 18, "manually_approves_follow": 0, "map": [0, 13, 14, 15, 16, 18, 19, 24], "map_attribut": [2, 20], "map_id": 15, "map_til": 15, "map_vis": [0, 14, 15], "mar": [0, 4, 14], "mara21": 16, "march": [16, 20], "mariusz": 16, "mariuz": 16, "mark": [7, 16, 18], "markdown": [16, 18], "marked_as_read": 7, "marker": 16, "match": [0, 15, 16, 18], "max": [2, 5, 14, 15, 16, 17, 18], "max_alt": [13, 14, 15], "max_single_file_s": 2, "max_spe": [13, 14, 15], "max_speed_from": 15, "max_speed_to": 15, "max_us": 2, "max_zip_file_s": 2, "maxim": 15, "maximum": [9, 15, 16, 17, 18], "md": 16, "measur": 16, "mention": [0, 1, 7, 18, 20], "menu": 16, "messag": [0, 2, 5, 8, 14, 15, 16, 17, 18, 20], "method": [8, 20, 21], "metric": 18, "mi": 16, "microsecond": 16, "migrat": [16, 17, 20], "min": 16, "min_alt": [13, 14, 15], "mind": 18, "minim": [15, 20, 21], "minimum": [2, 3, 10, 11, 12, 14, 16, 18], "minut": 20, "miss": [0, 16], "mm": 0, "mmm": 0, "mmy3qpl3vcfukjgffbncjv": 0, "mobil": [16, 19], "modal": 16, "mode": [0, 16], "model": 16, "moder": [10, 12, 14, 16, 17], "modifi": [0, 16, 17, 18, 20], "modification_d": [1, 13, 14, 15], "modul": [16, 20], "moment": 18, "mon": [13, 14, 15], "mondai": [0, 12, 18], "mondstern": 16, "month": [12, 16, 18], "monthli": 18, "more": [16, 17, 18, 19, 20], "morn": 15, "most": 21, "mountain": [11, 16, 18], "mous": 16, "move": [13, 14, 15, 16], "movement": 16, "multi": 20, "multipart": [0, 8, 15], "multipl": [16, 18], "must": [0, 2, 4, 8, 11, 14, 15, 16, 18, 20, 21, 23], "mv": 20, "my": 4, "mynixo": 20, "mzydicyyfktg3gga2x8afu": 1, "n": 0, "name": [0, 5, 8, 14, 16, 18, 20], "nano": 20, "navig": 16, "nb": 0, "nb_sport": [0, 5, 14], "nb_workout": [0, 1, 5, 7, 10, 14, 15], "nbsp": 20, "necessari": [18, 20], "nederland": 16, "need": [15, 16, 18, 20, 21], "net": 20, "netinstal": 22, "network": 20, "new": [0, 4, 14, 17, 18, 20, 21], "new_email": 14, "new_password": 0, "newli": [0, 17, 20], "next": [16, 18], "next_workout": [13, 14, 15], "nginx": [16, 18, 20, 21, 23], "nice": 1, "nixpkg": 20, "nl": 0, "no_gpx": 15, "node": 20, "nofollow": 20, "non": [3, 11, 19], "none": 15, "noopen": 20, "noreferr": 20, "norwegian": [16, 18], "nosuchmoduleerror": 23, "notat": 20, "note": [0, 10, 13, 14, 15, 16, 18, 20], "notif": [0, 6, 16, 20, 21], "notification_id": 7, "notification_prefer": 0, "notification_typ": 7, "nov": [1, 15], "now": [0, 12, 15, 16, 17, 18, 20], "null": [0, 1, 2, 4, 5, 7, 10, 11, 13, 14, 15, 16], "number": [2, 5, 14, 15, 16, 17, 18, 20], "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 8, "o": 20, "o22a27s2abpuoxjbxv3ujdox": 8, "oauth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20], "oauth2": [6, 21], "oauthlib": 21, "object": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "object_id": 10, "object_typ": 10, "occur": 18, "office365": 20, "offset": 16, "ok": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "old": 20, "omit": 20, "onc": [0, 1, 15], "ondrejzivni": 16, "one": [0, 4, 7, 10, 13, 15, 18], "ongo": 0, "onli": [0, 1, 4, 8, 12, 14, 15, 16, 17, 18, 20, 21], "open": [16, 18, 19, 20], "openstreetmap": [2, 16, 20], "opentrack": 19, "oper": [18, 20], "option": [4, 7, 8, 16, 17, 20, 21], "order": [5, 7, 10, 14, 15, 16, 18, 21], "order_bi": [10, 14, 15], "org": [2, 20], "origin": 18, "osm": 20, "osmfr": 20, "other": [0, 4, 14, 18, 20], "otherwis": [15, 18, 20], "ou": 16, "out": 0, "outdoor": [16, 18, 19, 20], "over": 16, "overlap": 16, "overrid": 18, "overridden": 18, "overwrit": 20, "own": [4, 10, 14, 19], "owner": [4, 14, 16, 17, 18, 20], "packag": [16, 20], "paf38": 16, "page": [0, 1, 5, 7, 8, 10, 13, 14, 15, 16, 18], "pagin": [0, 1, 5, 7, 8, 10, 13, 14, 15], "par": [16, 20], "par_pag": 14, "paraglid": [16, 18], "parallel": 16, "paramet": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21], "parecki": 21, "pari": 0, "pars": [16, 20], "part": [0, 15, 16], "parti": [8, 15, 18, 19, 21], "partial": 16, "particular": 18, "pass": 20, "password": [0, 14, 16, 17, 18, 20], "passwordwith": 20, "patch": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "path": [20, 23], "paus": [13, 14, 15, 16], "payload": [0, 1, 2, 3, 8, 10, 11, 14, 15], "pem": 20, "pend": 7, "per": [5, 14, 15, 16, 20], "per_pag": [5, 14, 15], "perform": 18, "perhap": 4, "period": [12, 18, 20], "permiss": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "pg_dump": 20, "pictur": [0, 1, 5, 7, 10, 14, 15, 16], "piec": [4, 18], "pil": 16, "ping": 2, "pip": 20, "pipenv": 16, "pkce": [8, 21], "platform": 20, "pleas": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "plot": 0, "plugin": 23, "pluja": 16, "png": [0, 15, 20], "poetri": [16, 20], "point": [16, 20], "polici": [0, 2, 16], "polish": [16, 18], "pong": 2, "pool": 20, "port": 20, "portugues": [16, 18], "posit": [16, 18], "possibl": [16, 18, 19, 20], "post": [0, 1, 4, 5, 7, 8, 10, 14, 15, 21], "postgr": [16, 23], "postgres_db": 20, "postgres_password": 20, "postgres_us": 20, "postgresql": [16, 20, 23], "postgresql10": 16, "pr": 16, "pre": 16, "prefer": [0, 14, 15, 16, 17], "prepar": 16, "present": [16, 18], "prevent": [8, 20, 21], "previous": 16, "previous_workout": [13, 14, 15], "prior": 18, "privaci": [0, 2, 16], "privacy_polici": 2, "privacy_policy_d": 2, "privat": [0, 1, 14, 15, 16, 18], "privileg": 20, "privkei": 20, "problem": 16, "process": [0, 5, 10, 16, 17, 20], "product": 16, "productionconfig": 20, "profil": [0, 8, 10, 16, 18, 21], "project": 20, "proto": [20, 21], "provid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23], "proxi": [20, 21], "proxy_add_x_forwarded_for": 20, "proxy_pass": 20, "proxy_redirect": 20, "proxy_set_head": [20, 21], "psjeexbjz2jjnqctcpxvvf": 15, "public": [0, 1, 15, 18], "publish": 16, "pull": 20, "purpos": [16, 20], "pwd": 20, "py": 20, "python": [16, 20, 21], "q": 14, "qrj7by6h2iyjsv8sersfgv": 4, "queri": [0, 1, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "queue": 20, "quot": 15, "qwerty287": 16, "r": 20, "random": 17, "randomli": 20, "rate": 16, "reach": 18, "reactiv": [10, 18], "read": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21], "read_statu": 7, "readi": 20, "readm": 16, "real": 20, "reason": [0, 10, 14], "rebuild": 16, "recalcul": 18, "receiv": [5, 7, 18], "recent": 18, "recommend": [8, 20, 21], "record": [0, 5, 6, 13, 14, 15, 16, 18], "record_typ": [0, 9, 13, 14, 15], "redi": [16, 17, 20], "redirect": [8, 16, 21], "redirect_uri": 8, "redis_dir": 20, "redis_url": 20, "reduc": 16, "refacto": 16, "refactor": 16, "refresh": [4, 8, 16], "refresh_token": 8, "regardless": [14, 18], "regist": [0, 2, 16, 18, 20], "registr": [0, 2, 16, 17, 18, 20, 21], "registri": 20, "reject": [5, 10, 18, 20], "rel": 20, "relat": [17, 18, 20], "relationship": 14, "releas": [18, 20], "relev": 16, "remain": [16, 18], "remote_addr": 20, "remov": [1, 4, 14, 15, 16, 17, 18, 20], "renam": 16, "replac": [15, 16, 20], "repo": 20, "report": [6, 14, 16, 18, 21], "report_act": 10, "report_id": [10, 14], "reported_bi": 10, "reported_com": 10, "reported_us": 10, "reported_workout": 10, "repositori": 20, "request": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21], "request_uri": 20, "requir": [0, 4, 16, 20, 21], "requisit": 16, "resend": 0, "resent": 0, "reset": [0, 14, 16, 17, 18, 20], "reset_password": 14, "resolut": 16, "resolv": [10, 18], "resolved_at": 10, "resolved_bi": 10, "respons": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "response_typ": [8, 21], "rest": 21, "restart": 20, "restartsec": 20, "restrict": 18, "result": 16, "return": [0, 1, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20], "return_equip": 15, "review": [16, 18], "revok": [0, 8], "rework": 16, "ride": 16, "right": [0, 14, 16, 17, 18, 20, 21], "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 8, "role": [0, 1, 2, 3, 7, 10, 11, 12, 14, 15, 16, 17, 18, 20], "rout": [16, 20], "row": 18, "ruff": 16, "rule": 18, "run": [11, 16, 17, 18, 20, 21], "runner": 19, "russian": [16, 18], "s256": [8, 21], "sa": 20, "safe": 16, "sam": [0, 1, 5, 9, 10, 13, 14, 15], "same": [4, 16, 18, 20], "samr1": 20, "sanction": [0, 14, 18], "sanit": 16, "sat": 14, "save": [1, 4, 10, 16, 18], "schema": 20, "scheme": [20, 21], "scope": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "screen": [16, 18], "script": 16, "search": 16, "second": [4, 15], "secret": [8, 20, 21], "section": 16, "secur": 21, "see": [4, 16, 18, 19, 20, 21, 23], "seem": 16, "segment": [13, 14, 15, 16, 18], "segment_id": 15, "select": [0, 15, 18], "semant": 20, "send": [0, 14, 16, 18, 20], "sender": 20, "sender_email": 20, "sent": [14, 16, 18, 20, 21], "separ": [18, 20, 21], "serv": [16, 20], "server": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 18, 19], "server_nam": 20, "servic": [16, 20], "session": [18, 21], "set": [4, 14, 16, 17, 18, 20, 21, 23], "sever": [16, 19, 20], "sh": 22, "shell": 20, "shoe": [3, 4, 18], "short": [1, 4, 7, 15], "should": [16, 18, 20], "show": [16, 17, 20], "shown": [16, 21, 24], "shura0": 16, "shut": [16, 20], "side": 16, "signatur": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "sikmir": 16, "simontb": 16, "simpl": 20, "simplest": 20, "simplifi": [16, 21], "sinc": [16, 20, 21], "singl": [2, 14, 16, 18, 20], "site": [8, 21], "size": [0, 2, 15, 16, 18, 20], "ski": [3, 18], "skylan0916": 16, "slothj": 16, "slow": 16, "small": 16, "smtp": [16, 20], "snowsho": [3, 16, 18], "so": [20, 21], "social": 16, "some": [4, 5, 7, 10, 13, 14, 15, 16, 18, 19, 20, 21], "sorri": 0, "sort": [5, 7, 10, 14, 15, 18], "sou": 20, "sourc": 18, "space": 21, "spanish": [16, 18], "spawn": 20, "special": [16, 20], "specif": [18, 20], "specifi": 16, "speed": [0, 9, 15, 16, 18, 20], "spinner": 16, "sport": [0, 2, 4, 6, 12, 15, 16, 20], "sport_id": [0, 4, 9, 11, 12, 13, 14, 15], "sport_label": 4, "sports_list": [0, 5, 14], "sql": 20, "sqlalchemi": [16, 20, 23], "ssl": 20, "ssl_certif": 20, "ssl_certificate_kei": 20, "stabl": 16, "standard": [16, 20], "standarderror": 20, "standardoutput": 20, "start": [0, 12, 15, 16, 18, 20, 24], "start_elevation_at_zero": 0, "startlimitintervalsec": 20, "starttl": 20, "startup": 20, "stat": [12, 16], "state": [8, 21], "static": [16, 18, 20], "staticmap": 20, "staticmap_subdomain": [16, 20], "statist": [2, 6], "stats_workouts_limit": 2, "statu": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "step": 20, "sticki": 16, "still": [16, 18, 19, 20], "stop": [0, 16, 18, 20], "stopped_speed_threshold": [0, 11], "store": [18, 19, 21], "strategi": 20, "strava": 22, "street": [18, 19], "strength": 16, "string": [0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15, 20, 21], "strong": 20, "subdomain": [15, 16, 20], "subject": 20, "success": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "successfulli": 0, "suggest": 18, "sun": [0, 1, 9, 10, 13, 14, 15], "sundai": [12, 15, 18], "suppli": 4, "support": [0, 8, 16, 17, 18, 20, 21, 23], "suspend": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "suspended_at": [0, 1, 7, 10, 14, 15], "suspens": [0, 1, 14, 15, 18, 20], "swim": [16, 18], "swimrun": [16, 18], "switch": 16, "synchron": 22, "syntax": 18, "syslog": 20, "syslogidentifi": 20, "system": [18, 20], "systemd": 20, "t": [0, 16, 23], "t2zeeuxvuy3pla8meeufyk": 1, "tab": 21, "tabl": 16, "tag": 16, "taken": [0, 18], "tar": 20, "target": 20, "task": 20, "team": 18, "templat": 16, "term": [16, 20], "test": [16, 20], "text": [0, 1, 10, 14, 15, 18], "text_html": 1, "text_vis": 1, "textarea": 16, "than": [2, 4, 14, 16, 17], "thank": [16, 20, 22], "thei": [15, 18, 20, 21], "them": [16, 18, 19], "theme": [16, 18], "thi": [0, 3, 4, 8, 11, 14, 15, 16, 17, 18, 19, 20], "third": [18, 19, 21], "those": 4, "thovi98": 16, "threshold": [0, 16, 18], "thu": [5, 8, 14], "thunderforest": [16, 20], "tile": [15, 16, 18], "tile_server_url": 20, "time": [0, 12, 15, 16, 18], "timelin": [6, 16, 18], "timeout": [20, 23], "timezon": [0, 15, 16, 18], "titl": [13, 14, 15, 16, 18], "tl": [16, 20], "token": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "token_typ": 8, "too": [0, 15], "tool": [16, 18, 19, 20], "tooltip": [16, 18], "total": [0, 4, 5, 7, 8, 10, 12, 14, 16, 18], "total_asc": [0, 12], "total_dist": [0, 4, 5, 12, 14], "total_dur": [0, 4, 5, 12, 14], "total_mov": 4, "total_workout": 12, "track": [16, 19], "tracke": 20, "trail": [16, 18], "trainer": [3, 18], "transport": [11, 16, 18], "traxi": 16, "trekk": [16, 18], "troubleshoot": 19, "true": [0, 1, 2, 3, 4, 7, 8, 10, 11, 14, 15, 16, 20], "truncat": 15, "try": [0, 1, 3, 4, 7, 11, 13, 14, 15], "tue": [4, 15], "two": 17, "type": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "typescript": 20, "typo": 16, "u": 20, "uberspac": 20, "ubuntu": 20, "ui": [0, 16], "ui_url": 20, "unauthent": [16, 18], "unauthor": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "unblock": 14, "unchang": 18, "uncom": 20, "under": [19, 20], "underscor": 0, "undo": [1, 14, 15], "unencrypt": 20, "unfilt": 0, "unfollow": [14, 18], "uniqu": [8, 21], "unit": [0, 16, 20], "unless": 4, "unlik": 18, "unread": [7, 18], "unresolv": [10, 18], "unstabl": [19, 20], "unwant": [16, 18], "up": [16, 18, 19, 20], "updat": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15, 16, 18, 20], "updated_at": [0, 10, 14], "upgrad": 16, "upload": [2, 16, 17, 18, 20, 22, 24], "upload_dir": 20, "upload_fold": [20, 23], "uploads_dir_s": 12, "uri": 16, "url": [0, 8, 16, 18, 20, 21, 23], "urtzai": 16, "us": [0, 1, 4, 5, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21], "usag": [17, 20], "use_dark_mod": 0, "use_raw_gpx_spe": 0, "user": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 21], "user_id": [0, 4], "user_nam": [5, 12, 14], "user_suspens": [0, 10], "user_unsuspens": 10, "user_warn": 10, "usernam": [0, 1, 5, 7, 10, 12, 14, 15, 16, 17, 18, 20], "util": 20, "uuid": [15, 16], "v0": [16, 20], "v2": 20, "v3": 19, "valid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23], "valu": [0, 4, 8, 9, 10, 13, 14, 15, 16, 18, 20, 21, 23], "variabl": [16, 23], "variou": 16, "venv": 20, "verifi": [8, 21], "version": [2, 17, 18, 20, 21], "via": [14, 18, 20], "view": [16, 18, 20], "violat": 18, "virtual": [16, 18], "virtualenv": [16, 20], "visibl": [0, 1, 13, 14, 15, 16, 18], "visual": [18, 20], "visualcross": 16, "vite_app_api_url": 20, "volum": 20, "voodoopt": 16, "vtt": 15, "vue": [16, 20], "vue3": 20, "vue_app_api_url": 20, "vuex": 20, "w": 16, "wa": [0, 4, 10, 16, 18, 20], "wai": [18, 20], "walk": [11, 16, 18], "want": 20, "wantedbi": 20, "warn": [15, 16, 18, 20], "water": [16, 18], "weather": [16, 18], "weather_api": 20, "weather_api_kei": 20, "weather_api_provid": [16, 20], "weather_end": [13, 14, 15], "weather_provid": 2, "weather_start": [13, 14, 15], "web": [0, 19, 20, 21], "weblat": [16, 18], "websit": 8, "wed": [0, 7, 10, 14, 15], "week": [0, 12, 16, 18], "weekend": 16, "weekm": [0, 12], "were": 16, "wget": 20, "when": [0, 1, 2, 14, 15, 16, 17, 18, 20], "where": 20, "whether": 4, "which": [0, 18], "while": 18, "white": 16, "who": [1, 15, 16, 18], "whose": [18, 21], "why": 10, "wind": [16, 18], "window": 20, "with_analysi": 15, "with_follow": 14, "with_gpx": [13, 14, 15], "with_hidden_us": 14, "with_inact": 14, "with_suspend": 14, "without": [0, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 19], "wjgtwtqfpnprhyak5ex9pw": 1, "work": 20, "worker": [16, 17, 20, 23], "workers_process": 20, "workflow": 16, "workingdirectori": 20, "workout": [0, 1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 22, 24], "workout_com": 0, "workout_d": [0, 9, 13, 14, 15], "workout_id": [0, 1, 9, 10, 13, 14, 15], "workout_lik": 0, "workout_short_id": [1, 15], "workout_suspens": [10, 14], "workout_unsuspens": 10, "workout_vis": [14, 15], "workouts_count": [4, 14], "workouts_vis": [0, 14], "write": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 14, 15, 18, 21], "written": 20, "www": [2, 20], "x": [0, 15, 16, 20, 21], "xmgz": 16, "xml": 15, "xxxx": 20, "xzf": 20, "y": [0, 12, 15, 20], "yarn": 20, "year": [12, 18], "yet": [16, 19], "yml": 20, "you": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20], "your": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "yyyi": 0, "z": [15, 20], "z2ze5qzrnmvmndejpphask": 10, "zero": [0, 16, 18], "zip": [0, 2, 15, 16, 18], "zone": 0, "zoom": 15}, "titles": ["Authentication and account", "Comments", "Configuration", "Equipment Types", "Equipments", "Follow requests", "API documentation", "Notifications", "OAuth2", "Records", "Reports", "Sports", "Statistics", "Timeline", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "titleterms": {"0": [16, 21], "01": 16, "02": 16, "03": 16, "04": 16, "05": 16, "06": 16, "07": 16, "08": 16, "09": 16, "0b1": 16, "0b2": 16, "0b3": 16, "0b4": 16, "0b5": 16, "0b6": 16, "1": 16, "10": 16, "11": 16, "12": 16, "13": 16, "14": 16, "15": 16, "16": 16, "17": 16, "18": 16, "19": 16, "2": [16, 21], "20": 16, "2018": 16, "2019": 16, "2020": 16, "2021": 16, "2022": 16, "2023": 16, "2024": 16, "2025": 16, "21": 16, "22": 16, "23": 16, "24": 16, "25": 16, "26": 16, "27": 16, "28": 16, "29": 16, "3": 16, "30": 16, "31": 16, "32": 16, "4": 16, "5": 16, "6": 16, "7": 16, "8": 16, "9": 16, "about": 18, "account": [0, 18], "administr": [16, 18, 23], "api": [6, 20], "app": 18, "applic": 18, "ar": 23, "authent": 0, "avail": 16, "bug": 16, "chang": 16, "clean": 17, "clean_arch": 17, "clean_token": 17, "close": 16, "command": 17, "comment": [1, 18], "configur": [2, 18], "content": 19, "creat": 17, "dashboard": 18, "data": 20, "databas": 17, "db": 17, "depend": 20, "deploy": 20, "detail": [18, 23], "dev": 20, "develop": 20, "directori": 18, "displai": 23, "docker": 20, "document": [6, 16], "download": 23, "drop": 17, "email": 20, "endpoint": 6, "enhanc": 16, "environ": 20, "equip": [3, 4, 18], "export_arch": 17, "fail": 23, "featur": [16, 18], "file": 23, "first": 16, "fittracke": [16, 19, 23], "fix": 16, "flow": 21, "follow": 5, "french": 16, "from": 20, "ftcli": 17, "i": 23, "imag": 23, "import": 22, "improv": 16, "instal": [20, 22], "interact": 18, "interfac": 17, "issu": 16, "like": 18, "limit": 20, "line": 17, "list": 18, "log": 16, "main": 20, "map": [20, 23], "minor": 16, "misc": 16, "moder": 18, "new": 16, "nixo": 20, "notif": [7, 18], "oauth": [18, 21], "oauth2": [8, 17], "parti": 22, "polici": 18, "prefer": 18, "prerequisit": 20, "privaci": 18, "prod": 20, "product": 20, "pull": 16, "pypi": [16, 20], "rate": 20, "record": 9, "releas": 16, "report": 10, "request": [5, 16], "resourc": 21, "scope": 21, "screenshot": 18, "script": 22, "secur": 16, "server": 20, "shown": 23, "sourc": 20, "sport": [11, 18], "start": 23, "statist": [12, 16, 18], "tabl": 19, "third": 22, "tile": 20, "timelin": 13, "tool": 22, "translat": [16, 18], "troubleshoot": 24, "type": [3, 18], "updat": 17, "upgrad": [17, 20], "upload": 23, "user": [14, 17, 18], "variabl": 20, "version": 16, "weather": 20, "workout": [15, 18, 23], "yunohost": 20}}) \ No newline at end of file diff --git a/docs/en/third_party_tools.html b/docs/en/third_party_tools.html index 2b3ff9524..4a2eab5d5 100644 --- a/docs/en/third_party_tools.html +++ b/docs/en/third_party_tools.html @@ -6,7 +6,7 @@ - Third-party tools - FitTrackee 0.9.0b4 documentation + Third-party tools - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -378,7 +378,7 @@

Installation scripts

- + diff --git a/docs/en/troubleshooting/administrator.html b/docs/en/troubleshooting/administrator.html index c285b7aa6..337786fba 100644 --- a/docs/en/troubleshooting/administrator.html +++ b/docs/en/troubleshooting/administrator.html @@ -6,7 +6,7 @@ - Administrator - FitTrackee 0.9.0b4 documentation + Administrator - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -394,7 +394,7 @@

Failed to upload or download files +

diff --git a/docs/en/troubleshooting/index.html b/docs/en/troubleshooting/index.html index 0814c789a..86a5789c9 100644 --- a/docs/en/troubleshooting/index.html +++ b/docs/en/troubleshooting/index.html @@ -6,7 +6,7 @@ - Troubleshooting - FitTrackee 0.9.0b4 documentation + Troubleshooting - FitTrackee 0.9.0b6 documentation @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- FitTrackee 0.9.0b4 + FitTrackee 0.9.0b6 documentation @@ -353,7 +353,7 @@

Troubleshooting +

diff --git a/docs/fr/.buildinfo b/docs/fr/.buildinfo index 57c76f77b..ef818bc22 100644 --- a/docs/fr/.buildinfo +++ b/docs/fr/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: da1e52d2cd6cf634e9310577c94eab3b +config: 56c4608ef6eee89b983224ca19162733 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/fr/_images/administration-menu.png b/docs/fr/_images/administration-menu.png index 2f93b829b..91499b4aa 100644 Binary files a/docs/fr/_images/administration-menu.png and b/docs/fr/_images/administration-menu.png differ diff --git a/docs/fr/_images/dashboard.png b/docs/fr/_images/dashboard.png index c064ace1f..40e6a0038 100644 Binary files a/docs/fr/_images/dashboard.png and b/docs/fr/_images/dashboard.png differ diff --git a/docs/fr/_images/equipment-detail.png b/docs/fr/_images/equipment-detail.png index 3c12d59a6..36ecc92de 100644 Binary files a/docs/fr/_images/equipment-detail.png and b/docs/fr/_images/equipment-detail.png differ diff --git a/docs/fr/_images/equipments-list.png b/docs/fr/_images/equipments-list.png index b98f005c7..7ce983124 100644 Binary files a/docs/fr/_images/equipments-list.png and b/docs/fr/_images/equipments-list.png differ diff --git a/docs/fr/_images/notifications.png b/docs/fr/_images/notifications.png index a6cb3e9be..2f7fe2992 100644 Binary files a/docs/fr/_images/notifications.png and b/docs/fr/_images/notifications.png differ diff --git a/docs/fr/_images/oauth2-app-authorization.png b/docs/fr/_images/oauth2-app-authorization.png index 75855a4d4..3d015216e 100644 Binary files a/docs/fr/_images/oauth2-app-authorization.png and b/docs/fr/_images/oauth2-app-authorization.png differ diff --git a/docs/fr/_images/oauth2-client-creation.png b/docs/fr/_images/oauth2-client-creation.png index 536cef1c2..9d3e3e0dc 100644 Binary files a/docs/fr/_images/oauth2-client-creation.png and b/docs/fr/_images/oauth2-client-creation.png differ diff --git a/docs/fr/_images/sports-administration.png b/docs/fr/_images/sports-administration.png index 18bfb8d76..9502c41a0 100644 Binary files a/docs/fr/_images/sports-administration.png and b/docs/fr/_images/sports-administration.png differ diff --git a/docs/fr/_images/statistics-by-sport.png b/docs/fr/_images/statistics-by-sport.png index cf9b1f348..1d30728af 100644 Binary files a/docs/fr/_images/statistics-by-sport.png and b/docs/fr/_images/statistics-by-sport.png differ diff --git a/docs/fr/_images/statistics-by-time-period.png b/docs/fr/_images/statistics-by-time-period.png index 605279616..42089ffb7 100644 Binary files a/docs/fr/_images/statistics-by-time-period.png and b/docs/fr/_images/statistics-by-time-period.png differ diff --git a/docs/fr/_images/users-directory.png b/docs/fr/_images/users-directory.png index c33ace233..ba1d8cfad 100644 Binary files a/docs/fr/_images/users-directory.png and b/docs/fr/_images/users-directory.png differ diff --git a/docs/fr/_images/workout-detail.png b/docs/fr/_images/workout-detail.png index 90b83515e..2a14e54cf 100644 Binary files a/docs/fr/_images/workout-detail.png and b/docs/fr/_images/workout-detail.png differ diff --git a/docs/fr/_images/workouts-list.png b/docs/fr/_images/workouts-list.png index 03da44de7..599bac832 100644 Binary files a/docs/fr/_images/workouts-list.png and b/docs/fr/_images/workouts-list.png differ diff --git a/docs/fr/_sources/api/auth.rst.txt b/docs/fr/_sources/api/auth.rst.txt index 2d6b1ef44..ecf1523b8 100644 --- a/docs/fr/_sources/api/auth.rst.txt +++ b/docs/fr/_sources/api/auth.rst.txt @@ -12,6 +12,7 @@ Authentication and account auth.edit_user_preferences, auth.edit_user_sport_preferences, auth.reset_user_sport_preferences, + auth.edit_user_notifications_preferences, auth.edit_picture, auth.del_picture, auth.request_password_reset, diff --git a/docs/fr/_sources/api/comments.rst.txt b/docs/fr/_sources/api/comments.rst.txt index f1d3862da..4d64ebd9b 100644 --- a/docs/fr/_sources/api/comments.rst.txt +++ b/docs/fr/_sources/api/comments.rst.txt @@ -9,6 +9,7 @@ Comments comments.update_workout_comment, comments.like_comment, comments.undo_comment_like, + comments.get_comment_likes, comments.appeal_comment_suspension, comments.delete_workout_comment diff --git a/docs/fr/_sources/api/workouts.rst.txt b/docs/fr/_sources/api/workouts.rst.txt index 8c15e90c2..9a5f6875d 100644 --- a/docs/fr/_sources/api/workouts.rst.txt +++ b/docs/fr/_sources/api/workouts.rst.txt @@ -18,4 +18,5 @@ Workouts workouts.delete_workout, workouts.like_workout, workouts.undo_workout_like, + workouts.get_workout_likes, workouts.appeal_workout_suspension diff --git a/docs/fr/_sources/changelog.md.txt b/docs/fr/_sources/changelog.md.txt index 656ea6517..f77b7918a 100644 --- a/docs/fr/_sources/changelog.md.txt +++ b/docs/fr/_sources/changelog.md.txt @@ -1,10 +1,51 @@ # Change log +## Version 0.9.0b6 (2025/01/05) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#677](https://github.com/SamR1/FitTrackee/pull/677) - Add notification preferences +* [PR#678](https://github.com/SamR1/FitTrackee/pull/678) - Display users who like comment/workout + +### Bugs Fixed + +* [d743abf](https://github.com/SamR1/FitTrackee/commit/d743abf0e59a3c7cc1e11adbd9c8d0214d0c7da7) - display missing errors in user profile + + +**Note:** This release contains database migration (see upgrade instructions in [documentation](https://samr1.github.io/FitTrackee/en/installation.html#upgrade)) + + +## Version 0.9.0b5 (2024/12/30) + +**This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.** +If you find bugs, please report them. + + +### Features and enhancements + +* [PR#675](https://github.com/SamR1/FitTrackee/pull/675) - CLI - create user with provided role + +### Bugs Fixed + +* [PR#671](https://github.com/SamR1/FitTrackee/pull/671) - Fix sport icon when unauthenticated user displays user profile +* [PR#674](https://github.com/SamR1/FitTrackee/pull/674) - Fix display of privacy policy message with privacy extension +* [2e9f9d](https://github.com/SamR1/FitTrackee/commit/2e9f9d69eb38d5f310236944d45b4b60d8faff20) - fix translations +* [edc677](https://github.com/SamR1/FitTrackee/commit/edc6776c922925746762f7ac76c267feda7cde2f) - Fix notification icons + +### Misc + +* [174240](https://github.com/SamR1/FitTrackee/commit/174240f1d9dc702d4346c85e6add4022af2a88c6) - add tags input to docker image build job + + ## Version 0.8.13 (2024/12/29) ### Translations -* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galicien) +* [PR#667](https://github.com/SamR1/FitTrackee/pull/667) - Translations update (Galician) Translation status: - Basque: 100% diff --git a/docs/fr/_sources/cli.rst.txt b/docs/fr/_sources/cli.rst.txt index 274b93b83..9e84ec0c0 100644 --- a/docs/fr/_sources/cli.rst.txt +++ b/docs/fr/_sources/cli.rst.txt @@ -98,6 +98,7 @@ Remove blacklisted tokens expired for more than provided number of days. """""""""""""""""""""" .. versionadded:: 0.7.15 .. versionchanged:: 0.8.4 User preference for interface language is added. +.. versionchanged:: 0.9.0 Add option for user role. Create a user account. @@ -121,6 +122,8 @@ Create a user account. - User password (if not provided, a random password is generated). * - ``--lang LANGUAGE`` - User preference for interface language (two-letter code, ISO 639-1). If not provided or not supported, it falls back to English ('en'). + * - ``--role [owner|admin|moderator|user]`` + - User role (default: 'user'). @@ -160,7 +163,7 @@ Modify a user account (role, active status, email and password). - Username. * - ``--set-admin BOOLEAN`` - [DEPRECATED] Add/remove admin rights (when adding admin rights, it also activates user account if not active). - * - ``--set-role ROLE`` + * - ``--set-role [owner|admin|moderator|user]`` - Set user role (when setting 'moderator', 'admin' and 'owner' role, it also activates user account if not active). * - ``--activate`` - Activate user account. diff --git a/docs/fr/_sources/features.rst.txt b/docs/fr/_sources/features.rst.txt index ac43cde5a..d90c8bf2e 100644 --- a/docs/fr/_sources/features.rst.txt +++ b/docs/fr/_sources/features.rst.txt @@ -225,6 +225,14 @@ Notifications - Users with administration rights can also receive notifications on user creation. - Users can mark notifications as read or unread. +- Notifications can be disabled or enabled the following events in user preferences: + + - follow request and follow + - follow request approval when follow request approval is manual + - like on comment or workout + - comment on workout + - mention on comment + - user registration (if authenticated user has administration rights) Dashboard ========= diff --git a/docs/fr/_static/documentation_options.js b/docs/fr/_static/documentation_options.js index 81f48a812..f6833096c 100644 --- a/docs/fr/_static/documentation_options.js +++ b/docs/fr/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.9.0b4', + VERSION: '0.9.0b6', LANGUAGE: 'fr', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/fr/api/auth.html b/docs/fr/api/auth.html index 2c888a7f2..f979df3b7 100644 --- a/docs/fr/api/auth.html +++ b/docs/fr/api/auth.html @@ -6,7 +6,7 @@ - Authentification et compte - Documentation FitTrackee 0.9.0b4 + Authentification et compte - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -498,7 +498,6 @@

Authentification et compte{ "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -520,6 +519,15 @@

Authentification et compte "map_visibility": "private", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -568,6 +576,7 @@

Authentification et compte "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -626,7 +635,6 @@

Authentification et compte{ "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -648,6 +656,15 @@

Authentification et compte "map_visibility": "private", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -696,6 +713,7 @@

Authentification et compte "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -779,7 +797,6 @@

Authentification et compte{ "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -801,6 +818,15 @@

Authentification et compte "map_visibility": "followers_only", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -849,6 +875,7 @@

Authentification et compte "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -1033,6 +1060,163 @@

Authentification et compte +
+POST /api/auth/profile/edit/notifications
+

Modifier les préférences de notification de l’utilisateur authentifié.

+

Scope : profile:write

+

Exemple de requête :

+
POST /api/auth/profile/edit/preferences HTTP/1.1
+Content-Type: application/json
+
+
+

Exemple de réponses :

+
HTTP/1.1 200 OK
+Content-Type: application/json
+
+{
+  "data": {
+    "data": {
+    "accepted_privacy_policy": true,
+    "analysis_visibility": "private",
+    "bio": null,
+    "birth_date": null,
+    "created_at": "Sun, 14 Jul 2019 14:09:58 GMT",
+    "date_format": "dd/MM/yyyy",
+    "display_ascent": true,
+    "email": "sam@example.com",
+    "email_to_confirm": null,
+    "first_name": null,
+    "followers": 0,
+    "following": 0,
+    "hide_profile_in_users_directory": true,
+    "imperial_units": false,
+    "is_active": true,
+    "language": "en",
+    "last_name": null,
+    "location": null,
+    "manually_approves_followers": false,
+    "map_visibility": "private",
+    "nb_sports": 3,
+    "nb_workouts": 6,
+    "notification_preferences": {
+      "comment_like": true,
+      "follow": true,
+      "follow_request": true,
+      "follow_request_approved": true,
+      "mention": false,
+      "workout_comment": false,
+      "workout_like": false
+    }
+    "picture": false,
+    "records": [
+      {
+        "id": 9,
+        "record_type": "AS",
+        "sport_id": 1,
+        "user": "sam",
+        "value": 18,
+        "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT",
+        "workout_id": "hvYBqYBRa7wwXpaStWR4V2"
+      },
+      {
+        "id": 10,
+        "record_type": "FD",
+        "sport_id": 1,
+        "user": "sam",
+        "value": 18,
+        "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT",
+        "workout_id": "hvYBqYBRa7wwXpaStWR4V2"
+      },
+      {
+        "id": 13,
+        "record_type": "HA",
+        "sport_id": 1,
+        "user": "Sam",
+        "value": 43.97,
+        "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT",
+        "workout_id": "hvYBqYBRa7wwXpaStWR4V2"
+      },
+      {
+        "id": 11,
+        "record_type": "LD",
+        "sport_id": 1,
+        "user": "sam",
+        "value": "1:01:00",
+        "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT",
+        "workout_id": "hvYBqYBRa7wwXpaStWR4V2"
+      },
+      {
+        "id": 12,
+        "record_type": "MS",
+        "sport_id": 1,
+        "user": "sam",
+        "value": 18,
+        "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT",
+        "workout_id": "hvYBqYBRa7wwXpaStWR4V2"
+      }
+    ],
+    "sports_list": [
+        1,
+        4,
+        6
+    ],
+    "start_elevation_at_zero": false,
+    "timezone": "Europe/Paris",
+    "total_ascent": 720.35,
+    "total_distance": 67.895,
+    "total_duration": "6:50:27",
+    "use_dark_mode": null,
+    "use_raw_gpx_speed": false,
+    "username": "sam",
+    "weekm": false,
+    "workouts_visibility": "private"
+  },
+  "status": "success"
+}
+
+
+
+
Objet JSON de requête:
+
    +
  • account_creation (boolean) – notification d’inscription d’un utilisateur (seulement si l’utilisateur a des droits d’administration)

  • +
  • comment_like (boolean) – notification de _like_ sur un commentaire

  • +
  • follow (boolean) – notification de suivi

  • +
  • follow_request (boolean) – notification de demande d’abonnement

  • +
  • follow_request_approved (boolean) – notification de demande d’abonnement approuvée

  • +
  • mention (boolean) – notification de mention

  • +
  • workout_comment (boolean) – notification de commentaire sur une séance

  • +
  • workout_like (boolean) – notification de _like_ sur une séance

  • +
+
+
En-têtes de requête:
+
+
+
Codes d’état:
+
+
+
+
+
POST /api/auth/picture
@@ -1189,7 +1373,6 @@

Authentification et compte{ "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -1209,6 +1392,15 @@

Authentification et compte "map_visibility": "followers_only", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -1257,6 +1449,7 @@

Authentification et compte "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -2039,7 +2232,7 @@

Authentification et compte +

diff --git a/docs/fr/api/comments.html b/docs/fr/api/comments.html index f8f963d8b..65b5c717b 100644 --- a/docs/fr/api/comments.html +++ b/docs/fr/api/comments.html @@ -6,7 +6,7 @@ - Commentaires - Documentation FitTrackee 0.9.0b4 + Commentaires - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -750,6 +750,75 @@

Commentaires +
+GET /api/comments/(string: comment_short_id)/likes
+

Obtenir la liste des utilisateurs qui ont « liké » le commentaire

+

Scope : workouts:read

+

Exemple de requête :

+
POST /api/comments/WJgTwtqFpnPrHYAK5eX9Pw/likes HTTP/1.1
+Content-Type: application/json
+
+
+

Exemple de réponse :

+
HTTP/1.1 200 OK
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": [
+        {
+          "created_at": "Sun, 31 Dec 2017 09:00:00 GMT",
+          "followers": 0,
+          "following": 0,
+          "nb_workouts": 1,
+          "picture": false,
+          "role": "user",
+          "suspended_at": null,
+          "username": "Sam"
+        }
+      ]
+    },
+    "status": "success"
+  }
+
+
+
+
Paramètres:
+
    +
  • comment_short_id (string) – identifiant court du commentaire

  • +
+
+
Paramètres de requête:
+
    +
  • page (integer) – page si pagination (par défaut : 1)

  • +
+
+
En-têtes de requête:
+
    +
  • Authorization – Jeton “OAuth 2.0 Bearer” pour le commentaire avec une visibilité private et followers_only

  • +
+
+
Codes d’état:
+
    +
  • 200 OKsuccess

  • +
  • 401 Unauthorized

      +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

    • +
    +

  • +
  • 403 Forbidden

      +
    • you do not have permissions

    • +
    • you do not have permissions, your account is suspended

    • +
    +

  • +
  • 404 Not Foundcomment not found

  • +
+
+
+
+
POST /api/comments/(string: comment_short_id)/suspension/appeal
@@ -911,7 +980,7 @@

Commentaires +

diff --git a/docs/fr/api/configuration.html b/docs/fr/api/configuration.html index a32ed424e..3179eadbe 100644 --- a/docs/fr/api/configuration.html +++ b/docs/fr/api/configuration.html @@ -6,7 +6,7 @@ - Configuration - Documentation FitTrackee 0.9.0b4 + Configuration - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@ diff --git a/docs/fr/api/equipment_types.html b/docs/fr/api/equipment_types.html index c4bf01344..f7f0edd24 100644 --- a/docs/fr/api/equipment_types.html +++ b/docs/fr/api/equipment_types.html @@ -6,7 +6,7 @@ - Types d’équipement - Documentation FitTrackee 0.9.0b4 + Types d’équipement - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -640,7 +640,7 @@

Types d’équipement +

diff --git a/docs/fr/api/equipments.html b/docs/fr/api/equipments.html index 6e28bbcb4..df3b51eb2 100644 --- a/docs/fr/api/equipments.html +++ b/docs/fr/api/equipments.html @@ -6,7 +6,7 @@ - Équipements - Documentation FitTrackee 0.9.0b4 + Équipements - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -851,7 +851,7 @@

Équipements +

diff --git a/docs/fr/api/follow_requests.html b/docs/fr/api/follow_requests.html index abc3f7bfe..5a06bcb11 100644 --- a/docs/fr/api/follow_requests.html +++ b/docs/fr/api/follow_requests.html @@ -6,7 +6,7 @@ - Demandes de suivi - Documentation FitTrackee 0.9.0b4 + Demandes de suivi - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -546,7 +546,7 @@

Demandes de suivi +

diff --git a/docs/fr/api/index.html b/docs/fr/api/index.html index 96595fe09..6451baf09 100644 --- a/docs/fr/api/index.html +++ b/docs/fr/api/index.html @@ -6,7 +6,7 @@ - Documentation de l’API - Documentation FitTrackee 0.9.0b4 + Documentation de l’API - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -363,7 +363,7 @@

Documentation de l’API

- + diff --git a/docs/fr/api/notifications.html b/docs/fr/api/notifications.html index bbcc50784..4382caab4 100644 --- a/docs/fr/api/notifications.html +++ b/docs/fr/api/notifications.html @@ -6,7 +6,7 @@ - Notifications - Documentation FitTrackee 0.9.0b4 + Notifications - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -681,7 +681,7 @@

Notifications +

diff --git a/docs/fr/api/oauth2.html b/docs/fr/api/oauth2.html index 776496edc..33ac88211 100644 --- a/docs/fr/api/oauth2.html +++ b/docs/fr/api/oauth2.html @@ -6,7 +6,7 @@ - OAuth2 - Documentation FitTrackee 0.9.0b4 + OAuth2 - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -874,7 +874,7 @@

OAuth2

- + diff --git a/docs/fr/api/records.html b/docs/fr/api/records.html index 4f950c9e5..c813a9982 100644 --- a/docs/fr/api/records.html +++ b/docs/fr/api/records.html @@ -6,7 +6,7 @@ - Records - Documentation FitTrackee 0.9.0b4 + Records - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -462,7 +462,7 @@

Records +

diff --git a/docs/fr/api/reports.html b/docs/fr/api/reports.html index 29bddc0dd..3b87d7822 100644 --- a/docs/fr/api/reports.html +++ b/docs/fr/api/reports.html @@ -6,7 +6,7 @@ - Signalements - Documentation FitTrackee 0.9.0b4 + Signalements - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -1064,7 +1064,7 @@

Signalements +

diff --git a/docs/fr/api/sports.html b/docs/fr/api/sports.html index efc1095cc..d076689b6 100644 --- a/docs/fr/api/sports.html +++ b/docs/fr/api/sports.html @@ -6,7 +6,7 @@ - Sports - Documentation FitTrackee 0.9.0b4 + Sports - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -682,7 +682,7 @@

Sports

- + diff --git a/docs/fr/api/stats.html b/docs/fr/api/stats.html index 9a1f72796..3060e0632 100644 --- a/docs/fr/api/stats.html +++ b/docs/fr/api/stats.html @@ -6,7 +6,7 @@ - Statistiques - Documentation FitTrackee 0.9.0b4 + Statistiques - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -710,7 +710,7 @@

Statistiques +

diff --git a/docs/fr/api/timeline.html b/docs/fr/api/timeline.html index 5f2f2e706..e86b0fd56 100644 --- a/docs/fr/api/timeline.html +++ b/docs/fr/api/timeline.html @@ -6,7 +6,7 @@ - Flux de séances - Documentation FitTrackee 0.9.0b4 + Flux de séances - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -499,7 +499,7 @@

Flux de séances +

diff --git a/docs/fr/api/users.html b/docs/fr/api/users.html index 3c913a4e6..613c95190 100644 --- a/docs/fr/api/users.html +++ b/docs/fr/api/users.html @@ -6,7 +6,7 @@ - Utilisateurs - Documentation FitTrackee 0.9.0b4 + Utilisateurs - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -1682,7 +1682,7 @@

Utilisateurs +

diff --git a/docs/fr/api/workouts.html b/docs/fr/api/workouts.html index 5d2f9c6e4..5c23a46c2 100644 --- a/docs/fr/api/workouts.html +++ b/docs/fr/api/workouts.html @@ -6,7 +6,7 @@ - Séances - Documentation FitTrackee 0.9.0b4 + Séances - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -1728,6 +1728,90 @@

Séances +
+GET /api/workouts/(string: workout_short_id)/likes
+

Obtenir la liste des utilisateurs qui ont « liké » la séance

+

Exemple de requête :

+
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/likes HTTP/1.1
+
+
+

Exemple de réponses :

+
    +
  • succès :

  • +
+
HTTP/1.1 200 OK
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": [
+        {
+          "created_at": "Sun, 31 Dec 2017 09:00:00 GMT",
+          "followers": 0,
+          "following": 0,
+          "nb_workouts": 1,
+          "picture": false,
+          "role": "user",
+          "suspended_at": null,
+          "username": "Sam"
+        }
+      ]
+    },
+    "status": "success"
+  }
+
+
+
    +
  • séance non trouvé :

  • +
+
HTTP/1.1 404 NOT FOUND
+Content-Type: application/json
+
+  {
+    "data": {
+      "likes": []
+    },
+    "status": "not found"
+  }
+
+
+
+
Paramètres:
+
    +
  • workout_short_id (string) – identifiant court de la séance

  • +
+
+
Paramètres de requête:
+
    +
  • page (integer) – page si pagination (par défaut : 1)

  • +
+
+
En-têtes de requête:
+
    +
  • Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité private et followers_only

  • +
+
+
Codes d’état:
+
    +
  • 200 OKsuccess

  • +
  • 401 Unauthorized

      +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

    • +
    +

  • +
  • 403 Forbidden

      +
    • you do not have permissions

    • +
    • you do not have permissions, your account is suspended

    • +
    +

  • +
  • 404 Not Foundworkout not found

  • +
+
+
+
+
POST /api/workouts/(string: workout_short_id)/suspension/appeal
@@ -1838,7 +1922,7 @@

Séances +

diff --git a/docs/fr/changelog.html b/docs/fr/changelog.html index 2ed90a186..cce5425a0 100644 --- a/docs/fr/changelog.html +++ b/docs/fr/changelog.html @@ -6,7 +6,7 @@ - Historique des modifications - Documentation FitTrackee 0.9.0b4 + Historique des modifications - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -288,12 +288,55 @@

Historique des modifications

+
+

Version 0.9.0b6 (05/01/2025)

+

Il s”agit d”une préversion. N”installez pas cette version en production, vous pourriez ne pas être en mesure de rétrograder en toute sécurité vers une version stable.
Si vous trouvez des bugs, veuillez les signaler.

+
+

Fonctionnalités et améliorations

+
    +
  • PR#677 - Add notification preferences

  • +
  • PR#678 - Display users who like comment/workout

  • +
+
+
+

Bugs corrigés

+
    +
  • d743abf - display missing errors in user profile

  • +
+

Note : Cette version contient des migrations de base de données (voir les instructions dans la documentation)

+
+
+
+

Version 0.9.0b5 (30/12/2024)

+

Il s”agit d”une préversion. N”installez pas cette version en production, vous pourriez ne pas être en mesure de rétrograder en toute sécurité vers une version stable.
Si vous trouvez des bugs, veuillez les signaler.

+
+

Fonctionnalités et améliorations

+
    +
  • PR#675 - CLI - create user with provided role

  • +
+
+
+

Bugs corrigés

+
    +
  • PR#671 - Fix sport icon when unauthenticated user displays user profile

  • +
  • PR#674 - Fix display of privacy policy message with privacy extension

  • +
  • 2e9f9d - fix translations

  • +
  • edc677 - Fix notification icons

  • +
+
+
+

Divers

+
    +
  • 174240 - add tags input to docker image build job

  • +
+
+
-

Version 0.8.13 (29/10/2024)

+

Version 0.8.13 (29/12/2024)

Traductions

    -
  • PR#667 - Translations update (Galicien)

  • +
  • PR#667 - Translations update (Galician)

Avancement de la traduction :

diff --git a/docs/fr/cli.html b/docs/fr/cli.html index 59bcc5e20..ff36c045a 100644 --- a/docs/fr/cli.html +++ b/docs/fr/cli.html @@ -6,7 +6,7 @@ - Interface de ligne de commande - Documentation FitTrackee 0.9.0b4 + Interface de ligne de commande - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -408,6 +408,9 @@

ftcli

Modifié dans la version 0.8.4: La préférence de l’utilisateur pour la langue de l’interface est ajoutée.

+
+

Modifié dans la version 0.9.0: Ajout d’une option pour le rôle de l’utilisateur.

+

Créer un compte utilisateur.

Note

@@ -440,6 +443,9 @@

ftcli

--lang LANGUAGE

Préférence de l’utilisateur pour la langue de l’interface (code à deux lettres, ISO 639-1). Si elle n’est pas fournie ou prise en charge, la valeur par défaut est l’anglais (« en »).

+

--role [owner|admin|moderator|user]

+

Rôle de l’utilisateur (valeur par défaut: “user”)

+

@@ -496,7 +502,7 @@

ftcli

--set-admin BOOLEAN

[DÉPRÉCIÉ] Ajouter/supprimer des droits d’administration (lors de l’ajout de droits d’administration, le compte de l’utilisateur est également activé s’il ne l’est pas).

-

--set-role ROLE

+

--set-role [owner|admin|moderator|user]

Configurer le rôle (lors de la configuration des rôles “moderator”, “admin” et “owner”, le compte de l’utilisateur est également activé s’il ne l’est pas.

--activate

@@ -603,7 +609,7 @@

ftcli - + diff --git a/docs/fr/features.html b/docs/fr/features.html index f12793e40..b8b033485 100644 --- a/docs/fr/features.html +++ b/docs/fr/features.html @@ -6,7 +6,7 @@ - Fonctionnalités - Documentation FitTrackee 0.9.0b4 + Fonctionnalités - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -604,6 +604,16 @@

Notifications -

A propos

+

A propos

Ajouté dans la version 0.7.13.

@@ -843,7 +853,7 @@

A propos -

Politique de confidentialité

+

Politique de confidentialité

Ajouté dans la version 0.7.13.

@@ -1129,8 +1139,8 @@

AdministrationAdministration

diff --git a/docs/fr/genindex.html b/docs/fr/genindex.html index 64c9e41f1..49436ebb0 100644 --- a/docs/fr/genindex.html +++ b/docs/fr/genindex.html @@ -4,7 +4,7 @@ - Index - Documentation FitTrackee 0.9.0b4 + Index - Documentation FitTrackee 0.9.0b6 @@ -167,7 +167,7 @@
-
@@ -195,7 +195,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -394,7 +394,7 @@

V

- + diff --git a/docs/fr/http-routingtable.html b/docs/fr/http-routingtable.html index 29d7d818e..458662b38 100644 --- a/docs/fr/http-routingtable.html +++ b/docs/fr/http-routingtable.html @@ -4,7 +4,7 @@ - Table de routage HTTP - Documentation FitTrackee 0.9.0b4 + Table de routage HTTP - Documentation FitTrackee 0.9.0b6 @@ -167,7 +167,7 @@
-
@@ -195,7 +195,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -332,6 +332,12 @@

Table de routage HTTP

GET /api/comments/(string:comment_short_id) + + + + GET /api/comments/(string:comment_short_id)/likes + + @@ -560,6 +566,12 @@

Table de routage HTTP

GET /api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id) + + + + GET /api/workouts/(string:workout_short_id)/likes + + @@ -650,6 +662,12 @@

Table de routage HTTP

POST /api/auth/profile/edit + + + + POST /api/auth/profile/edit/notifications + + @@ -963,7 +981,7 @@

Table de routage HTTP

- + diff --git a/docs/fr/index.html b/docs/fr/index.html index 067ef2e28..291bcddd3 100644 --- a/docs/fr/index.html +++ b/docs/fr/index.html @@ -6,7 +6,7 @@ - Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -367,7 +367,7 @@

Table des matières +

diff --git a/docs/fr/installation.html b/docs/fr/installation.html index 063a5dddd..dd569c5aa 100644 --- a/docs/fr/installation.html +++ b/docs/fr/installation.html @@ -6,7 +6,7 @@ - Installation - Documentation FitTrackee 0.9.0b4 + Installation - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -1570,7 +1570,7 @@

NixOS

- + diff --git a/docs/fr/oauth.html b/docs/fr/oauth.html index 754d1c839..cb4f8e74f 100644 --- a/docs/fr/oauth.html +++ b/docs/fr/oauth.html @@ -6,7 +6,7 @@ - OAuth 2.0 - Documentation FitTrackee 0.9.0b4 + OAuth 2.0 - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -472,7 +472,7 @@

Ressources +

diff --git a/docs/fr/objects.inv b/docs/fr/objects.inv index 1888ebc33..57af57d75 100644 Binary files a/docs/fr/objects.inv and b/docs/fr/objects.inv differ diff --git a/docs/fr/search.html b/docs/fr/search.html index c5541bc4c..072db7414 100644 --- a/docs/fr/search.html +++ b/docs/fr/search.html @@ -7,7 +7,7 @@ -Recherche - Documentation FitTrackee 0.9.0b4 +<title>Recherche - Documentation FitTrackee 0.9.0b6 @@ -170,7 +170,7 @@
-
@@ -198,7 +198,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -328,7 +328,7 @@
- + diff --git a/docs/fr/searchindex.js b/docs/fr/searchindex.js index f59abfd39..738172be6 100644 --- a/docs/fr/searchindex.js +++ b/docs/fr/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"A partir de PyPI": [[20, "from-pypi"], [20, "id3"]], "A partir des sources": [[20, "from-sources"], [20, "id4"]], "A propos": [[18, "about"]], "Administrateur": [[23, null]], "Administration": [[18, "administration"], [18, "id8"]], "Application": [[18, "application"]], "Applications OAuth": [[18, "oauth-apps"]], "Authentification et compte": [[0, null]], "Base de donn\u00e9es": [[17, "database"]], "Bugs corrig\u00e9s": [[16, "bugs-fixed"], [16, "id3"], [16, "id5"], [16, "id7"], [16, "id15"], [16, "id18"], [16, "id21"], [16, "id26"], [16, "id32"], [16, "id37"], [16, "id41"], [16, "id44"], [16, "id46"], [16, "id50"], [16, "id54"], [16, "id58"], [16, "id61"], [16, "id64"], [16, "id67"], [16, "id68"], [16, "id71"], [16, "id73"], [16, "id75"], [16, "id78"], [16, "id81"], [16, "id89"], [16, "id92"], [16, "id95"], [16, "id98"], [16, "id110"], [16, "id115"], [16, "id117"], [16, "id121"], [16, "id124"], [16, "id127"], [16, "id129"], [16, "id132"], [16, "id135"], [16, "id137"], [16, "id140"], [16, "id143"], [16, "id146"], [16, "id151"], [16, "id153"], [16, "id155"], [16, "id157"], [16, "id160"], [16, "id162"], [16, "id168"], [16, "id171"], [16, "id173"], [16, "id175"], [16, "id182"], [16, "id187"], [16, "id189"], [16, "id191"], [16, "id194"], [16, "id196"], [16, "id198"], [16, "id202"], [16, "id212"], [16, "id215"], [16, "id217"], [16, "id220"], [16, "id227"]], "Captures d\u2019\u00e9cran": [[18, "screenshots"]], "Commentaires": [[1, null], [18, "comments"]], "Compte et pr\u00e9f\u00e9rences": [[18, "account-preferences"]], "Configuration": [[2, null], [18, "configuration"]], "Courriels": [[20, "emails"]], "Demandes de suivi": [[5, null]], "Divers": [[16, "misc"], [16, "id4"], [16, "id8"], [16, "id10"], [16, "id13"], [16, "id17"], [16, "id24"], [16, "id28"], [16, "id31"], [16, "id35"], [16, "id39"], [16, "id43"], [16, "id48"], [16, "id52"], [16, "id56"], [16, "id63"], [16, "id66"], [16, "id70"], [16, "id72"], [16, "id76"], [16, "id83"], [16, "id86"], [16, "id94"], [16, "id101"], [16, "id112"], [16, "id114"], [16, "id130"], [16, "id144"], [16, "id147"], [16, "id164"], [16, "id166"], [16, "id183"], [16, "id192"], [16, "id199"], [16, "id203"], [16, "id210"], [16, "id221"], [16, "id224"]], "Docker": [[20, "docker"], [20, "id6"]], "Documentation": [[16, "documentation"], [16, "id85"], [16, "id119"]], "Documentation de l\u2019API": [[6, null]], "Donn\u00e9es m\u00e9t\u00e9o": [[20, "weather-data"]], "D\u00e9pannage": [[24, null]], "D\u00e9pendances principales": [[20, "main-dependencies"]], "D\u00e9ploiement": [[20, "deployment"]], "D\u00e9veloppement": [[20, "development"]], "Environnement de production": [[20, "prod-environment"]], "Environnements de d\u00e9veloppement": [[20, "dev-environment"], [20, "id5"]], "Environnements de production": [[20, "production-environment"]], "FitTrackee": [[19, null]], "FitTrackee ne d\u00e9marre pas": [[23, "fittrackee-fails-to-start"]], "Flux": [[21, "flow"]], "Flux de s\u00e9ances": [[13, null]], "Fonctionnalit\u00e9s": [[16, "features"], [16, "id139"], [16, "id149"], [16, "id159"], [18, null]], "Fonctionnalit\u00e9s et am\u00e9liorations": [[16, "features-and-enhancements"], [16, "id2"], [16, "id6"], [16, "id11"], [16, "id14"], [16, "id20"], [16, "id25"], [16, "id29"], [16, "id36"], [16, "id40"], [16, "id49"], [16, "id53"], [16, "id57"], [16, "id60"], [16, "id77"], [16, "id80"], [16, "id88"], [16, "id91"], [16, "id97"], [16, "id102"], [16, "id104"], [16, "id106"], [16, "id109"], [16, "id120"], [16, "id126"]], "Historique des modifications": [[16, null]], "Installation": [[20, null], [20, "id2"]], "Interactions": [[18, "interactions"]], "Interface de ligne de commande": [[17, null]], "Les images de la carte ne sont pas affich\u00e9es mais la carte est affich\u00e9e dans le d\u00e9tail de la s\u00e9ance": [[23, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Likes": [[18, "likes"]], "Limitation d\u2019acc\u00e8s \u00e0 l\u2019API": [[20, "api-rate-limits"]], "Liste des s\u00e9ances": [[18, "workouts-list"]], "Mise \u00e0 jour": [[20, "upgrade"]], "Mod\u00e9ration": [[18, "moderation"]], "NixOS": [[20, "nixos"]], "Notifications": [[7, null], [18, "notifications"], [18, "id7"]], "Nouvelles fonctionnalit\u00e9s": [[16, "new-features"], [16, "id177"], [16, "id179"], [16, "id181"], [16, "id186"], [16, "id201"], [16, "id205"], [16, "id207"], [16, "id209"], [16, "id214"], [16, "id219"], [16, "id223"], [16, "id226"], [16, "id229"]], "OAuth 2.0": [[21, null]], "OAuth2": [[8, null], [17, "oauth2"]], "Outils d\u2019importation": [[22, "import-tools"]], "Outils tiers": [[22, null]], "Page de d\u00e9tail d\u2019une s\u00e9ance": [[18, "workout-detail"]], "Points d'acc\u00e8s :": [[6, null]], "Politique de confidentialit\u00e9": [[18, "privacy-policy"]], "Production": [[20, "production"]], "Pr\u00e9requis": [[20, "prerequisites"]], "Pull Requests": [[16, "pull-requests"], [16, "id133"], [16, "id136"], [16, "id152"], [16, "id161"], [16, "id165"], [16, "id169"], [16, "id184"]], "Records": [[9, null]], "Ressources": [[21, "resources"]], "R\u00e9pertoire des utilisateurs": [[18, "users-directory"]], "Scopes": [[21, "scopes"]], "Scripts d\u2019installation": [[22, "installation-scripts"]], "Serveur de tuiles": [[20, "map-tile-server"]], "Signalements": [[10, null]], "Sports": [[11, null], [18, "sports"], [18, "id3"]], "Statistiques": [[12, null], [18, "statistics"], [18, "id5"]], "S\u00e9ances": [[15, null], [18, "workouts"], [18, "id1"]], "S\u00e9curit\u00e9": [[16, "security"]], "Table des mati\u00e8res": [[19, "table-of-contents"]], "Tableau de bord": [[18, "dashboard"], [18, "id4"]], "Tickets Ferm\u00e9s": [[16, "issues-closed"], [16, "id131"], [16, "id134"], [16, "id138"], [16, "id142"], [16, "id145"], [16, "id148"], [16, "id150"], [16, "id154"], [16, "id156"], [16, "id158"], [16, "id163"], [16, "id167"], [16, "id170"], [16, "id172"], [16, "id174"], [16, "id176"], [16, "id178"], [16, "id180"], [16, "id185"], [16, "id188"], [16, "id190"], [16, "id193"], [16, "id195"], [16, "id197"], [16, "id200"], [16, "id204"], [16, "id206"], [16, "id208"], [16, "id211"], [16, "id213"], [16, "id216"], [16, "id218"], [16, "id222"], [16, "id225"], [16, "id228"]], "Traductions": [[16, "translations"], [16, "id1"], [16, "id9"], [16, "id12"], [16, "id16"], [16, "id19"], [16, "id22"], [16, "id23"], [16, "id27"], [16, "id30"], [16, "id33"], [16, "id34"], [16, "id38"], [16, "id42"], [16, "id45"], [16, "id47"], [16, "id51"], [16, "id55"], [16, "id59"], [16, "id62"], [16, "id65"], [16, "id69"], [16, "id74"], [16, "id79"], [16, "id82"], [16, "id84"], [16, "id87"], [16, "id90"], [16, "id93"], [16, "id96"], [16, "id99"], [16, "id100"], [16, "id103"], [16, "id105"], [16, "id107"], [16, "id108"], [16, "id111"], [16, "id113"], [16, "id116"], [16, "id118"], [16, "id122"], [16, "id123"], [16, "id125"], [16, "id128"], [16, "id141"], [18, "translations"]], "Types d\u2019\u00e9quipement": [[3, null], [18, "equipment-types"]], "Utilisateurs": [[14, null], [17, "users"], [18, "users"], [18, "id2"]], "Variables d\u2019environnement": [[20, "environment-variables"]], "Version 0.1.0 - Premi\u00e8re version \ud83c\udf89 (04/07/2018)": [[16, "version-0-1-0-first-release-2018-07-04"]], "Version 0.1.1 - Corrections et am\u00e9liorations (07/02/2019)": [[16, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.2.0 - Statistiques (07/07/2019)": [[16, "version-0-2-0-statistics-2019-07-07"]], "Version 0.2.1 - Correction et am\u00e9liorations (01/09/2019)": [[16, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.2 - Corrections des statistiques (23/09/2019)": [[16, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.3 - FitTrackee disponible en Fran\u00e7ais (29/12/2019)": [[16, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.4 - Corrections mineures (30/01/2020)": [[16, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.5 - Corrections et am\u00e9liorations (31/01/2020)": [[16, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.3.0 - Administration (15/07/2020)": [[16, "version-0-3-0-administration-2020-07-15"]], "Version 0.4.0 - FitTrackee sur PyPI (19/09/2020)": [[16, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.4.1 (31/12/2020)": [[16, "version-0-4-1-2020-12-31"]], "Version 0.4.2 (03/01/2021)": [[16, "version-0-4-2-2021-01-03"]], "Version 0.4.3 (10/01/2021)": [[16, "version-0-4-3-2021-01-10"]], "Version 0.4.4 (31/01/2021)": [[16, "version-0-4-4-2021-01-31"]], "Version 0.4.5 (17/02/2021)": [[16, "version-0-4-5-2021-02-17"]], "Version 0.4.6 (21/02/2021)": [[16, "version-0-4-6-2021-02-21"]], "Version 0.4.7 (07/04/2021)": [[16, "version-0-4-7-2021-04-07"]], "Version 0.4.8 (03/07/2021)": [[16, "version-0-4-8-2021-07-03"]], "Version 0.4.9 (16/07/2021)": [[16, "version-0-4-9-2021-07-16"]], "Version 0.5.0 (14/11/2021)": [[16, "version-0-5-0-2021-11-14"]], "Version 0.5.1 (30/11/2021)": [[16, "version-0-5-1-2021-11-30"]], "Version 0.5.2 (19/12/2021)": [[16, "version-0-5-2-2021-12-19"]], "Version 0.5.3 (01/01/2022)": [[16, "version-0-5-3-2022-01-01"]], "Version 0.5.4 (01/01/2022)": [[16, "version-0-5-4-2022-01-01"]], "Version 0.5.5 (19/01/2022)": [[16, "version-0-5-5-2022-01-19"]], "Version 0.5.6 (05/02/2022)": [[16, "version-0-5-6-2022-02-05"]], "Version 0.5.7 (13/02/2022)": [[16, "version-0-5-7-2022-02-13"]], "Version 0.6.0 (27/03/2022)": [[16, "version-0-6-0-2022-03-27"]], "Version 0.6.1 (27/03/2022)": [[16, "version-0-6-1-2022-03-27"]], "Version 0.6.10 (13/07/2022)": [[16, "version-0-6-10-2022-07-13"]], "Version 0.6.11 (27/02/2022)": [[16, "version-0-6-11-2022-07-27"]], "Version 0.6.12 (14/09/2022)": [[16, "version-0-6-12-2022-09-14"]], "Version 0.6.2 (03/04/2022)": [[16, "version-0-6-2-2022-04-03"]], "Version 0.6.3 (09/04/2022)": [[16, "version-0-6-3-2022-04-09"]], "Version 0.6.4 (23/04/2022)": [[16, "version-0-6-4-2022-04-23"]], "Version 0.6.5 (24/04/2022)": [[16, "version-0-6-5-2022-04-24"]], "Version 0.6.6 (29/05/2022)": [[16, "version-0-6-6-2022-05-29"]], "Version 0.6.7 (11/06/2022)": [[16, "version-0-6-7-2022-06-11"]], "Version 0.6.8 (22/06/2022)": [[16, "version-0-6-8-2022-06-22"]], "Version 0.6.9 (03/07/2022)": [[16, "version-0-6-9-2022-07-03"]], "Version 0.7.0 (19/09/2022)": [[16, "version-0-7-0-2022-09-19"]], "Version 0.7.1 (21/09/2022)": [[16, "version-0-7-1-2022-09-21"]], "Version 0.7.10 (21/12/2022)": [[16, "version-0-7-10-2022-12-21"]], "Version 0.7.11 (31/12/2022)": [[16, "version-0-7-11-2022-12-31"]], "Version 0.7.12 (16/02/2023)": [[16, "version-0-7-12-2023-02-16"]], "Version 0.7.13 (05/03/2023)": [[16, "version-0-7-13-2023-03-05"]], "Version 0.7.14 (08/03/2023)": [[16, "version-0-7-14-2023-03-08"]], "Version 0.7.15 (12/04/2023)": [[16, "version-0-7-15-2023-04-12"]], "Version 0.7.16 (29/05/2023)": [[16, "version-0-7-16-2023-05-29"]], "Version 0.7.17 (03/06/2023)": [[16, "version-0-7-17-2023-06-03"]], "Version 0.7.18 (25/06/2023)": [[16, "version-0-7-18-2023-06-25"]], "Version 0.7.19 (15/07/2023)": [[16, "version-0-7-19-2023-07-15"]], "Version 0.7.2 (21/09/2022)": [[16, "version-0-7-2-2022-09-21"]], "Version 0.7.20 (22/07/2023)": [[16, "version-0-7-20-2023-07-22"]], "Version 0.7.21 (30/07/2023)": [[16, "version-0-7-21-2023-07-30"]], "Version 0.7.22 (23/08/2023)": [[16, "version-0-7-22-2023-08-23"]], "Version 0.7.23 (14/09/2023)": [[16, "version-0-7-23-2023-09-14"]], "Version 0.7.24 (04/10/2023)": [[16, "version-0-7-24-2023-10-04"]], "Version 0.7.25 (08/10/2023)": [[16, "version-0-7-25-2023-10-08"]], "Version 0.7.26 (19/11/2023)": [[16, "version-0-7-26-2023-11-19"]], "Version 0.7.27 (20/12/2023)": [[16, "version-0-7-27-2023-12-20"]], "Version 0.7.28 (23/12/2023)": [[16, "version-0-7-28-2023-12-23"]], "Version 0.7.29 (04/01/2024)": [[16, "version-0-7-29-2024-01-06"]], "Version 0.7.3 (01/11/2022)": [[16, "version-0-7-3-2022-11-01"]], "Version 0.7.30 (04/02/2024)": [[16, "version-0-7-30-2024-02-04"]], "Version 0.7.31 (10/02/2024)": [[16, "version-0-7-31-2024-02-10"]], "Version 0.7.32 (10/03/2024)": [[16, "version-0-7-32-2024-03-10"]], "Version 0.7.4 (05/11/2022)": [[16, "version-0-7-4-2022-11-05"]], "Version 0.7.5 (09/11/2022)": [[16, "version-0-7-5-2022-11-09"]], "Version 0.7.6 (09/11/2022)": [[16, "version-0-7-6-2022-11-09"]], "Version 0.7.7 (27/11/2022)": [[16, "version-0-7-7-2022-11-27"]], "Version 0.7.8 (30/11/2022)": [[16, "version-0-7-8-2022-11-30"]], "Version 0.7.9 (11/12/2022)": [[16, "version-0-7-9-2022-12-11"]], "Version 0.8.0 (21/04/2024)": [[16, "version-0-8-0-2024-04-21"]], "Version 0.8.1 (01/05/2024)": [[16, "version-0-8-1-2024-05-01"]], "Version 0.8.10 (09/10/2024)": [[16, "version-0-8-10-2024-10-09"]], "Version 0.8.11 (30/10/2024)": [[16, "version-0-8-11-2024-10-30"]], "Version 0.8.12 (17/11/2024)": [[16, "version-0-8-12-2024-11-17"]], "Version 0.8.13 (29/10/2024)": [[16, "version-0-8-13-2024-12-29"]], "Version 0.8.2 (08/05/2024)": [[16, "version-0-8-2-2024-05-08"]], "Version 0.8.3 (09/05/2024)": [[16, "version-0-8-3-2024-05-09"]], "Version 0.8.4 (22/05/2024)": [[16, "version-0-8-4-2024-05-22"]], "Version 0.8.5 (29/06/2024)": [[16, "version-0-8-5-2024-06-29"]], "Version 0.8.6 (03/08/2024)": [[16, "version-0-8-6-2024-08-03"]], "Version 0.8.7 (25/08/2024)": [[16, "version-0-8-7-2024-08-25"]], "Version 0.8.8 (01/09/2024)": [[16, "version-0-8-8-2024-09-01"]], "Version 0.8.9 (21/09/2024)": [[16, "version-0-8-9-2024-09-21"]], "Version 0.9.0b1 (14/12/2024)": [[16, "version-0-9-0b1-2024-12-14"]], "Version 0.9.0b2 (14/12/2024)": [[16, "version-0-9-0b2-2024-12-14"]], "Version 0.9.0b3 (18/12/2024)": [[16, "version-0-9-0b3-2024-12-18"]], "Version 0.9.0b4 (23/12/2024)": [[16, "version-0-9-0b4-2024-12-23"]], "Yunohost": [[20, "yunohost"]], "ftcli db drop": [[17, "ftcli-db-drop"]], "ftcli db upgrade": [[17, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[17, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[17, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[17, "ftcli-users-clean-tokens"]], "ftcli users create": [[17, "ftcli-users-create"]], "ftcli users export_archives": [[17, "ftcli-users-export-archives"]], "ftcli users update": [[17, "ftcli-users-update"]], "\u00c9chec du chargement ou du t\u00e9l\u00e9chargement de fichiers": [[23, "failed-to-upload-or-download-files"]], "\u00c9quipements": [[4, null], [18, "equipments"], [18, "id6"]]}, "docnames": ["api/auth", "api/comments", "api/configuration", "api/equipment_types", "api/equipments", "api/follow_requests", "api/index", "api/notifications", "api/oauth2", "api/records", "api/reports", "api/sports", "api/stats", "api/timeline", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/auth.rst", "api/comments.rst", "api/configuration.rst", "api/equipment_types.rst", "api/equipments.rst", "api/follow_requests.rst", "api/index.rst", "api/notifications.rst", "api/oauth2.rst", "api/records.rst", "api/reports.rst", "api/sports.rst", "api/stats.rst", "api/timeline.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "indexentries": {"api_rate_limits": [[20, "envvar-API_RATE_LIMITS", false]], "app_log": [[20, "envvar-APP_LOG", false]], "app_port": [[20, "envvar-APP_PORT", false]], "app_secret_key": [[20, "envvar-APP_SECRET_KEY", false]], "app_settings": [[20, "envvar-APP_SETTINGS", false]], "app_workers": [[20, "envvar-APP_WORKERS", false]], "database_dir": [[20, "envvar-DATABASE_DIR", false]], "database_disable_pooling": [[20, "envvar-DATABASE_DISABLE_POOLING", false]], "database_url": [[20, "envvar-DATABASE_URL", false]], "default_staticmap": [[20, "envvar-DEFAULT_STATICMAP", false]], "email_url": [[20, "envvar-EMAIL_URL", false]], "flask_app": [[20, "envvar-FLASK_APP", false]], "host": [[20, "envvar-HOST", false]], "log_dir": [[20, "envvar-LOG_DIR", false]], "map_attribution": [[20, "envvar-MAP_ATTRIBUTION", false]], "port": [[20, "envvar-PORT", false]], "postgres_db": [[20, "envvar-POSTGRES_DB", false]], "postgres_password": [[20, "envvar-POSTGRES_PASSWORD", false]], "postgres_user": [[20, "envvar-POSTGRES_USER", false]], "redis_dir": [[20, "envvar-REDIS_DIR", false]], "redis_url": [[20, "envvar-REDIS_URL", false]], "sender_email": [[20, "envvar-SENDER_EMAIL", false]], "staticmap_subdomains": [[20, "envvar-STATICMAP_SUBDOMAINS", false]], "tile_server_url": [[20, "envvar-TILE_SERVER_URL", false]], "ui_url": [[20, "envvar-UI_URL", false]], "upload_dir": [[20, "envvar-UPLOAD_DIR", false]], "upload_folder": [[20, "envvar-UPLOAD_FOLDER", false]], "variable d'environnement": [[20, "envvar-API_RATE_LIMITS", false], [20, "envvar-APP_LOG", false], [20, "envvar-APP_PORT", false], [20, "envvar-APP_SECRET_KEY", false], [20, "envvar-APP_SETTINGS", false], [20, "envvar-APP_WORKERS", false], [20, "envvar-DATABASE_DIR", false], [20, "envvar-DATABASE_DISABLE_POOLING", false], [20, "envvar-DATABASE_URL", false], [20, "envvar-DEFAULT_STATICMAP", false], [20, "envvar-EMAIL_URL", false], [20, "envvar-FLASK_APP", false], [20, "envvar-HOST", false], [20, "envvar-LOG_DIR", false], [20, "envvar-MAP_ATTRIBUTION", false], [20, "envvar-PORT", false], [20, "envvar-POSTGRES_DB", false], [20, "envvar-POSTGRES_PASSWORD", false], [20, "envvar-POSTGRES_USER", false], [20, "envvar-REDIS_DIR", false], [20, "envvar-REDIS_URL", false], [20, "envvar-SENDER_EMAIL", false], [20, "envvar-STATICMAP_SUBDOMAINS", false], [20, "envvar-TILE_SERVER_URL", false], [20, "envvar-UI_URL", false], [20, "envvar-UPLOAD_DIR", false], [20, "envvar-UPLOAD_FOLDER", false], [20, "envvar-VITE_APP_API_URL", false], [20, "envvar-WEATHER_API_KEY", false], [20, "envvar-WEATHER_API_PROVIDER", false], [20, "envvar-WORKERS_PROCESSES", false]], "vite_app_api_url": [[20, "envvar-VITE_APP_API_URL", false]], "weather_api_key": [[20, "envvar-WEATHER_API_KEY", false]], "weather_api_provider \ud83c\udd95": [[20, "envvar-WEATHER_API_PROVIDER", false]], "workers_processes": [[20, "envvar-WORKERS_PROCESSES", false]]}, "objects": {"": [[10, 0, 1, "patch--api-appeals-(string-appeal_id)", "/api/appeals/(string:appeal_id)"], [0, 1, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 2, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 2, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 1, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 1, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 1, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 2, 1, "get--api-auth-account-sanctions-(string-action_short_id)", "/api/auth/account/sanctions/(string:action_short_id)"], [0, 1, 1, "post--api-auth-account-sanctions-(string-action_short_id)-appeal", "/api/auth/account/sanctions/(string:action_short_id)/appeal"], [0, 2, 1, "get--api-auth-account-suspension", "/api/auth/account/suspension"], [0, 1, 1, "post--api-auth-account-suspension-appeal", "/api/auth/account/suspension/appeal"], [0, 2, 1, "get--api-auth-blocked-users", "/api/auth/blocked-users"], [0, 1, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 1, 1, "post--api-auth-login", "/api/auth/login"], [0, 1, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 1, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 1, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 3, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 1, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 0, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 1, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 1, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 3, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 1, 1, "post--api-auth-register", "/api/auth/register"], [1, 3, 1, "delete--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 2, 1, "get--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 0, 1, "patch--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like", "/api/comments/(string:comment_short_id)/like"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like-undo", "/api/comments/(string:comment_short_id)/like/undo"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-suspension-appeal", "/api/comments/(string:comment_short_id)/suspension/appeal"], [2, 2, 1, "get--api-config", "/api/config"], [2, 0, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-equipment-types", "/api/equipment-types"], [3, 2, 1, "get--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [3, 0, 1, "patch--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [4, 2, 1, "get--api-equipments", "/api/equipments"], [4, 1, 1, "post--api-equipments", "/api/equipments"], [4, 3, 1, "delete--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 2, 1, "get--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 0, 1, "patch--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 1, 1, "post--api-equipments-(string-equipment_short_id)-refresh", "/api/equipments/(string:equipment_short_id)/refresh"], [5, 2, 1, "get--api-follow-requests", "/api/follow-requests"], [5, 1, 1, "post--api-follow-requests-(user_name)-accept", "/api/follow-requests/(user_name)/accept"], [5, 1, 1, "post--api-follow-requests-(user_name)-reject", "/api/follow-requests/(user_name)/reject"], [7, 2, 1, "get--api-notifications", "/api/notifications"], [7, 0, 1, "patch--api-notifications-(string-notification_id)", "/api/notifications/(string:notification_id)"], [7, 1, 1, "post--api-notifications-mark-all-as-read", "/api/notifications/mark-all-as-read"], [7, 2, 1, "get--api-notifications-types", "/api/notifications/types"], [7, 2, 1, "get--api-notifications-unread", "/api/notifications/unread"], [8, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [8, 1, 1, "post--api-oauth-apps", "/api/oauth/apps"], [8, 3, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [8, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [8, 1, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [8, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [8, 1, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [8, 1, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [8, 1, 1, "post--api-oauth-token", "/api/oauth/token"], [2, 2, 1, "get--api-ping", "/api/ping"], [9, 2, 1, "get--api-records", "/api/records"], [10, 2, 1, "get--api-reports", "/api/reports"], [10, 1, 1, "post--api-reports", "/api/reports"], [10, 2, 1, "get--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 0, 1, "patch--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 1, 1, "post--api-reports-(int-report_id)-actions", "/api/reports/(int:report_id)/actions"], [10, 2, 1, "get--api-reports-unresolved", "/api/reports/unresolved"], [11, 2, 1, "get--api-sports", "/api/sports"], [11, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [11, 0, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [12, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [12, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [12, 2, 1, "get--api-stats-all", "/api/stats/all"], [13, 2, 1, "get--api-timeline", "/api/timeline"], [14, 2, 1, "get--api-users", "/api/users"], [14, 3, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [14, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [14, 0, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [14, 1, 1, "post--api-users-(user_name)-block", "/api/users/(user_name)/block"], [14, 1, 1, "post--api-users-(user_name)-follow", "/api/users/(user_name)/follow"], [14, 2, 1, "get--api-users-(user_name)-followers", "/api/users/(user_name)/followers"], [14, 2, 1, "get--api-users-(user_name)-following", "/api/users/(user_name)/following"], [14, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [14, 2, 1, "get--api-users-(user_name)-sanctions", "/api/users/(user_name)/sanctions"], [14, 1, 1, "post--api-users-(user_name)-unblock", "/api/users/(user_name)/unblock"], [14, 1, 1, "post--api-users-(user_name)-unfollow", "/api/users/(user_name)/unfollow"], [14, 2, 1, "get--api-users-(user_name)-workouts", "/api/users/(user_name)/workouts"], [15, 2, 1, "get--api-workouts", "/api/workouts"], [15, 1, 1, "post--api-workouts", "/api/workouts"], [15, 3, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 0, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [1, 2, 1, "get--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [1, 1, 1, "post--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like", "/api/workouts/(string:workout_short_id)/like"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like-undo", "/api/workouts/(string:workout_short_id)/like/undo"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-suspension-appeal", "/api/workouts/(string:workout_short_id)/suspension/appeal"], [15, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [15, 1, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [20, 4, 1, "-", "API_RATE_LIMITS"], [20, 4, 1, "-", "APP_LOG"], [20, 4, 1, "-", "APP_PORT"], [20, 4, 1, "-", "APP_SECRET_KEY"], [20, 4, 1, "-", "APP_SETTINGS"], [20, 4, 1, "-", "APP_WORKERS"], [20, 4, 1, "-", "DATABASE_DIR"], [20, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [20, 4, 1, "-", "DATABASE_URL"], [20, 4, 1, "-", "DEFAULT_STATICMAP"], [20, 4, 1, "-", "EMAIL_URL"], [20, 4, 1, "-", "FLASK_APP"], [20, 4, 1, "-", "HOST"], [20, 4, 1, "-", "LOG_DIR"], [20, 4, 1, "-", "MAP_ATTRIBUTION"], [20, 4, 1, "-", "PORT"], [20, 4, 1, "-", "POSTGRES_DB"], [20, 4, 1, "-", "POSTGRES_PASSWORD"], [20, 4, 1, "-", "POSTGRES_USER"], [20, 4, 1, "-", "REDIS_DIR"], [20, 4, 1, "-", "REDIS_URL"], [20, 4, 1, "-", "SENDER_EMAIL"], [20, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [20, 4, 1, "-", "TILE_SERVER_URL"], [20, 4, 1, "-", "UI_URL"], [20, 4, 1, "-", "UPLOAD_DIR"], [20, 4, 1, "-", "UPLOAD_FOLDER"], [20, 4, 1, "-", "VITE_APP_API_URL"], [20, 4, 1, "-", "WEATHER_API_KEY"], [20, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [20, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[15, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objnames": {"0": ["http", "patch", "HTTP patch"], "1": ["http", "post", "HTTP post"], "2": ["http", "get", "HTTP get"], "3": ["http", "delete", "HTTP delete"], "4": ["std", "envvar", "variable d'environnement"]}, "objtypes": {"0": "http:patch", "1": "http:post", "2": "http:get", "3": "http:delete", "4": "std:envvar"}, "terms": {"0": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "00": [0, 4, 5, 9, 13, 14, 15], "000": 18, "000000": 0, "01": [0, 1, 9, 10, 12, 13, 14, 15], "02": [5, 14, 15], "03": [14, 15], "04": [0, 7, 10, 13, 14, 15], "06": [4, 7, 8, 12, 14], "0667062": 8, "06ba975": 16, "07": [0, 7, 9, 13, 14, 15], "075aeb9": 16, "08": [0, 4, 7, 9, 13, 14, 15], "09": [0, 7, 10, 14, 15], "0b4": 2, "0mb": [0, 15], "1": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "10": [0, 1, 2, 4, 5, 7, 9, 13, 14, 15, 18, 20], "100": [15, 16, 18], "1000": 12, "10000": [2, 15], "101": [12, 16], "104": [15, 16], "1048576": 2, "10485760": 2, "106": 16, "109": 16, "11": [0, 9, 14, 15, 18, 20], "112": 16, "113": 16, "115": 16, "116": 16, "12": [0, 9, 10, 14, 15, 20, 22], "121": 16, "123": 16, "1232004": 15, "12341": 12, "1234538": 15, "1239": 7, "125": 16, "126": 16, "1267": 12, "127": [16, 20], "129": 16, "12fb835fa26c": 7, "13": [0, 1, 9, 13, 14, 15, 17, 18, 20], "131": 16, "134": 16, "135": 16, "1375986": 16, "138": 16, "14": [0, 1, 8, 13, 14, 15], "140": 16, "145": 16, "146": 16, "149": 16, "15": [12, 15, 17, 18, 20], "150": 12, "151": 16, "152": 16, "155": 16, "156": [12, 16], "1563529507772": 15, "158": 15, "16": [1, 12, 14, 15, 18], "160": 16, "161": 16, "162": 16, "1658660147": 8, "167": 16, "169": 16, "17": [0, 5, 10, 13, 14, 15], "171": 16, "173": 16, "175": 16, "177": 16, "178": [12, 16], "18": [0, 9, 10, 14, 15, 18, 20], "180": 16, "189071": 16, "19": [15, 18], "190": 16, "191": 16, "192": 16, "193": 16, "195": 16, "196": 16, "197": 16, "1m": 20, "1mb": 20, "2": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "20": [14, 15, 18], "200": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "201": [0, 1, 4, 10, 15, 16], "2016": 15, "2017": [12, 14, 15], "2018": [12, 13, 14, 15], "2019": [0, 9, 12, 13, 14, 15], "2021": [5, 14], "2022": 8, "2023": [0, 4, 14, 20], "2024": [0, 1, 7, 10, 14, 15], "203": 12, "204": [0, 1, 4, 8, 14, 15], "208": [15, 16], "209": 16, "21": [4, 10], "210": 16, "212": 16, "213": 16, "22": 15, "223": 16, "224": 16, "225": 16, "23": [15, 20], "230": 16, "231": [15, 16], "232": 16, "234": 15, "236": 16, "237": 16, "239": 16, "24": [1, 15, 20], "241": 16, "242": 16, "244": 16, "246": 16, "247": 16, "25": [10, 15, 20], "250": 16, "252": 16, "255": 15, "257": 16, "258": 16, "259": 16, "26": [15, 20], "260": 16, "261": 16, "264": 16, "265": 16, "266": 16, "26and": 20, "27": [0, 8, 10, 14, 15, 18], "270": 16, "271": 16, "273": 16, "274": 16, "275": 16, "278": 16, "279": [15, 16], "28": 4, "280": [15, 16], "282": [12, 16], "287": 16, "289": 16, "29": [4, 10], "290": 16, "2930": 15, "294": 16, "296": 16, "297": 16, "298": 16, "299": 16, "2bcff2e": 16, "2e1ee2c": 16, "2ordfncv6vprkfp3yrcyht": [1, 15], "2ukrviyshoakg8qsuknus4": 4, "2ule2hwhsnycs2vhbsikb9": 14, "3": [0, 1, 3, 11, 12, 13, 14, 15, 18, 20], "30": [0, 10, 12, 15, 20], "300": 20, "3000": 20, "301": [16, 20], "304": 16, "305": 16, "307": 16, "308": 16, "31": [0, 14, 15, 18, 20], "310": 16, "314": 16, "315": 16, "318": 16, "319": 16, "32": 15, "320": 16, "323": 16, "328": 16, "329": 16, "33": [12, 16], "3320": 12, "333": 16, "338": 16, "34": [1, 16], "34614d5": 16, "35": [0, 7, 15, 16], "350": 16, "351": 16, "352": 16, "354": 16, "356": 16, "357": 16, "358": 16, "359": 16, "36": 16, "365": 16, "366": 16, "367": 16, "369": 16, "37": 16, "370": 16, "371": 16, "374": 16, "375": 16, "376": 16, "377": 16, "38": 10, "380": 16, "381": 16, "382": 16, "3821e37": 16, "384": 16, "386": 16, "388": 16, "39": 15, "390": 16, "391": 16, "393": 16, "394": 16, "395": 16, "397": 16, "398": 16, "399": 16, "3aread": 21, "3awrit": 21, "3b6fa25": 16, "3c8d9c2": 16, "3f": 20, "4": [0, 3, 11, 12, 13, 14, 15, 17, 18, 20], "40": 16, "400": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 16], "401": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "402": 16, "403": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "404": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "406": 16, "407": 16, "409": 16, "40and": 20, "41": [15, 16], "410": 16, "4109": 15, "411": 16, "413": [0, 15], "415": 16, "416": 16, "417": 16, "418": 16, "42": [15, 16], "421": 16, "422": 16, "426": 16, "427": [15, 16], "428": 16, "43": [0, 9, 13, 14, 15, 16], "431": 16, "433": 16, "435": 15, "436": 16, "438": 16, "44": [14, 15, 16], "441": 16, "443": 20, "444": 16, "449": 16, "44ff": 7, "45": [0, 1, 14, 15], "450": 16, "455": 16, "456": 16, "46": [12, 16], "464": 16, "465": 20, "468": 16, "469": 16, "47": [12, 15, 16], "471": 16, "472": 16, "473": 16, "474": 16, "475": 16, "476": 16, "477": 16, "478": [15, 16], "479": 16, "48": [5, 12, 14], "481": 16, "482": 16, "484": 16, "488": 16, "489": 16, "49": [0, 10, 14], "490": 16, "494": 16, "495": 16, "496": 16, "499": [15, 16], "4c3fc34": 16, "5": [3, 8, 11, 12, 14, 15, 17, 18, 20], "50": [0, 4, 5, 12, 14, 16, 20], "500": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16], "5000": 20, "502": 16, "504": 16, "506": 16, "507": 16, "5078118": 15, "5079733": 15, "508": 16, "51": [13, 14, 15], "510": 16, "511": 16, "512": 16, "517587": 15, "51758b4": 16, "52": [1, 15, 16], "521": 16, "524": 16, "526": 16, "527": 16, "528": 16, "53": [8, 16], "530": 16, "531": 16, "532": 16, "533": 16, "534": 16, "536": 16, "537": 16, "538": 16, "54": 16, "540": 16, "542": 16, "543": 16, "5432": 20, "544": 16, "545": 16, "546": 16, "55": [14, 15], "550": 16, "551": 16, "555": 16, "556": 16, "557": 16, "558": 16, "56": [10, 16], "560627": 15, "563": 16, "564": 16, "565": 16, "566": 16, "57": [15, 16], "571": 16, "575": 16, "58": [0, 14, 16], "582": 16, "583": 16, "587": [16, 20], "588": 16, "59": [12, 14, 15, 16], "590": 16, "591": 16, "592": 16, "593": 16, "595": 16, "598": 16, "6": [0, 3, 4, 11, 14, 15, 17, 18, 20], "60": 16, "600": 16, "603": 16, "604": 16, "607": 16, "608": 16, "609": 16, "60e164d": 16, "61": 16, "610": 16, "612": 16, "613": 12, "614": 16, "616": 16, "617": 16, "618": 16, "62": 16, "620": 16, "621": [15, 16], "622": 16, "624": 16, "625": 16, "626": 16, "628": 16, "629": 16, "63": 15, "631": 16, "633": 16, "634": 16, "635": 16, "636": 16, "637": 16, "639": [16, 17], "64": 16, "640": 16, "645": 16, "651": 16, "652": 16, "655": 16, "657": 16, "659": 16, "66": 16, "660": 16, "662": 16, "664": 16, "666": 16, "667": 16, "668": 16, "67": [0, 12, 14, 16], "673": 16, "6dxczvmrhkar72shuz9pwd": [0, 14], "6e215a": 16, "6nvxvayoh9zkr8rmxhu54t": 14, "7": [15, 17, 18, 20, 21], "70": 16, "71": 16, "72": 16, "720": 0, "73": 16, "7380": 15, "74": 16, "75": 16, "7641": 12, "78": 12, "79": 16, "7pdujhcvhya4hv29jzqngg": 0, "8": [0, 15, 17, 18, 20, 21], "80": [16, 20], "8025": 20, "81": 16, "82": 16, "83": 16, "84": 16, "85": 16, "864000": 8, "87": 16, "877fa0f": 16, "88": 16, "89": 16, "895": [0, 14], "8aa4cff": 16, "9": [0, 2, 9, 14, 15, 17, 18, 20, 21], "90": 16, "91": 16, "92": 16, "924": 0, "93": 16, "93706": 15, "95": [12, 16], "97": [0, 9, 13, 14, 15, 16], "98": 16, "981933": 15, "99": [12, 16], "9960": 12, "AS": [0, 9, 13, 14, 15], "Avec": 18, "Ce": [8, 16], "Cette": [16, 19, 20], "D": 20, "Des": [18, 20], "Du": 16, "EU": 16, "Elle": 18, "Elles": 20, "En": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "Et": 16, "Il": [0, 15, 16, 18, 19, 20, 21], "Ils": 21, "J": 16, "L": [0, 11, 16, 18, 20, 21], "La": [0, 15, 16, 17, 18, 20, 21, 23], "Le": [0, 4, 14, 16, 18, 20], "Les": [0, 9, 14, 15, 18, 19, 20, 21, 24], "M": 15, "MS": [0, 9, 13, 14, 15], "Mon": [13, 14, 15], "N": 16, "Ne": 14, "Par": [20, 21], "Pas": 16, "Pour": [15, 16, 18, 20, 21], "S": 18, "SA": 20, "Ses": 18, "Sur": 20, "Tue": [4, 15], "Un": [0, 3, 4, 8, 11, 14, 16, 18, 20], "Une": [16, 17, 18, 20, 23], "Y": [0, 12, 15], "_": [0, 16], "__main__": 20, "_blank": 20, "_workers_": 20, "a": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "a012": 7, "a458f5f": 16, "aaron": 21, "ability": 16, "abon": [18, 21], "about": [2, 16, 20], "absolu": [20, 23], "ac075ec36dc25dcc20c270d2005f0398": 15, "acced": [0, 3, 4, 8, 11, 12, 14, 18, 20, 21], "accept": [0, 5, 10, 16, 18], "accepted": 5, "accepted_policy": 0, "accepted_privacy_policy": 0, "acces": [0, 2, 3, 4, 8, 11, 14, 21], "access": [0, 16, 18], "access_token": 8, "accessibility": 16, "accessibl": [8, 16, 18, 20, 21], "accord": 21, "account": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "actif": [0, 4, 17, 18], "action": [10, 16, 18], "action_short_id": 0, "action_typ": [0, 10, 14], "activ": [0, 2, 3, 11, 14, 16, 17, 18, 19, 20], "activat": [14, 17], "activit": 16, "activity": 16, "actuel": [0, 4], "adapt": [18, 20], "add": [16, 17], "added": [0, 4, 15, 16], "adding": 16, "additional": 16, "additionnel": 20, "admin": [0, 2, 3, 5, 7, 9, 11, 12, 13, 14, 15, 17, 20], "admin_contact": 2, "administr": [2, 3, 11, 14, 17, 20, 21, 24], "administrator": [0, 1, 3, 4, 7, 11, 13, 14, 15], "adress": [0, 2, 14, 17, 18, 20], "aff4d68": 16, "affect": [16, 18], "affich": [0, 15, 16, 17, 18, 19, 20, 21, 24], "affichag": 18, "affichent": 18, "afin": [16, 18, 21], "after": [16, 20], "again": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "agit": [15, 16], "agplv3": 16, "agre": 0, "aid": 19, "ains": [18, 20], "air": [18, 19], "ajout": [0, 1, 14, 15, 16, 17, 18, 19, 20, 21, 22], "alert": 16, "all": [7, 12, 20], "allemand": [16, 18], "allow": [16, 20], "allowed": [0, 15], "alor": 20, "alphanumer": 16, "alphanumeric": 0, "alpin": 18, "already": [0, 4, 5, 10, 16], "also": 16, "altern": 16, "altitud": [0, 16, 18], "alway": 20, "al\u00e9atoir": [17, 20], "amd64": 20, "an": [0, 8, 15, 16], "analys": [0, 15, 16, 18, 20], "analysis_visibility": [0, 15], "ancien": 20, "and": [0, 4, 16, 17, 20], "android": 19, "anglais": [0, 16, 17, 18], "ann\u00e9": [12, 18], "anoth": 4, "antiali": 16, "anymor": 16, "apach": 19, "api": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21], "api_rate_limit": 20, "apikey": 20, "app": [8, 16, 20, 21], "app_log": 20, "app_port": 20, "app_secret_key": 20, "app_setting": 20, "app_worker": 20, "appar": [0, 18], "appara\u00eetr": 18, "appeal": [0, 1, 10, 14, 15], "appeal_id": 10, "appel": [0, 1, 10, 15, 18, 20], "application_directory": 20, "appliqu": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21], "apport": 16, "approb": 18, "approuv": 0, "approved": [0, 10, 14, 16], "apr": 15, "apres": [0, 8, 14, 16, 18, 20, 21], "archiv": [0, 2, 16, 17, 18, 20], "archive_rgjsr3fhr5yp": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "archlinux": 20, "are": 16, "arg": [17, 20], "argument": [4, 17], "arm64": 20, "array": [0, 4, 8, 15], "arrow": 16, "arr\u00eat": [0, 14, 16, 18, 20], "asc": [5, 7, 10, 14, 15], "ascent": [13, 14, 15, 16], "asset": 20, "assign": 18, "associ": [0, 4, 8, 11, 15, 16, 17, 18], "associated": [4, 16], "assur": 21, "astridx": 16, "at": [16, 20], "atteint": 18, "attendu": 20, "attent": [15, 16, 20, 23], "attribu": 20, "attribut": 16, "aucun": [0, 4, 7, 10, 13, 14, 15, 18, 19, 20], "augment": 23, "aur": 16, "auteur": [1, 15, 18], "auth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "auth_token": 0, "authentif": [1, 6, 14, 20, 21], "authentifi": [0, 1, 5, 7, 8, 9, 11, 12, 13, 14, 15, 18], "authlib": [8, 20, 21], "authoriz": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "authorization_cod": [8, 21], "autoespcap": 16, "automat": [0, 18], "autoris": [0, 2, 8, 15, 20, 21], "autr": [0, 18, 20], "avail": 16, "avanc": [16, 18], "avant": [16, 18, 20], "ave_speed": [13, 14, 15], "ave_speed_from": 15, "ave_speed_to": 15, "averag": [12, 16], "average_ascent": 12, "average_descent": 12, "average_dist": 12, "average_dur": 12, "average_speed": 12, "avert": [18, 20], "aviron": 18, "avoir": [11, 20], "awesom": 20, "axe": [15, 18], "axis": 16, "b": 20, "b1536fc": 16, "b29ed7": 16, "b748459": 16, "b862a77": 16, "background": 16, "bad": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15], "bas": [16, 18, 20, 23], "basqu": [16, 18], "bcc568e": 16, "be": [0, 2, 4, 14, 15, 16, 20], "be26f35": 7, "bear": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "been": 10, "below": 20, "besoin": 20, "bet": 16, "between": 16, "bibliothequ": 21, "bien": 18, "bik": [3, 4], "biking": [11, 15], "bin": 20, "bio": [0, 5, 14], "biograph": 0, "birth": 16, "birth_dat": [0, 5, 14], "bjornclauw": 16, "black": 16, "blacklist": 0, "blocag": 18, "block": [14, 16], "blocked": [0, 10, 14], "blocked_user": 0, "bloqu": [0, 14, 18], "boat": 18, "body": [16, 20], "bokm\u00e5l": [16, 18], "boolean": [0, 2, 3, 4, 7, 8, 10, 11, 14, 17], "boosterl": 16, "bound": [13, 14, 15], "bouton": 18, "bref": 4, "brows": 16, "build": [16, 20], "bulgar": [16, 18], "bulgarian": 16, "button": 16, "by": [16, 20], "by_id": 8, "by_sport": 12, "by_tim": 12, "byakurau": 16, "c88a515": 16, "cach": 18, "calcul": [0, 12, 16, 18], "calendar": 16, "calendri": [16, 18], "callback": [8, 21], "can": [0, 1, 10, 14, 15, 16, 18, 20, 23], "cannot": [4, 16], "caracter": [0, 4, 8, 15, 16, 20, 21], "card": 16, "cart": [0, 15, 16, 18, 19, 20, 24], "cas": [4, 8, 15, 18, 20], "cass": 20, "cb9d02f": 16, "cc": 20, "cc3fe1c": 16, "cc4287e": 16, "cd": 20, "cec": 16, "cel": [4, 16, 18, 20], "celui": [16, 20], "certain": [16, 17, 19, 20], "cf": [18, 19, 20], "chain": 20, "challeng": [8, 21], "champ": 16, "chang": [0, 4, 16, 18, 20], "changed": 16, "changing": 16, "chaqu": 18, "charact": 0, "character": [0, 4, 16], "charg": [0, 8, 16, 17, 18, 20, 21, 24], "chart": [15, 16, 20], "chart_dat": 15, "chaussur": 18, "cha\u00een": [8, 21], "check": 20, "check_workout": 11, "checkbox": 16, "checked": 16, "checking": 20, "chemin": [20, 23], "chiffr": [18, 20], "chois": [18, 20], "choos": 16, "ci": 16, "clair": 18, "cleanup": 16, "clear": 20, "cli": [14, 16, 17, 18, 20], "click": 16, "clickabl": 16, "clicking": 16, "client": [8, 14, 16, 18, 20, 21], "client_client_id": 8, "client_descript": 8, "client_id": [8, 21], "client_max_body_siz": [20, 23], "client_nam": 8, "client_secret": 8, "client_ur": 8, "clon": 20, "closing": 16, "cl\u00e9": [16, 18, 20], "co": 16, "cod": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "code_challeng": [8, 21], "code_challenge_method": [8, 21], "code_verifi": 8, "coll": 20, "color": [0, 11, 16], "com": [0, 2, 8, 10, 14, 16, 20, 21], "comm": [7, 16, 18, 20], "command": [16, 18, 19, 20], "commenc": [0, 12, 16, 18, 20, 23], "commencent": 0, "commend": 16, "comment": [0, 1, 10, 15, 16, 18], "comment_id": 10, "comment_short_id": 1, "comment_suspens": 10, "comment_unsuspens": 10, "commentair": [6, 10, 21], "compatibl": 20, "complet": [16, 18], "completed": 0, "compl\u00e9mentair": 16, "comport": 18, "compos": 20, "compt": [6, 14, 15, 16, 17, 20, 22], "comradekingu": 16, "concern": 10, "condit": 20, "confidential": [0, 2, 16], "config": [2, 16, 20], "configur": [6, 16, 17, 20, 21, 23], "configured": 16, "confirm": [0, 8, 16, 18, 20], "confusedalex": 16, "connaiss": [16, 18], "connect": [0, 18], "connexion": [0, 20], "conserv": [19, 20], "consult": 18, "contact": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 18], "contain": [16, 20], "containing": 16, "conten": [16, 18, 20], "conteneur": 20, "content": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "contenu": [1, 10, 18], "contenus": 18, "contient": [16, 18, 20], "continu": 20, "contr": 21, "contrair": [15, 18], "contributeur": [16, 20, 22], "contributing": 16, "contributor": [2, 20], "control": [16, 20], "contr\u00f4l": 2, "copi": 20, "copy": [2, 20], "copyright": [2, 20], "cor": 16, "corp": 21, "correctly": 16, "correspond": [0, 15, 20], "correspondr": 18, "could": 16, "couleur": [0, 18], "cour": [16, 17, 18, 19, 20], "courriel": [0, 14, 16, 18, 23], "cours": [16, 18], "court": [1, 4, 7, 15], "cp": 20, "creat": [16, 20], "create_app": 20, "created": [0, 1, 4, 8, 10, 15], "created_at": [0, 1, 5, 7, 10, 14, 15], "creation": 16, "creation_dat": [4, 13, 14, 15], "creativecommon": 20, "credential": 0, "criter": [10, 14], "criteri": 15, "critical": 23, "cross": [8, 21], "crossing": [18, 20], "cr\u00e9": [0, 1, 4, 8, 10, 15, 16, 17, 18, 20, 21], "cr\u00e9ation": [0, 16, 18], "csrf": [8, 21], "current": [0, 14, 16], "custom": 20, "cycling": [11, 15, 16], "czech": 16, "dan": [0, 2, 4, 15, 16, 17, 18, 19, 20, 21, 24], "danielsiersleben": 16, "dark": 16, "darksky": [16, 20], "dashboard": 16, "dat": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15, 16, 18], "databas": [16, 17, 20], "database_d": 20, "database_disable_pooling": 20, "database_url": [20, 23], "date_format": 0, "date_string": 0, "davidhenrythoreau": 16, "day": [16, 17, 20], "db": 20, "dd": 0, "debian": [20, 22], "dec": [0, 1, 5, 7, 10, 14, 15], "default": [12, 15, 16, 20], "default_equipment_id": 0, "default_for_sport_id": 4, "default_staticmap": [16, 20], "defined": 18, "definit": 16, "del": 23, "delet": [0, 1, 4, 8, 14, 15, 16], "deleted": 16, "deleting": 16, "demand": [0, 6, 10, 14, 16, 17, 18, 20, 21], "deployment": 16, "deprecated": [16, 17], "depuis": [17, 20], "derni": [14, 16, 18, 20], "derri": 21, "desc": [5, 7, 10, 14, 15, 18], "descent": [13, 14, 15, 16], "descript": [4, 8, 13, 14, 15, 16, 17, 18, 20], "dessous": 16, "detail": [16, 20], "detailed": 16, "detect": 16, "deux": 17, "dev": 20, "development": 16, "df": 20, "diagnostic": 20, "dialect": 23, "differ": 18, "different": [14, 16], "diff\u00e9rent": [16, 18], "dimanch": [12, 18], "direct": [16, 18, 20], "directory": [16, 20], "disabl": 16, "disabled": 0, "discours": 18, "display": 16, "display_ascent": 0, "displayed": 16, "displaying": 16, "disponibl": [0, 9, 17, 18, 20, 21, 22], "dispos": [0, 18], "distanc": [0, 9, 13, 14, 15, 16, 18], "distance_from": 15, "distance_to": 15, "dkm": 16, "do": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "dock": 16, "dockerhub": 20, "docu": 16, "document": [19, 20, 21, 23], "doit": [0, 4, 8, 11, 15, 16, 18, 20, 21, 23], "doiv": 18, "doivent": [15, 20, 21], "domain": [15, 20], "don": [0, 8, 12, 14, 15, 16, 18, 19, 21, 23], "dont": [14, 18, 21], "dor\u00e9nav": 16, "dotenv": 16, "dotlambd": 16, "doubl": 15, "down": 16, "download": [0, 15, 16], "dperruso": 16, "dramatiq": [16, 17, 20], "droit": [11, 14, 16, 17, 18, 20, 21], "drop": 16, "dropdown": 16, "dur": [9, 15, 16, 18], "durat": [13, 14, 15, 16], "duration_from": 15, "duration_to": 15, "during": [0, 1, 4, 10, 15], "dutch": 16, "d\u00e9": [3, 14], "d\u00e9bloqu": 14, "d\u00e9but": [12, 15], "d\u00e9connexion": 0, "d\u00e9criv": 10, "d\u00e9crivent": 20, "d\u00e9fault": [18, 20], "d\u00e9faut": [0, 4, 5, 7, 8, 10, 13, 14, 15, 16, 17, 18, 20], "d\u00e9fin": [4, 16, 18, 21, 23], "d\u00e9j\u00e0": [15, 17], "d\u00e9livr": 8, "d\u00e9marr": [16, 20, 24], "d\u00e9marrag": 20, "d\u00e9nivel": [0, 9, 15, 18], "d\u00e9pannag": 19, "d\u00e9part": 18, "d\u00e9pend": 16, "d\u00e9plac": 16, "d\u00e9pr\u00e9ci": 17, "d\u00e9p\u00f4t": 20, "d\u00e9roul": 18, "d\u00e9sactiv": [0, 14, 16, 17, 18, 20], "d\u00e9sorm": 16, "d\u00e9tail": 24, "d\u00e9velopp": [16, 17, 19], "e": 0, "e2e": 16, "ea0ac99": 16, "eau": 18, "edit": [0, 16], "editing": 16, "effectu": 18, "elev": [15, 16], "elles": 15, "email": [0, 2, 10, 14, 16, 17, 23], "email_to_confirm": 0, "email_url": [20, 23], "empty": 16, "emp\u00each": 21, "encod": 20, "encoded": 16, "encor": [16, 19], "endpoint": 16, "enfin": 16, "enfreint": 18, "english": 16, "enlev": 4, "enregistr": [0, 17, 18, 21], "ensembl": 20, "ensuit": 21, "enter": 16, "enti": 8, "entity": [0, 15], "entrant": 18, "entra\u00een": [12, 15, 18], "entre": [4, 8, 18, 21], "entry": 16, "entr\u00e9": [14, 16, 18, 20, 21], "enumerat": 20, "env": [16, 20], "environ": [16, 17, 23], "environment": [16, 20, 23], "envoi": [0, 14, 16, 18, 20, 21], "equal": 2, "equipment": [0, 3, 4, 13, 14, 15, 16, 21], "equipment_id": [0, 15], "equipment_short_id": 4, "equipment_typ": [3, 4], "equipment_type_id": [3, 4], "equipment_type_label": 4, "erral": 16, "erreur": [0, 8, 16, 18, 23], "error": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 20], "errored": 0, "espac": 21, "espagnol": [16, 18], "esprit": 18, "estim": 16, "europ": 0, "ewm": 16, "exampl": [0, 2, 8, 10, 14, 16, 20, 21], "exc": 23, "exceed": [0, 4, 15, 16], "exceeding": 16, "except": [18, 23], "exclu": 18, "exclur": 18, "exec": 20, "execstart": 20, "exempl": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21], "exhaust": 19, "exist": [0, 4, 5, 12, 14, 15, 16, 18, 19, 20], "existent": [7, 10, 14], "exit": [17, 20], "expected": 10, "expir": 17, "expired": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "expires_at": 8, "expires_in": 8, "expliqu": [0, 10], "expliquent": 10, "exploit": [18, 20], "export": [0, 16, 17, 18, 19, 20], "exp\u00e9diteur": 20, "extens": [0, 15, 20], "extr\u00eam": 18, "ex\u00e9cu": [16, 17], "ex\u00e9cut": [16, 20], "f2aec30": 16, "f96dcef": 16, "fa33f4d996844a5c73ecd1ae24456ab8": 15, "facilit": 16, "facult": [4, 21], "fail": 16, "fair": [0, 1, 15, 18, 20], "fait": [15, 16, 20], "fals": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 15, 20], "falsif": [8, 21], "famill": 0, "farthest": 16, "fa\u00e7on": 20, "fb10602": 16, "fd": [0, 9, 13, 14, 15], "featur": 16, "fichi": [0, 2, 15, 16, 17, 18, 19, 20, 22, 24], "field": 16, "fil": [0, 2, 15, 16, 20], "file_nam": 0, "file_siz": 0, "filt": 16, "filter": 16, "filtering": 16, "filtr": [0, 10, 15, 16, 18], "fin": [12, 15, 16, 20], "finish": 16, "first": [4, 16], "first_nam": [0, 5, 14], "fit": [20, 22], "fitotrack": 19, "fittracke": [4, 8, 17, 18, 20, 21, 22, 24], "fittrackee_client": 20, "fittrackee_host": 21, "fittrackee_install": 22, "fittrackee_worker": 20, "fittrackee_ynh": 20, "fix": [16, 20], "flake8": 16, "flask": [16, 20], "flask_app": 20, "flaticon": 20, "flech": 18, "float": [0, 15], "flow": 21, "flux": [6, 18], "fmstrat": 16, "follow": [0, 5, 7, 10, 14, 16, 21], "follow_request": [5, 7], "follower": [0, 1, 5, 7, 10, 14, 15, 16], "followers_only": [0, 1, 14, 15], "following": [0, 1, 5, 7, 10, 14, 15, 16], "fonction": [20, 21], "fonctionnal": [19, 20], "fond": 20, "foot": 16, "for": [0, 2, 4, 14, 15, 16, 20], "forbidden": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "forc": 4, "forgery": [8, 21], "fork": 20, "form": [0, 8, 15, 16], "format": [0, 12, 15, 16, 18, 19], "fort": 20, "forwarded": [20, 21], "found": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "fourn": [0, 4, 8, 12, 15, 17, 18, 20, 21, 23], "fournisseur": [16, 20], "fr": [0, 20], "franc": [18, 20], "freepik": 20, "french": 16, "fri": 15, "from": [4, 5, 7, 12, 15, 16, 20], "ft": 16, "ftcli": 20, "full": 16, "fullchain": 20, "fullscreen": 16, "furo": 16, "fuseau": [0, 15, 18], "galician": 16, "galicien": [16, 18], "gallegonovato": 16, "gard": [15, 18, 20], "garmin": 22, "generat": 16, "ger": [10, 16, 17, 18, 20, 23], "german": [16, 20], "gestion": [16, 20], "get": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "getting": 2, "gif": 0, "git": 20, "github": [16, 20], "gl": 0, "gmt": [0, 1, 4, 5, 7, 8, 9, 10, 13, 14, 15], "gnu": 16, "gorgoback": 16, "gp": [16, 18], "gpl": 19, "gpx": [0, 8, 15, 16, 18, 19, 20, 22], "gpx_limit_import": 2, "gpxpy": [0, 16, 18, 20], "grammar": 16, "grand": [16, 18], "grant_typ": 8, "graph": 16, "graphiqu": [0, 16, 18, 20], "gray": 16, "great": [1, 2, 16], "gr\u00e2c": [20, 22], "guid": 20, "guillemet": 15, "gunicorn": [20, 23], "gz": 20, "gzip": 0, "g\u00e9ner": [8, 17, 18, 20, 21], "h": [15, 18], "ha": [0, 9, 13, 14, 15], "handl": 16, "has": [1, 4, 10, 14, 15, 16, 18], "has_equipment": 3, "has_next": [0, 5, 7, 8, 10, 14], "has_prev": [0, 5, 7, 8, 10, 14], "has_workout": 11, "hav": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "help": [17, 20], "heur": [16, 18, 20], "hexadecimal": 0, "hexad\u00e9cimal": 0, "hgzyfxgvwkcepdq3vyk67q": 15, "hid": 16, "hidden": 16, "hide_profile_in_users_directory": 0, "hiding": 16, "hiking": 11, "his": 16, "histor": [19, 20], "hom": 20, "horair": [0, 15, 18], "host": 20, "hosted": 16, "hosting": 20, "hour": 20, "how": 20, "href": [2, 20], "html": 16, "http": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "http2": 20, "hub": 16, "hv9kwvdtbhhyfvml7phovq": 10, "hvybqybra7wwxpastwr4v2": [0, 9, 13, 14, 15], "h\u00f4t": 20, "i18n": 16, "icon": 16, "ic\u00f4n": 20, "id": [0, 1, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 16], "identif": 20, "identifi": [0, 1, 7, 8, 10, 11, 12, 15, 21], "if": [0, 16, 18, 20], "imag": [0, 14, 15, 16, 18, 20, 24], "impact": 18, "imperial": 16, "imperial_unit": 0, "implementing": 16, "import": [4, 8, 16, 18, 20], "importing": 16, "improv": 16, "improved": 16, "imp\u00e9rial": [0, 18], "in": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "in_progress": 0, "inact": [0, 4, 14, 15, 18, 20], "inclus": 16, "incomplet": 17, "inconsistent": 16, "incorrect": [4, 16, 18], "index": 15, "indiqu": 18, "ind\u00e9sir": 18, "infobull": 18, "inform": [0, 2, 14, 16, 18, 19, 20], "inf\u00e9rieur": 16, "init": 16, "initial": [16, 20], "initialis": [16, 20], "inscript": [0, 2, 16, 18, 20], "inscrir": [2, 16, 18, 20], "insensibl": 20, "instabl": [19, 20], "install": [16, 19], "instanc": [2, 16, 18, 20], "instant": 18, "instead": 16, "instruct": [0, 16, 18, 20], "int": [0, 3, 4, 8, 10, 11, 15], "integ": [0, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "integer": 4, "integr": 20, "interag": [18, 21], "interceptor": 16, "interfac": [0, 16, 18, 19, 20], "internal": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15], "interrompu": 20, "introduit": 16, "invalid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "invalidat": 16, "invalidemailurlschem": 23, "ip": 20, "is": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "is_act": [0, 3, 4, 10, 11, 14], "is_active_for_us": 11, "is_email_sending_enabled": 2, "is_followed_by": [0, 7, 10, 14], "is_registration_enabled": 2, "is_reported_user_warned": 10, "iso": 17, "isort": 16, "issu": [16, 18], "issued_at": 8, "it": [0, 4], "italian": 16, "italien": [16, 18], "jan": [13, 14, 15], "jat255": 16, "javascript": [16, 20], "jderuit": 16, "jeton": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21], "jinj": 16, "jmlich": 16, "john_do": 14, "johndo": 14, "jour": [0, 1, 2, 4, 7, 11, 14, 15, 16, 17, 18], "journal": [20, 23], "jpeg": 14, "jpg": 0, "js": [15, 20], "json": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "jul": [0, 9, 13, 14, 15], "july": 8, "jusqu": 18, "jwt": 20, "kayak": 18, "kayak_boat": 3, "kcj6hdgqqpkaakqmfqj8jv": 14, "kd5wyhwltvozw6o3au5m4j": 15, "keep": 16, "key": 20, "keyboard": 16, "kjxavsturjvoah2wvcegef": [13, 14, 15], "km": [15, 18], "koen": 16, "komoot": 20, "label": [3, 4, 11, 16, 18], "laiss": 20, "lanc": [16, 20], "lang": [0, 16, 17], "langu": [0, 16, 17, 18], "languag": [0, 16, 17], "laquel": 18, "larg": [0, 15, 20], "last": 16, "last_nam": [0, 5, 14], "latitud": 15, "lavoi": 16, "layout": 16, "ld": [0, 9, 13, 14, 15], "leaflet": [15, 20], "lectur": [7, 21], "legal": 20, "legitimat": 16, "lequel": [0, 20], "less": 16, "lettr": 17, "lev": [18, 20], "level": 16, "li": [10, 18], "libr": 18, "librair": [8, 20], "library": 16, "licenc": 20, "licens": [16, 19, 20], "lien": 20, "lieu": 18, "lign": [16, 18, 19, 20], "lik": [1, 15, 16], "liked": [1, 14, 15], "likes_count": [1, 14, 15], "lim": [16, 20], "limit": [4, 16, 18], "lin": [17, 20], "link": 16, "lint": 20, "linux": 20, "lir": 16, "list": [8, 15, 16, 17, 19, 20], "listen": 20, "ll": 20, "load": [16, 23], "loading": 16, "local": [0, 16, 19, 20], "localhost": [16, 20], "localis": [0, 20], "localiz": 16, "locat": [0, 5, 14, 20], "log": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 23], "log_d": 20, "logfil": 20, "logged": 0, "login": [0, 16], "logo": 20, "logout": [0, 16], "long": 16, "longitud": 15, "longu": [4, 9, 16, 18], "longueur": 15, "lor": [0, 17, 18], "lorsqu": [0, 16, 17, 20], "lu": [7, 18], "lukasitaly": 16, "lund": [0, 12, 18], "mailhog": 20, "mainten": [16, 20], "majeur": 16, "majuscul": 15, "mak": [16, 20], "makefil": 20, "malformed": 0, "manag": [16, 17], "mani": [18, 20], "manqu": 16, "manually_approves_follower": 0, "manuel": 18, "map": [13, 14, 15, 16, 18, 19], "map_attribu": [2, 20], "map_id": 15, "map_til": 15, "map_visibility": [0, 14, 15], "mar": [0, 4, 14, 16, 20], "mara21": 16, "march": [16, 18], "mariusz": 16, "mariuz": 16, "mark": [7, 16], "markdown": [16, 18], "marked_as_read": 7, "marker": 16, "marqu": [7, 18], "masqu": [14, 18], "match": 0, "matching": 16, "mati": 18, "max": [2, 5, 14, 15, 16, 17], "max_alt": [13, 14, 15], "max_single_file_siz": 2, "max_speed": [13, 14, 15], "max_speed_from": 15, "max_speed_to": 15, "max_user": 2, "max_zip_file_siz": 2, "maximal": [2, 9, 15, 16, 17, 18], "maximum": [2, 18], "may": 16, "md": 16, "measur": 16, "meilleur": 21, "mensuel": [16, 18], "mention": [1, 7, 18, 20], "menu": [16, 18], "merc": 16, "messag": [0, 2, 5, 8, 14, 15, 16, 17, 18, 20, 21], "mesur": 16, "met": 15, "mettr": [1, 2, 7, 14, 15, 16, 17, 18, 20], "mi": 16, "microsecond": 16, "migrat": [16, 17, 20], "min": 16, "min_alt": [13, 14, 15], "minimal": [15, 16, 18, 20, 21], "minimum": [0, 2, 3, 10, 11, 12, 14], "minor": 16, "minuscul": 15, "minut": 20, "mis": [0, 4, 11, 14, 15, 16, 18, 21], "missing": [0, 16], "mm": 0, "mmm": 0, "mmy3qpl3vcfukjgffbncjv": 0, "mo": 18, "mobil": [16, 19], "mod": 16, "modal": 16, "model": 16, "moder": [10, 12, 14, 16], "moderator": [10, 14, 16, 17], "modif": [0, 18, 19], "modifi": [0, 3, 4, 10, 11, 17, 18, 20, 21], "modification_dat": [1, 13, 14, 15], "modify": 16, "modul": [16, 20], "moin": [4, 7, 10, 13, 15], "mois": [12, 16, 18], "moment": [0, 15, 16, 18], "mond": 18, "mondstern": 16, "mono": 16, "month": [12, 16], "mor": 16, "morning": 15, "mot": [0, 14, 17, 18, 20], "mountain": 11, "mountaineering": 16, "mous": 16, "mov": 16, "moving": [13, 14, 15, 16], "moyen": [9, 12, 15, 16, 18, 20], "mult": 20, "multipart": [0, 8, 15], "multipl": 16, "must": [0, 2, 4, 14, 15, 16], "mv": 20, "my": 4, "mynixos": 20, "mzydicyyfktg3gga2x8afu": 1, "m\u00e9thod": [8, 20, 21], "m\u00e9triqu": 18, "m\u00e9t\u00e9o": [16, 18], "m\u00eam": [16, 18, 20], "nag": 18, "naissanc": 0, "nam": [8, 16, 18], "nano": 20, "navig": [0, 16, 18, 20], "nb": 0, "nb_sport": [0, 5, 14], "nb_workout": [0, 1, 5, 7, 10, 14, 15], "nbsp": 20, "nederland": 16, "need": 20, "net": 20, "netinstall": 22, "nettoi": 16, "network": 20, "new": [0, 4, 14, 16], "new_email": 14, "new_password": 0, "next": 16, "next_workout": [13, 14, 15], "nginx": [16, 18, 20, 21, 23], "ni": 18, "nic": 1, "niveau": [1, 16, 18], "nixpkg": 20, "nl": 0, "no": [0, 1, 4, 8, 14, 15, 16], "no_gpx": 15, "nod": 20, "nofollow": 20, "noir": 17, "nom": [0, 5, 8, 10, 12, 14, 16, 17, 18, 20], "nombr": [2, 5, 14, 15, 17, 18, 20], "nomenclatur": 16, "non": [0, 3, 4, 7, 8, 10, 11, 12, 15, 16, 18, 19, 20], "noopen": 20, "noreferr": 20, "norv\u00e9gien": [16, 18], "norwegian": 16, "nosuchmoduleerror": 23, "not": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "notat": 20, "notif": [6, 16, 20, 21], "notification_id": 7, "notification_typ": 7, "nouveau": [0, 16, 17, 18, 20, 21], "nouveaut": 18, "nouvel": [0, 4, 14, 17, 18, 20], "nov": [1, 15], "now": 17, "null": [0, 1, 2, 4, 5, 7, 10, 11, 13, 14, 15, 16], "numb": [2, 16, 20], "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6": 8, "n\u00e9cessair": [15, 18, 20], "n\u00e9cessit": [16, 20, 21], "n\u00e9cessitent": [20, 21], "n\u00e9erland": [16, 18], "n\u00e9gat": [15, 18], "o22a27s2abpuoxjbxv3ujdox": 8, "oauth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20], "oauth2": [6, 21], "oauthlib": 21, "object_id": 10, "object_typ": 10, "objet": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "obligatoir": [4, 8, 10, 12, 15, 16, 17, 20, 21], "obten": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "octet": 0, "of": [0, 2, 4, 15, 16, 20, 21], "office365": 20, "offset": 16, "ok": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "omis": 20, "once": [0, 1, 15], "ondrejzivny": 16, "one": [0, 15], "onglet": 21, "ongoing": 0, "only": [0, 1, 15, 16, 18], "open": [16, 18, 19], "openstreetmap": [2, 16, 20], "opentrack": 19, "option": [16, 17, 20], "optionnel": [7, 8, 20], "or": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 16], "order": [5, 7, 10, 14, 15, 16], "order_by": [10, 14, 15], "ordre": [5, 7, 10, 14, 15], "org": [2, 20], "origin": 18, "osm": 20, "osmfr": 20, "other": [0, 4, 14], "out": 0, "outdoor": [16, 20], "outil": [18, 19, 20], "ouvr": 20, "over": 16, "overlap": 16, "own": 10, "owner": [14, 16, 17, 20], "o\u00f9": [4, 18, 20], "packag": [16, 20], "packaged": 16, "paf38": 16, "pag": [0, 5, 7, 8, 10, 13, 14, 15, 16], "pagin": [0, 5, 7, 8, 10, 13, 14, 15], "paquet": [16, 20], "par_pag": 14, "paragliding": 16, "paralleliz": 16, "paramet": [4, 20], "parameter": [4, 16], "parametr": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21], "parapent": 18, "pareck": 21, "paris": 0, "parm": [16, 20], "pars": 16, "part": [0, 15, 16, 18, 19, 21, 22], "particuli": 18, "partiel": 16, "pass": [0, 14, 17, 18, 20], "password": [0, 16, 17, 20], "passwordwith": 20, "patch": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "paus": [13, 14, 15, 16], "payload": [0, 1, 2, 3, 8, 10, 11, 14, 15], "pem": 20, "pending": 7, "per": [16, 20], "per_pag": [5, 14, 15], "perform": 18, "period": 12, "perm": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "permet": [4, 16, 17, 18, 19, 21], "permettent": 18, "permettr": 21, "personnalis": [16, 18], "personnel": 18, "petit": 16, "peut": [0, 1, 3, 4, 8, 11, 12, 14, 15, 16, 17, 18, 20, 21], "peuvent": [0, 16, 18, 19, 20], "pg_dump": 20, "pictur": [0, 1, 5, 7, 10, 14, 15, 16], "piec": 4, "pied": [16, 18], "pil": 16, "ping": 2, "pip": 20, "pipenv": 16, "pkce": [8, 21], "plateform": 20, "pleas": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "plein": [18, 19], "plugin": 23, "pluj": 16, "plupart": 21, "plus": [4, 9, 16, 17, 18, 19, 20, 23], "plusieur": [16, 18, 19, 20], "png": [0, 15, 20], "poetry": [16, 20], "point": [0, 2, 3, 4, 8, 11, 14, 16, 18, 20, 21], "policy": [0, 16], "polish": 16, "polit": [0, 2, 16], "polon": [16, 18], "pong": 2, "pooling": 20, "port": 20, "portug": [16, 18], "portugues": 16, "posit": [15, 16, 18], "possibl": [16, 18, 19, 20], "post": [0, 1, 4, 5, 7, 8, 10, 14, 15, 21], "postgr": [16, 23], "postgres_db": 20, "postgres_password": 20, "postgres_us": 20, "postgresql": [16, 20, 23], "postgresql10": 16, "pourquoi": 10, "pourr": [16, 20], "pouv": 16, "pr": 16, "preferent": [0, 16], "premi": 18, "prendr": [16, 18], "prepar": 16, "present": 16, "prevent": 20, "previous_workout": [13, 14, 15], "prior": 18, "pris": [0, 8, 16, 17, 18, 20, 21], "priv": [16, 18], "privacy": [0, 16], "privacy_policy": 2, "privacy_policy_dat": 2, "privat": [0, 1, 14, 15], "privileg": 20, "privkey": 20, "problem": [16, 18, 20], "proced": 20, "process": [16, 20], "processed": 0, "processus": 20, "prochain": [16, 18], "product": 16, "productionconfig": 20, "produir": 18, "profil": [0, 8, 10, 14, 16, 18, 21], "project": 20, "projet": 20, "propos": 16, "propr": [4, 14, 19], "propri\u00e9tair": [4, 16, 18, 20], "proto": [20, 21], "proven": 18, "provid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "provided": [0, 1, 2, 4, 14, 15], "provider": 16, "proxy": [20, 21], "proxy_add_x_forwarded_for": 20, "proxy_pass": 20, "proxy_redirect": 20, "proxy_set_head": [20, 21], "pr\u00e9c\u00e9dent": 16, "pr\u00e9f\u00e9rent": [0, 4, 14, 15, 17], "pr\u00e9nom": 0, "pr\u00e9requ": 16, "pr\u00e9sent": 18, "pr\u00e9vers": 16, "pr\u00eat": 20, "psjeexbjz2jjnqctcpxvvf": 15, "publi": [18, 20], "public": [0, 1, 15, 18], "publiqu": 1, "publish": 16, "puiss": 21, "puissent": [16, 18], "pull": 20, "pwd": 20, "py": 20, "python": [16, 20, 21], "p\u00e9riod": [12, 18, 20], "q": 14, "qrj7by6h2iyjsv8sersfgv": 4, "quand": [14, 16], "quant": 16, "quelqu": [4, 5, 7, 10, 13, 14, 15, 16, 18, 21], "queu": 20, "qwerty287": 16, "r": 20, "rafra\u00eech": 8, "raison": [0, 10], "randon": [16, 18], "rapport": 16, "rapporteur": 10, "raquet": 18, "rat": [16, 20], "reactivated": 10, "read": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "read_status": 7, "readm": 16, "real": 20, "reason": [0, 10, 14], "rebuild": 16, "recalcul": [4, 18], "recevoir": 18, "recherch": 16, "recommand": [8, 20, 21], "record": [0, 5, 6, 13, 14, 15, 16, 18], "record_typ": [0, 9, 13, 14, 15], "red": [16, 17, 20], "redirect": [8, 16, 21], "redirect_ur": 8, "redirig": [8, 21], "redis_d": 20, "redis_url": 20, "red\u00e9marr": 20, "refacto": 16, "refactoris": 16, "refresh": 4, "refresh_token": 8, "refreshed": 16, "regist": 0, "registr": [0, 16], "registry": 20, "regl": 18, "reject": 5, "rejected": 5, "rejet": [5, 10, 18, 20], "rel": 20, "relat": [14, 18], "relev": 16, "remain": 18, "remaining": 16, "remarqu": 20, "remote_addr": 20, "remov": 16, "remplac": [15, 16, 18, 20], "rencontr": 20, "renomm": 16, "renvoi": [0, 7, 8, 10, 13, 14, 15, 18], "replac": 16, "report": [10, 21], "report_act": 10, "report_id": [10, 14], "reported_by": 10, "reported_comment": 10, "reported_us": 10, "reported_workout": 10, "requ": [0, 20, 21], "request": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 20, 21], "request_ur": 20, "requested": 0, "required": 0, "requiring": 16, "requis": 4, "requ\u00eat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "resend": 0, "resent": 0, "reset": [0, 16, 17], "reset_password": 14, "resetting": 16, "resolu": 16, "resolved": 10, "resolved_at": 10, "resolved_by": 10, "respons": 16, "response_typ": [8, 21], "rest": [16, 18, 21], "restart": 20, "restartsec": 20, "restreint": 18, "result": 16, "retir": 18, "retourn": [1, 9, 12], "return": [16, 20], "return_equipment": 15, "revok": 8, "revoked": 0, "reworked": 16, "re\u00e7u": [5, 7, 18], "rid": 16, "right": [14, 16, 18], "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 8, "rol": [0, 1, 7, 10, 14, 15, 16, 17, 18, 20], "rout": [16, 20], "ruff": 16, "run": 20, "runn": 19, "running": 11, "russ": 18, "russian": 16, "r\u00e9activ": 18, "r\u00e9cent": 18, "r\u00e9cuper": [15, 18, 20, 21], "r\u00e9dact": 18, "r\u00e9duit": 16, "r\u00e9initialis": [0, 14, 17, 18, 20], "r\u00e9pertoir": [0, 20], "r\u00e9pons": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "r\u00e9solu": 18, "r\u00e9solus": 10, "r\u00e9tro": 20, "r\u00e9trograd": 16, "r\u00e9uss": 0, "r\u00e9voqu": 8, "r\u00f4l": [2, 3, 10, 11, 12, 14, 17, 18, 20], "s256": [8, 21], "sam": [0, 1, 4, 5, 9, 10, 13, 14, 15, 16], "samr1": 20, "san": [0, 1, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 19, 20], "sanction": [0, 14, 18], "sat": 14, "sauf": [14, 20], "sauvegard": 20, "sav": [1, 4, 10, 16], "schem": [20, 21], "scop": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "screen": 16, "script": 16, "search": 16, "second": [4, 15], "secret": [8, 20, 21], "section": 16, "security": 16, "see": [16, 20], "seem": 16, "segment": [13, 14, 15, 16, 18], "segment_id": 15, "selected": [0, 15], "selon": [0, 18, 20], "semain": [0, 12, 18], "send": 16, "sender_email": 20, "sending": 16, "sent": 14, "ser": [0, 4, 15, 16, 17, 18, 20], "serv": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 20], "server_nam": 20, "serveur": [15, 16, 18, 19, 23], "servic": [16, 20], "session": 21, "set": [16, 17, 20], "setting": 20, "seuil": [0, 18], "seul": [0, 1, 4, 8, 12, 14, 15, 16, 18, 20, 21], "sh": 22, "shel": 20, "sho": [3, 4], "should": 16, "show": [16, 17, 20], "shown": 16, "shura0": 16, "si": [0, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23], "sien": 14, "signal": [6, 14, 16, 18, 21], "signatur": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "sikm": 16, "simontb": 16, "simpl": 20, "simplified": 21, "simplify": 16, "sinon": [18, 20], "sit": [8, 21], "siz": [0, 2, 15, 16, 20], "ski": 18, "skis": [3, 18], "skylan0916": 16, "slothj": 16, "slow": 16, "small": 16, "smtp": [16, 20, 23], "snowsho": [3, 16], "social": 16, "som": 16, "sombr": [0, 18], "sorry": 0, "sort": 21, "sorting": 15, "soum": 20, "sourc": 18, "sous": [15, 20], "spanish": 16, "special": 16, "specific": 20, "specify": 16, "speed": [15, 16], "spinn": 16, "sport": [0, 2, 4, 6, 12, 15, 16, 20], "sport_id": [0, 4, 9, 11, 12, 13, 14, 15], "sport_label": 4, "sportiv": [18, 19], "sports_list": [0, 5, 14], "sp\u00e9cial": 20, "sp\u00e9cif": 18, "sql": 20, "sqlalchemy": [16, 20, 23], "ssl": 20, "ssl_certificat": 20, "ssl_certificate_key": 20, "stabl": 16, "standard": [16, 20], "standarderror": 20, "standardiz": 16, "standardoutput": 20, "start": 16, "start_elevation_at_zero": 0, "startlimitintervalsec": 20, "starttl": 20, "stat": [8, 12, 16, 21], "static": 16, "staticmap": 20, "staticmap_subdomain": [16, 20], "statiqu": [18, 20], "statist": [2, 6], "statistic": [2, 12, 16], "stats_workouts_lim": 2, "status": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "statut": [4, 14, 17], "sticky": 16, "stock": [18, 19, 21], "stop": 20, "stopp": 20, "stopped": 16, "stopped_speed_threshold": [0, 11], "strateg": 20, "strav": 22, "street": [18, 19], "strength": 16, "string": [0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15], "subdomain": 16, "succes": [0, 3, 4, 5, 8, 11, 12, 14, 15], "success": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "successful": 0, "successfully": 0, "such": 16, "suiv": [0, 6, 9, 14, 18, 20, 21, 22, 23], "suivent": 20, "suivr": [14, 18, 19], "sun": [0, 1, 9, 10, 13, 14, 15], "sunday": 15, "supplied": 4, "suppl\u00e9mentair": 18, "support": [8, 16, 20, 21, 23], "suppress": [4, 16, 20], "supprim": [0, 1, 4, 8, 14, 15, 16, 17, 18], "suspended": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "suspended_at": [0, 1, 7, 10, 14, 15], "suspendr": 18, "suspendu": [0, 3, 4, 8, 11, 14, 18], "suspendus": 14, "suspens": [0, 1, 14, 15, 18, 20], "swimming": 16, "swimrun": [16, 18], "switch": 16, "synchronis": 22, "syntax": 18, "syslog": 20, "syslogidentifi": 20, "system": [18, 20], "systemd": 20, "s\u00e9anc": [0, 1, 2, 4, 6, 10, 11, 12, 14, 16, 19, 21, 22, 24], "s\u00e9cur": 21, "s\u00e9lection": [0, 18], "s\u00e9mant": 20, "s\u00e9par": [18, 20, 21], "t2zeeuxvuy3pla8meeufyk": 1, "tabl": 16, "taill": [0, 2, 18, 20], "taken": 0, "tant": 4, "tar": 20, "target": 20, "task": 20, "tchequ": [16, 18], "temp": 12, "term": 16, "test": [16, 20], "text": [0, 1, 10, 14, 15, 18], "text_html": 1, "text_visibility": 1, "textar": 16, "than": [2, 14, 16], "thank": 16, "that": [0, 4, 16], "the": [0, 1, 3, 4, 7, 11, 13, 14, 15, 16, 20], "their": 10, "them": [0, 16, 18], "this": [15, 17, 20], "thovi98": 16, "threshold": 16, "thu": [5, 8, 14], "thunderforest": [16, 20], "ticket": 19, "tient": 15, "tier": [18, 19], "tierc": [15, 18, 21], "til": [16, 20], "tile_server_url": 20, "tim": [12, 15, 16], "timelin": [13, 16], "timeout": [20, 23], "timezon": [0, 16], "titl": [13, 14, 15, 16], "titr": [15, 18], "tl": [16, 20], "to": [0, 2, 4, 12, 14, 15, 16, 18, 20, 22], "token": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "token_typ": 8, "too": [0, 15], "tool": 16, "tooling": 16, "tooltip": 16, "total": [0, 4, 5, 7, 8, 10, 12, 14, 15, 16, 18], "total_ascent": [0, 12], "total_dist": [0, 4, 5, 12, 14], "total_dur": [0, 4, 5, 12, 14], "total_moving": 4, "total_workout": 12, "toujour": 18, "tous": [0, 3, 4, 7, 8, 9, 11, 12, 14, 16, 18, 20], "tout": [4, 12, 16, 18, 20], "trac": [18, 20], "track": 16, "tracke": 20, "traduit": 18, "trail": 18, "trailing": 16, "train": 3, "trait": [0, 17], "translat": 16, "translated": 16, "transport": [11, 16, 18], "traxy": 16, "trekking": [16, 18], "tri": [5, 7, 10, 14, 15, 18], "tronqu": 15, "trouv": [3, 4, 8, 11, 15, 16], "tru": [0, 1, 2, 3, 4, 7, 8, 10, 11, 14, 15, 16, 20], "try": [0, 1, 3, 4, 7, 11, 13, 14, 15], "tuil": [15, 16, 18], "typ": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "typescript": 20, "typo": 16, "typos": 16, "t\u00e2ch": 20, "t\u00e9l\u00e9charg": [0, 15, 17, 18, 20, 24], "t\u00e9l\u00e9vers": [16, 18, 20], "t\u00eat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "u": 20, "uberspac": 20, "ubuntu": 20, "ui": 16, "ui_url": 20, "unauthorized": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "unblock": 14, "unchanged": 18, "uncommenting": 20, "underscor": 0, "undo": [1, 14, 15], "unfollow": 14, "uniqu": [0, 1, 8, 14, 16, 17, 18, 20, 21], "unit": [0, 16, 20], "unitair": 18, "unread": 7, "unresolved": 10, "unwanted": 16, "up": [16, 19, 20], "updat": [0, 4, 15, 16, 20], "updated": [0, 4, 16], "updated_at": [0, 10, 14], "updating": 2, "upgrad": [16, 20], "upload": [16, 20, 22], "upload_d": 20, "upload_fold": [20, 23], "uploaded": [2, 16, 20], "uploading": 16, "uploads_dir_siz": 12, "uri": [16, 20], "url": [0, 8, 16, 18, 20, 21, 23], "urtzai": 16, "usag": [17, 20], "use": 16, "use_dark_mod": 0, "use_raw_gpx_speed": 0, "used": 16, "user": [0, 1, 2, 4, 5, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21], "user_id": [0, 4], "user_nam": [5, 12, 14], "user_suspens": [0, 10], "user_unsuspens": 10, "user_warning": 10, "usernam": [0, 1, 5, 7, 10, 14, 15, 16, 17, 20], "using": 16, "util": [16, 18], "utilis": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 21], "utility": 20, "uuid": [15, 16], "v0": 20, "v2": 20, "v3": 19, "valeur": [0, 4, 8, 15, 17, 18, 20, 21, 23], "valid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23], "validat": 16, "valu": [0, 9, 10, 13, 14, 15, 16], "variabl": [16, 23], "various": 16, "vent": 18, "venv": 20, "ver": [8, 16, 20, 21], "verrouill": 18, "version": [2, 17, 18, 20, 21], "veuill": [16, 18, 20], "vi": [14, 18, 20], "vid": [15, 17, 20], "view": [16, 20], "virgul": 20, "virtual": 16, "virtualenv": [16, 20], "virtuel": [18, 20], "visibil": [0, 1, 15, 16, 18], "visibility": 16, "visibl": [1, 13, 18], "visual": [18, 20], "visualcrossing": 16, "visualis": 18, "vite_app_api_url": 20, "vitess": [0, 9, 15, 16, 18, 20], "voir": [4, 16, 18, 20, 21, 23], "volum": 20, "volumin": [18, 23], "voodoopt": 16, "votr": [19, 20], "vtt": [15, 16, 18], "vu": [16, 20], "vue3": 20, "vue_app_api_url": 20, "vuex": 20, "v\u00e9lo": [16, 18], "v\u00e9rif": [8, 16, 21, 23], "v\u00e9rifi": [11, 20, 23], "walking": 11, "want": 20, "wantedby": 20, "was": [0, 4], "wat": 16, "weath": 16, "weather_ap": 20, "weather_api_key": 20, "weather_api_provid": [16, 20], "weather_end": [13, 14, 15], "weather_provid": 2, "weather_start": [13, 14, 15], "web": [0, 8, 19, 20, 21], "weblat": [16, 18], "websit": 8, "wed": [0, 7, 10, 14, 15], "week": [12, 16], "weekend": 16, "weekm": [0, 12], "wget": 20, "when": [2, 16], "whit": 16, "wind": 16, "with": [0, 4, 15, 16, 20], "with_analys": 15, "with_following": 14, "with_gpx": [13, 14, 15], "with_hidden_user": 14, "with_inact": 14, "with_suspended": 14, "without": [4, 15, 16], "wjgtwtqfpnprhyak5ex9pw": 1, "work": [16, 20, 23], "worker": [16, 17, 20], "workers_process": 20, "workflow": 16, "workingdirectory": 20, "workout": [0, 1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "workout_dat": [0, 9, 13, 14, 15], "workout_id": [0, 1, 9, 10, 13, 14, 15], "workout_short_id": [1, 15], "workout_suspens": [10, 14], "workout_unsuspens": 10, "workout_visibility": [14, 15], "workouts_count": [4, 14], "workouts_visibility": [0, 14], "writ": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 14, 15, 21], "www": [2, 20], "x": [0, 15, 16, 20, 21], "xmgz": 16, "xml": 15, "xxxx": 20, "xzf": 20, "yarn": 20, "year": 12, "yml": 20, "you": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20], "your": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "yyyy": 0, "z": [15, 20], "z2ze5qzrnmvmndejpphask": 10, "zero": 16, "zip": [0, 2, 15, 16, 18], "zoom": 15, "z\u00e9ro": [0, 18], "\u00c0": 20, "\u00e9chang": 21, "\u00e9chapp": [15, 16], "\u00e9chec": 24, "\u00e9cran": 16, "\u00e9cras": 20, "\u00e9critur": 21, "\u00e9gal": [14, 16, 17, 18, 19, 20], "\u00e9lectr": 18, "\u00e9lectron": [0, 2, 14, 17, 18, 20], "\u00e9lev": [9, 18, 20], "\u00e9mettr": 8, "\u00e9miss": 8, "\u00e9quip": [0, 6, 15, 16, 21], "\u00e9tap": 20, "\u00e9tat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "\u00e9valu": 16, "\u00e9ven": 18, "\u00e9ventuel": 4, "\u00e9vit": [8, 16, 18], "\u00eatre": [0, 4, 8, 14, 15, 16, 17, 18, 19, 20, 21, 23], "\u0153uvr": 21}, "titles": ["Authentification et compte", "Commentaires", "Configuration", "Types d\u2019\u00e9quipement", "\u00c9quipements", "Demandes de suivi", "Documentation de l\u2019API", "Notifications", "OAuth2", "Records", "Signalements", "Sports", "Statistiques", "Flux de s\u00e9ances", "Utilisateurs", "S\u00e9ances", "Historique des modifications", "Interface de ligne de commande", "Fonctionnalit\u00e9s", "FitTrackee", "Installation", "OAuth 2.0", "Outils tiers", "Administrateur", "D\u00e9pannage"], "titleterms": {"0": [16, 21], "01": 16, "02": 16, "03": 16, "04": 16, "05": 16, "06": 16, "07": 16, "08": 16, "09": 16, "0b1": 16, "0b2": 16, "0b3": 16, "0b4": 16, "1": 16, "10": 16, "11": 16, "12": 16, "13": 16, "14": 16, "15": 16, "16": 16, "17": 16, "18": 16, "19": 16, "2": [16, 21], "20": 16, "2018": 16, "2019": 16, "2020": 16, "2021": 16, "2022": 16, "2023": 16, "2024": 16, "21": 16, "22": 16, "23": 16, "24": 16, "25": 16, "26": 16, "27": 16, "28": 16, "29": 16, "3": 16, "30": 16, "31": 16, "32": 16, "4": 16, "5": 16, "6": 16, "7": 16, "8": 16, "9": 16, "Les": 23, "a": [18, 20], "acces": [6, 20], "administr": [16, 18, 23], "affich": 23, "am\u00e9lior": 16, "api": [6, 20], "appliqu": 18, "authentif": 0, "bas": 17, "bord": 18, "bug": 16, "captur": 18, "cart": 23, "charg": 23, "clean": 17, "clean_arch": 17, "clean_token": 17, "command": 17, "commentair": [1, 18], "compt": [0, 18], "confidential": 18, "configur": [2, 18], "correct": 16, "corrig": 16, "courriel": 20, "creat": 17, "dan": 23, "db": 17, "demand": 5, "disponibl": 16, "diver": 16, "dock": 20, "document": [6, 16], "don": [17, 20], "drop": 17, "d\u00e9marr": 23, "d\u00e9pannag": 24, "d\u00e9pend": 20, "d\u00e9ploi": 20, "d\u00e9tail": [18, 23], "d\u00e9velopp": 20, "environ": 20, "export_arch": 17, "ferm": 16, "fichi": 23, "fittracke": [16, 19, 23], "flux": [13, 21], "fonctionnal": [16, 18], "franc": 16, "ftcli": 17, "histor": 16, "imag": 23, "import": 22, "install": [20, 22], "interact": 18, "interfac": 17, "jour": 20, "lign": 17, "lik": 18, "limit": 20, "list": 18, "mati": 19, "mineur": 16, "mis": 20, "moder": 18, "modif": 16, "m\u00e9t\u00e9o": 20, "nixos": 20, "notif": [7, 18], "nouvel": 16, "oauth": [18, 21], "oauth2": [8, 17], "outil": 22, "pag": 18, "part": 20, "point": 6, "polit": 18, "premi": 16, "principal": 20, "product": 20, "propos": 18, "pr\u00e9f\u00e9rent": 18, "pr\u00e9requ": 20, "pull": 16, "pyp": [16, 20], "record": 9, "request": 16, "ressourc": 21, "r\u00e9pertoir": 18, "scop": 21, "script": 22, "serveur": 20, "signal": 10, "sourc": 20, "sport": [11, 18], "statist": [12, 16, 18], "suiv": 5, "s\u00e9anc": [13, 15, 18, 23], "s\u00e9cur": 16, "tabl": 19, "tableau": 18, "ticket": 16, "tier": 22, "traduct": [16, 18], "tuil": 20, "typ": [3, 18], "t\u00e9l\u00e9charg": 23, "updat": 17, "upgrad": 17, "user": 17, "utilis": [14, 17, 18], "variabl": 20, "version": 16, "yunohost": 20, "\u00e9chec": 23, "\u00e9cran": 18, "\u00e9quip": [3, 4, 18]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"A partir de PyPI": [[20, "from-pypi"], [20, "id3"]], "A partir des sources": [[20, "from-sources"], [20, "id4"]], "A propos": [[18, "about"]], "Administrateur": [[23, null]], "Administration": [[18, "administration"], [18, "id8"]], "Application": [[18, "application"]], "Applications OAuth": [[18, "oauth-apps"]], "Authentification et compte": [[0, null]], "Base de donn\u00e9es": [[17, "database"]], "Bugs corrig\u00e9s": [[16, "bugs-fixed"], [16, "id2"], [16, "id5"], [16, "id8"], [16, "id10"], [16, "id12"], [16, "id20"], [16, "id23"], [16, "id26"], [16, "id31"], [16, "id37"], [16, "id42"], [16, "id46"], [16, "id49"], [16, "id51"], [16, "id55"], [16, "id59"], [16, "id63"], [16, "id66"], [16, "id69"], [16, "id72"], [16, "id73"], [16, "id76"], [16, "id78"], [16, "id80"], [16, "id83"], [16, "id86"], [16, "id94"], [16, "id97"], [16, "id100"], [16, "id103"], [16, "id115"], [16, "id120"], [16, "id122"], [16, "id126"], [16, "id129"], [16, "id132"], [16, "id134"], [16, "id137"], [16, "id140"], [16, "id142"], [16, "id145"], [16, "id148"], [16, "id151"], [16, "id156"], [16, "id158"], [16, "id160"], [16, "id162"], [16, "id165"], [16, "id167"], [16, "id173"], [16, "id176"], [16, "id178"], [16, "id180"], [16, "id187"], [16, "id192"], [16, "id194"], [16, "id196"], [16, "id199"], [16, "id201"], [16, "id203"], [16, "id207"], [16, "id217"], [16, "id220"], [16, "id222"], [16, "id225"], [16, "id232"]], "Captures d\u2019\u00e9cran": [[18, "screenshots"]], "Commentaires": [[1, null], [18, "comments"]], "Compte et pr\u00e9f\u00e9rences": [[18, "account-preferences"]], "Configuration": [[2, null], [18, "configuration"]], "Courriels": [[20, "emails"]], "Demandes de suivi": [[5, null]], "Divers": [[16, "misc"], [16, "id3"], [16, "id9"], [16, "id13"], [16, "id15"], [16, "id18"], [16, "id22"], [16, "id29"], [16, "id33"], [16, "id36"], [16, "id40"], [16, "id44"], [16, "id48"], [16, "id53"], [16, "id57"], [16, "id61"], [16, "id68"], [16, "id71"], [16, "id75"], [16, "id77"], [16, "id81"], [16, "id88"], [16, "id91"], [16, "id99"], [16, "id106"], [16, "id117"], [16, "id119"], [16, "id135"], [16, "id149"], [16, "id152"], [16, "id169"], [16, "id171"], [16, "id188"], [16, "id197"], [16, "id204"], [16, "id208"], [16, "id215"], [16, "id226"], [16, "id229"]], "Docker": [[20, "docker"], [20, "id6"]], "Documentation": [[16, "documentation"], [16, "id90"], [16, "id124"]], "Documentation de l\u2019API": [[6, null]], "Donn\u00e9es m\u00e9t\u00e9o": [[20, "weather-data"]], "D\u00e9pannage": [[24, null]], "D\u00e9pendances principales": [[20, "main-dependencies"]], "D\u00e9ploiement": [[20, "deployment"]], "D\u00e9veloppement": [[20, "development"]], "Environnement de production": [[20, "prod-environment"]], "Environnements de d\u00e9veloppement": [[20, "dev-environment"], [20, "id5"]], "Environnements de production": [[20, "production-environment"]], "FitTrackee": [[19, null]], "FitTrackee ne d\u00e9marre pas": [[23, "fittrackee-fails-to-start"]], "Flux": [[21, "flow"]], "Flux de s\u00e9ances": [[13, null]], "Fonctionnalit\u00e9s": [[16, "features"], [16, "id144"], [16, "id154"], [16, "id164"], [18, null]], "Fonctionnalit\u00e9s et am\u00e9liorations": [[16, "features-and-enhancements"], [16, "id1"], [16, "id4"], [16, "id7"], [16, "id11"], [16, "id16"], [16, "id19"], [16, "id25"], [16, "id30"], [16, "id34"], [16, "id41"], [16, "id45"], [16, "id54"], [16, "id58"], [16, "id62"], [16, "id65"], [16, "id82"], [16, "id85"], [16, "id93"], [16, "id96"], [16, "id102"], [16, "id107"], [16, "id109"], [16, "id111"], [16, "id114"], [16, "id125"], [16, "id131"]], "Historique des modifications": [[16, null]], "Installation": [[20, null], [20, "id2"]], "Interactions": [[18, "interactions"]], "Interface de ligne de commande": [[17, null]], "Les images de la carte ne sont pas affich\u00e9es mais la carte est affich\u00e9e dans le d\u00e9tail de la s\u00e9ance": [[23, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Likes": [[18, "likes"]], "Limitation d\u2019acc\u00e8s \u00e0 l\u2019API": [[20, "api-rate-limits"]], "Liste des s\u00e9ances": [[18, "workouts-list"]], "Mise \u00e0 jour": [[20, "upgrade"]], "Mod\u00e9ration": [[18, "moderation"]], "NixOS": [[20, "nixos"]], "Notifications": [[7, null], [18, "notifications"], [18, "id7"]], "Nouvelles fonctionnalit\u00e9s": [[16, "new-features"], [16, "id182"], [16, "id184"], [16, "id186"], [16, "id191"], [16, "id206"], [16, "id210"], [16, "id212"], [16, "id214"], [16, "id219"], [16, "id224"], [16, "id228"], [16, "id231"], [16, "id234"]], "OAuth 2.0": [[21, null]], "OAuth2": [[8, null], [17, "oauth2"]], "Outils d\u2019importation": [[22, "import-tools"]], "Outils tiers": [[22, null]], "Page de d\u00e9tail d\u2019une s\u00e9ance": [[18, "workout-detail"]], "Points d'acc\u00e8s :": [[6, null]], "Politique de confidentialit\u00e9": [[18, "privacy-policy"]], "Production": [[20, "production"]], "Pr\u00e9requis": [[20, "prerequisites"]], "Pull Requests": [[16, "pull-requests"], [16, "id138"], [16, "id141"], [16, "id157"], [16, "id166"], [16, "id170"], [16, "id174"], [16, "id189"]], "Records": [[9, null]], "Ressources": [[21, "resources"]], "R\u00e9pertoire des utilisateurs": [[18, "users-directory"]], "Scopes": [[21, "scopes"]], "Scripts d\u2019installation": [[22, "installation-scripts"]], "Serveur de tuiles": [[20, "map-tile-server"]], "Signalements": [[10, null]], "Sports": [[11, null], [18, "sports"], [18, "id3"]], "Statistiques": [[12, null], [18, "statistics"], [18, "id5"]], "S\u00e9ances": [[15, null], [18, "workouts"], [18, "id1"]], "S\u00e9curit\u00e9": [[16, "security"]], "Table des mati\u00e8res": [[19, "table-of-contents"]], "Tableau de bord": [[18, "dashboard"], [18, "id4"]], "Tickets Ferm\u00e9s": [[16, "issues-closed"], [16, "id136"], [16, "id139"], [16, "id143"], [16, "id147"], [16, "id150"], [16, "id153"], [16, "id155"], [16, "id159"], [16, "id161"], [16, "id163"], [16, "id168"], [16, "id172"], [16, "id175"], [16, "id177"], [16, "id179"], [16, "id181"], [16, "id183"], [16, "id185"], [16, "id190"], [16, "id193"], [16, "id195"], [16, "id198"], [16, "id200"], [16, "id202"], [16, "id205"], [16, "id209"], [16, "id211"], [16, "id213"], [16, "id216"], [16, "id218"], [16, "id221"], [16, "id223"], [16, "id227"], [16, "id230"], [16, "id233"]], "Traductions": [[16, "translations"], [16, "id6"], [16, "id14"], [16, "id17"], [16, "id21"], [16, "id24"], [16, "id27"], [16, "id28"], [16, "id32"], [16, "id35"], [16, "id38"], [16, "id39"], [16, "id43"], [16, "id47"], [16, "id50"], [16, "id52"], [16, "id56"], [16, "id60"], [16, "id64"], [16, "id67"], [16, "id70"], [16, "id74"], [16, "id79"], [16, "id84"], [16, "id87"], [16, "id89"], [16, "id92"], [16, "id95"], [16, "id98"], [16, "id101"], [16, "id104"], [16, "id105"], [16, "id108"], [16, "id110"], [16, "id112"], [16, "id113"], [16, "id116"], [16, "id118"], [16, "id121"], [16, "id123"], [16, "id127"], [16, "id128"], [16, "id130"], [16, "id133"], [16, "id146"], [18, "translations"]], "Types d\u2019\u00e9quipement": [[3, null], [18, "equipment-types"]], "Utilisateurs": [[14, null], [17, "users"], [18, "users"], [18, "id2"]], "Variables d\u2019environnement": [[20, "environment-variables"]], "Version 0.1.0 - Premi\u00e8re version \ud83c\udf89 (04/07/2018)": [[16, "version-0-1-0-first-release-2018-07-04"]], "Version 0.1.1 - Corrections et am\u00e9liorations (07/02/2019)": [[16, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.2.0 - Statistiques (07/07/2019)": [[16, "version-0-2-0-statistics-2019-07-07"]], "Version 0.2.1 - Correction et am\u00e9liorations (01/09/2019)": [[16, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.2 - Corrections des statistiques (23/09/2019)": [[16, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.3 - FitTrackee disponible en Fran\u00e7ais (29/12/2019)": [[16, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.4 - Corrections mineures (30/01/2020)": [[16, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.5 - Corrections et am\u00e9liorations (31/01/2020)": [[16, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.3.0 - Administration (15/07/2020)": [[16, "version-0-3-0-administration-2020-07-15"]], "Version 0.4.0 - FitTrackee sur PyPI (19/09/2020)": [[16, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.4.1 (31/12/2020)": [[16, "version-0-4-1-2020-12-31"]], "Version 0.4.2 (03/01/2021)": [[16, "version-0-4-2-2021-01-03"]], "Version 0.4.3 (10/01/2021)": [[16, "version-0-4-3-2021-01-10"]], "Version 0.4.4 (31/01/2021)": [[16, "version-0-4-4-2021-01-31"]], "Version 0.4.5 (17/02/2021)": [[16, "version-0-4-5-2021-02-17"]], "Version 0.4.6 (21/02/2021)": [[16, "version-0-4-6-2021-02-21"]], "Version 0.4.7 (07/04/2021)": [[16, "version-0-4-7-2021-04-07"]], "Version 0.4.8 (03/07/2021)": [[16, "version-0-4-8-2021-07-03"]], "Version 0.4.9 (16/07/2021)": [[16, "version-0-4-9-2021-07-16"]], "Version 0.5.0 (14/11/2021)": [[16, "version-0-5-0-2021-11-14"]], "Version 0.5.1 (30/11/2021)": [[16, "version-0-5-1-2021-11-30"]], "Version 0.5.2 (19/12/2021)": [[16, "version-0-5-2-2021-12-19"]], "Version 0.5.3 (01/01/2022)": [[16, "version-0-5-3-2022-01-01"]], "Version 0.5.4 (01/01/2022)": [[16, "version-0-5-4-2022-01-01"]], "Version 0.5.5 (19/01/2022)": [[16, "version-0-5-5-2022-01-19"]], "Version 0.5.6 (05/02/2022)": [[16, "version-0-5-6-2022-02-05"]], "Version 0.5.7 (13/02/2022)": [[16, "version-0-5-7-2022-02-13"]], "Version 0.6.0 (27/03/2022)": [[16, "version-0-6-0-2022-03-27"]], "Version 0.6.1 (27/03/2022)": [[16, "version-0-6-1-2022-03-27"]], "Version 0.6.10 (13/07/2022)": [[16, "version-0-6-10-2022-07-13"]], "Version 0.6.11 (27/02/2022)": [[16, "version-0-6-11-2022-07-27"]], "Version 0.6.12 (14/09/2022)": [[16, "version-0-6-12-2022-09-14"]], "Version 0.6.2 (03/04/2022)": [[16, "version-0-6-2-2022-04-03"]], "Version 0.6.3 (09/04/2022)": [[16, "version-0-6-3-2022-04-09"]], "Version 0.6.4 (23/04/2022)": [[16, "version-0-6-4-2022-04-23"]], "Version 0.6.5 (24/04/2022)": [[16, "version-0-6-5-2022-04-24"]], "Version 0.6.6 (29/05/2022)": [[16, "version-0-6-6-2022-05-29"]], "Version 0.6.7 (11/06/2022)": [[16, "version-0-6-7-2022-06-11"]], "Version 0.6.8 (22/06/2022)": [[16, "version-0-6-8-2022-06-22"]], "Version 0.6.9 (03/07/2022)": [[16, "version-0-6-9-2022-07-03"]], "Version 0.7.0 (19/09/2022)": [[16, "version-0-7-0-2022-09-19"]], "Version 0.7.1 (21/09/2022)": [[16, "version-0-7-1-2022-09-21"]], "Version 0.7.10 (21/12/2022)": [[16, "version-0-7-10-2022-12-21"]], "Version 0.7.11 (31/12/2022)": [[16, "version-0-7-11-2022-12-31"]], "Version 0.7.12 (16/02/2023)": [[16, "version-0-7-12-2023-02-16"]], "Version 0.7.13 (05/03/2023)": [[16, "version-0-7-13-2023-03-05"]], "Version 0.7.14 (08/03/2023)": [[16, "version-0-7-14-2023-03-08"]], "Version 0.7.15 (12/04/2023)": [[16, "version-0-7-15-2023-04-12"]], "Version 0.7.16 (29/05/2023)": [[16, "version-0-7-16-2023-05-29"]], "Version 0.7.17 (03/06/2023)": [[16, "version-0-7-17-2023-06-03"]], "Version 0.7.18 (25/06/2023)": [[16, "version-0-7-18-2023-06-25"]], "Version 0.7.19 (15/07/2023)": [[16, "version-0-7-19-2023-07-15"]], "Version 0.7.2 (21/09/2022)": [[16, "version-0-7-2-2022-09-21"]], "Version 0.7.20 (22/07/2023)": [[16, "version-0-7-20-2023-07-22"]], "Version 0.7.21 (30/07/2023)": [[16, "version-0-7-21-2023-07-30"]], "Version 0.7.22 (23/08/2023)": [[16, "version-0-7-22-2023-08-23"]], "Version 0.7.23 (14/09/2023)": [[16, "version-0-7-23-2023-09-14"]], "Version 0.7.24 (04/10/2023)": [[16, "version-0-7-24-2023-10-04"]], "Version 0.7.25 (08/10/2023)": [[16, "version-0-7-25-2023-10-08"]], "Version 0.7.26 (19/11/2023)": [[16, "version-0-7-26-2023-11-19"]], "Version 0.7.27 (20/12/2023)": [[16, "version-0-7-27-2023-12-20"]], "Version 0.7.28 (23/12/2023)": [[16, "version-0-7-28-2023-12-23"]], "Version 0.7.29 (04/01/2024)": [[16, "version-0-7-29-2024-01-06"]], "Version 0.7.3 (01/11/2022)": [[16, "version-0-7-3-2022-11-01"]], "Version 0.7.30 (04/02/2024)": [[16, "version-0-7-30-2024-02-04"]], "Version 0.7.31 (10/02/2024)": [[16, "version-0-7-31-2024-02-10"]], "Version 0.7.32 (10/03/2024)": [[16, "version-0-7-32-2024-03-10"]], "Version 0.7.4 (05/11/2022)": [[16, "version-0-7-4-2022-11-05"]], "Version 0.7.5 (09/11/2022)": [[16, "version-0-7-5-2022-11-09"]], "Version 0.7.6 (09/11/2022)": [[16, "version-0-7-6-2022-11-09"]], "Version 0.7.7 (27/11/2022)": [[16, "version-0-7-7-2022-11-27"]], "Version 0.7.8 (30/11/2022)": [[16, "version-0-7-8-2022-11-30"]], "Version 0.7.9 (11/12/2022)": [[16, "version-0-7-9-2022-12-11"]], "Version 0.8.0 (21/04/2024)": [[16, "version-0-8-0-2024-04-21"]], "Version 0.8.1 (01/05/2024)": [[16, "version-0-8-1-2024-05-01"]], "Version 0.8.10 (09/10/2024)": [[16, "version-0-8-10-2024-10-09"]], "Version 0.8.11 (30/10/2024)": [[16, "version-0-8-11-2024-10-30"]], "Version 0.8.12 (17/11/2024)": [[16, "version-0-8-12-2024-11-17"]], "Version 0.8.13 (29/12/2024)": [[16, "version-0-8-13-2024-12-29"]], "Version 0.8.2 (08/05/2024)": [[16, "version-0-8-2-2024-05-08"]], "Version 0.8.3 (09/05/2024)": [[16, "version-0-8-3-2024-05-09"]], "Version 0.8.4 (22/05/2024)": [[16, "version-0-8-4-2024-05-22"]], "Version 0.8.5 (29/06/2024)": [[16, "version-0-8-5-2024-06-29"]], "Version 0.8.6 (03/08/2024)": [[16, "version-0-8-6-2024-08-03"]], "Version 0.8.7 (25/08/2024)": [[16, "version-0-8-7-2024-08-25"]], "Version 0.8.8 (01/09/2024)": [[16, "version-0-8-8-2024-09-01"]], "Version 0.8.9 (21/09/2024)": [[16, "version-0-8-9-2024-09-21"]], "Version 0.9.0b1 (14/12/2024)": [[16, "version-0-9-0b1-2024-12-14"]], "Version 0.9.0b2 (14/12/2024)": [[16, "version-0-9-0b2-2024-12-14"]], "Version 0.9.0b3 (18/12/2024)": [[16, "version-0-9-0b3-2024-12-18"]], "Version 0.9.0b4 (23/12/2024)": [[16, "version-0-9-0b4-2024-12-23"]], "Version 0.9.0b5 (30/12/2024)": [[16, "version-0-9-0b5-2024-12-30"]], "Version 0.9.0b6 (05/01/2025)": [[16, "version-0-9-0b6-2025-01-05"]], "Yunohost": [[20, "yunohost"]], "ftcli db drop": [[17, "ftcli-db-drop"]], "ftcli db upgrade": [[17, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[17, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[17, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[17, "ftcli-users-clean-tokens"]], "ftcli users create": [[17, "ftcli-users-create"]], "ftcli users export_archives": [[17, "ftcli-users-export-archives"]], "ftcli users update": [[17, "ftcli-users-update"]], "\u00c9chec du chargement ou du t\u00e9l\u00e9chargement de fichiers": [[23, "failed-to-upload-or-download-files"]], "\u00c9quipements": [[4, null], [18, "equipments"], [18, "id6"]]}, "docnames": ["api/auth", "api/comments", "api/configuration", "api/equipment_types", "api/equipments", "api/follow_requests", "api/index", "api/notifications", "api/oauth2", "api/records", "api/reports", "api/sports", "api/stats", "api/timeline", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/auth.rst", "api/comments.rst", "api/configuration.rst", "api/equipment_types.rst", "api/equipments.rst", "api/follow_requests.rst", "api/index.rst", "api/notifications.rst", "api/oauth2.rst", "api/records.rst", "api/reports.rst", "api/sports.rst", "api/stats.rst", "api/timeline.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "indexentries": {"api_rate_limits": [[20, "envvar-API_RATE_LIMITS", false]], "app_log": [[20, "envvar-APP_LOG", false]], "app_port": [[20, "envvar-APP_PORT", false]], "app_secret_key": [[20, "envvar-APP_SECRET_KEY", false]], "app_settings": [[20, "envvar-APP_SETTINGS", false]], "app_workers": [[20, "envvar-APP_WORKERS", false]], "database_dir": [[20, "envvar-DATABASE_DIR", false]], "database_disable_pooling": [[20, "envvar-DATABASE_DISABLE_POOLING", false]], "database_url": [[20, "envvar-DATABASE_URL", false]], "default_staticmap": [[20, "envvar-DEFAULT_STATICMAP", false]], "email_url": [[20, "envvar-EMAIL_URL", false]], "flask_app": [[20, "envvar-FLASK_APP", false]], "host": [[20, "envvar-HOST", false]], "log_dir": [[20, "envvar-LOG_DIR", false]], "map_attribution": [[20, "envvar-MAP_ATTRIBUTION", false]], "port": [[20, "envvar-PORT", false]], "postgres_db": [[20, "envvar-POSTGRES_DB", false]], "postgres_password": [[20, "envvar-POSTGRES_PASSWORD", false]], "postgres_user": [[20, "envvar-POSTGRES_USER", false]], "redis_dir": [[20, "envvar-REDIS_DIR", false]], "redis_url": [[20, "envvar-REDIS_URL", false]], "sender_email": [[20, "envvar-SENDER_EMAIL", false]], "staticmap_subdomains": [[20, "envvar-STATICMAP_SUBDOMAINS", false]], "tile_server_url": [[20, "envvar-TILE_SERVER_URL", false]], "ui_url": [[20, "envvar-UI_URL", false]], "upload_dir": [[20, "envvar-UPLOAD_DIR", false]], "upload_folder": [[20, "envvar-UPLOAD_FOLDER", false]], "variable d'environnement": [[20, "envvar-API_RATE_LIMITS", false], [20, "envvar-APP_LOG", false], [20, "envvar-APP_PORT", false], [20, "envvar-APP_SECRET_KEY", false], [20, "envvar-APP_SETTINGS", false], [20, "envvar-APP_WORKERS", false], [20, "envvar-DATABASE_DIR", false], [20, "envvar-DATABASE_DISABLE_POOLING", false], [20, "envvar-DATABASE_URL", false], [20, "envvar-DEFAULT_STATICMAP", false], [20, "envvar-EMAIL_URL", false], [20, "envvar-FLASK_APP", false], [20, "envvar-HOST", false], [20, "envvar-LOG_DIR", false], [20, "envvar-MAP_ATTRIBUTION", false], [20, "envvar-PORT", false], [20, "envvar-POSTGRES_DB", false], [20, "envvar-POSTGRES_PASSWORD", false], [20, "envvar-POSTGRES_USER", false], [20, "envvar-REDIS_DIR", false], [20, "envvar-REDIS_URL", false], [20, "envvar-SENDER_EMAIL", false], [20, "envvar-STATICMAP_SUBDOMAINS", false], [20, "envvar-TILE_SERVER_URL", false], [20, "envvar-UI_URL", false], [20, "envvar-UPLOAD_DIR", false], [20, "envvar-UPLOAD_FOLDER", false], [20, "envvar-VITE_APP_API_URL", false], [20, "envvar-WEATHER_API_KEY", false], [20, "envvar-WEATHER_API_PROVIDER", false], [20, "envvar-WORKERS_PROCESSES", false]], "vite_app_api_url": [[20, "envvar-VITE_APP_API_URL", false]], "weather_api_key": [[20, "envvar-WEATHER_API_KEY", false]], "weather_api_provider \ud83c\udd95": [[20, "envvar-WEATHER_API_PROVIDER", false]], "workers_processes": [[20, "envvar-WORKERS_PROCESSES", false]]}, "objects": {"": [[10, 0, 1, "patch--api-appeals-(string-appeal_id)", "/api/appeals/(string:appeal_id)"], [0, 1, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 2, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 2, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 1, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 1, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 1, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 2, 1, "get--api-auth-account-sanctions-(string-action_short_id)", "/api/auth/account/sanctions/(string:action_short_id)"], [0, 1, 1, "post--api-auth-account-sanctions-(string-action_short_id)-appeal", "/api/auth/account/sanctions/(string:action_short_id)/appeal"], [0, 2, 1, "get--api-auth-account-suspension", "/api/auth/account/suspension"], [0, 1, 1, "post--api-auth-account-suspension-appeal", "/api/auth/account/suspension/appeal"], [0, 2, 1, "get--api-auth-blocked-users", "/api/auth/blocked-users"], [0, 1, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 1, 1, "post--api-auth-login", "/api/auth/login"], [0, 1, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 1, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 1, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 3, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 1, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 0, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 1, 1, "post--api-auth-profile-edit-notifications", "/api/auth/profile/edit/notifications"], [0, 1, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 1, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 3, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 1, 1, "post--api-auth-register", "/api/auth/register"], [1, 3, 1, "delete--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 2, 1, "get--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 0, 1, "patch--api-comments-(string-comment_short_id)", "/api/comments/(string:comment_short_id)"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like", "/api/comments/(string:comment_short_id)/like"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-like-undo", "/api/comments/(string:comment_short_id)/like/undo"], [1, 2, 1, "get--api-comments-(string-comment_short_id)-likes", "/api/comments/(string:comment_short_id)/likes"], [1, 1, 1, "post--api-comments-(string-comment_short_id)-suspension-appeal", "/api/comments/(string:comment_short_id)/suspension/appeal"], [2, 2, 1, "get--api-config", "/api/config"], [2, 0, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-equipment-types", "/api/equipment-types"], [3, 2, 1, "get--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [3, 0, 1, "patch--api-equipment-types-(int-equipment_type_id)", "/api/equipment-types/(int:equipment_type_id)"], [4, 2, 1, "get--api-equipments", "/api/equipments"], [4, 1, 1, "post--api-equipments", "/api/equipments"], [4, 3, 1, "delete--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 2, 1, "get--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 0, 1, "patch--api-equipments-(string-equipment_short_id)", "/api/equipments/(string:equipment_short_id)"], [4, 1, 1, "post--api-equipments-(string-equipment_short_id)-refresh", "/api/equipments/(string:equipment_short_id)/refresh"], [5, 2, 1, "get--api-follow-requests", "/api/follow-requests"], [5, 1, 1, "post--api-follow-requests-(user_name)-accept", "/api/follow-requests/(user_name)/accept"], [5, 1, 1, "post--api-follow-requests-(user_name)-reject", "/api/follow-requests/(user_name)/reject"], [7, 2, 1, "get--api-notifications", "/api/notifications"], [7, 0, 1, "patch--api-notifications-(string-notification_id)", "/api/notifications/(string:notification_id)"], [7, 1, 1, "post--api-notifications-mark-all-as-read", "/api/notifications/mark-all-as-read"], [7, 2, 1, "get--api-notifications-types", "/api/notifications/types"], [7, 2, 1, "get--api-notifications-unread", "/api/notifications/unread"], [8, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [8, 1, 1, "post--api-oauth-apps", "/api/oauth/apps"], [8, 3, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [8, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [8, 1, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [8, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [8, 1, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [8, 1, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [8, 1, 1, "post--api-oauth-token", "/api/oauth/token"], [2, 2, 1, "get--api-ping", "/api/ping"], [9, 2, 1, "get--api-records", "/api/records"], [10, 2, 1, "get--api-reports", "/api/reports"], [10, 1, 1, "post--api-reports", "/api/reports"], [10, 2, 1, "get--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 0, 1, "patch--api-reports-(int-report_id)", "/api/reports/(int:report_id)"], [10, 1, 1, "post--api-reports-(int-report_id)-actions", "/api/reports/(int:report_id)/actions"], [10, 2, 1, "get--api-reports-unresolved", "/api/reports/unresolved"], [11, 2, 1, "get--api-sports", "/api/sports"], [11, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [11, 0, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [12, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [12, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [12, 2, 1, "get--api-stats-all", "/api/stats/all"], [13, 2, 1, "get--api-timeline", "/api/timeline"], [14, 2, 1, "get--api-users", "/api/users"], [14, 3, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [14, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [14, 0, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [14, 1, 1, "post--api-users-(user_name)-block", "/api/users/(user_name)/block"], [14, 1, 1, "post--api-users-(user_name)-follow", "/api/users/(user_name)/follow"], [14, 2, 1, "get--api-users-(user_name)-followers", "/api/users/(user_name)/followers"], [14, 2, 1, "get--api-users-(user_name)-following", "/api/users/(user_name)/following"], [14, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [14, 2, 1, "get--api-users-(user_name)-sanctions", "/api/users/(user_name)/sanctions"], [14, 1, 1, "post--api-users-(user_name)-unblock", "/api/users/(user_name)/unblock"], [14, 1, 1, "post--api-users-(user_name)-unfollow", "/api/users/(user_name)/unfollow"], [14, 2, 1, "get--api-users-(user_name)-workouts", "/api/users/(user_name)/workouts"], [15, 2, 1, "get--api-workouts", "/api/workouts"], [15, 1, 1, "post--api-workouts", "/api/workouts"], [15, 3, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 0, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [1, 2, 1, "get--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [1, 1, 1, "post--api-workouts-(string-workout_short_id)-comments", "/api/workouts/(string:workout_short_id)/comments"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like", "/api/workouts/(string:workout_short_id)/like"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-like-undo", "/api/workouts/(string:workout_short_id)/like/undo"], [15, 2, 1, "get--api-workouts-(string-workout_short_id)-likes", "/api/workouts/(string:workout_short_id)/likes"], [15, 1, 1, "post--api-workouts-(string-workout_short_id)-suspension-appeal", "/api/workouts/(string:workout_short_id)/suspension/appeal"], [15, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [15, 1, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [20, 4, 1, "-", "API_RATE_LIMITS"], [20, 4, 1, "-", "APP_LOG"], [20, 4, 1, "-", "APP_PORT"], [20, 4, 1, "-", "APP_SECRET_KEY"], [20, 4, 1, "-", "APP_SETTINGS"], [20, 4, 1, "-", "APP_WORKERS"], [20, 4, 1, "-", "DATABASE_DIR"], [20, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [20, 4, 1, "-", "DATABASE_URL"], [20, 4, 1, "-", "DEFAULT_STATICMAP"], [20, 4, 1, "-", "EMAIL_URL"], [20, 4, 1, "-", "FLASK_APP"], [20, 4, 1, "-", "HOST"], [20, 4, 1, "-", "LOG_DIR"], [20, 4, 1, "-", "MAP_ATTRIBUTION"], [20, 4, 1, "-", "PORT"], [20, 4, 1, "-", "POSTGRES_DB"], [20, 4, 1, "-", "POSTGRES_PASSWORD"], [20, 4, 1, "-", "POSTGRES_USER"], [20, 4, 1, "-", "REDIS_DIR"], [20, 4, 1, "-", "REDIS_URL"], [20, 4, 1, "-", "SENDER_EMAIL"], [20, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [20, 4, 1, "-", "TILE_SERVER_URL"], [20, 4, 1, "-", "UI_URL"], [20, 4, 1, "-", "UPLOAD_DIR"], [20, 4, 1, "-", "UPLOAD_FOLDER"], [20, 4, 1, "-", "VITE_APP_API_URL"], [20, 4, 1, "-", "WEATHER_API_KEY"], [20, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [20, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[15, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objnames": {"0": ["http", "patch", "HTTP patch"], "1": ["http", "post", "HTTP post"], "2": ["http", "get", "HTTP get"], "3": ["http", "delete", "HTTP delete"], "4": ["std", "envvar", "variable d'environnement"]}, "objtypes": {"0": "http:patch", "1": "http:post", "2": "http:get", "3": "http:delete", "4": "std:envvar"}, "terms": {"0": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "00": [0, 1, 4, 5, 9, 13, 14, 15], "000": 18, "000000": 0, "01": [0, 1, 9, 10, 12, 13, 14, 15], "02": [5, 14, 15], "03": [14, 15], "04": [0, 7, 10, 13, 14, 15], "06": [4, 7, 8, 12, 14], "0667062": 8, "06ba975": 16, "07": [0, 7, 9, 13, 14, 15], "075aeb9": 16, "08": [0, 4, 7, 9, 13, 14, 15], "09": [0, 1, 7, 10, 14, 15], "0b6": 2, "0mb": [0, 15], "1": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "10": [0, 1, 2, 4, 5, 7, 9, 13, 14, 15, 18, 20], "100": [15, 16, 18], "1000": 12, "10000": [2, 15], "101": [12, 16], "104": [15, 16], "1048576": 2, "10485760": 2, "106": 16, "109": 16, "11": [0, 9, 14, 15, 18, 20], "112": 16, "113": 16, "115": 16, "116": 16, "12": [0, 9, 10, 14, 15, 20, 22], "121": 16, "123": 16, "1232004": 15, "12341": 12, "1234538": 15, "1239": 7, "125": 16, "126": 16, "1267": 12, "127": [16, 20], "129": 16, "12fb835fa26c": 7, "13": [0, 1, 9, 13, 14, 15, 17, 18, 20], "131": 16, "134": 16, "135": 16, "1375986": 16, "138": 16, "14": [0, 1, 8, 13, 14, 15], "140": 16, "145": 16, "146": 16, "149": 16, "15": [12, 15, 17, 18, 20], "150": 12, "151": 16, "152": 16, "155": 16, "156": [12, 16], "1563529507772": 15, "158": 15, "16": [1, 12, 14, 15, 18], "160": 16, "161": 16, "162": 16, "1658660147": 8, "167": 16, "169": 16, "17": [0, 5, 10, 13, 14, 15], "171": 16, "173": 16, "174240": 16, "175": 16, "177": 16, "178": [12, 16], "18": [0, 9, 10, 14, 15, 18, 20], "180": 16, "189071": 16, "19": [15, 18], "190": 16, "191": 16, "192": 16, "193": 16, "195": 16, "196": 16, "197": 16, "1m": 20, "1mb": 20, "2": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20], "20": [14, 15, 18], "200": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "201": [0, 1, 4, 10, 15, 16], "2016": 15, "2017": [1, 12, 14, 15], "2018": [12, 13, 14, 15], "2019": [0, 9, 12, 13, 14, 15], "2021": [5, 14], "2022": 8, "2023": [0, 4, 14, 20], "2024": [0, 1, 7, 10, 14, 15], "203": 12, "204": [0, 1, 4, 8, 14, 15], "208": [15, 16], "209": 16, "21": [4, 10], "210": 16, "212": 16, "213": 16, "22": 15, "223": 16, "224": 16, "225": 16, "23": [15, 20], "230": 16, "231": [15, 16], "232": 16, "234": 15, "236": 16, "237": 16, "239": 16, "24": [1, 15, 20], "241": 16, "242": 16, "244": 16, "246": 16, "247": 16, "25": [10, 15, 20], "250": 16, "252": 16, "255": 15, "257": 16, "258": 16, "259": 16, "26": [15, 20], "260": 16, "261": 16, "264": 16, "265": 16, "266": 16, "26and": 20, "27": [0, 8, 10, 14, 15, 18], "270": 16, "271": 16, "273": 16, "274": 16, "275": 16, "278": 16, "279": [15, 16], "28": 4, "280": [15, 16], "282": [12, 16], "287": 16, "289": 16, "29": [4, 10], "290": 16, "2930": 15, "294": 16, "296": 16, "297": 16, "298": 16, "299": 16, "2bcff2e": 16, "2e1ee2c": 16, "2e9f9d": 16, "2ordfncv6vprkfp3yrcyht": [1, 15], "2ukrviyshoakg8qsuknus4": 4, "2ule2hwhsnycs2vhbsikb9": 14, "3": [0, 1, 3, 11, 12, 13, 14, 15, 18, 20], "30": [0, 10, 12, 15, 20], "300": 20, "3000": 20, "301": [16, 20], "304": 16, "305": 16, "307": 16, "308": 16, "31": [0, 1, 14, 15, 18, 20], "310": 16, "314": 16, "315": 16, "318": 16, "319": 16, "32": 15, "320": 16, "323": 16, "328": 16, "329": 16, "33": [12, 16], "3320": 12, "333": 16, "338": 16, "34": [1, 16], "34614d5": 16, "35": [0, 7, 15, 16], "350": 16, "351": 16, "352": 16, "354": 16, "356": 16, "357": 16, "358": 16, "359": 16, "36": 16, "365": 16, "366": 16, "367": 16, "369": 16, "37": 16, "370": 16, "371": 16, "374": 16, "375": 16, "376": 16, "377": 16, "38": 10, "380": 16, "381": 16, "382": 16, "3821e37": 16, "384": 16, "386": 16, "388": 16, "39": 15, "390": 16, "391": 16, "393": 16, "394": 16, "395": 16, "397": 16, "398": 16, "399": 16, "3aread": 21, "3awrit": 21, "3b6fa25": 16, "3c8d9c2": 16, "3f": 20, "4": [0, 3, 11, 12, 13, 14, 15, 17, 18, 20], "40": 16, "400": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 16], "401": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "402": 16, "403": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "404": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "406": 16, "407": 16, "409": 16, "40and": 20, "41": [15, 16], "410": 16, "4109": 15, "411": 16, "413": [0, 15], "415": 16, "416": 16, "417": 16, "418": 16, "42": [15, 16], "421": 16, "422": 16, "426": 16, "427": [15, 16], "428": 16, "43": [0, 9, 13, 14, 15, 16], "431": 16, "433": 16, "435": 15, "436": 16, "438": 16, "44": [14, 15, 16], "441": 16, "443": 20, "444": 16, "449": 16, "44ff": 7, "45": [0, 1, 14, 15], "450": 16, "455": 16, "456": 16, "46": [12, 16], "464": 16, "465": 20, "468": 16, "469": 16, "47": [12, 15, 16], "471": 16, "472": 16, "473": 16, "474": 16, "475": 16, "476": 16, "477": 16, "478": [15, 16], "479": 16, "48": [5, 12, 14], "481": 16, "482": 16, "484": 16, "488": 16, "489": 16, "49": [0, 10, 14], "490": 16, "494": 16, "495": 16, "496": 16, "499": [15, 16], "4c3fc34": 16, "5": [3, 8, 11, 12, 14, 15, 17, 18, 20], "50": [0, 4, 5, 12, 14, 16, 20], "500": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16], "5000": 20, "502": 16, "504": 16, "506": 16, "507": 16, "5078118": 15, "5079733": 15, "508": 16, "51": [13, 14, 15], "510": 16, "511": 16, "512": 16, "517587": 15, "51758b4": 16, "52": [1, 15, 16], "521": 16, "524": 16, "526": 16, "527": 16, "528": 16, "53": [8, 16], "530": 16, "531": 16, "532": 16, "533": 16, "534": 16, "536": 16, "537": 16, "538": 16, "54": 16, "540": 16, "542": 16, "543": 16, "5432": 20, "544": 16, "545": 16, "546": 16, "55": [14, 15], "550": 16, "551": 16, "555": 16, "556": 16, "557": 16, "558": 16, "56": [10, 16], "560627": 15, "563": 16, "564": 16, "565": 16, "566": 16, "57": [15, 16], "571": 16, "575": 16, "58": [0, 14, 16], "582": 16, "583": 16, "587": [16, 20], "588": 16, "59": [12, 14, 15, 16], "590": 16, "591": 16, "592": 16, "593": 16, "595": 16, "598": 16, "6": [0, 3, 4, 11, 14, 15, 17, 18, 20], "60": 16, "600": 16, "603": 16, "604": 16, "607": 16, "608": 16, "609": 16, "60e164d": 16, "61": 16, "610": 16, "612": 16, "613": 12, "614": 16, "616": 16, "617": 16, "618": 16, "62": 16, "620": 16, "621": [15, 16], "622": 16, "624": 16, "625": 16, "626": 16, "628": 16, "629": 16, "63": 15, "631": 16, "633": 16, "634": 16, "635": 16, "636": 16, "637": 16, "639": [16, 17], "64": 16, "640": 16, "645": 16, "651": 16, "652": 16, "655": 16, "657": 16, "659": 16, "66": 16, "660": 16, "662": 16, "664": 16, "666": 16, "667": 16, "668": 16, "67": [0, 12, 14, 16], "671": 16, "673": 16, "674": 16, "675": 16, "677": 16, "678": 16, "6dxczvmrhkar72shuz9pwd": [0, 14], "6e215a": 16, "6nvxvayoh9zkr8rmxhu54t": 14, "7": [15, 17, 18, 20, 21], "70": 16, "71": 16, "72": 16, "720": 0, "73": 16, "7380": 15, "74": 16, "75": 16, "7641": 12, "78": 12, "79": 16, "7pdujhcvhya4hv29jzqngg": 0, "8": [0, 15, 17, 18, 20, 21], "80": [16, 20], "8025": 20, "81": 16, "82": 16, "83": 16, "84": 16, "85": 16, "864000": 8, "87": 16, "877fa0f": 16, "88": 16, "89": 16, "895": [0, 14], "8aa4cff": 16, "9": [0, 2, 9, 14, 15, 17, 18, 20, 21], "90": 16, "91": 16, "92": 16, "924": 0, "93": 16, "93706": 15, "95": [12, 16], "97": [0, 9, 13, 14, 15, 16], "98": 16, "981933": 15, "99": [12, 16], "9960": 12, "AS": [0, 9, 13, 14, 15], "Avec": 18, "Ce": [8, 16], "Cette": [16, 19, 20], "D": 20, "Des": [18, 20], "Du": 16, "EU": 16, "Elle": 18, "Elles": 20, "En": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "Et": 16, "Il": [0, 15, 16, 18, 19, 20, 21], "Ils": 21, "J": 16, "L": [0, 11, 16, 18, 20, 21], "La": [0, 15, 16, 17, 18, 20, 21, 23], "Le": [0, 4, 14, 16, 18, 20], "Les": [0, 9, 14, 15, 18, 19, 20, 21, 24], "M": 15, "MS": [0, 9, 13, 14, 15], "Mon": [13, 14, 15], "N": 16, "Ne": 14, "Par": [20, 21], "Pas": 16, "Pour": [15, 16, 18, 20, 21], "S": 18, "SA": 20, "Ses": 18, "Sur": 20, "Tue": [4, 15], "Un": [0, 3, 4, 8, 11, 14, 16, 18, 20], "Une": [16, 17, 18, 20, 23], "Y": [0, 12, 15], "_": [0, 16], "__main__": 20, "_blank": 20, "_like_": 0, "_workers_": 20, "a": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "a012": 7, "a458f5f": 16, "aaron": 21, "ability": 16, "abon": [0, 18, 21], "about": [2, 16, 20], "absolu": [20, 23], "ac075ec36dc25dcc20c270d2005f0398": 15, "acced": [0, 3, 4, 8, 11, 12, 14, 18, 20, 21], "accept": [0, 5, 10, 16, 18], "accepted": 5, "accepted_policy": 0, "accepted_privacy_policy": 0, "acces": [0, 2, 3, 4, 8, 11, 14, 21], "access": [0, 16, 18], "access_token": 8, "accessibility": 16, "accessibl": [8, 16, 18, 20, 21], "accord": 21, "account": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "account_cre": 0, "actif": [0, 4, 17, 18], "action": [10, 16, 18], "action_short_id": 0, "action_typ": [0, 10, 14], "activ": [0, 2, 3, 11, 14, 16, 17, 18, 19, 20], "activat": [14, 17], "activit": 16, "activity": 16, "actuel": [0, 4], "adapt": [18, 20], "add": [16, 17], "added": [0, 4, 15, 16], "adding": 16, "additional": 16, "additionnel": 20, "admin": [2, 3, 5, 7, 9, 11, 12, 13, 14, 15, 17, 20], "admin_contact": 2, "administr": [0, 2, 3, 11, 14, 17, 20, 21, 24], "administrator": [0, 1, 3, 4, 7, 11, 13, 14, 15], "adress": [0, 2, 14, 17, 18, 20], "aff4d68": 16, "affect": [16, 18], "affich": [0, 15, 16, 17, 18, 19, 20, 21, 24], "affichag": 18, "affichent": 18, "afin": [16, 18, 21], "after": [16, 20], "again": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "agit": [15, 16], "agplv3": 16, "agre": 0, "aid": 19, "ains": [18, 20], "air": [18, 19], "ajout": [0, 1, 14, 15, 16, 17, 18, 19, 20, 21, 22], "alert": 16, "all": [7, 12, 20], "allemand": [16, 18], "allow": [16, 20], "allowed": [0, 15], "alor": 20, "alphanumer": 16, "alphanumeric": 0, "alpin": 18, "already": [0, 4, 5, 10, 16], "also": 16, "altern": 16, "altitud": [0, 16, 18], "alway": 20, "al\u00e9atoir": [17, 20], "amd64": 20, "an": [0, 8, 15, 16], "analys": [0, 15, 16, 18, 20], "analysis_visibility": [0, 15], "ancien": 20, "and": [0, 4, 16, 17, 20], "android": 19, "anglais": [0, 16, 17, 18], "ann\u00e9": [12, 18], "anoth": 4, "antiali": 16, "anymor": 16, "apach": 19, "api": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21], "api_rate_limit": 20, "apikey": 20, "app": [8, 16, 20, 21], "app_log": 20, "app_port": 20, "app_secret_key": 20, "app_setting": 20, "app_worker": 20, "appar": [0, 18], "appara\u00eetr": 18, "appeal": [0, 1, 10, 14, 15], "appeal_id": 10, "appel": [0, 1, 10, 15, 18, 20], "application_directory": 20, "appliqu": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21], "apport": 16, "approb": 18, "approuv": 0, "approved": [0, 10, 14, 16], "apr": 15, "apres": [0, 8, 14, 16, 18, 20, 21], "archiv": [0, 2, 16, 17, 18, 20], "archive_rgjsr3fhr5yp": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "archlinux": 20, "are": 16, "arg": [17, 20], "argument": [4, 17], "arm64": 20, "array": [0, 4, 8, 15], "arrow": 16, "arr\u00eat": [0, 14, 16, 18, 20], "asc": [5, 7, 10, 14, 15], "ascent": [13, 14, 15, 16], "asset": 20, "assign": 18, "associ": [0, 4, 8, 11, 15, 16, 17, 18], "associated": [4, 16], "assur": 21, "astridx": 16, "at": [16, 20], "atteint": 18, "attendu": 20, "attent": [15, 16, 20, 23], "attribu": 20, "attribut": 16, "aucun": [0, 4, 7, 10, 13, 14, 15, 18, 19, 20], "augment": 23, "aur": 16, "auteur": [1, 15, 18], "auth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "auth_token": 0, "authentif": [1, 6, 14, 20, 21], "authentifi": [0, 1, 5, 7, 8, 9, 11, 12, 13, 14, 15, 18], "authlib": [8, 20, 21], "authoriz": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "authorization_cod": [8, 21], "autoespcap": 16, "automat": [0, 18], "autoris": [0, 2, 8, 15, 20, 21], "autr": [0, 18, 20], "avail": 16, "avanc": [16, 18], "avant": [16, 18, 20], "ave_speed": [13, 14, 15], "ave_speed_from": 15, "ave_speed_to": 15, "averag": [12, 16], "average_ascent": 12, "average_descent": 12, "average_dist": 12, "average_dur": 12, "average_speed": 12, "avert": [18, 20], "aviron": 18, "avoir": [11, 20], "awesom": 20, "axe": [15, 18], "axis": 16, "b": 20, "b1536fc": 16, "b29ed7": 16, "b748459": 16, "b862a77": 16, "background": 16, "bad": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15], "bas": [16, 18, 20, 23], "basqu": [16, 18], "bcc568e": 16, "be": [0, 2, 4, 14, 15, 16, 20], "be26f35": 7, "bear": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "been": 10, "below": 20, "besoin": 20, "bet": 16, "between": 16, "bibliothequ": 21, "bien": 18, "bik": [3, 4], "biking": [11, 15], "bin": 20, "bio": [0, 5, 14], "biograph": 0, "birth": 16, "birth_dat": [0, 5, 14], "bjornclauw": 16, "black": 16, "blacklist": 0, "blocag": 18, "block": [14, 16], "blocked": [0, 10, 14], "blocked_user": 0, "bloqu": [0, 14, 18], "boat": 18, "body": [16, 20], "bokm\u00e5l": [16, 18], "boolean": [0, 2, 3, 4, 7, 8, 10, 11, 14, 17], "boosterl": 16, "bound": [13, 14, 15], "bouton": 18, "bref": 4, "brows": 16, "build": [16, 20], "bulgar": [16, 18], "bulgarian": 16, "button": 16, "by": [16, 20], "by_id": 8, "by_sport": 12, "by_tim": 12, "byakurau": 16, "c88a515": 16, "cach": 18, "calcul": [0, 12, 16, 18], "calendar": 16, "calendri": [16, 18], "callback": [8, 21], "can": [0, 1, 10, 14, 15, 16, 18, 20, 23], "cannot": [4, 16], "caracter": [0, 4, 8, 15, 16, 20, 21], "card": 16, "cart": [0, 15, 16, 18, 19, 20, 24], "cas": [4, 8, 15, 18, 20], "cass": 20, "cb9d02f": 16, "cc": 20, "cc3fe1c": 16, "cc4287e": 16, "cd": 20, "cec": 16, "cel": [4, 16, 18, 20], "celui": [16, 20], "certain": [16, 17, 19, 20], "cf": [18, 19, 20], "chain": 20, "challeng": [8, 21], "champ": 16, "chang": [0, 4, 16, 18, 20], "changed": 16, "changing": 16, "chaqu": 18, "charact": 0, "character": [0, 4, 16], "charg": [0, 8, 16, 17, 18, 20, 21, 24], "chart": [15, 16, 20], "chart_dat": 15, "chaussur": 18, "cha\u00een": [8, 21], "check": 20, "check_workout": 11, "checkbox": 16, "checked": 16, "checking": 20, "chemin": [20, 23], "chiffr": [18, 20], "chois": [18, 20], "choos": 16, "ci": 16, "clair": 18, "cleanup": 16, "clear": 20, "cli": [14, 16, 17, 18, 20], "click": 16, "clickabl": 16, "clicking": 16, "client": [8, 14, 16, 18, 20, 21], "client_client_id": 8, "client_descript": 8, "client_id": [8, 21], "client_max_body_siz": [20, 23], "client_nam": 8, "client_secret": 8, "client_ur": 8, "clon": 20, "closing": 16, "cl\u00e9": [16, 18, 20], "co": 16, "cod": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "code_challeng": [8, 21], "code_challenge_method": [8, 21], "code_verifi": 8, "coll": 20, "color": [0, 11, 16], "com": [0, 2, 8, 10, 14, 16, 20, 21], "comm": [7, 16, 18, 20], "command": [16, 18, 19, 20], "commenc": [0, 12, 16, 18, 20, 23], "commencent": 0, "commend": 16, "comment": [0, 1, 10, 15, 16, 18], "comment_id": 10, "comment_lik": 0, "comment_short_id": 1, "comment_suspens": 10, "comment_unsuspens": 10, "commentair": [0, 6, 10, 21], "compatibl": 20, "complet": [16, 18], "completed": 0, "compl\u00e9mentair": 16, "comport": 18, "compos": 20, "compt": [6, 14, 15, 16, 17, 20, 22], "comradekingu": 16, "concern": 10, "condit": 20, "confidential": [0, 2, 16], "config": [2, 16, 20], "configur": [6, 16, 17, 20, 21, 23], "configured": 16, "confirm": [0, 8, 16, 18, 20], "confusedalex": 16, "connaiss": [16, 18], "connect": [0, 18], "connexion": [0, 20], "conserv": [19, 20], "consult": 18, "contact": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 18], "contain": [16, 20], "containing": 16, "conten": [16, 18, 20], "conteneur": 20, "content": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "contenu": [1, 10, 18], "contenus": 18, "contient": [16, 18, 20], "continu": 20, "contr": 21, "contrair": [15, 18], "contributeur": [16, 20, 22], "contributing": 16, "contributor": [2, 20], "control": [16, 20], "contr\u00f4l": 2, "copi": 20, "copy": [2, 20], "copyright": [2, 20], "cor": 16, "corp": 21, "correctly": 16, "correspond": [0, 15, 20], "correspondr": 18, "could": 16, "couleur": [0, 18], "cour": [16, 17, 18, 19, 20], "courriel": [0, 14, 16, 18, 23], "cours": [16, 18], "court": [1, 4, 7, 15], "cp": 20, "creat": [16, 20], "create_app": 20, "created": [0, 1, 4, 8, 10, 15], "created_at": [0, 1, 5, 7, 10, 14, 15], "creation": 16, "creation_dat": [4, 13, 14, 15], "creativecommon": 20, "credential": 0, "criter": [10, 14], "criteri": 15, "critical": 23, "cross": [8, 21], "crossing": [18, 20], "cr\u00e9": [0, 1, 4, 8, 10, 15, 16, 17, 18, 20, 21], "cr\u00e9ation": [0, 16, 18], "csrf": [8, 21], "current": [0, 14, 16], "custom": 20, "cycling": [11, 15, 16], "czech": 16, "d743abf": 16, "dan": [0, 2, 4, 15, 16, 17, 18, 19, 20, 21, 24], "danielsiersleben": 16, "dark": 16, "darksky": [16, 20], "dashboard": 16, "dat": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15, 16, 18], "databas": [16, 17, 20], "database_d": 20, "database_disable_pooling": 20, "database_url": [20, 23], "date_format": 0, "date_string": 0, "davidhenrythoreau": 16, "day": [16, 17, 20], "db": 20, "dd": 0, "debian": [20, 22], "dec": [0, 1, 5, 7, 10, 14, 15], "default": [12, 15, 16, 20], "default_equipment_id": 0, "default_for_sport_id": 4, "default_staticmap": [16, 20], "defined": 18, "definit": 16, "del": 23, "delet": [0, 1, 4, 8, 14, 15, 16], "deleted": 16, "deleting": 16, "demand": [0, 6, 10, 14, 16, 17, 18, 20, 21], "deployment": 16, "deprecated": [16, 17], "depuis": [17, 20], "derni": [14, 16, 18, 20], "derri": 21, "desc": [5, 7, 10, 14, 15, 18], "descent": [13, 14, 15, 16], "descript": [4, 8, 13, 14, 15, 16, 17, 18, 20], "dessous": 16, "detail": [16, 20], "detailed": 16, "detect": 16, "deux": 17, "dev": 20, "development": 16, "df": 20, "diagnostic": 20, "dialect": 23, "differ": 18, "different": [14, 16], "diff\u00e9rent": [16, 18], "dimanch": [12, 18], "direct": [16, 18, 20], "directory": [16, 20], "disabl": 16, "disabled": 0, "discours": 18, "display": 16, "display_ascent": 0, "displayed": 16, "displaying": 16, "disponibl": [0, 9, 17, 18, 20, 21, 22], "dispos": [0, 18], "distanc": [0, 9, 13, 14, 15, 16, 18], "distance_from": 15, "distance_to": 15, "dkm": 16, "do": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "dock": 16, "dockerhub": 20, "docu": 16, "document": [19, 20, 21, 23], "doit": [0, 4, 8, 11, 15, 16, 18, 20, 21, 23], "doiv": 18, "doivent": [15, 20, 21], "domain": [15, 20], "don": [0, 8, 12, 14, 15, 16, 18, 19, 21, 23], "dont": [14, 18, 21], "dor\u00e9nav": 16, "dotenv": 16, "dotlambd": 16, "doubl": 15, "down": 16, "download": [0, 15, 16], "dperruso": 16, "dramatiq": [16, 17, 20], "droit": [0, 11, 14, 16, 17, 18, 20, 21], "droitsd": 18, "drop": 16, "dropdown": 16, "dur": [9, 15, 16, 18], "durat": [13, 14, 15, 16], "duration_from": 15, "duration_to": 15, "during": [0, 1, 4, 10, 15], "dutch": 16, "d\u00e9": [3, 14], "d\u00e9bloqu": 14, "d\u00e9but": [12, 15], "d\u00e9connexion": 0, "d\u00e9criv": 10, "d\u00e9crivent": 20, "d\u00e9fault": [18, 20], "d\u00e9faut": [0, 1, 4, 5, 7, 8, 10, 13, 14, 15, 16, 17, 18, 20], "d\u00e9fin": [4, 16, 18, 21, 23], "d\u00e9j\u00e0": [15, 17], "d\u00e9livr": 8, "d\u00e9marr": [16, 20, 24], "d\u00e9marrag": 20, "d\u00e9nivel": [0, 9, 15, 18], "d\u00e9pannag": 19, "d\u00e9part": 18, "d\u00e9pend": 16, "d\u00e9plac": 16, "d\u00e9pr\u00e9ci": 17, "d\u00e9p\u00f4t": 20, "d\u00e9roul": 18, "d\u00e9sactiv": [0, 14, 16, 17, 18, 20], "d\u00e9sorm": 16, "d\u00e9tail": 24, "d\u00e9velopp": [16, 17, 19], "e": 0, "e2e": 16, "ea0ac99": 16, "eau": 18, "edc677": 16, "edit": [0, 16], "editing": 16, "effectu": 18, "elev": [15, 16], "elles": 15, "email": [0, 2, 10, 14, 16, 17, 23], "email_to_confirm": 0, "email_url": [20, 23], "empty": 16, "emp\u00each": 21, "encod": 20, "encoded": 16, "encor": [16, 19], "endpoint": 16, "enfin": 16, "enfreint": 18, "english": 16, "enlev": 4, "enregistr": [0, 17, 18, 21], "ensembl": 20, "ensuit": 21, "enter": 16, "enti": 8, "entity": [0, 15], "entrant": 18, "entra\u00een": [12, 15, 18], "entre": [4, 8, 18, 21], "entry": 16, "entr\u00e9": [14, 16, 18, 20, 21], "enumerat": 20, "env": [16, 20], "environ": [16, 17, 23], "environment": [16, 20, 23], "envoi": [0, 14, 16, 18, 20, 21], "equal": 2, "equipment": [0, 3, 4, 13, 14, 15, 16, 21], "equipment_id": [0, 15], "equipment_short_id": 4, "equipment_typ": [3, 4], "equipment_type_id": [3, 4], "equipment_type_label": 4, "erral": 16, "erreur": [0, 8, 16, 18, 23], "error": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 20], "errored": 0, "espac": 21, "espagnol": [16, 18], "esprit": 18, "estim": 16, "europ": 0, "ewm": 16, "exampl": [0, 2, 8, 10, 14, 16, 20, 21], "exc": 23, "exceed": [0, 4, 15, 16], "exceeding": 16, "except": [18, 23], "exclu": 18, "exclur": 18, "exec": 20, "execstart": 20, "exempl": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21], "exhaust": 19, "exist": [0, 4, 5, 12, 14, 15, 16, 18, 19, 20], "existent": [7, 10, 14], "exit": [17, 20], "expected": 10, "expir": 17, "expired": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "expires_at": 8, "expires_in": 8, "expliqu": [0, 10], "expliquent": 10, "exploit": [18, 20], "export": [0, 16, 17, 18, 19, 20], "exp\u00e9diteur": 20, "extens": [0, 15, 16, 20], "extr\u00eam": 18, "ex\u00e9cu": [16, 17], "ex\u00e9cut": [16, 20], "f2aec30": 16, "f96dcef": 16, "fa33f4d996844a5c73ecd1ae24456ab8": 15, "facilit": 16, "facult": [4, 21], "fail": 16, "fair": [0, 1, 15, 18, 20], "fait": [15, 16, 20], "fals": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 15, 20], "falsif": [8, 21], "famill": 0, "farthest": 16, "fa\u00e7on": 20, "fb10602": 16, "fd": [0, 9, 13, 14, 15], "featur": 16, "fichi": [0, 2, 15, 16, 17, 18, 19, 20, 22, 24], "field": 16, "fil": [0, 2, 15, 16, 20], "file_nam": 0, "file_siz": 0, "filt": 16, "filter": 16, "filtering": 16, "filtr": [0, 10, 15, 16, 18], "fin": [12, 15, 16, 20], "finish": 16, "first": [4, 16], "first_nam": [0, 5, 14], "fit": [20, 22], "fitotrack": 19, "fittracke": [4, 8, 17, 18, 20, 21, 22, 24], "fittrackee_client": 20, "fittrackee_host": 21, "fittrackee_install": 22, "fittrackee_worker": 20, "fittrackee_ynh": 20, "fix": [16, 20], "flake8": 16, "flask": [16, 20], "flask_app": 20, "flaticon": 20, "flech": 18, "float": [0, 15], "flow": 21, "flux": [6, 18], "fmstrat": 16, "follow": [0, 5, 7, 10, 14, 16, 21], "follow_request": [0, 5, 7], "follow_request_approved": 0, "follower": [0, 1, 5, 7, 10, 14, 15, 16], "followers_only": [0, 1, 14, 15], "following": [0, 1, 5, 7, 10, 14, 15, 16], "fonction": [20, 21], "fonctionnal": [19, 20], "fond": 20, "foot": 16, "for": [0, 2, 4, 14, 15, 16, 20], "forbidden": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "forc": 4, "forgery": [8, 21], "fork": 20, "form": [0, 8, 15, 16], "format": [0, 12, 15, 16, 18, 19], "fort": 20, "forwarded": [20, 21], "found": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16], "fourn": [0, 4, 8, 12, 15, 17, 18, 20, 21, 23], "fournisseur": [16, 20], "fr": [0, 20], "franc": [18, 20], "freepik": 20, "french": 16, "fri": 15, "from": [4, 5, 7, 12, 15, 16, 20], "ft": 16, "ftcli": 20, "full": 16, "fullchain": 20, "fullscreen": 16, "furo": 16, "fuseau": [0, 15, 18], "galician": 16, "galicien": [16, 18], "gallegonovato": 16, "gard": [15, 18, 20], "garmin": 22, "generat": 16, "ger": [10, 16, 17, 18, 20, 23], "german": [16, 20], "gestion": [16, 20], "get": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "getting": 2, "gif": 0, "git": 20, "github": [16, 20], "gl": 0, "gmt": [0, 1, 4, 5, 7, 8, 9, 10, 13, 14, 15], "gnu": 16, "gorgoback": 16, "gp": [16, 18], "gpl": 19, "gpx": [0, 8, 15, 16, 18, 19, 20, 22], "gpx_limit_import": 2, "gpxpy": [0, 16, 18, 20], "grammar": 16, "grand": [16, 18], "grant_typ": 8, "graph": 16, "graphiqu": [0, 16, 18, 20], "gray": 16, "great": [1, 2, 16], "gr\u00e2c": [20, 22], "guid": 20, "guillemet": 15, "gunicorn": [20, 23], "gz": 20, "gzip": 0, "g\u00e9ner": [8, 17, 18, 20, 21], "h": [15, 18], "ha": [0, 9, 13, 14, 15], "handl": 16, "has": [1, 4, 10, 14, 15, 16, 18], "has_equipment": 3, "has_next": [0, 5, 7, 8, 10, 14], "has_prev": [0, 5, 7, 8, 10, 14], "has_workout": 11, "hav": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "help": [17, 20], "heur": [16, 18, 20], "hexadecimal": 0, "hexad\u00e9cimal": 0, "hgzyfxgvwkcepdq3vyk67q": 15, "hid": 16, "hidden": 16, "hide_profile_in_users_directory": 0, "hiding": 16, "hiking": 11, "his": 16, "histor": [19, 20], "hom": 20, "horair": [0, 15, 18], "host": 20, "hosted": 16, "hosting": 20, "hour": 20, "how": 20, "href": [2, 20], "html": 16, "http": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21], "http2": 20, "hub": 16, "hv9kwvdtbhhyfvml7phovq": 10, "hvybqybra7wwxpastwr4v2": [0, 9, 13, 14, 15], "h\u00f4t": 20, "i18n": 16, "icon": 16, "ic\u00f4n": 20, "id": [0, 1, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 16], "identif": 20, "identifi": [0, 1, 7, 8, 10, 11, 12, 15, 21], "if": [0, 16, 18, 20], "imag": [0, 14, 15, 16, 18, 20, 24], "impact": 18, "imperial": 16, "imperial_unit": 0, "implementing": 16, "import": [4, 8, 16, 18, 20], "importing": 16, "improv": 16, "improved": 16, "imp\u00e9rial": [0, 18], "in": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "in_progress": 0, "inact": [0, 4, 14, 15, 18, 20], "inclus": 16, "incomplet": 17, "inconsistent": 16, "incorrect": [4, 16, 18], "index": 15, "indiqu": 18, "ind\u00e9sir": 18, "infobull": 18, "inform": [0, 2, 14, 16, 18, 19, 20], "inf\u00e9rieur": 16, "init": 16, "initial": [16, 20], "initialis": [16, 20], "input": 16, "inscript": [0, 2, 16, 18, 20], "inscrir": [2, 16, 18, 20], "insensibl": 20, "instabl": [19, 20], "install": [16, 19], "instanc": [2, 16, 18, 20], "instant": 18, "instead": 16, "instruct": [0, 16, 18, 20], "int": [0, 3, 4, 8, 10, 11, 15], "integ": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "integer": 4, "integr": 20, "interag": [18, 21], "interceptor": 16, "interfac": [0, 16, 18, 19, 20], "internal": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15], "interrompu": 20, "introduit": 16, "invalid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "invalidat": 16, "invalidemailurlschem": 23, "ip": 20, "is": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "is_act": [0, 3, 4, 10, 11, 14], "is_active_for_us": 11, "is_email_sending_enabled": 2, "is_followed_by": [0, 7, 10, 14], "is_registration_enabled": 2, "is_reported_user_warned": 10, "iso": 17, "isort": 16, "issu": [16, 18], "issued_at": 8, "it": [0, 4], "italian": 16, "italien": [16, 18], "jan": [13, 14, 15], "jat255": 16, "javascript": [16, 20], "jderuit": 16, "jeton": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21], "jinj": 16, "jmlich": 16, "job": 16, "john_do": 14, "johndo": 14, "jour": [0, 1, 2, 4, 7, 11, 14, 15, 16, 17, 18], "journal": [20, 23], "jpeg": 14, "jpg": 0, "js": [15, 20], "json": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "jul": [0, 9, 13, 14, 15], "july": 8, "jusqu": 18, "jwt": 20, "kayak": 18, "kayak_boat": 3, "kcj6hdgqqpkaakqmfqj8jv": 14, "kd5wyhwltvozw6o3au5m4j": 15, "keep": 16, "key": 20, "keyboard": 16, "kjxavsturjvoah2wvcegef": [13, 14, 15], "km": [15, 18], "koen": 16, "komoot": 20, "label": [3, 4, 11, 16, 18], "laiss": 20, "lanc": [16, 20], "lang": [0, 16, 17], "langu": [0, 16, 17, 18], "languag": [0, 16, 17], "laquel": 18, "larg": [0, 15, 20], "last": 16, "last_nam": [0, 5, 14], "latitud": 15, "lavoi": 16, "layout": 16, "ld": [0, 9, 13, 14, 15], "leaflet": [15, 20], "lectur": [7, 21], "legal": 20, "legitimat": 16, "lequel": [0, 20], "less": 16, "lettr": 17, "lev": [18, 20], "level": 16, "li": [10, 18], "libr": 18, "librair": [8, 20], "library": 16, "licenc": 20, "licens": [16, 19, 20], "lien": 20, "lieu": 18, "lign": [16, 18, 19, 20], "lik": [1, 15, 16], "liked": [1, 14, 15], "likes_count": [1, 14, 15], "lim": [16, 20], "limit": [4, 16, 18], "lin": [17, 20], "link": 16, "lint": 20, "linux": 20, "lir": 16, "list": [1, 8, 15, 16, 17, 19, 20], "listen": 20, "ll": 20, "load": [16, 23], "loading": 16, "local": [0, 16, 19, 20], "localhost": [16, 20], "localis": [0, 20], "localiz": 16, "locat": [0, 5, 14, 20], "log": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 23], "log_d": 20, "logfil": 20, "logged": 0, "login": [0, 16], "logo": 20, "logout": [0, 16], "long": 16, "longitud": 15, "longu": [4, 9, 16, 18], "longueur": 15, "lor": [0, 17, 18], "lorsqu": [0, 16, 17, 20], "lu": [7, 18], "lukasitaly": 16, "lund": [0, 12, 18], "mailhog": 20, "mainten": [16, 20], "majeur": 16, "majuscul": 15, "mak": [16, 20], "makefil": 20, "malformed": 0, "manag": [16, 17], "mani": [18, 20], "manqu": 16, "manually_approves_follower": 0, "manuel": 18, "map": [13, 14, 15, 16, 18, 19], "map_attribu": [2, 20], "map_id": 15, "map_til": 15, "map_visibility": [0, 14, 15], "mar": [0, 4, 14, 16, 20], "mara21": 16, "march": [16, 18], "mariusz": 16, "mariuz": 16, "mark": [7, 16], "markdown": [16, 18], "marked_as_read": 7, "marker": 16, "marqu": [7, 18], "masqu": [14, 18], "match": 0, "matching": 16, "mati": 18, "max": [2, 5, 14, 15, 16, 17], "max_alt": [13, 14, 15], "max_single_file_siz": 2, "max_speed": [13, 14, 15], "max_speed_from": 15, "max_speed_to": 15, "max_user": 2, "max_zip_file_siz": 2, "maximal": [2, 9, 15, 16, 17, 18], "maximum": [2, 18], "may": 16, "md": 16, "measur": 16, "meilleur": 21, "mensuel": [16, 18], "mention": [0, 1, 7, 18, 20], "menu": [16, 18], "merc": 16, "messag": [0, 2, 5, 8, 14, 15, 16, 17, 18, 20, 21], "mesur": 16, "met": 15, "mettr": [1, 2, 7, 14, 15, 16, 17, 18, 20], "mi": 16, "microsecond": 16, "migrat": [16, 17, 20], "min": 16, "min_alt": [13, 14, 15], "minimal": [15, 16, 18, 20, 21], "minimum": [0, 2, 3, 10, 11, 12, 14], "minor": 16, "minuscul": 15, "minut": 20, "mis": [0, 4, 11, 14, 15, 16, 18, 21], "missing": [0, 16], "mm": 0, "mmm": 0, "mmy3qpl3vcfukjgffbncjv": 0, "mo": 18, "mobil": [16, 19], "mod": 16, "modal": 16, "model": 16, "moder": [10, 12, 14, 16], "moderator": [10, 14, 16, 17], "modif": [0, 18, 19], "modifi": [0, 3, 4, 10, 11, 17, 18, 20, 21], "modification_dat": [1, 13, 14, 15], "modify": 16, "modul": [16, 20], "moin": [4, 7, 10, 13, 15], "mois": [12, 16, 18], "moment": [0, 15, 16, 18], "mond": 18, "mondstern": 16, "mono": 16, "month": [12, 16], "mor": 16, "morning": 15, "mot": [0, 14, 17, 18, 20], "mountain": 11, "mountaineering": 16, "mous": 16, "mov": 16, "moving": [13, 14, 15, 16], "moyen": [9, 12, 15, 16, 18, 20], "mult": 20, "multipart": [0, 8, 15], "multipl": 16, "must": [0, 2, 4, 14, 15, 16], "mv": 20, "my": 4, "mynixos": 20, "mzydicyyfktg3gga2x8afu": 1, "m\u00e9thod": [8, 20, 21], "m\u00e9triqu": 18, "m\u00e9t\u00e9o": [16, 18], "m\u00eam": [16, 18, 20], "nag": 18, "naissanc": 0, "nam": [8, 16, 18], "nano": 20, "navig": [0, 16, 18, 20], "nb": 0, "nb_sport": [0, 5, 14], "nb_workout": [0, 1, 5, 7, 10, 14, 15], "nbsp": 20, "nederland": 16, "need": 20, "net": 20, "netinstall": 22, "nettoi": 16, "network": 20, "new": [0, 4, 14, 16], "new_email": 14, "new_password": 0, "next": 16, "next_workout": [13, 14, 15], "nginx": [16, 18, 20, 21, 23], "ni": 18, "nic": 1, "niveau": [1, 16, 18], "nixpkg": 20, "nl": 0, "no": [0, 1, 4, 8, 14, 15, 16], "no_gpx": 15, "nod": 20, "nofollow": 20, "noir": 17, "nom": [0, 5, 8, 10, 12, 14, 16, 17, 18, 20], "nombr": [2, 5, 14, 15, 17, 18, 20], "nomenclatur": 16, "non": [0, 3, 4, 7, 8, 10, 11, 12, 15, 16, 18, 19, 20], "noopen": 20, "noreferr": 20, "norv\u00e9gien": [16, 18], "norwegian": 16, "nosuchmoduleerror": 23, "not": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20], "notat": 20, "notif": [0, 6, 16, 20, 21], "notification_id": 7, "notification_preferent": 0, "notification_typ": 7, "nouveau": [0, 16, 17, 18, 20, 21], "nouveaut": 18, "nouvel": [0, 4, 14, 17, 18, 20], "nov": [1, 15], "now": 17, "null": [0, 1, 2, 4, 5, 7, 10, 11, 13, 14, 15, 16], "numb": [2, 16, 20], "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6": 8, "n\u00e9cessair": [15, 18, 20], "n\u00e9cessit": [16, 20, 21], "n\u00e9cessitent": [20, 21], "n\u00e9erland": [16, 18], "n\u00e9gat": [15, 18], "o22a27s2abpuoxjbxv3ujdox": 8, "oauth": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20], "oauth2": [6, 21], "oauthlib": 21, "object_id": 10, "object_typ": 10, "objet": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "obligatoir": [4, 8, 10, 12, 15, 16, 17, 20, 21], "obten": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "octet": 0, "of": [0, 2, 4, 15, 16, 20, 21], "office365": 20, "offset": 16, "ok": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "omis": 20, "once": [0, 1, 15], "ondrejzivny": 16, "one": [0, 15], "onglet": 21, "ongoing": 0, "only": [0, 1, 15, 16, 18], "open": [16, 18, 19], "openstreetmap": [2, 16, 20], "opentrack": 19, "option": [16, 17, 20], "optionnel": [7, 8, 20], "or": [0, 1, 2, 3, 4, 7, 11, 13, 14, 15, 16], "order": [5, 7, 10, 14, 15, 16], "order_by": [10, 14, 15], "ordre": [5, 7, 10, 14, 15], "org": [2, 20], "origin": 18, "osm": 20, "osmfr": 20, "other": [0, 4, 14], "out": 0, "outdoor": [16, 20], "outil": [18, 19, 20], "ouvr": 20, "over": 16, "overlap": 16, "own": 10, "owner": [14, 16, 17, 20], "o\u00f9": [4, 18, 20], "packag": [16, 20], "packaged": 16, "paf38": 16, "pag": [0, 1, 5, 7, 8, 10, 13, 14, 15, 16], "pagin": [0, 1, 5, 7, 8, 10, 13, 14, 15], "paquet": [16, 20], "par_pag": 14, "paragliding": 16, "paralleliz": 16, "paramet": [4, 20], "parameter": [4, 16], "parametr": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21], "parapent": 18, "pareck": 21, "paris": 0, "parm": [16, 20], "pars": 16, "part": [0, 15, 16, 18, 19, 21, 22], "particuli": 18, "partiel": 16, "pass": [0, 14, 17, 18, 20], "password": [0, 16, 17, 20], "passwordwith": 20, "patch": [0, 1, 2, 3, 4, 7, 10, 11, 14, 15], "paus": [13, 14, 15, 16], "payload": [0, 1, 2, 3, 8, 10, 11, 14, 15], "pem": 20, "pending": 7, "per": [16, 20], "per_pag": [5, 14, 15], "perform": 18, "period": 12, "perm": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "permet": [4, 16, 17, 18, 19, 21], "permettent": 18, "permettr": 21, "personnalis": [16, 18], "personnel": 18, "petit": 16, "peut": [0, 1, 3, 4, 8, 11, 12, 14, 15, 16, 17, 18, 20, 21], "peuvent": [0, 16, 18, 19, 20], "pg_dump": 20, "pictur": [0, 1, 5, 7, 10, 14, 15, 16], "piec": 4, "pied": [16, 18], "pil": 16, "ping": 2, "pip": 20, "pipenv": 16, "pkce": [8, 21], "plateform": 20, "pleas": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "plein": [18, 19], "plugin": 23, "pluj": 16, "plupart": 21, "plus": [4, 9, 16, 17, 18, 19, 20, 23], "plusieur": [16, 18, 19, 20], "png": [0, 15, 20], "poetry": [16, 20], "point": [0, 2, 3, 4, 8, 11, 14, 16, 18, 20, 21], "policy": [0, 16], "polish": 16, "polit": [0, 2, 16], "polon": [16, 18], "pong": 2, "pooling": 20, "port": 20, "portug": [16, 18], "portugues": 16, "posit": [15, 16, 18], "possibl": [16, 18, 19, 20], "post": [0, 1, 4, 5, 7, 8, 10, 14, 15, 21], "postgr": [16, 23], "postgres_db": 20, "postgres_password": 20, "postgres_us": 20, "postgresql": [16, 20, 23], "postgresql10": 16, "pourquoi": 10, "pourr": [16, 20], "pouv": 16, "pr": 16, "preferent": [0, 16], "premi": 18, "prendr": [16, 18], "prepar": 16, "present": 16, "prevent": 20, "previous_workout": [13, 14, 15], "prior": 18, "pris": [0, 8, 16, 17, 18, 20, 21], "priv": [16, 18], "privacy": [0, 16], "privacy_policy": 2, "privacy_policy_dat": 2, "privat": [0, 1, 14, 15], "privileg": 20, "privkey": 20, "problem": [16, 18, 20], "proced": 20, "process": [16, 20], "processed": 0, "processus": 20, "prochain": [16, 18], "product": 16, "productionconfig": 20, "produir": 18, "profil": [0, 8, 10, 14, 16, 18, 21], "project": 20, "projet": 20, "propos": 16, "propr": [4, 14, 19], "propri\u00e9tair": [4, 16, 18, 20], "proto": [20, 21], "proven": 18, "provid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "provided": [0, 1, 2, 4, 14, 15, 16], "provider": 16, "proxy": [20, 21], "proxy_add_x_forwarded_for": 20, "proxy_pass": 20, "proxy_redirect": 20, "proxy_set_head": [20, 21], "pr\u00e9c\u00e9dent": 16, "pr\u00e9f\u00e9rent": [0, 4, 14, 15, 17], "pr\u00e9nom": 0, "pr\u00e9requ": 16, "pr\u00e9sent": 18, "pr\u00e9vers": 16, "pr\u00eat": 20, "psjeexbjz2jjnqctcpxvvf": 15, "publi": [18, 20], "public": [0, 1, 15, 18], "publiqu": 1, "publish": 16, "puiss": 21, "puissent": [16, 18], "pull": 20, "pwd": 20, "py": 20, "python": [16, 20, 21], "p\u00e9riod": [12, 18, 20], "q": 14, "qrj7by6h2iyjsv8sersfgv": 4, "quand": [14, 16], "quant": 16, "quelqu": [4, 5, 7, 10, 13, 14, 15, 16, 18, 21], "queu": 20, "qwerty287": 16, "r": 20, "rafra\u00eech": 8, "raison": [0, 10], "randon": [16, 18], "rapport": 16, "rapporteur": 10, "raquet": 18, "rat": [16, 20], "reactivated": 10, "read": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "read_status": 7, "readm": 16, "real": 20, "reason": [0, 10, 14], "rebuild": 16, "recalcul": [4, 18], "recevoir": 18, "recherch": 16, "recommand": [8, 20, 21], "record": [0, 5, 6, 13, 14, 15, 16, 18], "record_typ": [0, 9, 13, 14, 15], "red": [16, 17, 20], "redirect": [8, 16, 21], "redirect_ur": 8, "redirig": [8, 21], "redis_d": 20, "redis_url": 20, "red\u00e9marr": 20, "refacto": 16, "refactoris": 16, "refresh": 4, "refresh_token": 8, "refreshed": 16, "regist": 0, "registr": [0, 16], "registry": 20, "regl": 18, "reject": 5, "rejected": 5, "rejet": [5, 10, 18, 20], "rel": 20, "relat": [14, 18], "relev": 16, "remain": 18, "remaining": 16, "remarqu": 20, "remote_addr": 20, "remov": 16, "remplac": [15, 16, 18, 20], "rencontr": 20, "renomm": 16, "renvoi": [0, 7, 8, 10, 13, 14, 15, 18], "replac": 16, "report": [10, 21], "report_act": 10, "report_id": [10, 14], "reported_by": 10, "reported_comment": 10, "reported_us": 10, "reported_workout": 10, "requ": [0, 20, 21], "request": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 20, 21], "request_ur": 20, "requested": 0, "required": 0, "requiring": 16, "requis": 4, "requ\u00eat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "resend": 0, "resent": 0, "reset": [0, 16, 17], "reset_password": 14, "resetting": 16, "resolu": 16, "resolved": 10, "resolved_at": 10, "resolved_by": 10, "respons": 16, "response_typ": [8, 21], "rest": [16, 18, 21], "restart": 20, "restartsec": 20, "restreint": 18, "result": 16, "retir": 18, "retourn": [1, 9, 12], "return": [16, 20], "return_equipment": 15, "revok": 8, "revoked": 0, "reworked": 16, "re\u00e7u": [5, 7, 18], "rid": 16, "right": [14, 16, 18], "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 8, "rol": [0, 1, 7, 10, 14, 15, 16, 17, 18, 20], "rout": [16, 20], "ruff": 16, "run": 20, "runn": 19, "running": 11, "russ": 18, "russian": 16, "r\u00e9activ": 18, "r\u00e9cent": 18, "r\u00e9cuper": [15, 18, 20, 21], "r\u00e9dact": 18, "r\u00e9duit": 16, "r\u00e9initialis": [0, 14, 17, 18, 20], "r\u00e9pertoir": [0, 20], "r\u00e9pons": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "r\u00e9solu": 18, "r\u00e9solus": 10, "r\u00e9tro": 20, "r\u00e9trograd": 16, "r\u00e9uss": 0, "r\u00e9voqu": 8, "r\u00f4l": [2, 3, 10, 11, 12, 14, 17, 18, 20], "s256": [8, 21], "sam": [0, 1, 4, 5, 9, 10, 13, 14, 15, 16], "samr1": 20, "san": [0, 1, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 19, 20], "sanction": [0, 14, 18], "sat": 14, "sauf": [14, 20], "sauvegard": 20, "sav": [1, 4, 10, 16], "schem": [20, 21], "scop": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "screen": 16, "script": 16, "search": 16, "second": [4, 15], "secret": [8, 20, 21], "section": 16, "security": 16, "see": [16, 20], "seem": 16, "segment": [13, 14, 15, 16, 18], "segment_id": 15, "selected": [0, 15], "selon": [0, 18, 20], "semain": [0, 12, 18], "send": 16, "sender_email": 20, "sending": 16, "sent": 14, "ser": [0, 4, 15, 16, 17, 18, 20], "serv": [0, 1, 2, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 20], "server_nam": 20, "serveur": [15, 16, 18, 19, 23], "servic": [16, 20], "session": 21, "set": [16, 17, 20], "setting": 20, "seuil": [0, 18], "seul": [0, 1, 4, 8, 12, 14, 15, 16, 18, 20, 21], "sh": 22, "shel": 20, "sho": [3, 4], "should": 16, "show": [16, 17, 20], "shown": 16, "shura0": 16, "si": [0, 1, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23], "sien": 14, "signal": [6, 14, 16, 18, 21], "signatur": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "sikm": 16, "simontb": 16, "simpl": 20, "simplified": 21, "simplify": 16, "sinon": [18, 20], "sit": [8, 21], "siz": [0, 2, 15, 16, 20], "ski": 18, "skis": [3, 18], "skylan0916": 16, "slothj": 16, "slow": 16, "small": 16, "smtp": [16, 20, 23], "snowsho": [3, 16], "social": 16, "som": 16, "sombr": [0, 18], "sorry": 0, "sort": 21, "sorting": 15, "soum": 20, "sourc": 18, "sous": [15, 20], "spanish": 16, "special": 16, "specific": 20, "specify": 16, "speed": [15, 16], "spinn": 16, "sport": [0, 2, 4, 6, 12, 15, 16, 20], "sport_id": [0, 4, 9, 11, 12, 13, 14, 15], "sport_label": 4, "sportiv": [18, 19], "sports_list": [0, 5, 14], "sp\u00e9cial": 20, "sp\u00e9cif": 18, "sql": 20, "sqlalchemy": [16, 20, 23], "ssl": 20, "ssl_certificat": 20, "ssl_certificate_key": 20, "stabl": 16, "standard": [16, 20], "standarderror": 20, "standardiz": 16, "standardoutput": 20, "start": 16, "start_elevation_at_zero": 0, "startlimitintervalsec": 20, "starttl": 20, "stat": [8, 12, 16, 21], "static": 16, "staticmap": 20, "staticmap_subdomain": [16, 20], "statiqu": [18, 20], "statist": [2, 6], "statistic": [2, 12, 16], "stats_workouts_lim": 2, "status": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "statut": [4, 14, 17], "sticky": 16, "stock": [18, 19, 21], "stop": 20, "stopp": 20, "stopped": 16, "stopped_speed_threshold": [0, 11], "strateg": 20, "strav": 22, "street": [18, 19], "strength": 16, "string": [0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15], "subdomain": 16, "succes": [0, 3, 4, 5, 8, 11, 12, 14, 15], "success": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "successful": 0, "successfully": 0, "such": 16, "suiv": [0, 6, 9, 14, 18, 20, 21, 22, 23], "suivent": 20, "suivr": [14, 18, 19], "sun": [0, 1, 9, 10, 13, 14, 15], "sunday": 15, "supplied": 4, "suppl\u00e9mentair": 18, "support": [8, 16, 20, 21, 23], "suppress": [4, 16, 20], "supprim": [0, 1, 4, 8, 14, 15, 16, 17, 18], "suspended": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "suspended_at": [0, 1, 7, 10, 14, 15], "suspendr": 18, "suspendu": [0, 3, 4, 8, 11, 14, 18], "suspendus": 14, "suspens": [0, 1, 14, 15, 18, 20], "swimming": 16, "swimrun": [16, 18], "switch": 16, "synchronis": 22, "syntax": 18, "syslog": 20, "syslogidentifi": 20, "system": [18, 20], "systemd": 20, "s\u00e9anc": [0, 1, 2, 4, 6, 10, 11, 12, 14, 16, 19, 21, 22, 24], "s\u00e9cur": 21, "s\u00e9lection": [0, 18], "s\u00e9mant": 20, "s\u00e9par": [18, 20, 21], "t2zeeuxvuy3pla8meeufyk": 1, "tabl": 16, "tag": 16, "taill": [0, 2, 18, 20], "taken": 0, "tant": 4, "tar": 20, "target": 20, "task": 20, "tchequ": [16, 18], "temp": 12, "term": 16, "test": [16, 20], "text": [0, 1, 10, 14, 15, 18], "text_html": 1, "text_visibility": 1, "textar": 16, "than": [2, 14, 16], "thank": 16, "that": [0, 4, 16], "the": [0, 1, 3, 4, 7, 11, 13, 14, 15, 16, 20], "their": 10, "them": [0, 16, 18], "this": [15, 17, 20], "thovi98": 16, "threshold": 16, "thu": [5, 8, 14], "thunderforest": [16, 20], "ticket": 19, "tient": 15, "tier": [18, 19], "tierc": [15, 18, 21], "til": [16, 20], "tile_server_url": 20, "tim": [12, 15, 16], "timelin": [13, 16], "timeout": [20, 23], "timezon": [0, 16], "titl": [13, 14, 15, 16], "titr": [15, 18], "tl": [16, 20], "to": [0, 2, 4, 12, 14, 15, 16, 18, 20, 22], "token": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "token_typ": 8, "too": [0, 15], "tool": 16, "tooling": 16, "tooltip": 16, "total": [0, 4, 5, 7, 8, 10, 12, 14, 15, 16, 18], "total_ascent": [0, 12], "total_dist": [0, 4, 5, 12, 14], "total_dur": [0, 4, 5, 12, 14], "total_moving": 4, "total_workout": 12, "toujour": 18, "tous": [0, 3, 4, 7, 8, 9, 11, 12, 14, 16, 18, 20], "tout": [4, 12, 16, 18, 20], "trac": [18, 20], "track": 16, "tracke": 20, "traduit": 18, "trail": 18, "trailing": 16, "train": 3, "trait": [0, 17], "translat": 16, "translated": 16, "transport": [11, 16, 18], "traxy": 16, "trekking": [16, 18], "tri": [5, 7, 10, 14, 15, 18], "tronqu": 15, "trouv": [3, 4, 8, 11, 15, 16], "tru": [0, 1, 2, 3, 4, 7, 8, 10, 11, 14, 15, 16, 20], "try": [0, 1, 3, 4, 7, 11, 13, 14, 15], "tuil": [15, 16, 18], "typ": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "typescript": 20, "typo": 16, "typos": 16, "t\u00e2ch": 20, "t\u00e9l\u00e9charg": [0, 15, 17, 18, 20, 24], "t\u00e9l\u00e9vers": [16, 18, 20], "t\u00eat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21], "u": 20, "uberspac": 20, "ubuntu": 20, "ui": 16, "ui_url": 20, "unauthenticated": 16, "unauthorized": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "unblock": 14, "unchanged": 18, "uncommenting": 20, "underscor": 0, "undo": [1, 14, 15], "unfollow": 14, "uniqu": [0, 1, 8, 14, 16, 17, 18, 20, 21], "unit": [0, 16, 20], "unitair": 18, "unread": 7, "unresolved": 10, "unwanted": 16, "up": [16, 19, 20], "updat": [0, 4, 15, 16, 20], "updated": [0, 4, 16], "updated_at": [0, 10, 14], "updating": 2, "upgrad": [16, 20], "upload": [16, 20, 22], "upload_d": 20, "upload_fold": [20, 23], "uploaded": [2, 16, 20], "uploading": 16, "uploads_dir_siz": 12, "uri": [16, 20], "url": [0, 8, 16, 18, 20, 21, 23], "urtzai": 16, "usag": [17, 20], "use": 16, "use_dark_mod": 0, "use_raw_gpx_speed": 0, "used": 16, "user": [0, 1, 2, 4, 5, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21], "user_id": [0, 4], "user_nam": [5, 12, 14], "user_suspens": [0, 10], "user_unsuspens": 10, "user_warning": 10, "usernam": [0, 1, 5, 7, 10, 14, 15, 16, 17, 20], "using": 16, "util": [16, 18], "utilis": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 21], "utility": 20, "uuid": [15, 16], "v0": 20, "v2": 20, "v3": 19, "valeur": [0, 4, 8, 15, 17, 18, 20, 21, 23], "valid": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23], "validat": 16, "valu": [0, 9, 10, 13, 14, 15, 16], "variabl": [16, 23], "various": 16, "vent": 18, "venv": 20, "ver": [8, 16, 20, 21], "verrouill": 18, "version": [2, 17, 18, 20, 21], "veuill": [16, 18, 20], "vi": [14, 18, 20], "vid": [15, 17, 20], "view": [16, 20], "virgul": 20, "virtual": 16, "virtualenv": [16, 20], "virtuel": [18, 20], "visibil": [0, 1, 15, 16, 18], "visibility": 16, "visibl": [1, 13, 18], "visual": [18, 20], "visualcrossing": 16, "visualis": 18, "vite_app_api_url": 20, "vitess": [0, 9, 15, 16, 18, 20], "voir": [4, 16, 18, 20, 21, 23], "volum": 20, "volumin": [18, 23], "voodoopt": 16, "votr": [19, 20], "vtt": [15, 16, 18], "vu": [16, 20], "vue3": 20, "vue_app_api_url": 20, "vuex": 20, "v\u00e9lo": [16, 18], "v\u00e9rif": [8, 16, 21, 23], "v\u00e9rifi": [11, 20, 23], "walking": 11, "want": 20, "wantedby": 20, "was": [0, 4], "wat": 16, "weath": 16, "weather_ap": 20, "weather_api_key": 20, "weather_api_provid": [16, 20], "weather_end": [13, 14, 15], "weather_provid": 2, "weather_start": [13, 14, 15], "web": [0, 8, 19, 20, 21], "weblat": [16, 18], "websit": 8, "wed": [0, 7, 10, 14, 15], "week": [12, 16], "weekend": 16, "weekm": [0, 12], "wget": 20, "when": [2, 16], "whit": 16, "who": 16, "wind": 16, "with": [0, 4, 15, 16, 20], "with_analys": 15, "with_following": 14, "with_gpx": [13, 14, 15], "with_hidden_user": 14, "with_inact": 14, "with_suspended": 14, "without": [4, 15, 16], "wjgtwtqfpnprhyak5ex9pw": 1, "work": [16, 20, 23], "worker": [16, 17, 20], "workers_process": 20, "workflow": 16, "workingdirectory": 20, "workout": [0, 1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "workout_comment": 0, "workout_dat": [0, 9, 13, 14, 15], "workout_id": [0, 1, 9, 10, 13, 14, 15], "workout_lik": 0, "workout_short_id": [1, 15], "workout_suspens": [10, 14], "workout_unsuspens": 10, "workout_visibility": [14, 15], "workouts_count": [4, 14], "workouts_visibility": [0, 14], "writ": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 14, 15, 21], "www": [2, 20], "x": [0, 15, 16, 20, 21], "xmgz": 16, "xml": 15, "xxxx": 20, "xzf": 20, "yarn": 20, "year": 12, "yml": 20, "you": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20], "your": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "yyyy": 0, "z": [15, 20], "z2ze5qzrnmvmndejpphask": 10, "zero": 16, "zip": [0, 2, 15, 16, 18], "zoom": 15, "z\u00e9ro": [0, 18], "\u00c0": 20, "\u00e9chang": 21, "\u00e9chapp": [15, 16], "\u00e9chec": 24, "\u00e9cran": 16, "\u00e9cras": 20, "\u00e9critur": 21, "\u00e9gal": [14, 16, 17, 18, 19, 20], "\u00e9lectr": 18, "\u00e9lectron": [0, 2, 14, 17, 18, 20], "\u00e9lev": [9, 18, 20], "\u00e9mettr": 8, "\u00e9miss": 8, "\u00e9quip": [0, 6, 15, 16, 21], "\u00e9tap": 20, "\u00e9tat": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "\u00e9valu": 16, "\u00e9ven": 18, "\u00e9ventuel": 4, "\u00e9vit": [8, 16, 18], "\u00eatre": [0, 4, 8, 14, 15, 16, 17, 18, 19, 20, 21, 23], "\u0153uvr": 21}, "titles": ["Authentification et compte", "Commentaires", "Configuration", "Types d\u2019\u00e9quipement", "\u00c9quipements", "Demandes de suivi", "Documentation de l\u2019API", "Notifications", "OAuth2", "Records", "Signalements", "Sports", "Statistiques", "Flux de s\u00e9ances", "Utilisateurs", "S\u00e9ances", "Historique des modifications", "Interface de ligne de commande", "Fonctionnalit\u00e9s", "FitTrackee", "Installation", "OAuth 2.0", "Outils tiers", "Administrateur", "D\u00e9pannage"], "titleterms": {"0": [16, 21], "01": 16, "02": 16, "03": 16, "04": 16, "05": 16, "06": 16, "07": 16, "08": 16, "09": 16, "0b1": 16, "0b2": 16, "0b3": 16, "0b4": 16, "0b5": 16, "0b6": 16, "1": 16, "10": 16, "11": 16, "12": 16, "13": 16, "14": 16, "15": 16, "16": 16, "17": 16, "18": 16, "19": 16, "2": [16, 21], "20": 16, "2018": 16, "2019": 16, "2020": 16, "2021": 16, "2022": 16, "2023": 16, "2024": 16, "2025": 16, "21": 16, "22": 16, "23": 16, "24": 16, "25": 16, "26": 16, "27": 16, "28": 16, "29": 16, "3": 16, "30": 16, "31": 16, "32": 16, "4": 16, "5": 16, "6": 16, "7": 16, "8": 16, "9": 16, "Les": 23, "a": [18, 20], "acces": [6, 20], "administr": [16, 18, 23], "affich": 23, "am\u00e9lior": 16, "api": [6, 20], "appliqu": 18, "authentif": 0, "bas": 17, "bord": 18, "bug": 16, "captur": 18, "cart": 23, "charg": 23, "clean": 17, "clean_arch": 17, "clean_token": 17, "command": 17, "commentair": [1, 18], "compt": [0, 18], "confidential": 18, "configur": [2, 18], "correct": 16, "corrig": 16, "courriel": 20, "creat": 17, "dan": 23, "db": 17, "demand": 5, "disponibl": 16, "diver": 16, "dock": 20, "document": [6, 16], "don": [17, 20], "drop": 17, "d\u00e9marr": 23, "d\u00e9pannag": 24, "d\u00e9pend": 20, "d\u00e9ploi": 20, "d\u00e9tail": [18, 23], "d\u00e9velopp": 20, "environ": 20, "export_arch": 17, "ferm": 16, "fichi": 23, "fittracke": [16, 19, 23], "flux": [13, 21], "fonctionnal": [16, 18], "franc": 16, "ftcli": 17, "histor": 16, "imag": 23, "import": 22, "install": [20, 22], "interact": 18, "interfac": 17, "jour": 20, "lign": 17, "lik": 18, "limit": 20, "list": 18, "mati": 19, "mineur": 16, "mis": 20, "moder": 18, "modif": 16, "m\u00e9t\u00e9o": 20, "nixos": 20, "notif": [7, 18], "nouvel": 16, "oauth": [18, 21], "oauth2": [8, 17], "outil": 22, "pag": 18, "part": 20, "point": 6, "polit": 18, "premi": 16, "principal": 20, "product": 20, "propos": 18, "pr\u00e9f\u00e9rent": 18, "pr\u00e9requ": 20, "pull": 16, "pyp": [16, 20], "record": 9, "request": 16, "ressourc": 21, "r\u00e9pertoir": 18, "scop": 21, "script": 22, "serveur": 20, "signal": 10, "sourc": 20, "sport": [11, 18], "statist": [12, 16, 18], "suiv": 5, "s\u00e9anc": [13, 15, 18, 23], "s\u00e9cur": 16, "tabl": 19, "tableau": 18, "ticket": 16, "tier": 22, "traduct": [16, 18], "tuil": 20, "typ": [3, 18], "t\u00e9l\u00e9charg": 23, "updat": 17, "upgrad": 17, "user": 17, "utilis": [14, 17, 18], "variabl": 20, "version": 16, "yunohost": 20, "\u00e9chec": 23, "\u00e9cran": 18, "\u00e9quip": [3, 4, 18]}}) \ No newline at end of file diff --git a/docs/fr/third_party_tools.html b/docs/fr/third_party_tools.html index 95df74bd6..9e96465f9 100644 --- a/docs/fr/third_party_tools.html +++ b/docs/fr/third_party_tools.html @@ -6,7 +6,7 @@ - Outils tiers - Documentation FitTrackee 0.9.0b4 + Outils tiers - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -378,7 +378,7 @@

Scripts d’installation

- + diff --git a/docs/fr/troubleshooting/administrator.html b/docs/fr/troubleshooting/administrator.html index 5b85b343a..af180ca12 100644 --- a/docs/fr/troubleshooting/administrator.html +++ b/docs/fr/troubleshooting/administrator.html @@ -6,7 +6,7 @@ - Administrateur - Documentation FitTrackee 0.9.0b4 + Administrateur - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -394,7 +394,7 @@

Échec du chargement ou du téléchargement de fichiers

- + diff --git a/docs/fr/troubleshooting/index.html b/docs/fr/troubleshooting/index.html index 9f9ec266b..8ab10dff8 100644 --- a/docs/fr/troubleshooting/index.html +++ b/docs/fr/troubleshooting/index.html @@ -6,7 +6,7 @@ - Dépannage - Documentation FitTrackee 0.9.0b4 + Dépannage - Documentation FitTrackee 0.9.0b6 @@ -169,7 +169,7 @@
-
@@ -197,7 +197,7 @@
- Documentation FitTrackee 0.9.0b4 + Documentation FitTrackee 0.9.0b6 @@ -353,7 +353,7 @@

Dépannage +

diff --git a/docsrc/gettext/.doctrees/api/auth.doctree b/docsrc/gettext/.doctrees/api/auth.doctree index 1db9d2a35..6628a407f 100644 Binary files a/docsrc/gettext/.doctrees/api/auth.doctree and b/docsrc/gettext/.doctrees/api/auth.doctree differ diff --git a/docsrc/gettext/.doctrees/api/comments.doctree b/docsrc/gettext/.doctrees/api/comments.doctree index 51c22193d..21be0259f 100644 Binary files a/docsrc/gettext/.doctrees/api/comments.doctree and b/docsrc/gettext/.doctrees/api/comments.doctree differ diff --git a/docsrc/gettext/.doctrees/api/configuration.doctree b/docsrc/gettext/.doctrees/api/configuration.doctree index fa932b40a..2d6286c80 100644 Binary files a/docsrc/gettext/.doctrees/api/configuration.doctree and b/docsrc/gettext/.doctrees/api/configuration.doctree differ diff --git a/docsrc/gettext/.doctrees/api/equipment_types.doctree b/docsrc/gettext/.doctrees/api/equipment_types.doctree index 02bc0c921..35683fcbd 100644 Binary files a/docsrc/gettext/.doctrees/api/equipment_types.doctree and b/docsrc/gettext/.doctrees/api/equipment_types.doctree differ diff --git a/docsrc/gettext/.doctrees/api/equipments.doctree b/docsrc/gettext/.doctrees/api/equipments.doctree index 3d7ad80b7..69106c856 100644 Binary files a/docsrc/gettext/.doctrees/api/equipments.doctree and b/docsrc/gettext/.doctrees/api/equipments.doctree differ diff --git a/docsrc/gettext/.doctrees/api/follow_requests.doctree b/docsrc/gettext/.doctrees/api/follow_requests.doctree index 156e4b1fb..15efd6715 100644 Binary files a/docsrc/gettext/.doctrees/api/follow_requests.doctree and b/docsrc/gettext/.doctrees/api/follow_requests.doctree differ diff --git a/docsrc/gettext/.doctrees/api/index.doctree b/docsrc/gettext/.doctrees/api/index.doctree index 789fe6f89..8e4a683e0 100644 Binary files a/docsrc/gettext/.doctrees/api/index.doctree and b/docsrc/gettext/.doctrees/api/index.doctree differ diff --git a/docsrc/gettext/.doctrees/api/notifications.doctree b/docsrc/gettext/.doctrees/api/notifications.doctree index e898ffa39..4e4a95087 100644 Binary files a/docsrc/gettext/.doctrees/api/notifications.doctree and b/docsrc/gettext/.doctrees/api/notifications.doctree differ diff --git a/docsrc/gettext/.doctrees/api/oauth2.doctree b/docsrc/gettext/.doctrees/api/oauth2.doctree index 0d7d18980..02429e814 100644 Binary files a/docsrc/gettext/.doctrees/api/oauth2.doctree and b/docsrc/gettext/.doctrees/api/oauth2.doctree differ diff --git a/docsrc/gettext/.doctrees/api/records.doctree b/docsrc/gettext/.doctrees/api/records.doctree index e58d83885..e4be26bda 100644 Binary files a/docsrc/gettext/.doctrees/api/records.doctree and b/docsrc/gettext/.doctrees/api/records.doctree differ diff --git a/docsrc/gettext/.doctrees/api/reports.doctree b/docsrc/gettext/.doctrees/api/reports.doctree index 34b5a4ade..36b5d54f9 100644 Binary files a/docsrc/gettext/.doctrees/api/reports.doctree and b/docsrc/gettext/.doctrees/api/reports.doctree differ diff --git a/docsrc/gettext/.doctrees/api/sports.doctree b/docsrc/gettext/.doctrees/api/sports.doctree index 8e73e1995..b1416decf 100644 Binary files a/docsrc/gettext/.doctrees/api/sports.doctree and b/docsrc/gettext/.doctrees/api/sports.doctree differ diff --git a/docsrc/gettext/.doctrees/api/stats.doctree b/docsrc/gettext/.doctrees/api/stats.doctree index ffd53b2d8..6f533afa2 100644 Binary files a/docsrc/gettext/.doctrees/api/stats.doctree and b/docsrc/gettext/.doctrees/api/stats.doctree differ diff --git a/docsrc/gettext/.doctrees/api/timeline.doctree b/docsrc/gettext/.doctrees/api/timeline.doctree index fb685bcc6..d9569f873 100644 Binary files a/docsrc/gettext/.doctrees/api/timeline.doctree and b/docsrc/gettext/.doctrees/api/timeline.doctree differ diff --git a/docsrc/gettext/.doctrees/api/users.doctree b/docsrc/gettext/.doctrees/api/users.doctree index b5044b8c0..461491308 100644 Binary files a/docsrc/gettext/.doctrees/api/users.doctree and b/docsrc/gettext/.doctrees/api/users.doctree differ diff --git a/docsrc/gettext/.doctrees/api/workouts.doctree b/docsrc/gettext/.doctrees/api/workouts.doctree index 2527893f7..2b06371c3 100644 Binary files a/docsrc/gettext/.doctrees/api/workouts.doctree and b/docsrc/gettext/.doctrees/api/workouts.doctree differ diff --git a/docsrc/gettext/.doctrees/changelog.doctree b/docsrc/gettext/.doctrees/changelog.doctree index 19586b697..7d6349ab7 100644 Binary files a/docsrc/gettext/.doctrees/changelog.doctree and b/docsrc/gettext/.doctrees/changelog.doctree differ diff --git a/docsrc/gettext/.doctrees/cli.doctree b/docsrc/gettext/.doctrees/cli.doctree index 9e0bd5b91..aa3826723 100644 Binary files a/docsrc/gettext/.doctrees/cli.doctree and b/docsrc/gettext/.doctrees/cli.doctree differ diff --git a/docsrc/gettext/.doctrees/environment.pickle b/docsrc/gettext/.doctrees/environment.pickle index c236a7968..0cea15044 100644 Binary files a/docsrc/gettext/.doctrees/environment.pickle and b/docsrc/gettext/.doctrees/environment.pickle differ diff --git a/docsrc/gettext/.doctrees/features.doctree b/docsrc/gettext/.doctrees/features.doctree index 26bc86735..881f94f5d 100644 Binary files a/docsrc/gettext/.doctrees/features.doctree and b/docsrc/gettext/.doctrees/features.doctree differ diff --git a/docsrc/gettext/.doctrees/index.doctree b/docsrc/gettext/.doctrees/index.doctree index 8636f3342..a683a3270 100644 Binary files a/docsrc/gettext/.doctrees/index.doctree and b/docsrc/gettext/.doctrees/index.doctree differ diff --git a/docsrc/gettext/.doctrees/installation.doctree b/docsrc/gettext/.doctrees/installation.doctree index deccc5e12..5a79d84fd 100644 Binary files a/docsrc/gettext/.doctrees/installation.doctree and b/docsrc/gettext/.doctrees/installation.doctree differ diff --git a/docsrc/gettext/.doctrees/oauth.doctree b/docsrc/gettext/.doctrees/oauth.doctree index 9c1f14cf8..d530ea881 100644 Binary files a/docsrc/gettext/.doctrees/oauth.doctree and b/docsrc/gettext/.doctrees/oauth.doctree differ diff --git a/docsrc/gettext/.doctrees/third_party_tools.doctree b/docsrc/gettext/.doctrees/third_party_tools.doctree index 8b7ba4d88..b57689716 100644 Binary files a/docsrc/gettext/.doctrees/third_party_tools.doctree and b/docsrc/gettext/.doctrees/third_party_tools.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree index 14ebfafb1..0921e18d2 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree and b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/index.doctree b/docsrc/gettext/.doctrees/troubleshooting/index.doctree index 1fe041372..5c7fc7c8d 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/index.doctree and b/docsrc/gettext/.doctrees/troubleshooting/index.doctree differ diff --git a/docsrc/gettext/docs.pot b/docsrc/gettext/docs.pot index bd380756b..d1cf6e93a 100644 --- a/docsrc/gettext/docs.pot +++ b/docsrc/gettext/docs.pot @@ -6,10 +6,10 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: FitTrackee 0.9.0b4\n" +"Project-Id-Version: FitTrackee 0.9.0b6\n" "\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-29 22:40+0100\n" +"POT-Creation-Date: 2025-01-05 10:14+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -486,6 +486,46 @@ msgstr "" msgid "user preferences deleted" msgstr "" +#: ../../:1 +msgid "Edit authenticated user preferences for UI notifications." +msgstr "" + +#: ../../:1 +msgid "notification for user registration (only for user with administration rights)" +msgstr "" + +#: ../../:1 +msgid "notification for comment likes" +msgstr "" + +#: ../../:1 +msgid "notification for follow" +msgstr "" + +#: ../../:1 +msgid "notification for follow requests" +msgstr "" + +#: ../../:1 +msgid "notification for follow request approval" +msgstr "" + +#: ../../:1 +msgid "notification for mention" +msgstr "" + +#: ../../:1 +msgid "notification for comments on workout" +msgstr "" + +#: ../../:1 +msgid "notification for workout likes" +msgstr "" + +#: ../../:1 +msgid "- ``invalid payload``" +msgstr "" + #: ../../:1 msgid "Update authenticated user picture." msgstr "" @@ -741,6 +781,7 @@ msgid "no blocked users:" msgstr "" #: ../source/api/auth.rst:0 +#: ../source/api/comments.rst:0 #: ../source/api/equipments.rst:0 #: ../source/api/follow_requests.rst:0 #: ../source/api/notifications.rst:0 @@ -891,10 +932,6 @@ msgstr "" msgid "``created``" msgstr "" -#: ../../:1 -msgid "- ``invalid payload``" -msgstr "" - #: ../../:1 msgid "Update comment text." msgstr "" @@ -919,6 +956,10 @@ msgstr "" msgid "Remove a comment \"like\"." msgstr "" +#: ../../:1 +msgid "Get users who like comment." +msgstr "" + #: ../../:1 msgid "Appeal comment suspension." msgstr "" @@ -948,7 +989,7 @@ msgid "comment deleted" msgstr "" #: ../source/api/configuration.rst:2 -#: ../source/features.rst:388 +#: ../source/features.rst:396 msgid "Configuration" msgstr "" @@ -1053,7 +1094,7 @@ msgid "health check endpoint" msgstr "" #: ../source/api/equipment_types.rst:2 -#: ../source/features.rst:495 +#: ../source/features.rst:503 msgid "Equipment Types" msgstr "" @@ -1118,8 +1159,8 @@ msgid "equipment type active status" msgstr "" #: ../source/api/equipments.rst:2 -#: ../source/features.rst:334 -#: ../source/features.rst:568 +#: ../source/features.rst:342 +#: ../source/features.rst:576 msgid "Equipments" msgstr "" @@ -1358,7 +1399,7 @@ msgstr "" #: ../source/api/notifications.rst:2 #: ../source/features.rst:209 -#: ../source/features.rst:578 +#: ../source/features.rst:586 msgid "Notifications" msgstr "" @@ -1853,7 +1894,7 @@ msgstr "" #: ../source/api/sports.rst:2 #: ../source/features.rst:17 -#: ../source/features.rst:504 +#: ../source/features.rst:512 msgid "Sports" msgstr "" @@ -1910,8 +1951,8 @@ msgid "sport updated" msgstr "" #: ../source/api/stats.rst:2 -#: ../source/features.rst:247 -#: ../source/features.rst:559 +#: ../source/features.rst:255 +#: ../source/features.rst:567 msgid "Statistics" msgstr "" @@ -2054,7 +2095,7 @@ msgstr "" #: ../source/api/users.rst:2 #: ../source/cli.rst:61 #: ../source/features.rst:167 -#: ../source/features.rst:425 +#: ../source/features.rst:433 msgid "Users" msgstr "" @@ -2600,6 +2641,10 @@ msgstr "" msgid "Remove workout \"like\"." msgstr "" +#: ../../:1 +msgid "Get users who like the workout." +msgstr "" + #: ../../:1 msgid "Appeal workout suspension." msgstr "" @@ -2625,3302 +2670,3351 @@ msgid "Change log" msgstr "" #: ../source/changelog.md:3 -msgid "Version 0.8.13 (2024/12/29)" +msgid "Version 0.9.0b6 (2025/01/05)" msgstr "" #: ../source/changelog.md:5 -#: ../source/changelog.md:51 -#: ../source/changelog.md:129 -#: ../source/changelog.md:169 -#: ../source/changelog.md:219 -#: ../source/changelog.md:270 -#: ../source/changelog.md:312 -#: ../source/changelog.md:342 -#: ../source/changelog.md:389 -#: ../source/changelog.md:434 -#: ../source/changelog.md:471 -#: ../source/changelog.md:496 -#: ../source/changelog.md:538 -#: ../source/changelog.md:588 -#: ../source/changelog.md:628 -#: ../source/changelog.md:659 -#: ../source/changelog.md:697 -#: ../source/changelog.md:735 -#: ../source/changelog.md:772 -#: ../source/changelog.md:807 -#: ../source/changelog.md:842 -#: ../source/changelog.md:883 -#: ../source/changelog.md:931 -#: ../source/changelog.md:980 -#: ../source/changelog.md:1021 -#: ../source/changelog.md:1065 -#: ../source/changelog.md:1102 -#: ../source/changelog.md:1131 -#: ../source/changelog.md:1181 -#: ../source/changelog.md:1226 -#: ../source/changelog.md:1255 -#: ../source/changelog.md:1270 -#: ../source/changelog.md:1287 -#: ../source/changelog.md:1307 -#: ../source/changelog.md:1322 -#: ../source/changelog.md:1335 -#: ../source/changelog.md:1350 -#: ../source/changelog.md:1363 -#: ../source/changelog.md:1378 -#: ../source/changelog.md:1392 -#: ../source/changelog.md:1417 -#: ../source/changelog.md:1426 -#: ../source/changelog.md:1437 -#: ../source/changelog.md:1456 -#: ../source/changelog.md:1542 -#: ../source/features.rst:510 -msgid "Translations" -msgstr "" - -#: ../source/changelog.md:7 -msgid "PR#667 - Translations update (Galicien)" +#: ../source/changelog.md:24 +#: ../source/changelog.md:79 +#: ../source/changelog.md:105 +#: ../source/changelog.md:127 +#: ../source/changelog.md:137 +msgid "This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.
If you find bugs, please report them." msgstr "" #: ../source/changelog.md:9 -#: ../source/changelog.md:134 -#: ../source/changelog.md:175 -#: ../source/changelog.md:230 -#: ../source/changelog.md:278 -#: ../source/changelog.md:318 -#: ../source/changelog.md:350 -#: ../source/changelog.md:396 -#: ../source/changelog.md:441 -#: ../source/changelog.md:475 -#: ../source/changelog.md:502 -#: ../source/changelog.md:546 -#: ../source/changelog.md:596 -#: ../source/changelog.md:633 -#: ../source/changelog.md:663 -#: ../source/changelog.md:702 -#: ../source/changelog.md:740 -#: ../source/changelog.md:777 -#: ../source/changelog.md:816 -#: ../source/changelog.md:855 -#: ../source/changelog.md:896 -#: ../source/changelog.md:938 -#: ../source/changelog.md:987 -#: ../source/changelog.md:1039 -#: ../source/changelog.md:1086 -#: ../source/changelog.md:1107 -#: ../source/changelog.md:1139 -#: ../source/changelog.md:1191 -msgid "Translation status:" -msgstr "" - -#: ../source/changelog.md:10 -#: ../source/changelog.md:135 -#: ../source/changelog.md:231 -#: ../source/changelog.md:442 -#: ../source/changelog.md:476 -#: ../source/changelog.md:634 -#: ../source/changelog.md:664 -msgid "Basque: 100%" +#: ../source/changelog.md:28 +#: ../source/changelog.md:82 +#: ../source/changelog.md:108 +#: ../source/changelog.md:140 +#: ../source/changelog.md:205 +#: ../source/changelog.md:251 +#: ../source/changelog.md:345 +#: ../source/changelog.md:420 +#: ../source/changelog.md:470 +#: ../source/changelog.md:569 +#: ../source/changelog.md:618 +#: ../source/changelog.md:727 +#: ../source/changelog.md:767 +#: ../source/changelog.md:805 +#: ../source/changelog.md:837 +#: ../source/changelog.md:1010 +#: ../source/changelog.md:1049 +#: ../source/changelog.md:1162 +#: ../source/changelog.md:1210 +#: ../source/changelog.md:1283 +#: ../source/changelog.md:1323 +#: ../source/changelog.md:1344 +#: ../source/changelog.md:1359 +#: ../source/changelog.md:1383 +#: ../source/changelog.md:1446 +#: ../source/changelog.md:1486 +msgid "Features and enhancements" msgstr "" #: ../source/changelog.md:11 -#: ../source/changelog.md:136 -#: ../source/changelog.md:177 -msgid "Bulgarian: 98%" +msgid "PR#677 - Add notification preferences" msgstr "" #: ../source/changelog.md:12 -#: ../source/changelog.md:137 -#: ../source/changelog.md:178 -#: ../source/changelog.md:233 -#: ../source/changelog.md:320 -msgid "Czech: 72%" +msgid "PR#678 - Display users who like comment/workout" msgstr "" -#: ../source/changelog.md:13 -#: ../source/changelog.md:138 -#: ../source/changelog.md:179 -#: ../source/changelog.md:234 -#: ../source/changelog.md:282 -#: ../source/changelog.md:321 +#: ../source/changelog.md:14 +#: ../source/changelog.md:32 +#: ../source/changelog.md:88 +#: ../source/changelog.md:112 +#: ../source/changelog.md:130 +#: ../source/changelog.md:155 +#: ../source/changelog.md:255 +#: ../source/changelog.md:307 +#: ../source/changelog.md:349 +#: ../source/changelog.md:426 +#: ../source/changelog.md:508 +#: ../source/changelog.md:573 +#: ../source/changelog.md:623 #: ../source/changelog.md:665 -#: ../source/changelog.md:703 -#: ../source/changelog.md:817 -#: ../source/changelog.md:1108 -#: ../source/changelog.md:1140 -msgid "Dutch: 99%" +#: ../source/changelog.md:696 +#: ../source/changelog.md:731 +#: ../source/changelog.md:772 +#: ../source/changelog.md:809 +#: ../source/changelog.md:843 +#: ../source/changelog.md:878 +#: ../source/changelog.md:913 +#: ../source/changelog.md:920 +#: ../source/changelog.md:954 +#: ../source/changelog.md:966 +#: ../source/changelog.md:998 +#: ../source/changelog.md:1015 +#: ../source/changelog.md:1056 +#: ../source/changelog.md:1167 +#: ../source/changelog.md:1217 +#: ../source/changelog.md:1263 +#: ../source/changelog.md:1289 +#: ../source/changelog.md:1387 +#: ../source/changelog.md:1415 +#: ../source/changelog.md:1426 +#: ../source/changelog.md:1453 +#: ../source/changelog.md:1474 +#: ../source/changelog.md:1492 +#: ../source/changelog.md:1508 +#: ../source/changelog.md:1529 +#: ../source/changelog.md:1551 +#: ../source/changelog.md:1558 +#: ../source/changelog.md:1578 +#: ../source/changelog.md:1600 +#: ../source/changelog.md:1618 +#: ../source/changelog.md:1653 +#: ../source/changelog.md:1664 +#: ../source/changelog.md:1675 +#: ../source/changelog.md:1687 +#: ../source/changelog.md:1707 +#: ../source/changelog.md:1713 +#: ../source/changelog.md:1765 +#: ../source/changelog.md:1789 +#: ../source/changelog.md:1800 +#: ../source/changelog.md:1811 +#: ../source/changelog.md:1856 +#: ../source/changelog.md:1889 +#: ../source/changelog.md:1901 +#: ../source/changelog.md:1912 +#: ../source/changelog.md:1928 +#: ../source/changelog.md:1941 +#: ../source/changelog.md:1953 +#: ../source/changelog.md:1974 +#: ../source/changelog.md:2052 +#: ../source/changelog.md:2069 +#: ../source/changelog.md:2080 +#: ../source/changelog.md:2100 +#: ../source/changelog.md:2135 +msgid "Bugs Fixed" msgstr "" -#: ../source/changelog.md:14 -#: ../source/changelog.md:139 -#: ../source/changelog.md:180 -#: ../source/changelog.md:235 -#: ../source/changelog.md:283 -#: ../source/changelog.md:322 -#: ../source/changelog.md:354 -#: ../source/changelog.md:400 -#: ../source/changelog.md:445 -#: ../source/changelog.md:479 -#: ../source/changelog.md:506 -#: ../source/changelog.md:550 -#: ../source/changelog.md:599 -#: ../source/changelog.md:636 -#: ../source/changelog.md:666 -#: ../source/changelog.md:704 -#: ../source/changelog.md:742 -#: ../source/changelog.md:779 -#: ../source/changelog.md:818 -#: ../source/changelog.md:857 -#: ../source/changelog.md:898 -#: ../source/changelog.md:940 -#: ../source/changelog.md:989 -#: ../source/changelog.md:1041 -#: ../source/changelog.md:1088 -#: ../source/changelog.md:1109 -#: ../source/changelog.md:1141 -#: ../source/changelog.md:1193 -msgid "English: 100%" +#: ../source/changelog.md:16 +msgid "d743abf - display missing errors in user profile" msgstr "" -#: ../source/changelog.md:15 -#: ../source/changelog.md:140 -#: ../source/changelog.md:181 -#: ../source/changelog.md:236 -#: ../source/changelog.md:284 -#: ../source/changelog.md:323 -#: ../source/changelog.md:355 -#: ../source/changelog.md:401 -#: ../source/changelog.md:446 -#: ../source/changelog.md:480 -#: ../source/changelog.md:507 -#: ../source/changelog.md:551 -#: ../source/changelog.md:600 -#: ../source/changelog.md:637 -#: ../source/changelog.md:667 -#: ../source/changelog.md:705 -#: ../source/changelog.md:743 -#: ../source/changelog.md:780 -#: ../source/changelog.md:819 -#: ../source/changelog.md:858 -#: ../source/changelog.md:899 -#: ../source/changelog.md:941 -#: ../source/changelog.md:990 -#: ../source/changelog.md:1042 -#: ../source/changelog.md:1089 -#: ../source/changelog.md:1110 -#: ../source/changelog.md:1142 -#: ../source/changelog.md:1194 -msgid "French: 100%" +#: ../source/changelog.md:19 +#: ../source/changelog.md:100 +#: ../source/changelog.md:122 +#: ../source/changelog.md:151 +#: ../source/changelog.md:300 +#: ../source/changelog.md:378 +#: ../source/changelog.md:463 +#: ../source/changelog.md:660 +#: ../source/changelog.md:873 +#: ../source/changelog.md:1044 +#: ../source/changelog.md:1096 +#: ../source/changelog.md:1200 +#: ../source/changelog.md:1258 +#: ../source/changelog.md:1306 +#: ../source/changelog.md:1354 +#: ../source/changelog.md:1368 +#: ../source/changelog.md:1462 +#: ../source/changelog.md:1501 +msgid "Note: This release contains database migration (see upgrade instructions in documentation)" msgstr "" -#: ../source/changelog.md:16 -#: ../source/changelog.md:141 -#: ../source/changelog.md:182 -#: ../source/changelog.md:237 -#: ../source/changelog.md:285 -#: ../source/changelog.md:356 -#: ../source/changelog.md:402 -#: ../source/changelog.md:447 -#: ../source/changelog.md:481 -#: ../source/changelog.md:508 -#: ../source/changelog.md:552 -#: ../source/changelog.md:638 -#: ../source/changelog.md:668 -#: ../source/changelog.md:706 -#: ../source/changelog.md:744 -#: ../source/changelog.md:781 -#: ../source/changelog.md:859 -#: ../source/changelog.md:900 -#: ../source/changelog.md:942 -#: ../source/changelog.md:991 -#: ../source/changelog.md:1090 -#: ../source/changelog.md:1111 -#: ../source/changelog.md:1195 -msgid "Galician: 100%" +#: ../source/changelog.md:22 +msgid "Version 0.9.0b5 (2024/12/30)" msgstr "" -#: ../source/changelog.md:17 -#: ../source/changelog.md:142 -#: ../source/changelog.md:183 -#: ../source/changelog.md:238 -#: ../source/changelog.md:286 -#: ../source/changelog.md:448 -#: ../source/changelog.md:482 -#: ../source/changelog.md:509 -#: ../source/changelog.md:639 -#: ../source/changelog.md:669 -#: ../source/changelog.md:707 +#: ../source/changelog.md:30 +msgid "PR#675 - CLI - create user with provided role" +msgstr "" + +#: ../source/changelog.md:34 +msgid "PR#671 - Fix sport icon when unauthenticated user displays user profile" +msgstr "" + +#: ../source/changelog.md:35 +msgid "PR#674 - Fix display of privacy policy message with privacy extension" +msgstr "" + +#: ../source/changelog.md:36 +msgid "2e9f9d - fix translations" +msgstr "" + +#: ../source/changelog.md:37 +msgid "edc677 - Fix notification icons" +msgstr "" + +#: ../source/changelog.md:39 +#: ../source/changelog.md:66 +#: ../source/changelog.md:117 +#: ../source/changelog.md:159 +#: ../source/changelog.md:191 +#: ../source/changelog.md:232 +#: ../source/changelog.md:286 +#: ../source/changelog.md:405 +#: ../source/changelog.md:451 +#: ../source/changelog.md:496 +#: ../source/changelog.md:556 +#: ../source/changelog.md:600 +#: ../source/changelog.md:649 +#: ../source/changelog.md:716 +#: ../source/changelog.md:754 +#: ../source/changelog.md:792 +#: ../source/changelog.md:852 +#: ../source/changelog.md:888 +#: ../source/changelog.md:929 +#: ../source/changelog.md:959 +#: ../source/changelog.md:1003 +#: ../source/changelog.md:1074 +#: ../source/changelog.md:1121 +#: ../source/changelog.md:1242 +#: ../source/changelog.md:1315 +#: ../source/changelog.md:1395 +#: ../source/changelog.md:1408 +#: ../source/changelog.md:1514 +#: ../source/changelog.md:1606 +#: ../source/changelog.md:1627 +#: ../source/changelog.md:1735 +#: ../source/changelog.md:1751 +#: ../source/changelog.md:1860 +#: ../source/changelog.md:1916 +#: ../source/changelog.md:1957 +#: ../source/changelog.md:1983 +#: ../source/changelog.md:2038 +#: ../source/changelog.md:2104 +#: ../source/changelog.md:2119 +msgid "Misc" +msgstr "" + +#: ../source/changelog.md:41 +msgid "174240 - add tags input to docker image build job" +msgstr "" + +#: ../source/changelog.md:44 +msgid "Version 0.8.13 (2024/12/29)" +msgstr "" + +#: ../source/changelog.md:46 +#: ../source/changelog.md:92 +#: ../source/changelog.md:170 +#: ../source/changelog.md:210 +#: ../source/changelog.md:260 +#: ../source/changelog.md:311 +#: ../source/changelog.md:353 +#: ../source/changelog.md:383 +#: ../source/changelog.md:430 +#: ../source/changelog.md:475 +#: ../source/changelog.md:512 +#: ../source/changelog.md:537 +#: ../source/changelog.md:579 +#: ../source/changelog.md:629 +#: ../source/changelog.md:669 +#: ../source/changelog.md:700 +#: ../source/changelog.md:738 +#: ../source/changelog.md:776 +#: ../source/changelog.md:813 +#: ../source/changelog.md:848 +#: ../source/changelog.md:883 +#: ../source/changelog.md:924 +#: ../source/changelog.md:972 +#: ../source/changelog.md:1021 +#: ../source/changelog.md:1062 +#: ../source/changelog.md:1106 +#: ../source/changelog.md:1143 +#: ../source/changelog.md:1172 +#: ../source/changelog.md:1222 +#: ../source/changelog.md:1267 +#: ../source/changelog.md:1296 +#: ../source/changelog.md:1311 +#: ../source/changelog.md:1328 +#: ../source/changelog.md:1348 +#: ../source/changelog.md:1363 +#: ../source/changelog.md:1376 +#: ../source/changelog.md:1391 +#: ../source/changelog.md:1404 +#: ../source/changelog.md:1419 +#: ../source/changelog.md:1433 +#: ../source/changelog.md:1458 +#: ../source/changelog.md:1467 +#: ../source/changelog.md:1478 +#: ../source/changelog.md:1497 +#: ../source/changelog.md:1583 +#: ../source/features.rst:518 +msgid "Translations" +msgstr "" + +#: ../source/changelog.md:48 +#: ../source/changelog.md:94 +msgid "PR#667 - Translations update (Galician)" +msgstr "" + +#: ../source/changelog.md:50 +#: ../source/changelog.md:175 +#: ../source/changelog.md:216 +#: ../source/changelog.md:271 +#: ../source/changelog.md:319 +#: ../source/changelog.md:359 +#: ../source/changelog.md:391 +#: ../source/changelog.md:437 +#: ../source/changelog.md:482 +#: ../source/changelog.md:516 +#: ../source/changelog.md:543 +#: ../source/changelog.md:587 +#: ../source/changelog.md:637 +#: ../source/changelog.md:674 +#: ../source/changelog.md:704 +#: ../source/changelog.md:743 +#: ../source/changelog.md:781 +#: ../source/changelog.md:818 +#: ../source/changelog.md:857 +#: ../source/changelog.md:896 +#: ../source/changelog.md:937 +#: ../source/changelog.md:979 +#: ../source/changelog.md:1028 +#: ../source/changelog.md:1080 +#: ../source/changelog.md:1127 +#: ../source/changelog.md:1148 +#: ../source/changelog.md:1180 +#: ../source/changelog.md:1232 +msgid "Translation status:" +msgstr "" + +#: ../source/changelog.md:51 +#: ../source/changelog.md:176 +#: ../source/changelog.md:272 +#: ../source/changelog.md:483 +#: ../source/changelog.md:517 +#: ../source/changelog.md:675 +#: ../source/changelog.md:705 +msgid "Basque: 100%" +msgstr "" + +#: ../source/changelog.md:52 +#: ../source/changelog.md:177 +#: ../source/changelog.md:218 +msgid "Bulgarian: 98%" +msgstr "" + +#: ../source/changelog.md:53 +#: ../source/changelog.md:178 +#: ../source/changelog.md:219 +#: ../source/changelog.md:274 +#: ../source/changelog.md:361 +msgid "Czech: 72%" +msgstr "" + +#: ../source/changelog.md:54 +#: ../source/changelog.md:179 +#: ../source/changelog.md:220 +#: ../source/changelog.md:275 +#: ../source/changelog.md:323 +#: ../source/changelog.md:362 +#: ../source/changelog.md:706 +#: ../source/changelog.md:744 +#: ../source/changelog.md:858 +#: ../source/changelog.md:1149 +#: ../source/changelog.md:1181 +msgid "Dutch: 99%" +msgstr "" + +#: ../source/changelog.md:55 +#: ../source/changelog.md:180 +#: ../source/changelog.md:221 +#: ../source/changelog.md:276 +#: ../source/changelog.md:324 +#: ../source/changelog.md:363 +#: ../source/changelog.md:395 +#: ../source/changelog.md:441 +#: ../source/changelog.md:486 +#: ../source/changelog.md:520 +#: ../source/changelog.md:547 +#: ../source/changelog.md:591 +#: ../source/changelog.md:640 +#: ../source/changelog.md:677 +#: ../source/changelog.md:707 #: ../source/changelog.md:745 -#: ../source/changelog.md:782 +#: ../source/changelog.md:783 +#: ../source/changelog.md:820 +#: ../source/changelog.md:859 +#: ../source/changelog.md:898 +#: ../source/changelog.md:939 +#: ../source/changelog.md:981 +#: ../source/changelog.md:1030 +#: ../source/changelog.md:1082 +#: ../source/changelog.md:1129 +#: ../source/changelog.md:1150 +#: ../source/changelog.md:1182 +#: ../source/changelog.md:1234 +msgid "English: 100%" +msgstr "" + +#: ../source/changelog.md:56 +#: ../source/changelog.md:181 +#: ../source/changelog.md:222 +#: ../source/changelog.md:277 +#: ../source/changelog.md:325 +#: ../source/changelog.md:364 +#: ../source/changelog.md:396 +#: ../source/changelog.md:442 +#: ../source/changelog.md:487 +#: ../source/changelog.md:521 +#: ../source/changelog.md:548 +#: ../source/changelog.md:592 +#: ../source/changelog.md:641 +#: ../source/changelog.md:678 +#: ../source/changelog.md:708 +#: ../source/changelog.md:746 +#: ../source/changelog.md:784 +#: ../source/changelog.md:821 #: ../source/changelog.md:860 +#: ../source/changelog.md:899 +#: ../source/changelog.md:940 +#: ../source/changelog.md:982 +#: ../source/changelog.md:1031 +#: ../source/changelog.md:1083 +#: ../source/changelog.md:1130 +#: ../source/changelog.md:1151 +#: ../source/changelog.md:1183 +#: ../source/changelog.md:1235 +msgid "French: 100%" +msgstr "" + +#: ../source/changelog.md:57 +#: ../source/changelog.md:182 +#: ../source/changelog.md:223 +#: ../source/changelog.md:278 +#: ../source/changelog.md:326 +#: ../source/changelog.md:397 +#: ../source/changelog.md:443 +#: ../source/changelog.md:488 +#: ../source/changelog.md:522 +#: ../source/changelog.md:549 +#: ../source/changelog.md:593 +#: ../source/changelog.md:679 +#: ../source/changelog.md:709 +#: ../source/changelog.md:747 +#: ../source/changelog.md:785 +#: ../source/changelog.md:822 +#: ../source/changelog.md:900 +#: ../source/changelog.md:941 +#: ../source/changelog.md:983 +#: ../source/changelog.md:1032 +#: ../source/changelog.md:1131 +#: ../source/changelog.md:1152 +#: ../source/changelog.md:1236 +msgid "Galician: 100%" +msgstr "" + +#: ../source/changelog.md:58 +#: ../source/changelog.md:183 +#: ../source/changelog.md:224 +#: ../source/changelog.md:279 +#: ../source/changelog.md:327 +#: ../source/changelog.md:489 +#: ../source/changelog.md:523 +#: ../source/changelog.md:550 +#: ../source/changelog.md:680 +#: ../source/changelog.md:710 +#: ../source/changelog.md:748 +#: ../source/changelog.md:786 +#: ../source/changelog.md:823 #: ../source/changelog.md:901 -#: ../source/changelog.md:943 -#: ../source/changelog.md:1091 -#: ../source/changelog.md:1196 +#: ../source/changelog.md:942 +#: ../source/changelog.md:984 +#: ../source/changelog.md:1132 +#: ../source/changelog.md:1237 msgid "German: 100%" msgstr "" -#: ../source/changelog.md:18 -#: ../source/changelog.md:143 +#: ../source/changelog.md:59 #: ../source/changelog.md:184 +#: ../source/changelog.md:225 msgid "Italian: 81%" msgstr "" -#: ../source/changelog.md:19 -#: ../source/changelog.md:144 +#: ../source/changelog.md:60 #: ../source/changelog.md:185 -#: ../source/changelog.md:240 -#: ../source/changelog.md:288 -#: ../source/changelog.md:327 -#: ../source/changelog.md:359 -#: ../source/changelog.md:405 +#: ../source/changelog.md:226 +#: ../source/changelog.md:281 +#: ../source/changelog.md:329 +#: ../source/changelog.md:368 +#: ../source/changelog.md:400 +#: ../source/changelog.md:446 msgid "Norwegian Bokmål: 52%" msgstr "" -#: ../source/changelog.md:20 -#: ../source/changelog.md:145 -#: ../source/changelog.md:642 -#: ../source/changelog.md:748 -#: ../source/changelog.md:863 +#: ../source/changelog.md:61 +#: ../source/changelog.md:186 +#: ../source/changelog.md:683 +#: ../source/changelog.md:789 #: ../source/changelog.md:904 -#: ../source/changelog.md:946 +#: ../source/changelog.md:945 +#: ../source/changelog.md:987 msgid "Polish: 100%" msgstr "" -#: ../source/changelog.md:21 -#: ../source/changelog.md:146 +#: ../source/changelog.md:62 #: ../source/changelog.md:187 -#: ../source/changelog.md:242 +#: ../source/changelog.md:228 +#: ../source/changelog.md:283 msgid "Portuguese: 97%" msgstr "" -#: ../source/changelog.md:22 -#: ../source/changelog.md:147 +#: ../source/changelog.md:63 +#: ../source/changelog.md:188 msgid "Russian: 62%" msgstr "" -#: ../source/changelog.md:23 -#: ../source/changelog.md:148 +#: ../source/changelog.md:64 #: ../source/changelog.md:189 -#: ../source/changelog.md:243 -#: ../source/changelog.md:291 -#: ../source/changelog.md:362 -#: ../source/changelog.md:408 -#: ../source/changelog.md:453 -#: ../source/changelog.md:486 -#: ../source/changelog.md:513 -#: ../source/changelog.md:557 -#: ../source/changelog.md:606 -#: ../source/changelog.md:643 -#: ../source/changelog.md:673 -#: ../source/changelog.md:711 -#: ../source/changelog.md:749 -#: ../source/changelog.md:786 -#: ../source/changelog.md:864 +#: ../source/changelog.md:230 +#: ../source/changelog.md:284 +#: ../source/changelog.md:332 +#: ../source/changelog.md:403 +#: ../source/changelog.md:449 +#: ../source/changelog.md:494 +#: ../source/changelog.md:527 +#: ../source/changelog.md:554 +#: ../source/changelog.md:598 +#: ../source/changelog.md:647 +#: ../source/changelog.md:684 +#: ../source/changelog.md:714 +#: ../source/changelog.md:752 +#: ../source/changelog.md:790 +#: ../source/changelog.md:827 #: ../source/changelog.md:905 -#: ../source/changelog.md:947 -#: ../source/changelog.md:996 -#: ../source/changelog.md:1048 -#: ../source/changelog.md:1095 -#: ../source/changelog.md:1116 -#: ../source/changelog.md:1148 -#: ../source/changelog.md:1199 +#: ../source/changelog.md:946 +#: ../source/changelog.md:988 +#: ../source/changelog.md:1037 +#: ../source/changelog.md:1089 +#: ../source/changelog.md:1136 +#: ../source/changelog.md:1157 +#: ../source/changelog.md:1189 +#: ../source/changelog.md:1240 msgid "Spanish: 100%" msgstr "" -#: ../source/changelog.md:25 -#: ../source/changelog.md:76 -#: ../source/changelog.md:118 -#: ../source/changelog.md:150 -#: ../source/changelog.md:191 -#: ../source/changelog.md:245 -#: ../source/changelog.md:364 -#: ../source/changelog.md:410 -#: ../source/changelog.md:455 -#: ../source/changelog.md:515 -#: ../source/changelog.md:559 -#: ../source/changelog.md:608 -#: ../source/changelog.md:675 -#: ../source/changelog.md:713 -#: ../source/changelog.md:751 -#: ../source/changelog.md:811 -#: ../source/changelog.md:847 -#: ../source/changelog.md:888 -#: ../source/changelog.md:918 -#: ../source/changelog.md:962 -#: ../source/changelog.md:1033 -#: ../source/changelog.md:1080 -#: ../source/changelog.md:1201 -#: ../source/changelog.md:1274 -#: ../source/changelog.md:1354 -#: ../source/changelog.md:1367 -#: ../source/changelog.md:1473 -#: ../source/changelog.md:1565 -#: ../source/changelog.md:1586 -#: ../source/changelog.md:1694 -#: ../source/changelog.md:1710 -#: ../source/changelog.md:1819 -#: ../source/changelog.md:1875 -#: ../source/changelog.md:1916 -#: ../source/changelog.md:1942 -#: ../source/changelog.md:1997 -#: ../source/changelog.md:2063 -#: ../source/changelog.md:2078 -msgid "Misc" -msgstr "" - -#: ../source/changelog.md:27 +#: ../source/changelog.md:68 msgid "#126 - Docker's Container on docker hub" msgstr "" -#: ../source/changelog.md:28 +#: ../source/changelog.md:69 msgid "PR#673 - Publish package on PyPI using GitHub Actions workflow" msgstr "" -#: ../source/changelog.md:31 -#: ../source/changelog.md:55 -#: ../source/changelog.md:156 -#: ../source/changelog.md:196 -#: ../source/changelog.md:250 -#: ../source/changelog.md:294 -#: ../source/changelog.md:333 -#: ../source/changelog.md:369 -#: ../source/changelog.md:415 -#: ../source/changelog.md:460 -#: ../source/changelog.md:489 -#: ../source/changelog.md:520 -#: ../source/changelog.md:565 -#: ../source/changelog.md:614 -#: ../source/changelog.md:646 -#: ../source/changelog.md:680 -#: ../source/changelog.md:718 -#: ../source/changelog.md:756 -#: ../source/changelog.md:788 -#: ../source/changelog.md:827 -#: ../source/changelog.md:866 -#: ../source/changelog.md:907 -#: ../source/changelog.md:949 -#: ../source/changelog.md:998 -#: ../source/changelog.md:1050 -#: ../source/changelog.md:1152 -#: ../source/changelog.md:1206 -#: ../source/changelog.md:1261 -#: ../source/changelog.md:1293 -#: ../source/changelog.md:1550 -#: ../source/changelog.md:1833 -msgid "Thanks to the contributors:" -msgstr "" - -#: ../source/changelog.md:32 -#: ../source/changelog.md:828 -msgid "@DavidHenryThoreau" -msgstr "" - -#: ../source/changelog.md:33 -#: ../source/changelog.md:56 -#: ../source/changelog.md:202 -#: ../source/changelog.md:257 -#: ../source/changelog.md:299 +#: ../source/changelog.md:72 +#: ../source/changelog.md:96 +#: ../source/changelog.md:197 +#: ../source/changelog.md:237 +#: ../source/changelog.md:291 #: ../source/changelog.md:335 #: ../source/changelog.md:374 -#: ../source/changelog.md:420 -#: ../source/changelog.md:570 -#: ../source/changelog.md:617 +#: ../source/changelog.md:410 +#: ../source/changelog.md:456 +#: ../source/changelog.md:501 +#: ../source/changelog.md:530 +#: ../source/changelog.md:561 +#: ../source/changelog.md:606 +#: ../source/changelog.md:655 +#: ../source/changelog.md:687 #: ../source/changelog.md:721 -#: ../source/changelog.md:791 -#: ../source/changelog.md:830 -#: ../source/changelog.md:908 -#: ../source/changelog.md:1000 -#: ../source/changelog.md:1053 -#: ../source/changelog.md:1157 -#: ../source/changelog.md:1212 -msgid "@xmgz" -msgstr "" - -#: ../source/changelog.md:36 -msgid "Version 0.9.0b4 (2024/12/23)" +#: ../source/changelog.md:759 +#: ../source/changelog.md:797 +#: ../source/changelog.md:829 +#: ../source/changelog.md:868 +#: ../source/changelog.md:907 +#: ../source/changelog.md:948 +#: ../source/changelog.md:990 +#: ../source/changelog.md:1039 +#: ../source/changelog.md:1091 +#: ../source/changelog.md:1193 +#: ../source/changelog.md:1247 +#: ../source/changelog.md:1302 +#: ../source/changelog.md:1334 +#: ../source/changelog.md:1591 +#: ../source/changelog.md:1874 +msgid "Thanks to the contributors:" msgstr "" -#: ../source/changelog.md:38 -#: ../source/changelog.md:64 -#: ../source/changelog.md:86 -#: ../source/changelog.md:96 -msgid "This is a pre-release. Don't install this version in production, you may not be able to safely downgrade to a stable version.
If you find bugs, please report them." +#: ../source/changelog.md:73 +#: ../source/changelog.md:869 +msgid "@DavidHenryThoreau" msgstr "" -#: ../source/changelog.md:41 -#: ../source/changelog.md:67 -#: ../source/changelog.md:99 -#: ../source/changelog.md:164 -#: ../source/changelog.md:210 -#: ../source/changelog.md:304 -#: ../source/changelog.md:379 -#: ../source/changelog.md:429 -#: ../source/changelog.md:528 -#: ../source/changelog.md:577 -#: ../source/changelog.md:686 -#: ../source/changelog.md:726 -#: ../source/changelog.md:764 -#: ../source/changelog.md:796 -#: ../source/changelog.md:969 -#: ../source/changelog.md:1008 -#: ../source/changelog.md:1121 -#: ../source/changelog.md:1169 -#: ../source/changelog.md:1242 -#: ../source/changelog.md:1282 -#: ../source/changelog.md:1303 -#: ../source/changelog.md:1318 -#: ../source/changelog.md:1342 -#: ../source/changelog.md:1405 -#: ../source/changelog.md:1445 -msgid "Features and enhancements" +#: ../source/changelog.md:74 +#: ../source/changelog.md:97 +#: ../source/changelog.md:243 +#: ../source/changelog.md:298 +#: ../source/changelog.md:340 +#: ../source/changelog.md:376 +#: ../source/changelog.md:415 +#: ../source/changelog.md:461 +#: ../source/changelog.md:611 +#: ../source/changelog.md:658 +#: ../source/changelog.md:762 +#: ../source/changelog.md:832 +#: ../source/changelog.md:871 +#: ../source/changelog.md:949 +#: ../source/changelog.md:1041 +#: ../source/changelog.md:1094 +#: ../source/changelog.md:1198 +#: ../source/changelog.md:1253 +msgid "@xmgz" +msgstr "" + +#: ../source/changelog.md:77 +msgid "Version 0.9.0b4 (2024/12/23)" msgstr "" -#: ../source/changelog.md:43 +#: ../source/changelog.md:84 msgid "PR#666 - Display last 5 workouts in user detail" msgstr "" -#: ../source/changelog.md:44 +#: ../source/changelog.md:85 msgid "#668 - add analysis visibility" msgstr "" -#: ../source/changelog.md:45 +#: ../source/changelog.md:86 msgid "PR#67 - create notification when follow request is approved" msgstr "" -#: ../source/changelog.md:47 -#: ../source/changelog.md:71 -#: ../source/changelog.md:89 -#: ../source/changelog.md:114 -#: ../source/changelog.md:214 -#: ../source/changelog.md:266 -#: ../source/changelog.md:308 -#: ../source/changelog.md:385 -#: ../source/changelog.md:467 -#: ../source/changelog.md:532 -#: ../source/changelog.md:582 -#: ../source/changelog.md:624 -#: ../source/changelog.md:655 -#: ../source/changelog.md:690 -#: ../source/changelog.md:731 -#: ../source/changelog.md:768 -#: ../source/changelog.md:802 -#: ../source/changelog.md:837 -#: ../source/changelog.md:872 -#: ../source/changelog.md:879 -#: ../source/changelog.md:913 -#: ../source/changelog.md:925 -#: ../source/changelog.md:957 -#: ../source/changelog.md:974 -#: ../source/changelog.md:1015 -#: ../source/changelog.md:1126 -#: ../source/changelog.md:1176 -#: ../source/changelog.md:1222 -#: ../source/changelog.md:1248 -#: ../source/changelog.md:1346 -#: ../source/changelog.md:1374 -#: ../source/changelog.md:1385 -#: ../source/changelog.md:1412 -#: ../source/changelog.md:1433 -#: ../source/changelog.md:1451 -#: ../source/changelog.md:1467 -#: ../source/changelog.md:1488 -#: ../source/changelog.md:1510 -#: ../source/changelog.md:1517 -#: ../source/changelog.md:1537 -#: ../source/changelog.md:1559 -#: ../source/changelog.md:1577 -#: ../source/changelog.md:1612 -#: ../source/changelog.md:1623 -#: ../source/changelog.md:1634 -#: ../source/changelog.md:1646 -#: ../source/changelog.md:1666 -#: ../source/changelog.md:1672 -#: ../source/changelog.md:1724 -#: ../source/changelog.md:1748 -#: ../source/changelog.md:1759 -#: ../source/changelog.md:1770 -#: ../source/changelog.md:1815 -#: ../source/changelog.md:1848 -#: ../source/changelog.md:1860 -#: ../source/changelog.md:1871 -#: ../source/changelog.md:1887 -#: ../source/changelog.md:1900 -#: ../source/changelog.md:1912 -#: ../source/changelog.md:1933 -#: ../source/changelog.md:2011 -#: ../source/changelog.md:2028 -#: ../source/changelog.md:2039 -#: ../source/changelog.md:2059 -#: ../source/changelog.md:2094 -msgid "Bugs Fixed" -msgstr "" - -#: ../source/changelog.md:49 +#: ../source/changelog.md:90 msgid "#664 - privacy policy validation is not displayed" msgstr "" -#: ../source/changelog.md:53 -msgid "PR#667 - Translations update (Galician)" -msgstr "" - -#: ../source/changelog.md:59 -#: ../source/changelog.md:81 -#: ../source/changelog.md:110 -#: ../source/changelog.md:259 -#: ../source/changelog.md:337 -#: ../source/changelog.md:422 -#: ../source/changelog.md:619 -#: ../source/changelog.md:832 -#: ../source/changelog.md:1003 -#: ../source/changelog.md:1055 -#: ../source/changelog.md:1159 -#: ../source/changelog.md:1217 -#: ../source/changelog.md:1265 -#: ../source/changelog.md:1313 -#: ../source/changelog.md:1327 -#: ../source/changelog.md:1421 -#: ../source/changelog.md:1460 -msgid "Note: This release contains database migration (see upgrade instructions in documentation)" -msgstr "" - -#: ../source/changelog.md:62 +#: ../source/changelog.md:103 msgid "Version 0.9.0b3 (2024/12/18)" msgstr "" -#: ../source/changelog.md:69 +#: ../source/changelog.md:110 msgid "#660 - mark notification as read on click on workout/comment/..." msgstr "" -#: ../source/changelog.md:73 +#: ../source/changelog.md:114 msgid "PR#659 - API - get workouts list with equipment" msgstr "" -#: ../source/changelog.md:74 +#: ../source/changelog.md:115 msgid "PR#662 - Minor fixes and improvements" msgstr "" -#: ../source/changelog.md:78 +#: ../source/changelog.md:119 msgid "189071 - use uuid instead of id for notifications" msgstr "" -#: ../source/changelog.md:84 +#: ../source/changelog.md:125 msgid "Version 0.9.0b2 (2024/12/14)" msgstr "" -#: ../source/changelog.md:91 +#: ../source/changelog.md:132 msgid "#657 - can not display next workouts in timeline" msgstr "" -#: ../source/changelog.md:94 +#: ../source/changelog.md:135 msgid "Version 0.9.0b1 (2024/12/14)" msgstr "" -#: ../source/changelog.md:101 +#: ../source/changelog.md:142 msgid "#16 - Add social features [1s part]" msgstr "" -#: ../source/changelog.md:102 +#: ../source/changelog.md:143 msgid "#125 - Add followers/following and visibility levels" msgstr "" -#: ../source/changelog.md:103 +#: ../source/changelog.md:144 msgid "#296 - Add comments" msgstr "" -#: ../source/changelog.md:104 +#: ../source/changelog.md:145 msgid "#298 - Add likes" msgstr "" -#: ../source/changelog.md:105 +#: ../source/changelog.md:146 msgid "#299 - UI notifications" msgstr "" -#: ../source/changelog.md:106 +#: ../source/changelog.md:147 msgid "#381 - Block a user to hide unwanted content" msgstr "" -#: ../source/changelog.md:107 +#: ../source/changelog.md:148 msgid "#382 - Moderation tools" msgstr "" -#: ../source/changelog.md:108 +#: ../source/changelog.md:149 msgid "#655 - Add moderator and owner roles" msgstr "" -#: ../source/changelog.md:112 +#: ../source/changelog.md:153 msgid "Version 0.8.12 (2024/11/17)" msgstr "" -#: ../source/changelog.md:116 +#: ../source/changelog.md:157 msgid "#652 - User can not login on new installation" msgstr "" -#: ../source/changelog.md:120 +#: ../source/changelog.md:161 msgid "PR#651 - Tests - add databases to parallelize more tests" msgstr "" -#: ../source/changelog.md:124 +#: ../source/changelog.md:165 msgid "Version 0.8.11 (2024/10/30)" msgstr "" -#: ../source/changelog.md:126 +#: ../source/changelog.md:167 msgid "FitTrackee is now available for Python 3.13. Python 3.8 is no longer supported, the minimum version is now Python 3.9." msgstr "" -#: ../source/changelog.md:131 +#: ../source/changelog.md:172 msgid "PR#640 - Translations update (Basque)" msgstr "" -#: ../source/changelog.md:132 +#: ../source/changelog.md:173 msgid "PR#645 - Translations update (Russian, Polish)" msgstr "" -#: ../source/changelog.md:152 +#: ../source/changelog.md:193 msgid "#455 - Drop support for Python 3.8" msgstr "" -#: ../source/changelog.md:153 +#: ../source/changelog.md:194 msgid "#639 - Add support for Python 3.13" msgstr "" -#: ../source/changelog.md:157 -#: ../source/changelog.md:254 -#: ../source/changelog.md:334 -#: ../source/changelog.md:681 +#: ../source/changelog.md:198 +#: ../source/changelog.md:295 +#: ../source/changelog.md:375 +#: ../source/changelog.md:722 msgid "@erral" msgstr "" -#: ../source/changelog.md:158 -#: ../source/changelog.md:201 +#: ../source/changelog.md:199 +#: ../source/changelog.md:242 msgid "@sikmir" msgstr "" -#: ../source/changelog.md:159 -#: ../source/changelog.md:648 -#: ../source/changelog.md:758 +#: ../source/changelog.md:200 +#: ../source/changelog.md:689 +#: ../source/changelog.md:799 msgid "Mariuz" msgstr "" -#: ../source/changelog.md:162 +#: ../source/changelog.md:203 msgid "Version 0.8.10 (2024/10/09)" msgstr "" -#: ../source/changelog.md:166 +#: ../source/changelog.md:207 msgid "PR#635 - Add ability to replace gpx title when adding a workout" msgstr "" -#: ../source/changelog.md:167 +#: ../source/changelog.md:208 msgid "PR#636 - Get description from gpx file if present" msgstr "" -#: ../source/changelog.md:171 +#: ../source/changelog.md:212 msgid "#629 - [Translation Request] Russian" msgstr "" -#: ../source/changelog.md:172 +#: ../source/changelog.md:213 msgid "PR#633 - Translations update (Russian, Dutch, Italian, Galician)" msgstr "" -#: ../source/changelog.md:173 +#: ../source/changelog.md:214 msgid "PR#637 - Translations update (Spanish, Russian, German and Galician)" msgstr "" -#: ../source/changelog.md:176 -#: ../source/changelog.md:279 -#: ../source/changelog.md:319 +#: ../source/changelog.md:217 +#: ../source/changelog.md:320 +#: ../source/changelog.md:360 msgid "Basque: 99%" msgstr "" -#: ../source/changelog.md:186 -#: ../source/changelog.md:785 +#: ../source/changelog.md:227 +#: ../source/changelog.md:826 msgid "Polish: 98%" msgstr "" -#: ../source/changelog.md:188 +#: ../source/changelog.md:229 msgid "Russian: 61%" msgstr "" -#: ../source/changelog.md:193 +#: ../source/changelog.md:234 msgid "PR#634 - CI - add PostgreSQL 17" msgstr "" -#: ../source/changelog.md:197 -#: ../source/changelog.md:251 +#: ../source/changelog.md:238 +#: ../source/changelog.md:292 msgid "@boosterl" msgstr "" -#: ../source/changelog.md:198 -#: ../source/changelog.md:255 -#: ../source/changelog.md:295 -#: ../source/changelog.md:417 -#: ../source/changelog.md:567 -#: ../source/changelog.md:616 -#: ../source/changelog.md:719 -#: ../source/changelog.md:789 -#: ../source/changelog.md:829 -#: ../source/changelog.md:999 -#: ../source/changelog.md:1052 -#: ../source/changelog.md:1154 -#: ../source/changelog.md:1210 +#: ../source/changelog.md:239 +#: ../source/changelog.md:296 +#: ../source/changelog.md:336 +#: ../source/changelog.md:458 +#: ../source/changelog.md:608 +#: ../source/changelog.md:657 +#: ../source/changelog.md:760 +#: ../source/changelog.md:830 +#: ../source/changelog.md:870 +#: ../source/changelog.md:1040 +#: ../source/changelog.md:1093 +#: ../source/changelog.md:1195 +#: ../source/changelog.md:1251 msgid "@gallegonovato" msgstr "" -#: ../source/changelog.md:199 -#: ../source/changelog.md:256 -#: ../source/changelog.md:298 -#: ../source/changelog.md:523 -#: ../source/changelog.md:720 -#: ../source/changelog.md:790 -#: ../source/changelog.md:951 -#: ../source/changelog.md:1211 -#: ../source/changelog.md:1263 -#: ../source/changelog.md:1296 +#: ../source/changelog.md:240 +#: ../source/changelog.md:297 +#: ../source/changelog.md:339 +#: ../source/changelog.md:564 +#: ../source/changelog.md:761 +#: ../source/changelog.md:831 +#: ../source/changelog.md:992 +#: ../source/changelog.md:1252 +#: ../source/changelog.md:1304 +#: ../source/changelog.md:1337 msgid "@qwerty287" msgstr "" -#: ../source/changelog.md:200 +#: ../source/changelog.md:241 msgid "@Shura0" msgstr "" -#: ../source/changelog.md:205 +#: ../source/changelog.md:246 msgid "Version 0.8.9 (2024/09/21)" msgstr "" -#: ../source/changelog.md:207 +#: ../source/changelog.md:248 msgid "This release introduces a new field: the workout description.
This field is longer than the \"Notes\" field and will have the same visibility as the workout in a next version (see #125). The \"Notes\" field will remain private." msgstr "" -#: ../source/changelog.md:212 +#: ../source/changelog.md:253 msgid "#610 - Add a description field to workout" msgstr "" -#: ../source/changelog.md:216 +#: ../source/changelog.md:257 msgid "#621 - email username may contain special characters" msgstr "" -#: ../source/changelog.md:217 +#: ../source/changelog.md:258 msgid "#622 - Fix email sending by adding 'Message-ID'" msgstr "" -#: ../source/changelog.md:221 +#: ../source/changelog.md:262 msgid "PR#616 - Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:222 +#: ../source/changelog.md:263 msgid "PR#617 - Translations update (Italian)" msgstr "" -#: ../source/changelog.md:223 +#: ../source/changelog.md:264 msgid "PR#618 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:224 +#: ../source/changelog.md:265 msgid "PR#620 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:225 +#: ../source/changelog.md:266 msgid "PR#624 - Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:226 +#: ../source/changelog.md:267 msgid "PR#625 - Translations update (Galician and Basque)" msgstr "" -#: ../source/changelog.md:227 +#: ../source/changelog.md:268 msgid "PR#626 - Translations update (German)" msgstr "" -#: ../source/changelog.md:228 +#: ../source/changelog.md:269 msgid "PR#631 - Translations update (Basque)" msgstr "" -#: ../source/changelog.md:232 +#: ../source/changelog.md:273 msgid "Bulgarian: 99%" msgstr "" -#: ../source/changelog.md:239 -#: ../source/changelog.md:287 -#: ../source/changelog.md:326 -#: ../source/changelog.md:358 +#: ../source/changelog.md:280 +#: ../source/changelog.md:328 +#: ../source/changelog.md:367 +#: ../source/changelog.md:399 msgid "Italian: 82%" msgstr "" -#: ../source/changelog.md:241 -#: ../source/changelog.md:672 -#: ../source/changelog.md:710 -#: ../source/changelog.md:824 +#: ../source/changelog.md:282 +#: ../source/changelog.md:713 +#: ../source/changelog.md:751 +#: ../source/changelog.md:865 msgid "Polish: 99%" msgstr "" -#: ../source/changelog.md:247 +#: ../source/changelog.md:288 msgid "PR#628 - Replace markdown library" msgstr "" -#: ../source/changelog.md:252 -#: ../source/changelog.md:416 +#: ../source/changelog.md:293 +#: ../source/changelog.md:457 msgid "@byakurau" msgstr "" -#: ../source/changelog.md:253 +#: ../source/changelog.md:294 msgid "@dotlambda" msgstr "" -#: ../source/changelog.md:262 +#: ../source/changelog.md:303 msgid "Version 0.8.8 (2024/09/01)" msgstr "" -#: ../source/changelog.md:264 +#: ../source/changelog.md:305 msgid "FitTrackee is now available in Bulgarian." msgstr "" -#: ../source/changelog.md:268 +#: ../source/changelog.md:309 msgid "#614 - Labels are not translated on workouts average chart" msgstr "" -#: ../source/changelog.md:272 +#: ../source/changelog.md:313 msgid "PR#607 - Translations update (German)" msgstr "" -#: ../source/changelog.md:273 +#: ../source/changelog.md:314 msgid "#608 - [translations request] Bulgarian" msgstr "" -#: ../source/changelog.md:274 +#: ../source/changelog.md:315 msgid "PR#609 - Translations update (Galician and Spanish)" msgstr "" -#: ../source/changelog.md:275 +#: ../source/changelog.md:316 msgid "PR#612 - Translations update (Bulgarian and Czech)" msgstr "" -#: ../source/changelog.md:280 +#: ../source/changelog.md:321 msgid "Bulgarian: 100%" msgstr "" -#: ../source/changelog.md:281 -#: ../source/changelog.md:352 -#: ../source/changelog.md:398 +#: ../source/changelog.md:322 +#: ../source/changelog.md:393 +#: ../source/changelog.md:439 msgid "Czech: 73%" msgstr "" -#: ../source/changelog.md:289 -#: ../source/changelog.md:328 +#: ../source/changelog.md:330 +#: ../source/changelog.md:369 msgid "Polish: 91%" msgstr "" -#: ../source/changelog.md:290 -#: ../source/changelog.md:329 -#: ../source/changelog.md:361 -#: ../source/changelog.md:407 +#: ../source/changelog.md:331 +#: ../source/changelog.md:370 +#: ../source/changelog.md:402 +#: ../source/changelog.md:448 msgid "Portuguese: 98%" msgstr "" -#: ../source/changelog.md:296 -#: ../source/changelog.md:461 -#: ../source/changelog.md:490 -#: ../source/changelog.md:521 -#: ../source/changelog.md:569 +#: ../source/changelog.md:337 +#: ../source/changelog.md:502 +#: ../source/changelog.md:531 +#: ../source/changelog.md:562 +#: ../source/changelog.md:610 msgid "@jmlich" msgstr "" -#: ../source/changelog.md:297 +#: ../source/changelog.md:338 msgid "@mara21" msgstr "" -#: ../source/changelog.md:302 +#: ../source/changelog.md:343 msgid "Version 0.8.7 (2024/08/25)" msgstr "" -#: ../source/changelog.md:306 +#: ../source/changelog.md:347 msgid "#604 - New sport: Swimrun" msgstr "" -#: ../source/changelog.md:310 +#: ../source/changelog.md:351 msgid "PR#598 - CLI - fix limit for user data export cleanup" msgstr "" -#: ../source/changelog.md:314 +#: ../source/changelog.md:355 msgid "PR#600 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:315 +#: ../source/changelog.md:356 msgid "PR#603 - Translations update (Basque)" msgstr "" -#: ../source/changelog.md:324 -#: ../source/changelog.md:601 -#: ../source/changelog.md:820 -#: ../source/changelog.md:1143 +#: ../source/changelog.md:365 +#: ../source/changelog.md:642 +#: ../source/changelog.md:861 +#: ../source/changelog.md:1184 msgid "Galician: 99%" msgstr "" -#: ../source/changelog.md:325 -#: ../source/changelog.md:403 +#: ../source/changelog.md:366 +#: ../source/changelog.md:444 msgid "German: 98%" msgstr "" -#: ../source/changelog.md:330 -#: ../source/changelog.md:825 +#: ../source/changelog.md:371 +#: ../source/changelog.md:866 msgid "Spanish: 99%" msgstr "" -#: ../source/changelog.md:340 +#: ../source/changelog.md:381 msgid "Version 0.8.6 (2024/08/03)" msgstr "" -#: ../source/changelog.md:344 +#: ../source/changelog.md:385 msgid "PR#590 - Translations update (Italian)" msgstr "" -#: ../source/changelog.md:345 +#: ../source/changelog.md:386 msgid "PR#591 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:346 +#: ../source/changelog.md:387 msgid "PR#592 - Translations update (German, Dutch)" msgstr "" -#: ../source/changelog.md:347 +#: ../source/changelog.md:388 msgid "PR#593 - Translations update (German)" msgstr "" -#: ../source/changelog.md:348 +#: ../source/changelog.md:389 msgid "fb10602 - update and fix translations" msgstr "" -#: ../source/changelog.md:351 -#: ../source/changelog.md:397 +#: ../source/changelog.md:392 +#: ../source/changelog.md:438 msgid "Basque: 98%" msgstr "" -#: ../source/changelog.md:353 -#: ../source/changelog.md:635 -#: ../source/changelog.md:741 -#: ../source/changelog.md:856 +#: ../source/changelog.md:394 +#: ../source/changelog.md:676 +#: ../source/changelog.md:782 #: ../source/changelog.md:897 -#: ../source/changelog.md:939 -#: ../source/changelog.md:1087 +#: ../source/changelog.md:938 +#: ../source/changelog.md:980 +#: ../source/changelog.md:1128 msgid "Dutch: 100%" msgstr "" -#: ../source/changelog.md:357 -#: ../source/changelog.md:821 -#: ../source/changelog.md:1112 -#: ../source/changelog.md:1144 +#: ../source/changelog.md:398 +#: ../source/changelog.md:862 +#: ../source/changelog.md:1153 +#: ../source/changelog.md:1185 msgid "German: 99%" msgstr "" -#: ../source/changelog.md:360 -#: ../source/changelog.md:406 +#: ../source/changelog.md:401 +#: ../source/changelog.md:447 msgid "Polish: 92%" msgstr "" -#: ../source/changelog.md:366 +#: ../source/changelog.md:407 msgid "PR#595 - CI - speed up tests" msgstr "" -#: ../source/changelog.md:370 +#: ../source/changelog.md:411 msgid "@ConfusedAlex" msgstr "" -#: ../source/changelog.md:371 +#: ../source/changelog.md:412 msgid "@lukasitaly" msgstr "" -#: ../source/changelog.md:372 +#: ../source/changelog.md:413 msgid "@simontb" msgstr "" -#: ../source/changelog.md:373 +#: ../source/changelog.md:414 msgid "@slothje" msgstr "" -#: ../source/changelog.md:377 +#: ../source/changelog.md:418 msgid "Version 0.8.5 (2024/06/29)" msgstr "" -#: ../source/changelog.md:381 +#: ../source/changelog.md:422 msgid "#566 - [Feature] Improved statistics section with average calculation" msgstr "" -#: ../source/changelog.md:382 +#: ../source/changelog.md:423 msgid "PR#575 - Add page to display sport statistics" msgstr "" -#: ../source/changelog.md:383 +#: ../source/changelog.md:424 msgid "PR#587 - Improve user forms" msgstr "" -#: ../source/changelog.md:387 +#: ../source/changelog.md:428 msgid "PR#588 - Fix click on workout chart checkbox labels" msgstr "" -#: ../source/changelog.md:391 +#: ../source/changelog.md:432 msgid "PR#564 - Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:392 +#: ../source/changelog.md:433 msgid "PR#565 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:393 +#: ../source/changelog.md:434 msgid "PR#571 - Translations update (Galician, Spanish)" msgstr "" -#: ../source/changelog.md:394 +#: ../source/changelog.md:435 msgid "PR#582 - Translations update (Galician, Spanish)" msgstr "" -#: ../source/changelog.md:399 -#: ../source/changelog.md:444 -#: ../source/changelog.md:478 -#: ../source/changelog.md:505 -#: ../source/changelog.md:549 -#: ../source/changelog.md:778 -#: ../source/changelog.md:1192 +#: ../source/changelog.md:440 +#: ../source/changelog.md:485 +#: ../source/changelog.md:519 +#: ../source/changelog.md:546 +#: ../source/changelog.md:590 +#: ../source/changelog.md:819 +#: ../source/changelog.md:1233 msgid "Dutch: 98%" msgstr "" -#: ../source/changelog.md:404 +#: ../source/changelog.md:445 msgid "Italian: 73%" msgstr "" -#: ../source/changelog.md:412 +#: ../source/changelog.md:453 msgid "PR#583 - Simplify docker deployment" msgstr "" -#: ../source/changelog.md:418 -#: ../source/changelog.md:568 +#: ../source/changelog.md:459 +#: ../source/changelog.md:609 msgid "@jderuiter" msgstr "" -#: ../source/changelog.md:419 +#: ../source/changelog.md:460 msgid "@pluja" msgstr "" -#: ../source/changelog.md:425 +#: ../source/changelog.md:466 msgid "Version 0.8.4 (2024/05/22)" msgstr "" -#: ../source/changelog.md:427 +#: ../source/changelog.md:468 msgid "FitTrackee is now available in Portuguese." msgstr "" -#: ../source/changelog.md:431 +#: ../source/changelog.md:472 msgid "f2aec30 - add password strength estimation for Czech" msgstr "" -#: ../source/changelog.md:432 +#: ../source/changelog.md:473 msgid "#563 - CLI - init language preference on user creation" msgstr "" -#: ../source/changelog.md:436 +#: ../source/changelog.md:477 msgid "#550 - Typo: par page instead of per page" msgstr "" -#: ../source/changelog.md:437 +#: ../source/changelog.md:478 msgid "PR#551 - Translations update (Czech)" msgstr "" -#: ../source/changelog.md:438 +#: ../source/changelog.md:479 msgid "PR#555 - Translations update (Czech)" msgstr "" -#: ../source/changelog.md:439 +#: ../source/changelog.md:480 msgid "#558 - [translations request] Portuguese" msgstr "" -#: ../source/changelog.md:443 +#: ../source/changelog.md:484 msgid "Czech: 74%" msgstr "" -#: ../source/changelog.md:449 -#: ../source/changelog.md:483 -#: ../source/changelog.md:510 -#: ../source/changelog.md:554 +#: ../source/changelog.md:490 +#: ../source/changelog.md:524 +#: ../source/changelog.md:551 +#: ../source/changelog.md:595 msgid "Italian: 74%" msgstr "" -#: ../source/changelog.md:450 -#: ../source/changelog.md:484 -#: ../source/changelog.md:511 -#: ../source/changelog.md:555 -#: ../source/changelog.md:604 +#: ../source/changelog.md:491 +#: ../source/changelog.md:525 +#: ../source/changelog.md:552 +#: ../source/changelog.md:596 +#: ../source/changelog.md:645 msgid "Norwegian Bokmål: 53%" msgstr "" -#: ../source/changelog.md:451 -#: ../source/changelog.md:485 -#: ../source/changelog.md:512 -#: ../source/changelog.md:556 +#: ../source/changelog.md:492 +#: ../source/changelog.md:526 +#: ../source/changelog.md:553 +#: ../source/changelog.md:597 msgid "Polish: 88%" msgstr "" -#: ../source/changelog.md:452 +#: ../source/changelog.md:493 msgid "Portuguese: 100%" msgstr "" -#: ../source/changelog.md:457 +#: ../source/changelog.md:498 msgid "PR#556 - API - minor refacto" msgstr "" -#: ../source/changelog.md:458 +#: ../source/changelog.md:499 msgid "PR#557 - API - prepare SQLAlchemy migration" msgstr "" -#: ../source/changelog.md:462 +#: ../source/changelog.md:503 msgid "@voodoopt" msgstr "" -#: ../source/changelog.md:465 +#: ../source/changelog.md:506 msgid "Version 0.8.3 (2024/05/09)" msgstr "" -#: ../source/changelog.md:469 +#: ../source/changelog.md:510 msgid "#546 - workout data are not refreshed after displaying segment" msgstr "" -#: ../source/changelog.md:473 +#: ../source/changelog.md:514 msgid "PR#545 - Translations update (Basque, Czech)" msgstr "" -#: ../source/changelog.md:477 -#: ../source/changelog.md:504 +#: ../source/changelog.md:518 +#: ../source/changelog.md:545 msgid "Czech: 25%" msgstr "" -#: ../source/changelog.md:491 +#: ../source/changelog.md:532 msgid "@urtzai" msgstr "" -#: ../source/changelog.md:494 +#: ../source/changelog.md:535 msgid "Version 0.8.2 (2024/05/08)" msgstr "" -#: ../source/changelog.md:498 +#: ../source/changelog.md:539 msgid "PR#540 - Translations update (German)" msgstr "" -#: ../source/changelog.md:499 +#: ../source/changelog.md:540 msgid "PR#542 - Translations update (Czech)" msgstr "" -#: ../source/changelog.md:500 +#: ../source/changelog.md:541 msgid "PR#544 - Translations update (German, Czech)" msgstr "" -#: ../source/changelog.md:503 -#: ../source/changelog.md:547 +#: ../source/changelog.md:544 +#: ../source/changelog.md:588 msgid "Basque: 88%" msgstr "" -#: ../source/changelog.md:517 +#: ../source/changelog.md:558 msgid "PR#543 - tools - replace black, flake8 and isort with ruff" msgstr "" -#: ../source/changelog.md:522 +#: ../source/changelog.md:563 msgid "@OndrejZivny" msgstr "" -#: ../source/changelog.md:526 +#: ../source/changelog.md:567 msgid "Version 0.8.1 (2024/05/01)" msgstr "" -#: ../source/changelog.md:530 +#: ../source/changelog.md:571 msgid "PR#527 - improve Sports endpoints response time" msgstr "" -#: ../source/changelog.md:534 +#: ../source/changelog.md:575 msgid "PR#531 - Minor navigation fixes on mobile" msgstr "" -#: ../source/changelog.md:535 +#: ../source/changelog.md:576 msgid "PR#532 - Fix footer color on dark mode" msgstr "" -#: ../source/changelog.md:536 +#: ../source/changelog.md:577 msgid "PR#536 - Accessibility fixes" msgstr "" -#: ../source/changelog.md:540 +#: ../source/changelog.md:581 msgid "PR#526 - Translations update (Dutch, Galician, Norwegian Bokmål)" msgstr "" -#: ../source/changelog.md:541 +#: ../source/changelog.md:582 msgid "PR#533 - Translations update (Czech)" msgstr "" -#: ../source/changelog.md:542 +#: ../source/changelog.md:583 msgid "#534 - [translations request] Czech" msgstr "" -#: ../source/changelog.md:543 +#: ../source/changelog.md:584 msgid "PR#537 - Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:544 +#: ../source/changelog.md:585 msgid "PR#538 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:548 +#: ../source/changelog.md:589 msgid "Czech: 15%" msgstr "" -#: ../source/changelog.md:553 +#: ../source/changelog.md:594 msgid "German: 88%" msgstr "" -#: ../source/changelog.md:561 +#: ../source/changelog.md:602 msgid "PR#528 - README reworked" msgstr "" -#: ../source/changelog.md:562 +#: ../source/changelog.md:603 msgid "PR#530 - specify AGPLv3 license" msgstr "" -#: ../source/changelog.md:566 -#: ../source/changelog.md:867 -#: ../source/changelog.md:1208 +#: ../source/changelog.md:607 +#: ../source/changelog.md:908 +#: ../source/changelog.md:1249 msgid "@comradekingu" msgstr "" -#: ../source/changelog.md:573 +#: ../source/changelog.md:614 msgid "Version 0.8.0 (2024/04/21)" msgstr "" -#: ../source/changelog.md:575 +#: ../source/changelog.md:616 msgid "FitTrackee now lets you associate equipment with workouts and filter workouts on notes." msgstr "" -#: ../source/changelog.md:579 +#: ../source/changelog.md:620 msgid "#259 - Feature request: \"Equipment\" that can be associated with workouts" msgstr "" -#: ../source/changelog.md:580 +#: ../source/changelog.md:621 msgid "#512 - Add ability to filter on notes in Workouts List" msgstr "" -#: ../source/changelog.md:584 +#: ../source/changelog.md:625 msgid "#508 - Stopped speed threshold unit is missing on sports list" msgstr "" -#: ../source/changelog.md:585 +#: ../source/changelog.md:626 msgid "3b6fa25 - fix workouts table display on small resolutions" msgstr "" -#: ../source/changelog.md:586 +#: ../source/changelog.md:627 msgid "51758b4 - fix on filters hiding on small resolutions" msgstr "" -#: ../source/changelog.md:590 +#: ../source/changelog.md:631 msgid "PR#507 Translations update (Galician)" msgstr "" -#: ../source/changelog.md:591 +#: ../source/changelog.md:632 msgid "PR#510 Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:592 +#: ../source/changelog.md:633 msgid "PR#511 Translations update (Galician)" msgstr "" -#: ../source/changelog.md:593 +#: ../source/changelog.md:634 msgid "PR#521 Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:594 +#: ../source/changelog.md:635 msgid "PR#524 Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:597 +#: ../source/changelog.md:638 msgid "Basque: 89%" msgstr "" -#: ../source/changelog.md:598 +#: ../source/changelog.md:639 msgid "Dutch: 89%" msgstr "" -#: ../source/changelog.md:602 +#: ../source/changelog.md:643 msgid "German: 89%" msgstr "" -#: ../source/changelog.md:603 +#: ../source/changelog.md:644 msgid "Italian: 75%" msgstr "" -#: ../source/changelog.md:605 +#: ../source/changelog.md:646 msgid "Polish: 89%" msgstr "" -#: ../source/changelog.md:610 +#: ../source/changelog.md:651 msgid "#502 - Remove deprecated commands" msgstr "" -#: ../source/changelog.md:611 +#: ../source/changelog.md:652 msgid "PR#506 - CLI - update database commands" msgstr "" -#: ../source/changelog.md:615 -#: ../source/changelog.md:1156 -#: ../source/changelog.md:1209 -#: ../source/changelog.md:1295 +#: ../source/changelog.md:656 +#: ../source/changelog.md:1197 +#: ../source/changelog.md:1250 +#: ../source/changelog.md:1336 msgid "@jat255" msgstr "" -#: ../source/changelog.md:622 +#: ../source/changelog.md:663 msgid "Version 0.7.32 (2024/03/10)" msgstr "" -#: ../source/changelog.md:626 +#: ../source/changelog.md:667 msgid "#504 - Database migrations fail" msgstr "" -#: ../source/changelog.md:630 +#: ../source/changelog.md:671 msgid "#496 Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:631 +#: ../source/changelog.md:672 msgid "#499 Translations update (Polish)" msgstr "" -#: ../source/changelog.md:640 -#: ../source/changelog.md:670 -#: ../source/changelog.md:708 -#: ../source/changelog.md:746 -#: ../source/changelog.md:783 +#: ../source/changelog.md:681 +#: ../source/changelog.md:711 +#: ../source/changelog.md:749 +#: ../source/changelog.md:787 +#: ../source/changelog.md:824 msgid "Italian: 84%" msgstr "" -#: ../source/changelog.md:641 -#: ../source/changelog.md:671 -#: ../source/changelog.md:709 -#: ../source/changelog.md:747 -#: ../source/changelog.md:784 +#: ../source/changelog.md:682 +#: ../source/changelog.md:712 +#: ../source/changelog.md:750 +#: ../source/changelog.md:788 +#: ../source/changelog.md:825 msgid "Norwegian Bokmål: 60%" msgstr "" -#: ../source/changelog.md:647 -#: ../source/changelog.md:950 -#: ../source/changelog.md:1153 -#: ../source/changelog.md:1207 -#: ../source/changelog.md:1262 -#: ../source/changelog.md:1294 +#: ../source/changelog.md:688 +#: ../source/changelog.md:991 +#: ../source/changelog.md:1194 +#: ../source/changelog.md:1248 +#: ../source/changelog.md:1303 +#: ../source/changelog.md:1335 msgid "@bjornclauw" msgstr "" -#: ../source/changelog.md:651 +#: ../source/changelog.md:692 msgid "Version 0.7.31 (2024/02/10)" msgstr "" -#: ../source/changelog.md:653 +#: ../source/changelog.md:694 msgid "Basque is now available in FitTrackee interface." msgstr "" -#: ../source/changelog.md:657 +#: ../source/changelog.md:698 msgid "PR#495 - fix menu display when clicking on application name" msgstr "" -#: ../source/changelog.md:661 +#: ../source/changelog.md:702 msgid "#490 [Translation Request] EU - Basque" msgstr "" -#: ../source/changelog.md:677 +#: ../source/changelog.md:718 msgid "PR#494 - Update install-python command" msgstr "" -#: ../source/changelog.md:684 +#: ../source/changelog.md:725 msgid "Version 0.7.30 (2024/02/04)" msgstr "" -#: ../source/changelog.md:688 +#: ../source/changelog.md:729 msgid "b748459 - Update alert message colors on dark mode" msgstr "" -#: ../source/changelog.md:692 +#: ../source/changelog.md:733 msgid "PR#481 - Handle keyboard navigation on dropdowns" msgstr "" -#: ../source/changelog.md:693 +#: ../source/changelog.md:734 msgid "3821e37 - Make calendar arrows accessible to keyboard navigation" msgstr "" -#: ../source/changelog.md:694 +#: ../source/changelog.md:735 msgid "PR#488 - CLI - fix user creation when user already exists with same email" msgstr "" -#: ../source/changelog.md:695 +#: ../source/changelog.md:736 msgid "PR#489 - Handle keyboard navigation on calendar" msgstr "" -#: ../source/changelog.md:699 +#: ../source/changelog.md:740 msgid "PR#482 - Translations update (Galician and Spanish)" msgstr "" -#: ../source/changelog.md:700 +#: ../source/changelog.md:741 msgid "PR#484 - Translations update (German)" msgstr "" -#: ../source/changelog.md:715 +#: ../source/changelog.md:756 msgid "aff4d68 - CI - update actions version" msgstr "" -#: ../source/changelog.md:724 +#: ../source/changelog.md:765 msgid "Version 0.7.29 (2024/01/06)" msgstr "" -#: ../source/changelog.md:728 +#: ../source/changelog.md:769 msgid "8aa4cff - Update loader color on dark theme" msgstr "" -#: ../source/changelog.md:729 +#: ../source/changelog.md:770 msgid "#478 - Make application name clickable to access dashboard" msgstr "" -#: ../source/changelog.md:733 +#: ../source/changelog.md:774 msgid "PR#479 - Minor fixes on UI" msgstr "" -#: ../source/changelog.md:737 +#: ../source/changelog.md:778 msgid "PR#476 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:738 +#: ../source/changelog.md:779 msgid "PR#477 - Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:753 +#: ../source/changelog.md:794 msgid "PR#475 - Build - use poetry-core instead of poetry" msgstr "" -#: ../source/changelog.md:757 +#: ../source/changelog.md:798 msgid "@traxys" msgstr "" -#: ../source/changelog.md:759 +#: ../source/changelog.md:800 msgid "Koen" msgstr "" -#: ../source/changelog.md:762 +#: ../source/changelog.md:803 msgid "Version 0.7.28 (2023/12/23)" msgstr "" -#: ../source/changelog.md:766 +#: ../source/changelog.md:807 msgid "PR#474 - Improve links display" msgstr "" -#: ../source/changelog.md:770 +#: ../source/changelog.md:811 msgid "6e215aa - fix background color on dark theme when modal is displayed" msgstr "" -#: ../source/changelog.md:774 +#: ../source/changelog.md:815 msgid "PR#473 - Translations update (Galician, Spanish and German)" msgstr "" -#: ../source/changelog.md:794 +#: ../source/changelog.md:835 msgid "Version 0.7.27 (2023/12/20)" msgstr "" -#: ../source/changelog.md:798 +#: ../source/changelog.md:839 msgid "#113 - add a dark mode" msgstr "" -#: ../source/changelog.md:799 +#: ../source/changelog.md:840 msgid "PR#464 - Update user preferences display" msgstr "" -#: ../source/changelog.md:800 +#: ../source/changelog.md:841 msgid "PR#471 - add new sport: \"Cycling (Trekking)\"" msgstr "" -#: ../source/changelog.md:804 +#: ../source/changelog.md:845 msgid "PR#469 - change UI display only on login ou user preferences update" msgstr "" -#: ../source/changelog.md:805 +#: ../source/changelog.md:846 msgid "PR#472 - fix redirection when resetting password" msgstr "" -#: ../source/changelog.md:809 +#: ../source/changelog.md:850 msgid "PR#468 - Translations update (Galician & Spanish)" msgstr "" -#: ../source/changelog.md:813 +#: ../source/changelog.md:854 msgid "#456 - Drop PostgreSQL 11 support" msgstr "" -#: ../source/changelog.md:822 -#: ../source/changelog.md:861 +#: ../source/changelog.md:863 #: ../source/changelog.md:902 -#: ../source/changelog.md:944 -#: ../source/changelog.md:993 -#: ../source/changelog.md:1045 +#: ../source/changelog.md:943 +#: ../source/changelog.md:985 +#: ../source/changelog.md:1034 +#: ../source/changelog.md:1086 msgid "Italian: 85%" msgstr "" -#: ../source/changelog.md:823 -#: ../source/changelog.md:862 +#: ../source/changelog.md:864 +#: ../source/changelog.md:903 msgid "Norwegian Bokmål: 61%" msgstr "" -#: ../source/changelog.md:835 +#: ../source/changelog.md:876 msgid "Version 0.7.26 (2023/11/19)" msgstr "" -#: ../source/changelog.md:839 +#: ../source/changelog.md:880 msgid "#224 - Missing elevation results in incorrect ascent/descent total" msgstr "" -#: ../source/changelog.md:844 +#: ../source/changelog.md:885 msgid "PR#444 - Translations update (Norwegian Bokmål)" msgstr "" -#: ../source/changelog.md:849 +#: ../source/changelog.md:890 msgid "In addition to dependencies update:" msgstr "" -#: ../source/changelog.md:851 +#: ../source/changelog.md:892 msgid "PR#449 - Update vue, tooling and chart library" msgstr "" -#: ../source/changelog.md:852 +#: ../source/changelog.md:893 msgid "PR#450 - Update gpxpy to 1.6.1" msgstr "" -#: ../source/changelog.md:870 +#: ../source/changelog.md:911 msgid "Version 0.7.25 (2023/10/08)" msgstr "" -#: ../source/changelog.md:874 +#: ../source/changelog.md:915 msgid "#441 - Errors after upgrade to 0.7.24" msgstr "" -#: ../source/changelog.md:877 +#: ../source/changelog.md:918 msgid "Version 0.7.24 (2023/10/04)" msgstr "" -#: ../source/changelog.md:881 +#: ../source/changelog.md:922 msgid "PR#433 - Handle encoded password in EMAIL_URL" msgstr "" -#: ../source/changelog.md:885 +#: ../source/changelog.md:926 msgid "PR#427 - fix typos and translations + refacto" msgstr "" -#: ../source/changelog.md:886 +#: ../source/changelog.md:927 msgid "PR#431 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:890 +#: ../source/changelog.md:931 msgid "PR#428 - CI - Add PostgreSQL 16" msgstr "" -#: ../source/changelog.md:891 +#: ../source/changelog.md:932 msgid "2bcff2e - API - update Flask to 3.0+" msgstr "" -#: ../source/changelog.md:892 +#: ../source/changelog.md:933 msgid "PR#436 - CI - Add Python 3.12" msgstr "" -#: ../source/changelog.md:893 +#: ../source/changelog.md:934 msgid "PR#438 - CI - update workflows" msgstr "" -#: ../source/changelog.md:903 -#: ../source/changelog.md:945 -#: ../source/changelog.md:994 -#: ../source/changelog.md:1046 -#: ../source/changelog.md:1198 +#: ../source/changelog.md:944 +#: ../source/changelog.md:986 +#: ../source/changelog.md:1035 +#: ../source/changelog.md:1087 +#: ../source/changelog.md:1239 msgid "Norwegian Bokmål: 35%" msgstr "" -#: ../source/changelog.md:911 +#: ../source/changelog.md:952 msgid "Version 0.7.23 (2023/09/14)" msgstr "" -#: ../source/changelog.md:915 +#: ../source/changelog.md:956 msgid "PR#421 - remove darksky from available weather providers in .env" msgstr "" -#: ../source/changelog.md:916 +#: ../source/changelog.md:957 msgid "PR#426 - Update default tile server (thanks to @astridx)" msgstr "" -#: ../source/changelog.md:920 +#: ../source/changelog.md:961 msgid "PR#422 - CI - fix e2e tests with packaged version" msgstr "" -#: ../source/changelog.md:923 +#: ../source/changelog.md:964 msgid "Version 0.7.22 (2023/08/23)" msgstr "" -#: ../source/changelog.md:927 +#: ../source/changelog.md:968 msgid "PR#411 - Fix various typos" msgstr "" -#: ../source/changelog.md:928 +#: ../source/changelog.md:969 msgid "PR#416 - fix modal navigation and closing" msgstr "" -#: ../source/changelog.md:933 +#: ../source/changelog.md:974 msgid "PR#410 - Translations update (German)" msgstr "" -#: ../source/changelog.md:934 +#: ../source/changelog.md:975 msgid "PR#415 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:935 +#: ../source/changelog.md:976 msgid "PR#417 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:936 +#: ../source/changelog.md:977 msgid "PR#418 - Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:952 -#: ../source/changelog.md:1001 +#: ../source/changelog.md:993 +#: ../source/changelog.md:1042 msgid "Mariusz" msgstr "" -#: ../source/changelog.md:955 +#: ../source/changelog.md:996 msgid "Version 0.7.21 (2023/07/30)" msgstr "" -#: ../source/changelog.md:959 +#: ../source/changelog.md:1000 msgid "#407 - Workout display error when speeds are zero" msgstr "" -#: ../source/changelog.md:964 +#: ../source/changelog.md:1005 msgid "PR#409 - CI - update actions version" msgstr "" -#: ../source/changelog.md:967 +#: ../source/changelog.md:1008 msgid "Version 0.7.20 (2023/07/22)" msgstr "" -#: ../source/changelog.md:971 +#: ../source/changelog.md:1012 msgid "#400 - Add new sport: open water swimming" msgstr "" -#: ../source/changelog.md:976 +#: ../source/changelog.md:1017 msgid "PR#398 - Fix language dropdown label" msgstr "" -#: ../source/changelog.md:977 +#: ../source/changelog.md:1018 msgid "#402 - handle gpx file without elevation" msgstr "" -#: ../source/changelog.md:982 +#: ../source/changelog.md:1023 msgid "PR#399 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:983 +#: ../source/changelog.md:1024 msgid "PR#401 - Translations update (Galician and Polish)" msgstr "" -#: ../source/changelog.md:984 +#: ../source/changelog.md:1025 msgid "PR#406 - Translations update (Galician and Spanish)" msgstr "" -#: ../source/changelog.md:988 -#: ../source/changelog.md:1040 +#: ../source/changelog.md:1029 +#: ../source/changelog.md:1081 msgid "Dutch: 97%" msgstr "" -#: ../source/changelog.md:992 -#: ../source/changelog.md:1044 +#: ../source/changelog.md:1033 +#: ../source/changelog.md:1085 msgid "German: 97%" msgstr "" -#: ../source/changelog.md:995 +#: ../source/changelog.md:1036 msgid "Polish: 56%" msgstr "" -#: ../source/changelog.md:1006 +#: ../source/changelog.md:1047 msgid "Version 0.7.19 (2023/07/15)" msgstr "" -#: ../source/changelog.md:1010 +#: ../source/changelog.md:1051 msgid "PR#380 - Update documentation link" msgstr "" -#: ../source/changelog.md:1011 +#: ../source/changelog.md:1052 msgid "#390 - Improve UI" msgstr "" -#: ../source/changelog.md:1012 +#: ../source/changelog.md:1053 msgid "#391 - Add new sport: paragliding" msgstr "" -#: ../source/changelog.md:1017 +#: ../source/changelog.md:1058 msgid "#384 - Inconsistent page with between workout with and without GPS data" msgstr "" -#: ../source/changelog.md:1018 +#: ../source/changelog.md:1059 msgid "#393 - PIL.Image module has no attribute ANTIALIAS" msgstr "" -#: ../source/changelog.md:1023 +#: ../source/changelog.md:1064 msgid "PR#394 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:1024 +#: ../source/changelog.md:1065 msgid "PR#397 - Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:1027 -#: ../source/changelog.md:1074 -#: ../source/changelog.md:1396 +#: ../source/changelog.md:1068 +#: ../source/changelog.md:1115 +#: ../source/changelog.md:1437 msgid "Documentation" msgstr "" -#: ../source/changelog.md:1029 +#: ../source/changelog.md:1070 msgid "PR#386 - Minor fix in CONTRIBUTING.md" msgstr "" -#: ../source/changelog.md:1030 +#: ../source/changelog.md:1071 msgid "PR#388 - Minor typo in CONTRIBUTING.md" msgstr "" -#: ../source/changelog.md:1035 +#: ../source/changelog.md:1076 msgid "#395 - CI - test a packaged version of FitTrackee" msgstr "" -#: ../source/changelog.md:1036 +#: ../source/changelog.md:1077 msgid "cc3fe1c CI - update python and postgresql default versions" msgstr "" -#: ../source/changelog.md:1043 +#: ../source/changelog.md:1084 msgid "Galician: 98%" msgstr "" -#: ../source/changelog.md:1047 +#: ../source/changelog.md:1088 msgid "Polish: 42%" msgstr "" -#: ../source/changelog.md:1051 +#: ../source/changelog.md:1092 msgid "@dkm" msgstr "" -#: ../source/changelog.md:1058 +#: ../source/changelog.md:1099 msgid "Version 0.7.18 (2023/06/25)" msgstr "" -#: ../source/changelog.md:1060 +#: ../source/changelog.md:1101 msgid "Polish is available in FitTrackee interface (partially translated).
Documentation is now translated in French (note: documentation translations are not yet available on Weblate)." msgstr "" -#: ../source/changelog.md:1063 +#: ../source/changelog.md:1104 msgid "Important: Python 3.7 is no longer supported, the minimum version is now Python 3.8.1." msgstr "" -#: ../source/changelog.md:1067 +#: ../source/changelog.md:1108 msgid "#351 - [Translation Request] Polish" msgstr "" -#: ../source/changelog.md:1068 +#: ../source/changelog.md:1109 msgid "PR#370 - Translations update (Dutch, thanks to @bjornclauw)" msgstr "" -#: ../source/changelog.md:1069 +#: ../source/changelog.md:1110 msgid "PR#371 - Translations update (Polish, thanks to Mariusz on Weblate)" msgstr "" -#: ../source/changelog.md:1070 +#: ../source/changelog.md:1111 msgid "PR#375 - Translations update (French, thanks to @Thovi98)" msgstr "" -#: ../source/changelog.md:1071 +#: ../source/changelog.md:1112 msgid "PR#376 - Translations update (German, thanks to @qwerty287)" msgstr "" -#: ../source/changelog.md:1076 +#: ../source/changelog.md:1117 msgid "1375986 - Change documentation theme for Furo" msgstr "" -#: ../source/changelog.md:1077 +#: ../source/changelog.md:1118 msgid "#377 - Init documentation translation" msgstr "" -#: ../source/changelog.md:1082 +#: ../source/changelog.md:1123 msgid "#354 - Drop support for Python 3.7" msgstr "" -#: ../source/changelog.md:1083 +#: ../source/changelog.md:1124 msgid "PR#374 - Docker - install fittrackee in a virtualenv" msgstr "" -#: ../source/changelog.md:1092 -#: ../source/changelog.md:1113 -#: ../source/changelog.md:1145 -#: ../source/changelog.md:1197 +#: ../source/changelog.md:1133 +#: ../source/changelog.md:1154 +#: ../source/changelog.md:1186 +#: ../source/changelog.md:1238 msgid "Italian: 87%" msgstr "" -#: ../source/changelog.md:1093 -#: ../source/changelog.md:1114 -#: ../source/changelog.md:1146 +#: ../source/changelog.md:1134 +#: ../source/changelog.md:1155 +#: ../source/changelog.md:1187 msgid "Norwegian Bokmål: 36%" msgstr "" -#: ../source/changelog.md:1094 +#: ../source/changelog.md:1135 msgid "Polish: 43%" msgstr "" -#: ../source/changelog.md:1097 +#: ../source/changelog.md:1138 msgid "Thanks to all contributors." msgstr "" -#: ../source/changelog.md:1100 +#: ../source/changelog.md:1141 msgid "Version 0.7.17 (2023/06/03)" msgstr "" -#: ../source/changelog.md:1104 +#: ../source/changelog.md:1145 msgid "PR#366, PR#369 - Translations update from Hosted Weblate (Galician, thanks to @xmgz)" msgstr "" -#: ../source/changelog.md:1105 +#: ../source/changelog.md:1146 msgid "PR#367 - Translations update (Spanish, French)" msgstr "" -#: ../source/changelog.md:1115 -#: ../source/changelog.md:1147 +#: ../source/changelog.md:1156 +#: ../source/changelog.md:1188 msgid "Polish: 3%" msgstr "" -#: ../source/changelog.md:1119 +#: ../source/changelog.md:1160 msgid "Version 0.7.16 (2023/05/29)" msgstr "" -#: ../source/changelog.md:1123 +#: ../source/changelog.md:1164 msgid "PR#358 - Add user preference for filtering of GPX speed data" msgstr "" -#: ../source/changelog.md:1128 +#: ../source/changelog.md:1169 msgid "#359 - Footer overlaps content on user preferences page" msgstr "" -#: ../source/changelog.md:1133 +#: ../source/changelog.md:1174 msgid "PR#350 - Translations update from Hosted Weblate (Galician)" msgstr "" -#: ../source/changelog.md:1134 +#: ../source/changelog.md:1175 msgid "PR#352 - Translations update from Hosted Weblate (Dutch)" msgstr "" -#: ../source/changelog.md:1135 +#: ../source/changelog.md:1176 msgid "PR#356 - Init Polish translation files" msgstr "" -#: ../source/changelog.md:1136 +#: ../source/changelog.md:1177 msgid "PR#357 - Translations update from Hosted Weblate (Polish)" msgstr "" -#: ../source/changelog.md:1137 +#: ../source/changelog.md:1178 msgid "PR#365 - Translations update from Hosted Weblate (Spanish)" msgstr "" -#: ../source/changelog.md:1150 +#: ../source/changelog.md:1191 msgid "Note: Polish is not yet available in FitTrackee interface." msgstr "" -#: ../source/changelog.md:1155 +#: ../source/changelog.md:1196 msgid "@gnu-ewm" msgstr "" -#: ../source/changelog.md:1162 +#: ../source/changelog.md:1203 msgid "Version 0.7.15 (2023/04/12)" msgstr "" -#: ../source/changelog.md:1164 +#: ../source/changelog.md:1205 msgid "Among enhancements and fixes, FitTrackee is now available in Galician, Spanish and partially in Norwegian Bokmål (see translation status below)." msgstr "" -#: ../source/changelog.md:1166 +#: ../source/changelog.md:1207 msgid "Note: DarkSky API support is removed, since the service shut down on March 31, 2023." msgstr "" -#: ../source/changelog.md:1171 +#: ../source/changelog.md:1212 msgid "#319 - Add cli to create users" msgstr "" -#: ../source/changelog.md:1172 +#: ../source/changelog.md:1213 msgid "#329 - Make \"start elevation axis at zero\" sticky" msgstr "" -#: ../source/changelog.md:1173 +#: ../source/changelog.md:1214 msgid "#333 - Feature request: filter workouts by title" msgstr "" -#: ../source/changelog.md:1174 +#: ../source/changelog.md:1215 msgid "#338 - Display relevant error message when
/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},aVe=/^(?:[ \t]*(?:\n|$))+/,sVe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,oVe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,rr=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,iVe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,sO=/(?:[*+-]|\d{1,9}[.)])/,oO=Rt(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,sO).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),Np=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,rVe=/^[^\n]+/,vp=/(?!\s*\])(?:\\.|[^\[\]\\])+/,uVe=Rt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",vp).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),lVe=Rt(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,sO).getRegex(),Dl="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",bp=/|$))/,cVe=Rt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",bp).replace("tag",Dl).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),iO=Rt(Np).replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Dl).getRegex(),dVe=Rt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",iO).getRegex(),Cp={blockquote:dVe,code:sVe,def:uVe,fences:oVe,heading:iVe,hr:rr,html:cVe,lheading:oO,list:lVe,newline:aVe,paragraph:iO,table:Ii,text:rVe},ef=Rt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Dl).getRegex(),EVe={...Cp,table:ef,paragraph:Rt(Np).replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ef).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Dl).getRegex()},pVe={...Cp,html:Rt(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",bp).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ii,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Rt(Np).replace("hr",rr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",oO).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},rO=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,mVe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,uO=/^( {2,}|\\)\n(?!\s*$)/,TVe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,hVe=Rt(/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,"u").replace(/punct/g,Ll).getRegex(),SVe=Rt("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)","gu").replace(/notPunctSpace/g,lO).replace(/punctSpace/g,Pp).replace(/punct/g,Ll).getRegex(),AVe=Rt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,lO).replace(/punctSpace/g,Pp).replace(/punct/g,Ll).getRegex(),OVe=Rt(/\\(punct)/,"gu").replace(/punct/g,Ll).getRegex(),IVe=Rt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),gVe=Rt(bp).replace("(?:-->|$)","-->").getRegex(),RVe=Rt("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",gVe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ku=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,NVe=Rt(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",Ku).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),cO=Rt(/^!?\[(label)\]\[(ref)\]/).replace("label",Ku).replace("ref",vp).getRegex(),dO=Rt(/^!?\[(ref)\](?:\[\])?/).replace("ref",vp).getRegex(),vVe=Rt("reflink|nolink(?!\\()","g").replace("reflink",cO).replace("nolink",dO).getRegex(),Dp={_backpedal:Ii,anyPunctuation:OVe,autolink:IVe,blockSkip:fVe,br:uO,code:mVe,del:Ii,emStrongLDelim:hVe,emStrongRDelimAst:SVe,emStrongRDelimUnd:AVe,escape:rO,link:NVe,nolink:dO,punctuation:_Ve,reflink:cO,reflinkSearch:vVe,tag:RVe,text:TVe,url:Ii},bVe={...Dp,link:Rt(/^!?\[(label)\]\((.*?)\)/).replace("label",Ku).getRegex(),reflink:Rt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ku).getRegex()},_E={...Dp,escape:Rt(rO).replace("])","~|])").getRegex(),url:Rt(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},tf=e=>PVe[e];function _a(e,t){if(t){if(An.escapeTest.test(e))return e.replace(An.escapeReplace,tf)}else if(An.escapeTestNoEncode.test(e))return e.replace(An.escapeReplaceNoEncode,tf);return e}function nf(e){try{e=encodeURI(e).replace(An.percentDecode,"%")}catch{return null}return e}function af(e,t){var o;const n=e.replace(An.findPipe,(i,r,u)=>{let l=!1,d=r;for(;--d>=0&&u[d]==="\\";)l=!l;return l?"|":" |"}),a=n.split(An.splitPipe);let s=0;if(a[0].trim()||a.shift(),a.length>0&&!((o=a.at(-1))!=null&&o.trim())&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length{const i=o.match(n.other.beginningSpace);if(i===null)return o;const[r]=i;return r.length>=s.length?o.slice(s.length):o}).join(` +`)}class qu{constructor(t){Nt(this,"options");Nt(this,"rules");Nt(this,"lexer");this.options=t||Hs}space(t){const n=this.rules.block.newline.exec(t);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(t){const n=this.rules.block.code.exec(t);if(n){const a=n[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?a:Jo(a,` +`)}}}fences(t){const n=this.rules.block.fences.exec(t);if(n){const a=n[0],s=LVe(a,n[3]||"",this.rules);return{type:"code",raw:a,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:s}}}heading(t){const n=this.rules.block.heading.exec(t);if(n){let a=n[2].trim();if(this.rules.other.endingHash.test(a)){const s=Jo(a,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(a=s.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:a,tokens:this.lexer.inline(a)}}}hr(t){const n=this.rules.block.hr.exec(t);if(n)return{type:"hr",raw:Jo(n[0],` +`)}}blockquote(t){const n=this.rules.block.blockquote.exec(t);if(n){let a=Jo(n[0],` +`).split(` +`),s="",o="";const i=[];for(;a.length>0;){let r=!1;const u=[];let l;for(l=0;l1,o={type:"list",raw:"",ordered:s,start:s?+a.slice(0,-1):"",loose:!1,items:[]};a=s?`\\d{1,9}\\${a.slice(-1)}`:`\\${a}`,this.options.pedantic&&(a=s?a:"[*+-]");const i=this.rules.other.listItemRegex(a);let r=!1;for(;t;){let l=!1,d="",E="";if(!(n=i.exec(t))||this.rules.block.hr.test(t))break;d=n[0],t=t.substring(d.length);let c=n[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,R=>" ".repeat(3*R.length)),m=t.split(` +`,1)[0],_=!c.trim(),f=0;if(this.options.pedantic?(f=2,E=c.trimStart()):_?f=n[1].length+1:(f=n[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,E=c.slice(f),f+=n[1].length),_&&this.rules.other.blankLine.test(m)&&(d+=m+` +`,t=t.substring(m.length+1),l=!0),!l){const R=this.rules.other.nextBulletRegex(f),I=this.rules.other.hrRegex(f),g=this.rules.other.fencesBeginRegex(f),N=this.rules.other.headingBeginRegex(f),b=this.rules.other.htmlBeginRegex(f);for(;t;){const C=t.split(` +`,1)[0];let y;if(m=C,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),y=m):y=m.replace(this.rules.other.tabCharGlobal," "),g.test(m)||N.test(m)||b.test(m)||R.test(m)||I.test(m))break;if(y.search(this.rules.other.nonSpaceChar)>=f||!m.trim())E+=` +`+y.slice(f);else{if(_||c.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||g.test(c)||N.test(c)||I.test(c))break;E+=` +`+m}!_&&!m.trim()&&(_=!0),d+=C+` +`,t=t.substring(C.length+1),c=y.slice(f)}}o.loose||(r?o.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(r=!0));let O=null,S;this.options.gfm&&(O=this.rules.other.listIsTask.exec(E),O&&(S=O[0]!=="[ ] ",E=E.replace(this.rules.other.listReplaceTask,""))),o.items.push({type:"list_item",raw:d,task:!!O,checked:S,loose:!1,text:E,tokens:[]}),o.raw+=d}const u=o.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l=0;lc.type==="space"),E=d.length>0&&d.some(c=>this.rules.other.anyLine.test(c.raw));o.loose=E}if(o.loose)for(let l=0;l({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[d]})));return i}}lheading(t){const n=this.rules.block.lheading.exec(t);if(n)return{type:"heading",raw:n[0],depth:n[2].charAt(0)==="="?1:2,text:n[1],tokens:this.lexer.inline(n[1])}}paragraph(t){const n=this.rules.block.paragraph.exec(t);if(n){const a=n[1].charAt(n[1].length-1)===` +`?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:a,tokens:this.lexer.inline(a)}}}text(t){const n=this.rules.block.text.exec(t);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(t){const n=this.rules.inline.escape.exec(t);if(n)return{type:"escape",raw:n[0],text:n[1]}}tag(t){const n=this.rules.inline.tag.exec(t);if(n)return!this.lexer.state.inLink&&this.rules.other.startATag.test(n[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(t){const n=this.rules.inline.link.exec(t);if(n){const a=n[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(a)){if(!this.rules.other.endAngleBracket.test(a))return;const i=Jo(a.slice(0,-1),"\\");if((a.length-i.length)%2===0)return}else{const i=DVe(n[2],"()");if(i>-1){const u=(n[0].indexOf("!")===0?5:4)+n[1].length+i;n[2]=n[2].substring(0,i),n[0]=n[0].substring(0,u).trim(),n[3]=""}}let s=n[2],o="";if(this.options.pedantic){const i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],o=i[3])}else o=n[3]?n[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(a)?s=s.slice(1):s=s.slice(1,-1)),sf(n,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},n[0],this.lexer,this.rules)}}reflink(t,n){let a;if((a=this.rules.inline.reflink.exec(t))||(a=this.rules.inline.nolink.exec(t))){const s=(a[2]||a[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=n[s.toLowerCase()];if(!o){const i=a[0].charAt(0);return{type:"text",raw:i,text:i}}return sf(a,o,a[0],this.lexer,this.rules)}}emStrong(t,n,a=""){let s=this.rules.inline.emStrongLDelim.exec(t);if(!s||s[3]&&a.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[2]||"")||!a||this.rules.inline.punctuation.exec(a)){const i=[...s[0]].length-1;let r,u,l=i,d=0;const E=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(E.lastIndex=0,n=n.slice(-1*t.length+i);(s=E.exec(n))!=null;){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(u=[...r].length,s[3]||s[4]){l+=u;continue}else if((s[5]||s[6])&&i%3&&!((i+u)%3)){d+=u;continue}if(l-=u,l>0)continue;u=Math.min(u,u+l+d);const c=[...s[0]][0].length,m=t.slice(0,i+s.index+c+u);if(Math.min(i,u)%2){const f=m.slice(1,-1);return{type:"em",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}const _=m.slice(2,-2);return{type:"strong",raw:m,text:_,tokens:this.lexer.inlineTokens(_)}}}}codespan(t){const n=this.rules.inline.code.exec(t);if(n){let a=n[2].replace(this.rules.other.newLineCharGlobal," ");const s=this.rules.other.nonSpaceChar.test(a),o=this.rules.other.startingSpaceChar.test(a)&&this.rules.other.endingSpaceChar.test(a);return s&&o&&(a=a.substring(1,a.length-1)),{type:"codespan",raw:n[0],text:a}}}br(t){const n=this.rules.inline.br.exec(t);if(n)return{type:"br",raw:n[0]}}del(t){const n=this.rules.inline.del.exec(t);if(n)return{type:"del",raw:n[0],text:n[2],tokens:this.lexer.inlineTokens(n[2])}}autolink(t){const n=this.rules.inline.autolink.exec(t);if(n){let a,s;return n[2]==="@"?(a=n[1],s="mailto:"+a):(a=n[1],s=a),{type:"link",raw:n[0],text:a,href:s,tokens:[{type:"text",raw:a,text:a}]}}}url(t){var a;let n;if(n=this.rules.inline.url.exec(t)){let s,o;if(n[2]==="@")s=n[0],o="mailto:"+s;else{let i;do i=n[0],n[0]=((a=this.rules.inline._backpedal.exec(n[0]))==null?void 0:a[0])??"";while(i!==n[0]);s=n[0],n[1]==="www."?o="http://"+n[0]:o=n[0]}return{type:"link",raw:n[0],text:s,href:o,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(t){const n=this.rules.inline.text.exec(t);if(n){const a=this.lexer.state.inRawBlock;return{type:"text",raw:n[0],text:n[0],escaped:a}}}}class Hn{constructor(t){Nt(this,"tokens");Nt(this,"options");Nt(this,"state");Nt(this,"tokenizer");Nt(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Hs,this.options.tokenizer=this.options.tokenizer||new qu,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const n={other:An,block:br.normal,inline:Zo.normal};this.options.pedantic?(n.block=br.pedantic,n.inline=Zo.pedantic):this.options.gfm&&(n.block=br.gfm,this.options.breaks?n.inline=Zo.breaks:n.inline=Zo.gfm),this.tokenizer.rules=n}static get rules(){return{block:br,inline:Zo}}static lex(t,n){return new Hn(n).lex(t)}static lexInline(t,n){return new Hn(n).inlineTokens(t)}lex(t){t=t.replace(An.carriageReturn,` +`),this.blockTokens(t,this.tokens);for(let n=0;n(r=l.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))continue;if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length);const l=n.at(-1);r.raw.length===1&&l!==void 0?l.raw+=` +`:n.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="paragraph"||(l==null?void 0:l.type)==="text"?(l.raw+=` +`+r.raw,l.text+=` +`+r.text,this.inlineQueue.at(-1).src=l.text):n.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="paragraph"||(l==null?void 0:l.type)==="text"?(l.raw+=` +`+r.raw,l.text+=` +`+r.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),n.push(r);continue}let u=t;if((i=this.options.extensions)!=null&&i.startBlock){let l=1/0;const d=t.slice(1);let E;this.options.extensions.startBlock.forEach(c=>{E=c.call({lexer:this},d),typeof E=="number"&&E>=0&&(l=Math.min(l,E))}),l<1/0&&l>=0&&(u=t.substring(0,l+1))}if(this.state.top&&(r=this.tokenizer.paragraph(u))){const l=n.at(-1);a&&(l==null?void 0:l.type)==="paragraph"?(l.raw+=` +`+r.raw,l.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(r),a=u.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="text"?(l.raw+=` +`+r.raw,l.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(r);continue}if(t){const l="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var r,u,l;let a=t,s=null;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(a))!=null;)d.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(a))!=null;)a=a.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(a))!=null;)a=a.slice(0,s.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o=!1,i="";for(;t;){o||(i=""),o=!1;let d;if((u=(r=this.options.extensions)==null?void 0:r.inline)!=null&&u.some(c=>(d=c.call({lexer:this},t,n))?(t=t.substring(d.raw.length),n.push(d),!0):!1))continue;if(d=this.tokenizer.escape(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.tag(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.link(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(d.raw.length);const c=n.at(-1);d.type==="text"&&(c==null?void 0:c.type)==="text"?(c.raw+=d.raw,c.text+=d.text):n.push(d);continue}if(d=this.tokenizer.emStrong(t,a,i)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.codespan(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.br(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.del(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.autolink(t)){t=t.substring(d.raw.length),n.push(d);continue}if(!this.state.inLink&&(d=this.tokenizer.url(t))){t=t.substring(d.raw.length),n.push(d);continue}let E=t;if((l=this.options.extensions)!=null&&l.startInline){let c=1/0;const m=t.slice(1);let _;this.options.extensions.startInline.forEach(f=>{_=f.call({lexer:this},m),typeof _=="number"&&_>=0&&(c=Math.min(c,_))}),c<1/0&&c>=0&&(E=t.substring(0,c+1))}if(d=this.tokenizer.inlineText(E)){t=t.substring(d.raw.length),d.raw.slice(-1)!=="_"&&(i=d.raw.slice(-1)),o=!0;const c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=d.raw,c.text+=d.text):n.push(d);continue}if(t){const c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return n}}class ju{constructor(t){Nt(this,"options");Nt(this,"parser");this.options=t||Hs}space(t){return""}code({text:t,lang:n,escaped:a}){var i;const s=(i=(n||"").match(An.notSpaceStart))==null?void 0:i[0],o=t.replace(An.endingNewline,"")+` +`;return s?'
'+(a?o:_a(o,!0))+`
+`:"
"+(a?o:_a(o,!0))+`
+`}blockquote({tokens:t}){return`
+${this.parser.parse(t)}
+`}html({text:t}){return t}heading({tokens:t,depth:n}){return`${this.parser.parseInline(t)} +`}hr(t){return`
+`}list(t){const n=t.ordered,a=t.start;let s="";for(let r=0;r +`+s+" +`}listitem(t){var a;let n="";if(t.task){const s=this.checkbox({checked:!!t.checked});t.loose?((a=t.tokens[0])==null?void 0:a.type)==="paragraph"?(t.tokens[0].text=s+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=s+" "+_a(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:s+" ",text:s+" ",escaped:!0}):n+=s+" "}return n+=this.parser.parse(t.tokens,!!t.loose),`
  • ${n}
  • +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    +`}table(t){let n="",a="";for(let o=0;o${s}`),` + +`+n+` +`+s+`
    +`}tablerow({text:t}){return` +${t} +`}tablecell(t){const n=this.parser.parseInline(t.tokens),a=t.header?"th":"td";return(t.align?`<${a} align="${t.align}">`:`<${a}>`)+n+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${_a(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:n,tokens:a}){const s=this.parser.parseInline(a),o=nf(t);if(o===null)return s;t=o;let i='
    ",i}image({href:t,title:n,text:a}){const s=nf(t);if(s===null)return _a(a);t=s;let o=`${a}{const l=r[u].flat(1/0);a=a.concat(this.walkTokens(l,n))}):r.tokens&&(a=a.concat(this.walkTokens(r.tokens,n)))}}return a}use(...t){const n=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(a=>{const s={...a};if(s.async=this.defaults.async||s.async||!1,a.extensions&&(a.extensions.forEach(o=>{if(!o.name)throw new Error("extension name required");if("renderer"in o){const i=n.renderers[o.name];i?n.renderers[o.name]=function(...r){let u=o.renderer.apply(this,r);return u===!1&&(u=i.apply(this,r)),u}:n.renderers[o.name]=o.renderer}if("tokenizer"in o){if(!o.level||o.level!=="block"&&o.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const i=n[o.level];i?i.unshift(o.tokenizer):n[o.level]=[o.tokenizer],o.start&&(o.level==="block"?n.startBlock?n.startBlock.push(o.start):n.startBlock=[o.start]:o.level==="inline"&&(n.startInline?n.startInline.push(o.start):n.startInline=[o.start]))}"childTokens"in o&&o.childTokens&&(n.childTokens[o.name]=o.childTokens)}),s.extensions=n),a.renderer){const o=this.defaults.renderer||new ju(this.defaults);for(const i in a.renderer){if(!(i in o))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;const r=i,u=a.renderer[r],l=o[r];o[r]=(...d)=>{let E=u.apply(o,d);return E===!1&&(E=l.apply(o,d)),E||""}}s.renderer=o}if(a.tokenizer){const o=this.defaults.tokenizer||new qu(this.defaults);for(const i in a.tokenizer){if(!(i in o))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;const r=i,u=a.tokenizer[r],l=o[r];o[r]=(...d)=>{let E=u.apply(o,d);return E===!1&&(E=l.apply(o,d)),E}}s.tokenizer=o}if(a.hooks){const o=this.defaults.hooks||new gi;for(const i in a.hooks){if(!(i in o))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;const r=i,u=a.hooks[r],l=o[r];gi.passThroughHooks.has(i)?o[r]=d=>{if(this.defaults.async)return Promise.resolve(u.call(o,d)).then(c=>l.call(o,c));const E=u.call(o,d);return l.call(o,E)}:o[r]=(...d)=>{let E=u.apply(o,d);return E===!1&&(E=l.apply(o,d)),E}}s.hooks=o}if(a.walkTokens){const o=this.defaults.walkTokens,i=a.walkTokens;s.walkTokens=function(r){let u=[];return u.push(i.call(this,r)),o&&(u=u.concat(o.call(this,r))),u}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,n){return Hn.lex(t,n??this.defaults)}parser(t,n){return Kn.parse(t,n??this.defaults)}parseMarkdown(t){return(a,s)=>{const o={...s},i={...this.defaults,...o},r=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof a>"u"||a===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof a!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(a)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);const u=i.hooks?i.hooks.provideLexer():t?Hn.lex:Hn.lexInline,l=i.hooks?i.hooks.provideParser():t?Kn.parse:Kn.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(a):a).then(d=>u(d,i)).then(d=>i.hooks?i.hooks.processAllTokens(d):d).then(d=>i.walkTokens?Promise.all(this.walkTokens(d,i.walkTokens)).then(()=>d):d).then(d=>l(d,i)).then(d=>i.hooks?i.hooks.postprocess(d):d).catch(r);try{i.hooks&&(a=i.hooks.preprocess(a));let d=u(a,i);i.hooks&&(d=i.hooks.processAllTokens(d)),i.walkTokens&&this.walkTokens(d,i.walkTokens);let E=l(d,i);return i.hooks&&(E=i.hooks.postprocess(E)),E}catch(d){return r(d)}}}onError(t,n){return a=>{if(a.message+=` +Please report this to https://github.com/markedjs/marked.`,t){const s="

    An error occurred:

    "+_a(a.message+"",!0)+"
    ";return n?Promise.resolve(s):s}if(n)return Promise.reject(a);throw a}}}const xs=new yVe;function At(e,t){return xs.parse(e,t)}At.options=At.setOptions=function(e){return xs.setOptions(e),At.defaults=xs.defaults,aO(At.defaults),At};At.getDefaults=Rp;At.defaults=Hs;At.use=function(...e){return xs.use(...e),At.defaults=xs.defaults,aO(At.defaults),At};At.walkTokens=function(e,t){return xs.walkTokens(e,t)};At.parseInline=xs.parseInline;At.Parser=Kn;At.parser=Kn.parse;At.Renderer=ju;At.TextRenderer=Lp;At.Lexer=Hn;At.lexer=Hn.lex;At.Tokenizer=qu;At.Hooks=gi;At.parse=At;At.options;At.setOptions;At.use;At.walkTokens;At.parseInline;Kn.parse;Hn.lex;var Rs={},Xa={},bc={},Ns={},Cr={},of;function $Ve(){return of||(of=1,Object.defineProperty(Cr,"__esModule",{value:!0}),Cr.default=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(function(e){return e.charCodeAt(0)}))),Cr}var Pr={},rf;function UVe(){return rf||(rf=1,Object.defineProperty(Pr,"__esModule",{value:!0}),Pr.default=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(function(e){return e.charCodeAt(0)}))),Pr}var Cc={},uf;function lf(){return uf||(uf=1,function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.replaceCodePoint=e.fromCodePoint=void 0;var n=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);e.fromCodePoint=(t=String.fromCodePoint)!==null&&t!==void 0?t:function(o){var i="";return o>65535&&(o-=65536,i+=String.fromCharCode(o>>>10&1023|55296),o=56320|o&1023),i+=String.fromCharCode(o),i};function a(o){var i;return o>=55296&&o<=57343||o>1114111?65533:(i=n.get(o))!==null&&i!==void 0?i:o}e.replaceCodePoint=a;function s(o){return(0,e.fromCodePoint)(a(o))}e.default=s}(Cc)),Cc}var cf;function Yu(){return cf||(cf=1,function(e){var t=Ns.__createBinding||(Object.create?function(P,W,Q,Se){Se===void 0&&(Se=Q);var J=Object.getOwnPropertyDescriptor(W,Q);(!J||("get"in J?!W.__esModule:J.writable||J.configurable))&&(J={enumerable:!0,get:function(){return W[Q]}}),Object.defineProperty(P,Se,J)}:function(P,W,Q,Se){Se===void 0&&(Se=Q),P[Se]=W[Q]}),n=Ns.__setModuleDefault||(Object.create?function(P,W){Object.defineProperty(P,"default",{enumerable:!0,value:W})}:function(P,W){P.default=W}),a=Ns.__importStar||function(P){if(P&&P.__esModule)return P;var W={};if(P!=null)for(var Q in P)Q!=="default"&&Object.prototype.hasOwnProperty.call(P,Q)&&t(W,P,Q);return n(W,P),W},s=Ns.__importDefault||function(P){return P&&P.__esModule?P:{default:P}};Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXML=e.decodeHTMLStrict=e.decodeHTMLAttribute=e.decodeHTML=e.determineBranch=e.EntityDecoder=e.DecodingMode=e.BinTrieFlags=e.fromCodePoint=e.replaceCodePoint=e.decodeCodePoint=e.xmlDecodeTree=e.htmlDecodeTree=void 0;var o=s($Ve());e.htmlDecodeTree=o.default;var i=s(UVe());e.xmlDecodeTree=i.default;var r=a(lf());e.decodeCodePoint=r.default;var u=lf();Object.defineProperty(e,"replaceCodePoint",{enumerable:!0,get:function(){return u.replaceCodePoint}}),Object.defineProperty(e,"fromCodePoint",{enumerable:!0,get:function(){return u.fromCodePoint}});var l;(function(P){P[P.NUM=35]="NUM",P[P.SEMI=59]="SEMI",P[P.EQUALS=61]="EQUALS",P[P.ZERO=48]="ZERO",P[P.NINE=57]="NINE",P[P.LOWER_A=97]="LOWER_A",P[P.LOWER_F=102]="LOWER_F",P[P.LOWER_X=120]="LOWER_X",P[P.LOWER_Z=122]="LOWER_Z",P[P.UPPER_A=65]="UPPER_A",P[P.UPPER_F=70]="UPPER_F",P[P.UPPER_Z=90]="UPPER_Z"})(l||(l={}));var d=32,E;(function(P){P[P.VALUE_LENGTH=49152]="VALUE_LENGTH",P[P.BRANCH_LENGTH=16256]="BRANCH_LENGTH",P[P.JUMP_TABLE=127]="JUMP_TABLE"})(E=e.BinTrieFlags||(e.BinTrieFlags={}));function c(P){return P>=l.ZERO&&P<=l.NINE}function m(P){return P>=l.UPPER_A&&P<=l.UPPER_F||P>=l.LOWER_A&&P<=l.LOWER_F}function _(P){return P>=l.UPPER_A&&P<=l.UPPER_Z||P>=l.LOWER_A&&P<=l.LOWER_Z||c(P)}function f(P){return P===l.EQUALS||_(P)}var O;(function(P){P[P.EntityStart=0]="EntityStart",P[P.NumericStart=1]="NumericStart",P[P.NumericDecimal=2]="NumericDecimal",P[P.NumericHex=3]="NumericHex",P[P.NamedEntity=4]="NamedEntity"})(O||(O={}));var S;(function(P){P[P.Legacy=0]="Legacy",P[P.Strict=1]="Strict",P[P.Attribute=2]="Attribute"})(S=e.DecodingMode||(e.DecodingMode={}));var R=function(){function P(W,Q,Se){this.decodeTree=W,this.emitCodePoint=Q,this.errors=Se,this.state=O.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=S.Strict}return P.prototype.startEntity=function(W){this.decodeMode=W,this.state=O.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1},P.prototype.write=function(W,Q){switch(this.state){case O.EntityStart:return W.charCodeAt(Q)===l.NUM?(this.state=O.NumericStart,this.consumed+=1,this.stateNumericStart(W,Q+1)):(this.state=O.NamedEntity,this.stateNamedEntity(W,Q));case O.NumericStart:return this.stateNumericStart(W,Q);case O.NumericDecimal:return this.stateNumericDecimal(W,Q);case O.NumericHex:return this.stateNumericHex(W,Q);case O.NamedEntity:return this.stateNamedEntity(W,Q)}},P.prototype.stateNumericStart=function(W,Q){return Q>=W.length?-1:(W.charCodeAt(Q)|d)===l.LOWER_X?(this.state=O.NumericHex,this.consumed+=1,this.stateNumericHex(W,Q+1)):(this.state=O.NumericDecimal,this.stateNumericDecimal(W,Q))},P.prototype.addToNumericResult=function(W,Q,Se,J){if(Q!==Se){var Ee=Se-Q;this.result=this.result*Math.pow(J,Ee)+parseInt(W.substr(Q,Ee),J),this.consumed+=Ee}},P.prototype.stateNumericHex=function(W,Q){for(var Se=Q;Q>14;Q>14,Ee!==0){if(fe===l.SEMI)return this.emitNamedEntityData(this.treeIndex,Ee,this.consumed+this.excess);this.decodeMode!==S.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1},P.prototype.emitNotTerminatedNamedEntity=function(){var W,Q=this,Se=Q.result,J=Q.decodeTree,Ee=(J[Se]&E.VALUE_LENGTH)>>14;return this.emitNamedEntityData(Se,Ee,this.consumed),(W=this.errors)===null||W===void 0||W.missingSemicolonAfterCharacterReference(),this.consumed},P.prototype.emitNamedEntityData=function(W,Q,Se){var J=this.decodeTree;return this.emitCodePoint(Q===1?J[W]&~E.VALUE_LENGTH:J[W+1],Se),Q===3&&this.emitCodePoint(J[W+2],Se),Se},P.prototype.end=function(){var W;switch(this.state){case O.NamedEntity:return this.result!==0&&(this.decodeMode!==S.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case O.NumericDecimal:return this.emitNumericEntity(0,2);case O.NumericHex:return this.emitNumericEntity(0,3);case O.NumericStart:return(W=this.errors)===null||W===void 0||W.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case O.EntityStart:return 0}},P}();e.EntityDecoder=R;function I(P){var W="",Q=new R(P,function(Se){return W+=(0,r.fromCodePoint)(Se)});return function(J,Ee){for(var fe=0,Pe=0;(Pe=J.indexOf("&",Pe))>=0;){W+=J.slice(fe,Pe),Q.startEntity(Ee);var Ke=Q.write(J,Pe+1);if(Ke<0){fe=Pe+Q.end();break}fe=Pe+Ke,Pe=Ke===0?fe+1:fe}var et=W+J.slice(fe);return W="",et}}function g(P,W,Q,Se){var J=(W&E.BRANCH_LENGTH)>>7,Ee=W&E.JUMP_TABLE;if(J===0)return Ee!==0&&Se===Ee?Q:-1;if(Ee){var fe=Se-Ee;return fe<0||fe>=J?-1:P[Q+fe]-1}for(var Pe=Q,Ke=Pe+J-1;Pe<=Ke;){var et=Pe+Ke>>>1,He=P[et];if(HeSe)Ke=et-1;else return P[et+J]}return-1}e.determineBranch=g;var N=I(o.default),b=I(i.default);function C(P,W){return W===void 0&&(W=S.Legacy),N(P,W)}e.decodeHTML=C;function y(P){return N(P,S.Attribute)}e.decodeHTMLAttribute=y;function D(P){return N(P,S.Strict)}e.decodeHTMLStrict=D;function M(P){return b(P,S.Strict)}e.decodeXML=M}(Ns)),Ns}var df;function EO(){return df||(df=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.QuoteType=void 0;var t=Yu(),n;(function(c){c[c.Tab=9]="Tab",c[c.NewLine=10]="NewLine",c[c.FormFeed=12]="FormFeed",c[c.CarriageReturn=13]="CarriageReturn",c[c.Space=32]="Space",c[c.ExclamationMark=33]="ExclamationMark",c[c.Number=35]="Number",c[c.Amp=38]="Amp",c[c.SingleQuote=39]="SingleQuote",c[c.DoubleQuote=34]="DoubleQuote",c[c.Dash=45]="Dash",c[c.Slash=47]="Slash",c[c.Zero=48]="Zero",c[c.Nine=57]="Nine",c[c.Semi=59]="Semi",c[c.Lt=60]="Lt",c[c.Eq=61]="Eq",c[c.Gt=62]="Gt",c[c.Questionmark=63]="Questionmark",c[c.UpperA=65]="UpperA",c[c.LowerA=97]="LowerA",c[c.UpperF=70]="UpperF",c[c.LowerF=102]="LowerF",c[c.UpperZ=90]="UpperZ",c[c.LowerZ=122]="LowerZ",c[c.LowerX=120]="LowerX",c[c.OpeningSquareBracket=91]="OpeningSquareBracket"})(n||(n={}));var a;(function(c){c[c.Text=1]="Text",c[c.BeforeTagName=2]="BeforeTagName",c[c.InTagName=3]="InTagName",c[c.InSelfClosingTag=4]="InSelfClosingTag",c[c.BeforeClosingTagName=5]="BeforeClosingTagName",c[c.InClosingTagName=6]="InClosingTagName",c[c.AfterClosingTagName=7]="AfterClosingTagName",c[c.BeforeAttributeName=8]="BeforeAttributeName",c[c.InAttributeName=9]="InAttributeName",c[c.AfterAttributeName=10]="AfterAttributeName",c[c.BeforeAttributeValue=11]="BeforeAttributeValue",c[c.InAttributeValueDq=12]="InAttributeValueDq",c[c.InAttributeValueSq=13]="InAttributeValueSq",c[c.InAttributeValueNq=14]="InAttributeValueNq",c[c.BeforeDeclaration=15]="BeforeDeclaration",c[c.InDeclaration=16]="InDeclaration",c[c.InProcessingInstruction=17]="InProcessingInstruction",c[c.BeforeComment=18]="BeforeComment",c[c.CDATASequence=19]="CDATASequence",c[c.InSpecialComment=20]="InSpecialComment",c[c.InCommentLike=21]="InCommentLike",c[c.BeforeSpecialS=22]="BeforeSpecialS",c[c.SpecialStartSequence=23]="SpecialStartSequence",c[c.InSpecialTag=24]="InSpecialTag",c[c.BeforeEntity=25]="BeforeEntity",c[c.BeforeNumericEntity=26]="BeforeNumericEntity",c[c.InNamedEntity=27]="InNamedEntity",c[c.InNumericEntity=28]="InNumericEntity",c[c.InHexEntity=29]="InHexEntity"})(a||(a={}));function s(c){return c===n.Space||c===n.NewLine||c===n.Tab||c===n.FormFeed||c===n.CarriageReturn}function o(c){return c===n.Slash||c===n.Gt||s(c)}function i(c){return c>=n.Zero&&c<=n.Nine}function r(c){return c>=n.LowerA&&c<=n.LowerZ||c>=n.UpperA&&c<=n.UpperZ}function u(c){return c>=n.UpperA&&c<=n.UpperF||c>=n.LowerA&&c<=n.LowerF}var l;(function(c){c[c.NoValue=0]="NoValue",c[c.Unquoted=1]="Unquoted",c[c.Single=2]="Single",c[c.Double=3]="Double"})(l=e.QuoteType||(e.QuoteType={}));var d={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},E=function(){function c(m,_){var f=m.xmlMode,O=f===void 0?!1:f,S=m.decodeEntities,R=S===void 0?!0:S;this.cbs=_,this.state=a.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=a.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=O,this.decodeEntities=R,this.entityTrie=O?t.xmlDecodeTree:t.htmlDecodeTree}return c.prototype.reset=function(){this.state=a.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=a.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},c.prototype.write=function(m){this.offset+=this.buffer.length,this.buffer=m,this.parse()},c.prototype.end=function(){this.running&&this.finish()},c.prototype.pause=function(){this.running=!1},c.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=a.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&m===n.Amp&&(this.state=a.BeforeEntity)},c.prototype.stateSpecialStartSequence=function(m){var _=this.sequenceIndex===this.currentSequence.length,f=_?o(m):(m|32)===this.currentSequence[this.sequenceIndex];if(!f)this.isSpecial=!1;else if(!_){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=a.InTagName,this.stateInTagName(m)},c.prototype.stateInSpecialTag=function(m){if(this.sequenceIndex===this.currentSequence.length){if(m===n.Gt||s(m)){var _=this.index-this.currentSequence.length;if(this.sectionStart<_){var f=this.index;this.index=_,this.cbs.ontext(this.sectionStart,_),this.index=f}this.isSpecial=!1,this.sectionStart=_+2,this.stateInClosingTagName(m);return}this.sequenceIndex=0}(m|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===d.TitleEnd?this.decodeEntities&&m===n.Amp&&(this.state=a.BeforeEntity):this.fastForwardTo(n.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(m===n.Lt)},c.prototype.stateCDATASequence=function(m){m===d.Cdata[this.sequenceIndex]?++this.sequenceIndex===d.Cdata.length&&(this.state=a.InCommentLike,this.currentSequence=d.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=a.InDeclaration,this.stateInDeclaration(m))},c.prototype.fastForwardTo=function(m){for(;++this.index>14)-1;if(!this.allowLegacyEntity()&&m!==n.Semi)this.trieIndex+=f;else{var O=this.index-this.entityExcess+1;O>this.sectionStart&&this.emitPartial(this.sectionStart,O),this.entityResult=this.trieIndex,this.trieIndex+=f,this.entityExcess=0,this.sectionStart=this.index+1,f===0&&this.emitNamedEntity()}}},c.prototype.emitNamedEntity=function(){if(this.state=this.baseState,this.entityResult!==0){var m=(this.entityTrie[this.entityResult]&t.BinTrieFlags.VALUE_LENGTH)>>14;switch(m){case 1:{this.emitCodePoint(this.entityTrie[this.entityResult]&~t.BinTrieFlags.VALUE_LENGTH);break}case 2:{this.emitCodePoint(this.entityTrie[this.entityResult+1]);break}case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}},c.prototype.stateBeforeNumericEntity=function(m){(m|32)===n.LowerX?(this.entityExcess++,this.state=a.InHexEntity):(this.state=a.InNumericEntity,this.stateInNumericEntity(m))},c.prototype.emitNumericEntity=function(m){var _=this.index-this.entityExcess-1,f=_+2+ +(this.state===a.InHexEntity);f!==this.index&&(_>this.sectionStart&&this.emitPartial(this.sectionStart,_),this.sectionStart=this.index+Number(m),this.emitCodePoint((0,t.replaceCodePoint)(this.entityResult))),this.state=this.baseState},c.prototype.stateInNumericEntity=function(m){m===n.Semi?this.emitNumericEntity(!0):i(m)?(this.entityResult=this.entityResult*10+(m-n.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},c.prototype.stateInHexEntity=function(m){m===n.Semi?this.emitNumericEntity(!0):i(m)?(this.entityResult=this.entityResult*16+(m-n.Zero),this.entityExcess++):u(m)?(this.entityResult=this.entityResult*16+((m|32)-n.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},c.prototype.allowLegacyEntity=function(){return!this.xmlMode&&(this.baseState===a.Text||this.baseState===a.InSpecialTag)},c.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===a.Text||this.state===a.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===a.InAttributeValueDq||this.state===a.InAttributeValueSq||this.state===a.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},c.prototype.shouldContinue=function(){return this.index0&&b.has(this.stack[this.stack.length-1]);){var C=this.stack.pop();(I=(R=this.cbs).onclosetag)===null||I===void 0||I.call(R,C,!0)}this.isVoidElement(S)||(this.stack.push(S),c.has(S)?this.foreignContext.push(!0):m.has(S)&&this.foreignContext.push(!1)),(N=(g=this.cbs).onopentagname)===null||N===void 0||N.call(g,S),this.cbs.onopentag&&(this.attribs={})},O.prototype.endOpenTag=function(S){var R,I;this.startIndex=this.openTagStart,this.attribs&&((I=(R=this.cbs).onopentag)===null||I===void 0||I.call(R,this.tagname,this.attribs,S),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},O.prototype.onopentagend=function(S){this.endIndex=S,this.endOpenTag(!1),this.startIndex=S+1},O.prototype.onclosetag=function(S,R){var I,g,N,b,C,y;this.endIndex=R;var D=this.getSlice(S,R);if(this.lowerCaseTagNames&&(D=D.toLowerCase()),(c.has(D)||m.has(D))&&this.foreignContext.pop(),this.isVoidElement(D))!this.options.xmlMode&&D==="br"&&((g=(I=this.cbs).onopentagname)===null||g===void 0||g.call(I,"br"),(b=(N=this.cbs).onopentag)===null||b===void 0||b.call(N,"br",{},!0),(y=(C=this.cbs).onclosetag)===null||y===void 0||y.call(C,"br",!1));else{var M=this.stack.lastIndexOf(D);if(M!==-1)if(this.cbs.onclosetag)for(var P=this.stack.length-M;P--;)this.cbs.onclosetag(this.stack.pop(),P!==0);else this.stack.length=M;else!this.options.xmlMode&&D==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=R+1},O.prototype.onselfclosingtag=function(S){this.endIndex=S,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=S+1):this.onopentagend(S)},O.prototype.closeCurrentTag=function(S){var R,I,g=this.tagname;this.endOpenTag(S),this.stack[this.stack.length-1]===g&&((I=(R=this.cbs).onclosetag)===null||I===void 0||I.call(R,g,!S),this.stack.pop())},O.prototype.onattribname=function(S,R){this.startIndex=S;var I=this.getSlice(S,R);this.attribname=this.lowerCaseAttributeNames?I.toLowerCase():I},O.prototype.onattribdata=function(S,R){this.attribvalue+=this.getSlice(S,R)},O.prototype.onattribentity=function(S){this.attribvalue+=(0,s.fromCodePoint)(S)},O.prototype.onattribend=function(S,R){var I,g;this.endIndex=R,(g=(I=this.cbs).onattribute)===null||g===void 0||g.call(I,this.attribname,this.attribvalue,S===a.QuoteType.Double?'"':S===a.QuoteType.Single?"'":S===a.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},O.prototype.getInstructionName=function(S){var R=S.search(_),I=R<0?S:S.substr(0,R);return this.lowerCaseTagNames&&(I=I.toLowerCase()),I},O.prototype.ondeclaration=function(S,R){this.endIndex=R;var I=this.getSlice(S,R);if(this.cbs.onprocessinginstruction){var g=this.getInstructionName(I);this.cbs.onprocessinginstruction("!".concat(g),"!".concat(I))}this.startIndex=R+1},O.prototype.onprocessinginstruction=function(S,R){this.endIndex=R;var I=this.getSlice(S,R);if(this.cbs.onprocessinginstruction){var g=this.getInstructionName(I);this.cbs.onprocessinginstruction("?".concat(g),"?".concat(I))}this.startIndex=R+1},O.prototype.oncomment=function(S,R,I){var g,N,b,C;this.endIndex=R,(N=(g=this.cbs).oncomment)===null||N===void 0||N.call(g,this.getSlice(S,R-I)),(C=(b=this.cbs).oncommentend)===null||C===void 0||C.call(b),this.startIndex=R+1},O.prototype.oncdata=function(S,R,I){var g,N,b,C,y,D,M,P,W,Q;this.endIndex=R;var Se=this.getSlice(S,R-I);this.options.xmlMode||this.options.recognizeCDATA?((N=(g=this.cbs).oncdatastart)===null||N===void 0||N.call(g),(C=(b=this.cbs).ontext)===null||C===void 0||C.call(b,Se),(D=(y=this.cbs).oncdataend)===null||D===void 0||D.call(y)):((P=(M=this.cbs).oncomment)===null||P===void 0||P.call(M,"[CDATA[".concat(Se,"]]")),(Q=(W=this.cbs).oncommentend)===null||Q===void 0||Q.call(W)),this.startIndex=R+1},O.prototype.onend=function(){var S,R;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var I=this.stack.length;I>0;this.cbs.onclosetag(this.stack[--I],!0));}(R=(S=this.cbs).onend)===null||R===void 0||R.call(S)},O.prototype.reset=function(){var S,R,I,g;(R=(S=this.cbs).onreset)===null||R===void 0||R.call(S),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(g=(I=this.cbs).onparserinit)===null||g===void 0||g.call(I,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1},O.prototype.parseComplete=function(S){this.reset(),this.end(S)},O.prototype.getSlice=function(S,R){for(;S-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();for(var I=this.buffers[0].slice(S-this.bufferOffset,R-this.bufferOffset);R-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),I+=this.buffers[0].slice(0,R-this.bufferOffset);return I},O.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},O.prototype.write=function(S){var R,I;if(this.ended){(I=(R=this.cbs).onerror)===null||I===void 0||I.call(R,new Error(".write() after done!"));return}this.buffers.push(S),this.tokenizer.running&&(this.tokenizer.write(S),this.writeIndex++)},O.prototype.end=function(S){var R,I;if(this.ended){(I=(R=this.cbs).onerror)===null||I===void 0||I.call(R,new Error(".end() after done!"));return}S&&this.write(S),this.ended=!0,this.tokenizer.end()},O.prototype.pause=function(){this.tokenizer.pause()},O.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"childNodes",{get:function(){return this.children},set:function(C){this.children=C},enumerable:!1,configurable:!0}),b}(a);at.NodeWithChildren=u;var l=function(N){e(b,N);function b(){var C=N!==null&&N.apply(this,arguments)||this;return C.type=n.ElementType.CDATA,C}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),b}(u);at.CDATA=l;var d=function(N){e(b,N);function b(){var C=N!==null&&N.apply(this,arguments)||this;return C.type=n.ElementType.Root,C}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),b}(u);at.Document=d;var E=function(N){e(b,N);function b(C,y,D,M){D===void 0&&(D=[]),M===void 0&&(M=C==="script"?n.ElementType.Script:C==="style"?n.ElementType.Style:n.ElementType.Tag);var P=N.call(this,D)||this;return P.name=C,P.attribs=y,P.type=M,P}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"tagName",{get:function(){return this.name},set:function(C){this.name=C},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"attributes",{get:function(){var C=this;return Object.keys(this.attribs).map(function(y){var D,M;return{name:y,value:C.attribs[y],namespace:(D=C["x-attribsNamespace"])===null||D===void 0?void 0:D[y],prefix:(M=C["x-attribsPrefix"])===null||M===void 0?void 0:M[y]}})},enumerable:!1,configurable:!0}),b}(u);at.Element=E;function c(N){return(0,n.isTag)(N)}at.isTag=c;function m(N){return N.type===n.ElementType.CDATA}at.isCDATA=m;function _(N){return N.type===n.ElementType.Text}at.isText=_;function f(N){return N.type===n.ElementType.Comment}at.isComment=f;function O(N){return N.type===n.ElementType.Directive}at.isDirective=O;function S(N){return N.type===n.ElementType.Root}at.isDocument=S;function R(N){return Object.prototype.hasOwnProperty.call(N,"children")}at.hasChildren=R;function I(N,b){b===void 0&&(b=!1);var C;if(_(N))C=new o(N.data);else if(f(N))C=new i(N.data);else if(c(N)){var y=b?g(N.children):[],D=new E(N.name,t({},N.attribs),y);y.forEach(function(Q){return Q.parent=D}),N.namespace!=null&&(D.namespace=N.namespace),N["x-attribsNamespace"]&&(D["x-attribsNamespace"]=t({},N["x-attribsNamespace"])),N["x-attribsPrefix"]&&(D["x-attribsPrefix"]=t({},N["x-attribsPrefix"])),C=D}else if(m(N)){var y=b?g(N.children):[],M=new l(y);y.forEach(function(Se){return Se.parent=M}),C=M}else if(S(N)){var y=b?g(N.children):[],P=new d(y);y.forEach(function(Se){return Se.parent=P}),N["x-mode"]&&(P["x-mode"]=N["x-mode"]),C=P}else if(O(N)){var W=new r(N.name,N.data);N["x-name"]!=null&&(W["x-name"]=N["x-name"],W["x-publicId"]=N["x-publicId"],W["x-systemId"]=N["x-systemId"]),C=W}else throw new Error("Not implemented yet: ".concat(N.type));return C.startIndex=N.startIndex,C.endIndex=N.endIndex,N.sourceCodeLocation!=null&&(C.sourceCodeLocation=N.sourceCodeLocation),C}at.cloneNode=I;function g(N){for(var b=N.map(function(y){return I(y,!0)}),C=1;C$\x80-\uFFFF]/g;var t=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);e.getCodePoint=String.prototype.codePointAt!=null?function(s,o){return s.codePointAt(o)}:function(s,o){return(s.charCodeAt(o)&64512)===55296?(s.charCodeAt(o)-55296)*1024+s.charCodeAt(o+1)-56320+65536:s.charCodeAt(o)};function n(s){for(var o="",i=0,r;(r=e.xmlReplacer.exec(s))!==null;){var u=r.index,l=s.charCodeAt(u),d=t.get(l);d!==void 0?(o+=s.substring(i,u)+d,i=u+1):(o+="".concat(s.substring(i,u),"&#x").concat((0,e.getCodePoint)(s,u).toString(16),";"),i=e.xmlReplacer.lastIndex+=+((l&64512)===55296))}return o+s.substr(i)}e.encodeXML=n,e.escape=n;function a(s,o){return function(r){for(var u,l=0,d="";u=s.exec(r);)l!==u.index&&(d+=r.substring(l,u.index)),d+=o.get(u[0].charCodeAt(0)),l=u.index+1;return d+r.substring(l)}}e.escapeUTF8=a(/[&<>'"]/g,t),e.escapeAttribute=a(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),e.escapeText=a(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))}(Lc)),Lc}var Af;function Of(){if(Af)return Qa;Af=1;var e=Qa.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.encodeNonAsciiHTML=Qa.encodeHTML=void 0;var t=e(kVe()),n=fE(),a=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function s(r){return i(a,r)}Qa.encodeHTML=s;function o(r){return i(n.xmlReplacer,r)}Qa.encodeNonAsciiHTML=o;function i(r,u){for(var l="",d=0,E;(E=r.exec(u))!==null;){var c=E.index;l+=u.substring(d,c);var m=u.charCodeAt(c),_=t.default.get(m);if(typeof _=="object"){if(c+10&&(C+=E(g.children,N)),(N.xmlMode||!d.has(g.name))&&(C+=""))),C}function O(g){return"<".concat(g.data,">")}function S(g,N){var b,C=g.data||"";return((b=N.encodeEntities)!==null&&b!==void 0?b:N.decodeEntities)!==!1&&!(!N.xmlMode&&g.parent&&r.has(g.parent.name))&&(C=N.xmlMode||N.encodeEntities!=="utf8"?(0,o.encodeXML)(C):(0,o.escapeText)(C)),C}function R(g){return"")}function I(g){return"")}return ma}var Nf;function pO(){if(Nf)return Rn;Nf=1;var e=Rn.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.innerText=Rn.textContent=Rn.getText=Rn.getInnerHTML=Rn.getOuterHTML=void 0;var t=cs(),n=e(WVe()),a=ur();function s(l,d){return(0,n.default)(l,d)}Rn.getOuterHTML=s;function o(l,d){return(0,t.hasChildren)(l)?l.children.map(function(E){return s(E,d)}).join(""):""}Rn.getInnerHTML=o;function i(l){return Array.isArray(l)?l.map(i).join(""):(0,t.isTag)(l)?l.name==="br"?` +`:i(l.children):(0,t.isCDATA)(l)?i(l.children):(0,t.isText)(l)?l.data:""}Rn.getText=i;function r(l){return Array.isArray(l)?l.map(r).join(""):(0,t.hasChildren)(l)&&!(0,t.isComment)(l)?r(l.children):(0,t.isText)(l)?l.data:""}Rn.textContent=r;function u(l){return Array.isArray(l)?l.map(u).join(""):(0,t.hasChildren)(l)&&(l.type===a.ElementType.Tag||(0,t.isCDATA)(l))?u(l.children):(0,t.isText)(l)?l.data:""}return Rn.innerText=u,Rn}var Vt={},vf;function FVe(){if(vf)return Vt;vf=1,Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.prevElementSibling=Vt.nextElementSibling=Vt.getName=Vt.hasAttrib=Vt.getAttributeValue=Vt.getSiblings=Vt.getParent=Vt.getChildren=void 0;var e=cs();function t(l){return(0,e.hasChildren)(l)?l.children:[]}Vt.getChildren=t;function n(l){return l.parent||null}Vt.getParent=n;function a(l){var d,E,c=n(l);if(c!=null)return t(c);for(var m=[l],_=l.prev,f=l.next;_!=null;)m.unshift(_),d=_,_=d.prev;for(;f!=null;)m.push(f),E=f,f=E.next;return m}Vt.getSiblings=a;function s(l,d){var E;return(E=l.attribs)===null||E===void 0?void 0:E[d]}Vt.getAttributeValue=s;function o(l,d){return l.attribs!=null&&Object.prototype.hasOwnProperty.call(l.attribs,d)&&l.attribs[d]!=null}Vt.hasAttrib=o;function i(l){return l.name}Vt.getName=i;function r(l){for(var d,E=l.next;E!==null&&!(0,e.isTag)(E);)d=E,E=d.next;return E}Vt.nextElementSibling=r;function u(l){for(var d,E=l.prev;E!==null&&!(0,e.isTag)(E);)d=E,E=d.prev;return E}return Vt.prevElementSibling=u,Vt}var dn={},bf;function zVe(){if(bf)return dn;bf=1,Object.defineProperty(dn,"__esModule",{value:!0}),dn.prepend=dn.prependChild=dn.append=dn.appendChild=dn.replaceElement=dn.removeElement=void 0;function e(i){if(i.prev&&(i.prev.next=i.next),i.next&&(i.next.prev=i.prev),i.parent){var r=i.parent.children,u=r.lastIndexOf(i);u>=0&&r.splice(u,1)}i.next=null,i.prev=null,i.parent=null}dn.removeElement=e;function t(i,r){var u=r.prev=i.prev;u&&(u.next=r);var l=r.next=i.next;l&&(l.prev=r);var d=r.parent=i.parent;if(d){var E=d.children;E[E.lastIndexOf(i)]=r,i.parent=null}}dn.replaceElement=t;function n(i,r){if(e(r),r.next=null,r.parent=i,i.children.push(r)>1){var u=i.children[i.children.length-2];u.next=r,r.prev=u}else r.prev=null}dn.appendChild=n;function a(i,r){e(r);var u=i.parent,l=i.next;if(r.next=l,r.prev=i,i.next=r,r.parent=u,l){if(l.prev=r,u){var d=u.children;d.splice(d.lastIndexOf(l),0,r)}}else u&&u.children.push(r)}dn.append=a;function s(i,r){if(e(r),r.parent=i,r.prev=null,i.children.unshift(r)!==1){var u=i.children[1];u.prev=r,r.next=u}else r.next=null}dn.prependChild=s;function o(i,r){e(r);var u=i.parent;if(u){var l=u.children;l.splice(l.indexOf(i),0,r)}i.prev&&(i.prev.next=r),r.parent=u,r.prev=i.prev,r.next=i,i.prev=r}return dn.prepend=o,dn}var En={},Cf;function mO(){if(Cf)return En;Cf=1,Object.defineProperty(En,"__esModule",{value:!0}),En.findAll=En.existsOne=En.findOne=En.findOneChild=En.find=En.filter=void 0;var e=cs();function t(r,u,l,d){return l===void 0&&(l=!0),d===void 0&&(d=1/0),n(r,Array.isArray(u)?u:[u],l,d)}En.filter=t;function n(r,u,l,d){for(var E=[],c=[u],m=[0];;){if(m[0]>=c[0].length){if(m.length===1)return E;c.shift(),m.shift();continue}var _=c[0][m[0]++];if(r(_)&&(E.push(_),--d<=0))return E;l&&(0,e.hasChildren)(_)&&_.children.length>0&&(m.unshift(0),c.unshift(_.children))}}En.find=n;function a(r,u){return u.find(r)}En.findOneChild=a;function s(r,u,l){l===void 0&&(l=!0);for(var d=null,E=0;E0&&(d=s(r,c.children,!0));else continue}return d}En.findOne=s;function o(r,u){return u.some(function(l){return(0,e.isTag)(l)&&(r(l)||o(r,l.children))})}En.existsOne=o;function i(r,u){for(var l=[],d=[u],E=[0];;){if(E[0]>=d[0].length){if(d.length===1)return l;d.shift(),E.shift();continue}var c=d[0][E[0]++];(0,e.isTag)(c)&&(r(c)&&l.push(c),c.children.length>0&&(E.unshift(0),d.unshift(c.children)))}}return En.findAll=i,En}var $n={},Pf;function TO(){if(Pf)return $n;Pf=1,Object.defineProperty($n,"__esModule",{value:!0}),$n.getElementsByTagType=$n.getElementsByTagName=$n.getElementById=$n.getElements=$n.testElement=void 0;var e=cs(),t=mO(),n={tag_name:function(E){return typeof E=="function"?function(c){return(0,e.isTag)(c)&&E(c.name)}:E==="*"?e.isTag:function(c){return(0,e.isTag)(c)&&c.name===E}},tag_type:function(E){return typeof E=="function"?function(c){return E(c.type)}:function(c){return c.type===E}},tag_contains:function(E){return typeof E=="function"?function(c){return(0,e.isText)(c)&&E(c.data)}:function(c){return(0,e.isText)(c)&&c.data===E}}};function a(E,c){return typeof c=="function"?function(m){return(0,e.isTag)(m)&&c(m.attribs[E])}:function(m){return(0,e.isTag)(m)&&m.attribs[E]===c}}function s(E,c){return function(m){return E(m)||c(m)}}function o(E){var c=Object.keys(E).map(function(m){var _=E[m];return Object.prototype.hasOwnProperty.call(n,m)?n[m](_):a(m,_)});return c.length===0?null:c.reduce(s)}function i(E,c){var m=o(E);return m?m(c):!0}$n.testElement=i;function r(E,c,m,_){_===void 0&&(_=1/0);var f=o(E);return f?(0,t.filter)(f,c,m,_):[]}$n.getElements=r;function u(E,c,m){return m===void 0&&(m=!0),Array.isArray(c)||(c=[c]),(0,t.findOne)(a("id",E),c,m)}$n.getElementById=u;function l(E,c,m,_){return m===void 0&&(m=!0),_===void 0&&(_=1/0),(0,t.filter)(n.tag_name(E),c,m,_)}$n.getElementsByTagName=l;function d(E,c,m,_){return m===void 0&&(m=!0),_===void 0&&(_=1/0),(0,t.filter)(n.tag_type(E),c,m,_)}return $n.getElementsByTagType=d,$n}var yc={},Df;function xVe(){return Df||(Df=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.uniqueSort=e.compareDocumentPosition=e.DocumentPosition=e.removeSubsets=void 0;var t=cs();function n(i){for(var r=i.length;--r>=0;){var u=i[r];if(r>0&&i.lastIndexOf(u,r-1)>=0){i.splice(r,1);continue}for(var l=u.parent;l;l=l.parent)if(i.includes(l)){i.splice(r,1);break}}return i}e.removeSubsets=n;var a;(function(i){i[i.DISCONNECTED=1]="DISCONNECTED",i[i.PRECEDING=2]="PRECEDING",i[i.FOLLOWING=4]="FOLLOWING",i[i.CONTAINS=8]="CONTAINS",i[i.CONTAINED_BY=16]="CONTAINED_BY"})(a=e.DocumentPosition||(e.DocumentPosition={}));function s(i,r){var u=[],l=[];if(i===r)return 0;for(var d=(0,t.hasChildren)(i)?i:i.parent;d;)u.unshift(d),d=d.parent;for(d=(0,t.hasChildren)(r)?r:r.parent;d;)l.unshift(d),d=d.parent;for(var E=Math.min(u.length,l.length),c=0;c_.indexOf(O)?m===r?a.FOLLOWING|a.CONTAINED_BY:a.FOLLOWING:m===i?a.PRECEDING|a.CONTAINS:a.PRECEDING}e.compareDocumentPosition=s;function o(i){return i=i.filter(function(r,u,l){return!l.includes(r,u+1)}),i.sort(function(r,u){var l=s(r,u);return l&a.PRECEDING?-1:l&a.FOLLOWING?1:0}),i}e.uniqueSort=o}(yc)),yc}var ni={},Lf;function BVe(){if(Lf)return ni;Lf=1,Object.defineProperty(ni,"__esModule",{value:!0}),ni.getFeed=void 0;var e=pO(),t=TO();function n(c){var m=u(E,c);return m?m.name==="feed"?a(m):s(m):null}ni.getFeed=n;function a(c){var m,_=c.children,f={type:"atom",items:(0,t.getElementsByTagName)("entry",_).map(function(R){var I,g=R.children,N={media:r(g)};d(N,"id","id",g),d(N,"title","title",g);var b=(I=u("link",g))===null||I===void 0?void 0:I.attribs.href;b&&(N.link=b);var C=l("summary",g)||l("content",g);C&&(N.description=C);var y=l("updated",g);return y&&(N.pubDate=new Date(y)),N})};d(f,"id","id",_),d(f,"title","title",_);var O=(m=u("link",_))===null||m===void 0?void 0:m.attribs.href;O&&(f.link=O),d(f,"description","subtitle",_);var S=l("updated",_);return S&&(f.updated=new Date(S)),d(f,"author","email",_,!0),f}function s(c){var m,_,f=(_=(m=u("channel",c.children))===null||m===void 0?void 0:m.children)!==null&&_!==void 0?_:[],O={type:c.name.substr(0,3),id:"",items:(0,t.getElementsByTagName)("item",c.children).map(function(R){var I=R.children,g={media:r(I)};d(g,"id","guid",I),d(g,"title","title",I),d(g,"link","link",I),d(g,"description","description",I);var N=l("pubDate",I)||l("dc:date",I);return N&&(g.pubDate=new Date(N)),g})};d(O,"title","title",f),d(O,"link","link",f),d(O,"description","description",f);var S=l("lastBuildDate",f);return S&&(O.updated=new Date(S)),d(O,"author","managingEditor",f,!0),O}var o=["url","type","lang"],i=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function r(c){return(0,t.getElementsByTagName)("media:content",c).map(function(m){for(var _=m.attribs,f={medium:_.medium,isDefault:!!_.isDefault},O=0,S=o;O{if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}),Uc}var Lr={},kf;function HVe(){if(kf)return Lr;kf=1,Object.defineProperty(Lr,"__esModule",{value:!0});/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */function e(n){return Object.prototype.toString.call(n)==="[object Object]"}function t(n){var a,s;return e(n)===!1?!1:(a=n.constructor,a===void 0?!0:(s=a.prototype,!(e(s)===!1||s.hasOwnProperty("isPrototypeOf")===!1)))}return Lr.isPlainObject=t,Lr}var kc,wf;function KVe(){if(wf)return kc;wf=1;var e=function(R){return t(R)&&!n(R)};function t(S){return!!S&&typeof S=="object"}function n(S){var R=Object.prototype.toString.call(S);return R==="[object RegExp]"||R==="[object Date]"||o(S)}var a=typeof Symbol=="function"&&Symbol.for,s=a?Symbol.for("react.element"):60103;function o(S){return S.$$typeof===s}function i(S){return Array.isArray(S)?[]:{}}function r(S,R){return R.clone!==!1&&R.isMergeableObject(S)?f(i(S),S,R):S}function u(S,R,I){return S.concat(R).map(function(g){return r(g,I)})}function l(S,R){if(!R.customMerge)return f;var I=R.customMerge(S);return typeof I=="function"?I:f}function d(S){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(S).filter(function(R){return Object.propertyIsEnumerable.call(S,R)}):[]}function E(S){return Object.keys(S).concat(d(S))}function c(S,R){try{return R in S}catch{return!1}}function m(S,R){return c(S,R)&&!(Object.hasOwnProperty.call(S,R)&&Object.propertyIsEnumerable.call(S,R))}function _(S,R,I){var g={};return I.isMergeableObject(S)&&E(S).forEach(function(N){g[N]=r(S[N],I)}),E(R).forEach(function(N){m(S,N)||(c(S,N)&&I.isMergeableObject(R[N])?g[N]=l(N,I)(S[N],R[N],I):g[N]=r(R[N],I))}),g}function f(S,R,I){I=I||{},I.arrayMerge=I.arrayMerge||u,I.isMergeableObject=I.isMergeableObject||e,I.cloneUnlessOtherwiseSpecified=r;var g=Array.isArray(R),N=Array.isArray(S),b=g===N;return b?g?I.arrayMerge(S,R,I):_(S,R,I):r(R,I)}f.all=function(R,I){if(!Array.isArray(R))throw new Error("first argument should be an array");return R.reduce(function(g,N){return f(g,N,I)},{})};var O=f;return kc=O,kc}var Zr={exports:{}},qVe=Zr.exports,Mf;function jVe(){return Mf||(Mf=1,function(e){(function(t,n){e.exports?e.exports=n():t.parseSrcset=n()})(qVe,function(){return function(t){function n(g){return g===" "||g===" "||g===` +`||g==="\f"||g==="\r"}function a(g){var N,b=g.exec(t.substring(O));if(b)return N=b[0],O+=N.length,N}for(var s=t.length,o=/^[ \t\n\r\u000c]+/,i=/^[, \t\n\r\u000c]+/,r=/^[^ \t\n\r\u000c]+/,u=/[,]+$/,l=/^\d+$/,d=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,E,c,m,_,f,O=0,S=[];;){if(a(i),O>=s)return S;E=a(r),c=[],E.slice(-1)===","?(E=E.replace(u,""),I()):R()}function R(){for(a(o),m="",_="in descriptor";;){if(f=t.charAt(O),_==="in descriptor")if(n(f))m&&(c.push(m),m="",_="after descriptor");else if(f===","){O+=1,m&&c.push(m),I();return}else if(f==="(")m=m+f,_="in parens";else if(f===""){m&&c.push(m),I();return}else m=m+f;else if(_==="in parens")if(f===")")m=m+f,_="in descriptor";else if(f===""){c.push(m),I();return}else m=m+f;else if(_==="after descriptor"&&!n(f))if(f===""){I();return}else _="in descriptor",O-=1;O+=1}}function I(){var g=!1,N,b,C,y,D={},M,P,W,Q,Se;for(y=0;y",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(s){if(!this.source)return"";let o=this.source;s==null&&(s=e.isColorSupported);let i=m=>m,r=m=>m,u=m=>m;if(s){let{bold:m,gray:_,red:f}=e.createColors(!0);r=O=>m(f(O)),i=O=>_(O),t&&(u=O=>t(O))}let l=o.split(/\r?\n/),d=Math.max(this.line-3,0),E=Math.min(this.line+2,l.length),c=String(E).length;return l.slice(d,E).map((m,_)=>{let f=d+1+_,O=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(m.length>160){let R=20,I=Math.max(0,this.column-R),g=Math.max(this.column+R,this.endColumn+R),N=m.slice(I,g),b=i(O.replace(/\d/g," "))+m.slice(0,Math.min(this.column-1,R-1)).replace(/[^\t]/g," ");return r(">")+i(O)+u(N)+` + `+b+r("^")}let S=i(O.replace(/\d/g," "))+m.slice(0,this.column-1).replace(/[^\t]/g," ");return r(">")+i(O)+u(m)+` + `+S+r("^")}return" "+i(O)+u(m)}).join(` +`)}toString(){let s=this.showSourceCode();return s&&(s=` + +`+s+` +`),this.name+": "+this.message+s}}return wc=n,n.default=n,wc}var Mc,zf;function _O(){if(zf)return Mc;zf=1;const e={after:` +`,beforeClose:` +`,beforeComment:` +`,beforeDecl:` +`,beforeOpen:" ",beforeRule:` +`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function t(a){return a[0].toUpperCase()+a.slice(1)}class n{constructor(s){this.builder=s}atrule(s,o){let i="@"+s.name,r=s.params?this.rawValue(s,"params"):"";if(typeof s.raws.afterName<"u"?i+=s.raws.afterName:r&&(i+=" "),s.nodes)this.block(s,i+r);else{let u=(s.raws.between||"")+(o?";":"");this.builder(i+r+u,s)}}beforeAfter(s,o){let i;s.type==="decl"?i=this.raw(s,null,"beforeDecl"):s.type==="comment"?i=this.raw(s,null,"beforeComment"):o==="before"?i=this.raw(s,null,"beforeRule"):i=this.raw(s,null,"beforeClose");let r=s.parent,u=0;for(;r&&r.type!=="root";)u+=1,r=r.parent;if(i.includes(` +`)){let l=this.raw(s,null,"indent");if(l.length)for(let d=0;d0&&s.nodes[o].type==="comment";)o-=1;let i=this.raw(s,"semicolon");for(let r=0;r{if(r=E.raws[o],typeof r<"u")return!1})}return typeof r>"u"&&(r=e[i]),l.rawCache[i]=r,r}rawBeforeClose(s){let o;return s.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return o=i.raws.after,o.includes(` +`)&&(o=o.replace(/[^\n]+$/,"")),!1}),o&&(o=o.replace(/\S/g,"")),o}rawBeforeComment(s,o){let i;return s.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(` +`)&&(i=i.replace(/[^\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(o,null,"beforeDecl"):i&&(i=i.replace(/\S/g,"")),i}rawBeforeDecl(s,o){let i;return s.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(` +`)&&(i=i.replace(/[^\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(o,null,"beforeRule"):i&&(i=i.replace(/\S/g,"")),i}rawBeforeOpen(s){let o;return s.walk(i=>{if(i.type!=="decl"&&(o=i.raws.between,typeof o<"u"))return!1}),o}rawBeforeRule(s){let o;return s.walk(i=>{if(i.nodes&&(i.parent!==s||s.first!==i)&&typeof i.raws.before<"u")return o=i.raws.before,o.includes(` +`)&&(o=o.replace(/[^\n]+$/,"")),!1}),o&&(o=o.replace(/\S/g,"")),o}rawColon(s){let o;return s.walkDecls(i=>{if(typeof i.raws.between<"u")return o=i.raws.between.replace(/[^\s:]/g,""),!1}),o}rawEmptyBody(s){let o;return s.walk(i=>{if(i.nodes&&i.nodes.length===0&&(o=i.raws.after,typeof o<"u"))return!1}),o}rawIndent(s){if(s.raws.indent)return s.raws.indent;let o;return s.walk(i=>{let r=i.parent;if(r&&r!==s&&r.parent&&r.parent===s&&typeof i.raws.before<"u"){let u=i.raws.before.split(` +`);return o=u[u.length-1],o=o.replace(/\S/g,""),!1}}),o}rawSemicolon(s){let o;return s.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(o=i.raws.semicolon,typeof o<"u"))return!1}),o}rawValue(s,o){let i=s[o],r=s.raws[o];return r&&r.value===i?r.raw:i}root(s){this.body(s),s.raws.after&&this.builder(s.raws.after)}rule(s){this.block(s,this.rawValue(s,"selector")),s.raws.ownSemicolon&&this.builder(s.raws.ownSemicolon,s,"end")}stringify(s,o){if(!this[s.type])throw new Error("Unknown AST node type "+s.type+". Maybe you need to change PostCSS stringifier.");this[s.type](s,o)}}return Mc=n,n.default=n,Mc}var Wc,xf;function yl(){if(xf)return Wc;xf=1;let e=_O();function t(n,a){new e(a).stringify(n)}return Wc=t,t.default=t,Wc}var $r={},Bf;function $p(){return Bf||(Bf=1,$r.isClean=Symbol("isClean"),$r.my=Symbol("my")),$r}var Fc,Gf;function $l(){if(Gf)return Fc;Gf=1;let e=yp(),t=_O(),n=yl(),{isClean:a,my:s}=$p();function o(u,l){let d=new u.constructor;for(let E in u){if(!Object.prototype.hasOwnProperty.call(u,E)||E==="proxyCache")continue;let c=u[E],m=typeof c;E==="parent"&&m==="object"?l&&(d[E]=l):E==="source"?d[E]=c:Array.isArray(c)?d[E]=c.map(_=>o(_,d)):(m==="object"&&c!==null&&(c=o(c)),d[E]=c)}return d}function i(u,l){if(l&&typeof l.offset<"u")return l.offset;let d=1,E=1,c=0;for(let m=0;ml.root().toProxy():l[d]},set(l,d,E){return l[d]===E||(l[d]=E,(d==="prop"||d==="value"||d==="name"||d==="params"||d==="important"||d==="text")&&l.markDirty()),!0}}}markClean(){this[a]=!0}markDirty(){if(this[a]){this[a]=!1;let l=this;for(;l=l.parent;)l[a]=!1}}next(){if(!this.parent)return;let l=this.parent.index(this);return this.parent.nodes[l+1]}positionBy(l){let d=this.source.start;if(l.index)d=this.positionInside(l.index);else if(l.word){let c=this.source.input.css.slice(i(this.source.input.css,this.source.start),i(this.source.input.css,this.source.end)).indexOf(l.word);c!==-1&&(d=this.positionInside(c))}return d}positionInside(l){let d=this.source.start.column,E=this.source.start.line,c=i(this.source.input.css,this.source.start),m=c+l;for(let _=c;_typeof O=="object"&&O.toJSON?O.toJSON(null,d):O);else if(typeof f=="object"&&f.toJSON)E[_]=f.toJSON(null,d);else if(_==="source"){let O=d.get(f.input);O==null&&(O=m,d.set(f.input,m),m++),E[_]={end:f.end,inputId:O,start:f.start}}else E[_]=f}return c&&(E.inputs=[...d.keys()].map(_=>_.toJSON())),E}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(l=n){l.stringify&&(l=l.stringify);let d="";return l(this,E=>{d+=E}),d}warn(l,d,E){let c={node:this};for(let m in E)c[m]=E[m];return l.warn(d,c)}get proxyOf(){return this}}return Fc=r,r.default=r,Fc}var zc,Vf;function Ul(){if(Vf)return zc;Vf=1;let e=$l();class t extends e{constructor(a){super(a),this.type="comment"}}return zc=t,t.default=t,zc}var xc,Hf;function kl(){if(Hf)return xc;Hf=1;let e=$l();class t extends e{constructor(a){a&&typeof a.value<"u"&&typeof a.value!="string"&&(a={...a,value:String(a.value)}),super(a),this.type="decl"}get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}}return xc=t,t.default=t,xc}var Bc,Kf;function Ks(){if(Kf)return Bc;Kf=1;let e=Ul(),t=kl(),n=$l(),{isClean:a,my:s}=$p(),o,i,r,u;function l(c){return c.map(m=>(m.nodes&&(m.nodes=l(m.nodes)),delete m.source,m))}function d(c){if(c[a]=!1,c.proxyOf.nodes)for(let m of c.proxyOf.nodes)d(m)}class E extends n{append(...m){for(let _ of m){let f=this.normalize(_,this.last);for(let O of f)this.proxyOf.nodes.push(O)}return this.markDirty(),this}cleanRaws(m){if(super.cleanRaws(m),this.nodes)for(let _ of this.nodes)_.cleanRaws(m)}each(m){if(!this.proxyOf.nodes)return;let _=this.getIterator(),f,O;for(;this.indexes[_]m[_](...f.map(O=>typeof O=="function"?(S,R)=>O(S.toProxy(),R):O)):_==="every"||_==="some"?f=>m[_]((O,...S)=>f(O.toProxy(),...S)):_==="root"?()=>m.root().toProxy():_==="nodes"?m.nodes.map(f=>f.toProxy()):_==="first"||_==="last"?m[_].toProxy():m[_]:m[_]},set(m,_,f){return m[_]===f||(m[_]=f,(_==="name"||_==="params"||_==="selector")&&m.markDirty()),!0}}}index(m){return typeof m=="number"?m:(m.proxyOf&&(m=m.proxyOf),this.proxyOf.nodes.indexOf(m))}insertAfter(m,_){let f=this.index(m),O=this.normalize(_,this.proxyOf.nodes[f]).reverse();f=this.index(m);for(let R of O)this.proxyOf.nodes.splice(f+1,0,R);let S;for(let R in this.indexes)S=this.indexes[R],f"u")m=[];else if(Array.isArray(m)){m=m.slice(0);for(let O of m)O.parent&&O.parent.removeChild(O,"ignore")}else if(m.type==="root"&&this.type!=="document"){m=m.nodes.slice(0);for(let O of m)O.parent&&O.parent.removeChild(O,"ignore")}else if(m.type)m=[m];else if(m.prop){if(typeof m.value>"u")throw new Error("Value field is missed in node creation");typeof m.value!="string"&&(m.value=String(m.value)),m=[new t(m)]}else if(m.selector||m.selectors)m=[new u(m)];else if(m.name)m=[new o(m)];else if(m.text)m=[new e(m)];else throw new Error("Unknown node type in node creation");return m.map(O=>(O[s]||E.rebuild(O),O=O.proxyOf,O.parent&&O.parent.removeChild(O),O[a]&&d(O),O.raws||(O.raws={}),typeof O.raws.before>"u"&&_&&typeof _.raws.before<"u"&&(O.raws.before=_.raws.before.replace(/\S/g,"")),O.parent=this.proxyOf,O))}prepend(...m){m=m.reverse();for(let _ of m){let f=this.normalize(_,this.first,"prepend").reverse();for(let O of f)this.proxyOf.nodes.unshift(O);for(let O in this.indexes)this.indexes[O]=this.indexes[O]+f.length}return this.markDirty(),this}push(m){return m.parent=this,this.proxyOf.nodes.push(m),this}removeAll(){for(let m of this.proxyOf.nodes)m.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(m){m=this.index(m),this.proxyOf.nodes[m].parent=void 0,this.proxyOf.nodes.splice(m,1);let _;for(let f in this.indexes)_=this.indexes[f],_>=m&&(this.indexes[f]=_-1);return this.markDirty(),this}replaceValues(m,_,f){return f||(f=_,_={}),this.walkDecls(O=>{_.props&&!_.props.includes(O.prop)||_.fast&&!O.value.includes(_.fast)||(O.value=O.value.replace(m,f))}),this.markDirty(),this}some(m){return this.nodes.some(m)}walk(m){return this.each((_,f)=>{let O;try{O=m(_,f)}catch(S){throw _.addToError(S)}return O!==!1&&_.walk&&(O=_.walk(m)),O})}walkAtRules(m,_){return _?m instanceof RegExp?this.walk((f,O)=>{if(f.type==="atrule"&&m.test(f.name))return _(f,O)}):this.walk((f,O)=>{if(f.type==="atrule"&&f.name===m)return _(f,O)}):(_=m,this.walk((f,O)=>{if(f.type==="atrule")return _(f,O)}))}walkComments(m){return this.walk((_,f)=>{if(_.type==="comment")return m(_,f)})}walkDecls(m,_){return _?m instanceof RegExp?this.walk((f,O)=>{if(f.type==="decl"&&m.test(f.prop))return _(f,O)}):this.walk((f,O)=>{if(f.type==="decl"&&f.prop===m)return _(f,O)}):(_=m,this.walk((f,O)=>{if(f.type==="decl")return _(f,O)}))}walkRules(m,_){return _?m instanceof RegExp?this.walk((f,O)=>{if(f.type==="rule"&&m.test(f.selector))return _(f,O)}):this.walk((f,O)=>{if(f.type==="rule"&&f.selector===m)return _(f,O)}):(_=m,this.walk((f,O)=>{if(f.type==="rule")return _(f,O)}))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}return E.registerParse=c=>{i=c},E.registerRule=c=>{u=c},E.registerAtRule=c=>{o=c},E.registerRoot=c=>{r=c},Bc=E,E.default=E,E.rebuild=c=>{c.type==="atrule"?Object.setPrototypeOf(c,o.prototype):c.type==="rule"?Object.setPrototypeOf(c,u.prototype):c.type==="decl"?Object.setPrototypeOf(c,t.prototype):c.type==="comment"?Object.setPrototypeOf(c,e.prototype):c.type==="root"&&Object.setPrototypeOf(c,r.prototype),c[s]=!0,c.nodes&&c.nodes.forEach(m=>{E.rebuild(m)})},Bc}var Gc,qf;function Up(){if(qf)return Gc;qf=1;let e=Ks();class t extends e{constructor(a){super(a),this.type="atrule"}append(...a){return this.proxyOf.nodes||(this.nodes=[]),super.append(...a)}prepend(...a){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...a)}}return Gc=t,t.default=t,e.registerAtRule(t),Gc}var Vc,jf;function kp(){if(jf)return Vc;jf=1;let e=Ks(),t,n;class a extends e{constructor(o){super({type:"document",...o}),this.nodes||(this.nodes=[])}toResult(o={}){return new t(new n,this,o).stringify()}}return a.registerLazyResult=s=>{t=s},a.registerProcessor=s=>{n=s},Vc=a,a.default=a,Vc}var Hc,Yf;function ZVe(){if(Yf)return Hc;Yf=1;let e="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";return Hc={nanoid:(a=21)=>{let s="",o=a|0;for(;o--;)s+=e[Math.random()*64|0];return s},customAlphabet:(a,s=21)=>(o=s)=>{let i="",r=o|0;for(;r--;)i+=a[Math.random()*a.length|0];return i}},Hc}var Kc,Xf;function fO(){if(Xf)return Kc;Xf=1;let{existsSync:e,readFileSync:t}=ea,{dirname:n,join:a}=ea,{SourceMapConsumer:s,SourceMapGenerator:o}=ea;function i(u){return Buffer?Buffer.from(u,"base64").toString():window.atob(u)}class r{constructor(l,d){if(d.map===!1)return;this.loadAnnotation(l),this.inline=this.startWith(this.annotation,"data:");let E=d.map?d.map.prev:void 0,c=this.loadMap(d.from,E);!this.mapFile&&d.from&&(this.mapFile=d.from),this.mapFile&&(this.root=n(this.mapFile)),c&&(this.text=c)}consumer(){return this.consumerCache||(this.consumerCache=new s(this.text)),this.consumerCache}decodeInline(l){let d=/^data:application\/json;charset=utf-?8;base64,/,E=/^data:application\/json;base64,/,c=/^data:application\/json;charset=utf-?8,/,m=/^data:application\/json,/,_=l.match(c)||l.match(m);if(_)return decodeURIComponent(l.substr(_[0].length));let f=l.match(d)||l.match(E);if(f)return i(l.substr(f[0].length));let O=l.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+O)}getAnnotationURL(l){return l.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(l){return typeof l!="object"?!1:typeof l.mappings=="string"||typeof l._mappings=="string"||Array.isArray(l.sections)}loadAnnotation(l){let d=l.match(/\/\*\s*# sourceMappingURL=/g);if(!d)return;let E=l.lastIndexOf(d.pop()),c=l.indexOf("*/",E);E>-1&&c>-1&&(this.annotation=this.getAnnotationURL(l.substring(E,c)))}loadFile(l){if(this.root=n(l),e(l))return this.mapFile=l,t(l,"utf-8").toString().trim()}loadMap(l,d){if(d===!1)return!1;if(d){if(typeof d=="string")return d;if(typeof d=="function"){let E=d(l);if(E){let c=this.loadFile(E);if(!c)throw new Error("Unable to load previous source map: "+E.toString());return c}}else{if(d instanceof s)return o.fromSourceMap(d).toString();if(d instanceof o)return d.toString();if(this.isMap(d))return JSON.stringify(d);throw new Error("Unsupported previous source map format: "+d.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let E=this.annotation;return l&&(E=a(n(l),E)),this.loadFile(E)}}}startWith(l,d){return l?l.substr(0,d.length)===d:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}}return Kc=r,r.default=r,Kc}var qc,Qf;function wl(){if(Qf)return qc;Qf=1;let{nanoid:e}=ZVe(),{isAbsolute:t,resolve:n}=ea,{SourceMapConsumer:a,SourceMapGenerator:s}=ea,{fileURLToPath:o,pathToFileURL:i}=ea,r=yp(),u=fO(),l=ea,d=Symbol("fromOffsetCache"),E=!!(a&&s),c=!!(n&&t);class m{constructor(f,O={}){if(f===null||typeof f>"u"||typeof f=="object"&&!f.toString)throw new Error(`PostCSS received ${f} instead of CSS string`);if(this.css=f.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,O.from&&(!c||/^\w+:\/\//.test(O.from)||t(O.from)?this.file=O.from:this.file=n(O.from)),c&&E){let S=new u(this.css,O);if(S.text){this.map=S;let R=S.consumer().file;!this.file&&R&&(this.file=this.mapResolve(R))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(f,O,S,R={}){let I,g,N;if(O&&typeof O=="object"){let C=O,y=S;if(typeof C.offset=="number"){let D=this.fromOffset(C.offset);O=D.line,S=D.col}else O=C.line,S=C.column;if(typeof y.offset=="number"){let D=this.fromOffset(y.offset);g=D.line,I=D.col}else g=y.line,I=y.column}else if(!S){let C=this.fromOffset(O);O=C.line,S=C.col}let b=this.origin(O,S,g,I);return b?N=new r(f,b.endLine===void 0?b.line:{column:b.column,line:b.line},b.endLine===void 0?b.column:{column:b.endColumn,line:b.endLine},b.source,b.file,R.plugin):N=new r(f,g===void 0?O:{column:S,line:O},g===void 0?S:{column:I,line:g},this.css,this.file,R.plugin),N.input={column:S,endColumn:I,endLine:g,line:O,source:this.css},this.file&&(i&&(N.input.url=i(this.file).toString()),N.input.file=this.file),N}fromOffset(f){let O,S;if(this[d])S=this[d];else{let I=this.css.split(` +`);S=new Array(I.length);let g=0;for(let N=0,b=I.length;N=O)R=S.length-1;else{let I=S.length-2,g;for(;R>1),f=S[g+1])R=g+1;else{R=g;break}}return{col:f-S[R]+1,line:R+1}}mapResolve(f){return/^\w+:\/\//.test(f)?f:n(this.map.consumer().sourceRoot||this.map.root||".",f)}origin(f,O,S,R){if(!this.map)return!1;let I=this.map.consumer(),g=I.originalPositionFor({column:O,line:f});if(!g.source)return!1;let N;typeof S=="number"&&(N=I.originalPositionFor({column:R,line:S}));let b;t(g.source)?b=i(g.source):b=new URL(g.source,this.map.consumer().sourceRoot||i(this.map.mapFile));let C={column:g.column,endColumn:N&&N.column,endLine:N&&N.line,line:g.line,url:b.toString()};if(b.protocol==="file:")if(o)C.file=o(b);else throw new Error("file: protocol is not available in this PostCSS build");let y=I.sourceContentFor(g.source);return y&&(C.source=y),C}toJSON(){let f={};for(let O of["hasBOM","css","file","id"])this[O]!=null&&(f[O]=this[O]);return this.map&&(f.map={...this.map},f.map.consumerCache&&(f.map.consumerCache=void 0)),f}get from(){return this.file||this.id}}return qc=m,m.default=m,l&&l.registerInput&&l.registerInput(m),qc}var jc,Zf;function lr(){if(Zf)return jc;Zf=1;let e=Ks(),t,n;class a extends e{constructor(o){super(o),this.type="root",this.nodes||(this.nodes=[])}normalize(o,i,r){let u=super.normalize(o);if(i){if(r==="prepend")this.nodes.length>1?i.raws.before=this.nodes[1].raws.before:delete i.raws.before;else if(this.first!==i)for(let l of u)l.raws.before=i.raws.before}return u}removeChild(o,i){let r=this.index(o);return!i&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(o)}toResult(o={}){return new t(new n,this,o).stringify()}}return a.registerLazyResult=s=>{t=s},a.registerProcessor=s=>{n=s},jc=a,a.default=a,e.registerRoot(a),jc}var Yc,Jf;function hO(){if(Jf)return Yc;Jf=1;let e={comma(t){return e.split(t,[","],!0)},space(t){let n=[" ",` +`," "];return e.split(t,n)},split(t,n,a){let s=[],o="",i=!1,r=0,u=!1,l="",d=!1;for(let E of t)d?d=!1:E==="\\"?d=!0:u?E===l&&(u=!1):E==='"'||E==="'"?(u=!0,l=E):E==="("?r+=1:E===")"?r>0&&(r-=1):r===0&&n.includes(E)&&(i=!0),i?(o!==""&&s.push(o.trim()),o="",i=!1):o+=E;return(a||o!=="")&&s.push(o.trim()),s}};return Yc=e,e.default=e,Yc}var Xc,eh;function wp(){if(eh)return Xc;eh=1;let e=Ks(),t=hO();class n extends e{constructor(s){super(s),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return t.comma(this.selector)}set selectors(s){let o=this.selector?this.selector.match(/,\s*/):null,i=o?o[0]:","+this.raw("between","beforeOpen");this.selector=s.join(i)}}return Xc=n,n.default=n,e.registerRule(n),Xc}var Qc,th;function JVe(){if(th)return Qc;th=1;let e=Up(),t=Ul(),n=kl(),a=wl(),s=fO(),o=lr(),i=wp();function r(u,l){if(Array.isArray(u))return u.map(c=>r(c));let{inputs:d,...E}=u;if(d){l=[];for(let c of d){let m={...c,__proto__:a.prototype};m.map&&(m.map={...m.map,__proto__:s.prototype}),l.push(m)}}if(E.nodes&&(E.nodes=u.nodes.map(c=>r(c,l))),E.source){let{inputId:c,...m}=E.source;E.source=m,c!=null&&(E.source.input=l[c])}if(E.type==="root")return new o(E);if(E.type==="decl")return new n(E);if(E.type==="rule")return new i(E);if(E.type==="comment")return new t(E);if(E.type==="atrule")return new e(E);throw new Error("Unknown node type: "+u.type)}return Qc=r,r.default=r,Qc}var Zc,nh;function SO(){if(nh)return Zc;nh=1;let{dirname:e,relative:t,resolve:n,sep:a}=ea,{SourceMapConsumer:s,SourceMapGenerator:o}=ea,{pathToFileURL:i}=ea,r=wl(),u=!!(s&&o),l=!!(e&&n&&t&&a);class d{constructor(c,m,_,f){this.stringify=c,this.mapOpts=_.map||{},this.root=m,this.opts=_,this.css=f,this.originalCSS=f,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let c;this.isInline()?c="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?c=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?c=this.mapOpts.annotation(this.opts.to,this.root):c=this.outputFile()+".map";let m=` +`;this.css.includes(`\r +`)&&(m=`\r +`),this.css+=m+"/*# sourceMappingURL="+c+" */"}applyPrevMaps(){for(let c of this.previous()){let m=this.toUrl(this.path(c.file)),_=c.root||e(c.file),f;this.mapOpts.sourcesContent===!1?(f=new s(c.text),f.sourcesContent&&(f.sourcesContent=null)):f=c.consumer(),this.map.applySourceMap(f,m,this.toUrl(this.path(_)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1)if(this.root){let c;for(let m=this.root.nodes.length-1;m>=0;m--)c=this.root.nodes[m],c.type==="comment"&&c.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(m)}else this.css&&(this.css=this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),l&&u&&this.isMap())return this.generateMap();{let c="";return this.stringify(this.root,m=>{c+=m}),[c]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let c=this.previous()[0].consumer();c.file=this.outputFile(),this.map=o.fromSourceMap(c,{ignoreInvalidMapping:!0})}else this.map=new o({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new o({file:this.outputFile(),ignoreInvalidMapping:!0});let c=1,m=1,_="",f={generated:{column:0,line:0},original:{column:0,line:0},source:""},O,S;this.stringify(this.root,(R,I,g)=>{if(this.css+=R,I&&g!=="end"&&(f.generated.line=c,f.generated.column=m-1,I.source&&I.source.start?(f.source=this.sourcePath(I),f.original.line=I.source.start.line,f.original.column=I.source.start.column-1,this.map.addMapping(f)):(f.source=_,f.original.line=1,f.original.column=0,this.map.addMapping(f))),S=R.match(/\n/g),S?(c+=S.length,O=R.lastIndexOf(` +`),m=R.length-O):m+=R.length,I&&g!=="start"){let N=I.parent||{raws:{}};(!(I.type==="decl"||I.type==="atrule"&&!I.nodes)||I!==N.last||N.raws.semicolon)&&(I.source&&I.source.end?(f.source=this.sourcePath(I),f.original.line=I.source.end.line,f.original.column=I.source.end.column-1,f.generated.line=c,f.generated.column=m-2,this.map.addMapping(f)):(f.source=_,f.original.line=1,f.original.column=0,f.generated.line=c,f.generated.column=m-1,this.map.addMapping(f)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(c=>c.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let c=this.mapOpts.annotation;return typeof c<"u"&&c!==!0?!1:this.previous().length?this.previous().some(m=>m.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(c=>c.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(c){if(this.mapOpts.absolute||c.charCodeAt(0)===60||/^\w+:\/\//.test(c))return c;let m=this.memoizedPaths.get(c);if(m)return m;let _=this.opts.to?e(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(_=e(n(_,this.mapOpts.annotation)));let f=t(_,c);return this.memoizedPaths.set(c,f),f}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(c=>{if(c.source&&c.source.input.map){let m=c.source.input.map;this.previousMaps.includes(m)||this.previousMaps.push(m)}});else{let c=new r(this.originalCSS,this.opts);c.map&&this.previousMaps.push(c.map)}return this.previousMaps}setSourcesContent(){let c={};if(this.root)this.root.walk(m=>{if(m.source){let _=m.source.input.from;if(_&&!c[_]){c[_]=!0;let f=this.usesFileUrls?this.toFileUrl(_):this.toUrl(this.path(_));this.map.setSourceContent(f,m.source.input.css)}}});else if(this.css){let m=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(m,this.css)}}sourcePath(c){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(c.source.input.from):this.toUrl(this.path(c.source.input.from))}toBase64(c){return Buffer?Buffer.from(c).toString("base64"):window.btoa(unescape(encodeURIComponent(c)))}toFileUrl(c){let m=this.memoizedFileURLs.get(c);if(m)return m;if(i){let _=i(c).toString();return this.memoizedFileURLs.set(c,_),_}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(c){let m=this.memoizedURLs.get(c);if(m)return m;a==="\\"&&(c=c.replace(/\\/g,"/"));let _=encodeURI(c).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(c,_),_}}return Zc=d,Zc}var Jc,ah;function eHe(){if(ah)return Jc;ah=1;const e=39,t=34,n=92,a=47,s=10,o=32,i=12,r=9,u=13,l=91,d=93,E=40,c=41,m=123,_=125,f=59,O=42,S=58,R=64,I=/[\t\n\f\r "#'()/;[\\\]{}]/g,g=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,N=/.[\r\n"'(/\\]/,b=/[\da-f]/i;return Jc=function(y,D={}){let M=y.css.valueOf(),P=D.ignoreErrors,W,Q,Se,J,Ee,fe,Pe,Ke,et,He,_t=M.length,we=0,se=[],ke=[];function pt(){return we}function me(oe){throw y.error("Unclosed "+oe,we)}function Z(){return ke.length===0&&we>=_t}function Ae(oe){if(ke.length)return ke.pop();if(we>=_t)return;let U=oe?oe.ignoreUnclosed:!1;switch(W=M.charCodeAt(we),W){case s:case o:case r:case u:case i:{J=we;do J+=1,W=M.charCodeAt(J);while(W===o||W===s||W===r||W===u||W===i);fe=["space",M.slice(we,J)],we=J-1;break}case l:case d:case m:case _:case S:case f:case c:{let k=String.fromCharCode(W);fe=[k,k,we];break}case E:{if(He=se.length?se.pop()[1]:"",et=M.charCodeAt(we+1),He==="url"&&et!==e&&et!==t&&et!==o&&et!==s&&et!==r&&et!==i&&et!==u){J=we;do{if(Pe=!1,J=M.indexOf(")",J+1),J===-1)if(P||U){J=we;break}else me("bracket");for(Ke=J;M.charCodeAt(Ke-1)===n;)Ke-=1,Pe=!Pe}while(Pe);fe=["brackets",M.slice(we,J+1),we,J],we=J}else J=M.indexOf(")",we+1),Q=M.slice(we,J+1),J===-1||N.test(Q)?fe=["(","(",we]:(fe=["brackets",Q,we,J],we=J);break}case e:case t:{Ee=W===e?"'":'"',J=we;do{if(Pe=!1,J=M.indexOf(Ee,J+1),J===-1)if(P||U){J=we+1;break}else me("string");for(Ke=J;M.charCodeAt(Ke-1)===n;)Ke-=1,Pe=!Pe}while(Pe);fe=["string",M.slice(we,J+1),we,J],we=J;break}case R:{I.lastIndex=we+1,I.test(M),I.lastIndex===0?J=M.length-1:J=I.lastIndex-2,fe=["at-word",M.slice(we,J+1),we,J],we=J;break}case n:{for(J=we,Se=!0;M.charCodeAt(J+1)===n;)J+=1,Se=!Se;if(W=M.charCodeAt(J+1),Se&&W!==a&&W!==o&&W!==s&&W!==r&&W!==u&&W!==i&&(J+=1,b.test(M.charAt(J)))){for(;b.test(M.charAt(J+1));)J+=1;M.charCodeAt(J+1)===o&&(J+=1)}fe=["word",M.slice(we,J+1),we,J],we=J;break}default:{W===a&&M.charCodeAt(we+1)===O?(J=M.indexOf("*/",we+2)+1,J===0&&(P||U?J=M.length:me("comment")),fe=["comment",M.slice(we,J+1),we,J],we=J):(g.lastIndex=we+1,g.test(M),g.lastIndex===0?J=M.length-1:J=g.lastIndex-2,fe=["word",M.slice(we,J+1),we,J],se.push(fe),we=J);break}}return we++,fe}function Te(oe){ke.push(oe)}return{back:Te,endOfFile:Z,nextToken:Ae,position:pt}},Jc}var ed,sh;function tHe(){if(sh)return ed;sh=1;let e=Up(),t=Ul(),n=kl(),a=lr(),s=wp(),o=eHe();const i={empty:!0,space:!0};function r(l){for(let d=l.length-1;d>=0;d--){let E=l[d],c=E[3]||E[2];if(c)return c}}class u{constructor(d){this.input=d,this.root=new a,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:d,start:{column:1,line:1,offset:0}}}atrule(d){let E=new e;E.name=d[1].slice(1),E.name===""&&this.unnamedAtrule(E,d),this.init(E,d[2]);let c,m,_,f=!1,O=!1,S=[],R=[];for(;!this.tokenizer.endOfFile();){if(d=this.tokenizer.nextToken(),c=d[0],c==="("||c==="["?R.push(c==="("?")":"]"):c==="{"&&R.length>0?R.push("}"):c===R[R.length-1]&&R.pop(),R.length===0)if(c===";"){E.source.end=this.getPosition(d[2]),E.source.end.offset++,this.semicolon=!0;break}else if(c==="{"){O=!0;break}else if(c==="}"){if(S.length>0){for(_=S.length-1,m=S[_];m&&m[0]==="space";)m=S[--_];m&&(E.source.end=this.getPosition(m[3]||m[2]),E.source.end.offset++)}this.end(d);break}else S.push(d);else S.push(d);if(this.tokenizer.endOfFile()){f=!0;break}}E.raws.between=this.spacesAndCommentsFromEnd(S),S.length?(E.raws.afterName=this.spacesAndCommentsFromStart(S),this.raw(E,"params",S),f&&(d=S[S.length-1],E.source.end=this.getPosition(d[3]||d[2]),E.source.end.offset++,this.spaces=E.raws.between,E.raws.between="")):(E.raws.afterName="",E.params=""),O&&(E.nodes=[],this.current=E)}checkMissedSemicolon(d){let E=this.colon(d);if(E===!1)return;let c=0,m;for(let _=E-1;_>=0&&(m=d[_],!(m[0]!=="space"&&(c+=1,c===2)));_--);throw this.input.error("Missed semicolon",m[0]==="word"?m[3]+1:m[2])}colon(d){let E=0,c,m,_;for(let[f,O]of d.entries()){if(m=O,_=m[0],_==="("&&(E+=1),_===")"&&(E-=1),E===0&&_===":")if(!c)this.doubleColon(m);else{if(c[0]==="word"&&c[1]==="progid")continue;return f}c=m}return!1}comment(d){let E=new t;this.init(E,d[2]),E.source.end=this.getPosition(d[3]||d[2]),E.source.end.offset++;let c=d[1].slice(2,-2);if(/^\s*$/.test(c))E.text="",E.raws.left=c,E.raws.right="";else{let m=c.match(/^(\s*)([^]*\S)(\s*)$/);E.text=m[2],E.raws.left=m[1],E.raws.right=m[3]}}createTokenizer(){this.tokenizer=o(this.input)}decl(d,E){let c=new n;this.init(c,d[0][2]);let m=d[d.length-1];for(m[0]===";"&&(this.semicolon=!0,d.pop()),c.source.end=this.getPosition(m[3]||m[2]||r(d)),c.source.end.offset++;d[0][0]!=="word";)d.length===1&&this.unknownWord(d),c.raws.before+=d.shift()[1];for(c.source.start=this.getPosition(d[0][2]),c.prop="";d.length;){let R=d[0][0];if(R===":"||R==="space"||R==="comment")break;c.prop+=d.shift()[1]}c.raws.between="";let _;for(;d.length;)if(_=d.shift(),_[0]===":"){c.raws.between+=_[1];break}else _[0]==="word"&&/\w/.test(_[1])&&this.unknownWord([_]),c.raws.between+=_[1];(c.prop[0]==="_"||c.prop[0]==="*")&&(c.raws.before+=c.prop[0],c.prop=c.prop.slice(1));let f=[],O;for(;d.length&&(O=d[0][0],!(O!=="space"&&O!=="comment"));)f.push(d.shift());this.precheckMissedSemicolon(d);for(let R=d.length-1;R>=0;R--){if(_=d[R],_[1].toLowerCase()==="!important"){c.important=!0;let I=this.stringFrom(d,R);I=this.spacesFromEnd(d)+I,I!==" !important"&&(c.raws.important=I);break}else if(_[1].toLowerCase()==="important"){let I=d.slice(0),g="";for(let N=R;N>0;N--){let b=I[N][0];if(g.trim().startsWith("!")&&b!=="space")break;g=I.pop()[1]+g}g.trim().startsWith("!")&&(c.important=!0,c.raws.important=g,d=I)}if(_[0]!=="space"&&_[0]!=="comment")break}d.some(R=>R[0]!=="space"&&R[0]!=="comment")&&(c.raws.between+=f.map(R=>R[1]).join(""),f=[]),this.raw(c,"value",f.concat(d),E),c.value.includes(":")&&!E&&this.checkMissedSemicolon(d)}doubleColon(d){throw this.input.error("Double colon",{offset:d[2]},{offset:d[2]+d[1].length})}emptyRule(d){let E=new s;this.init(E,d[2]),E.selector="",E.raws.between="",this.current=E}end(d){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(d[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(d)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(d){if(this.spaces+=d[1],this.current.nodes){let E=this.current.nodes[this.current.nodes.length-1];E&&E.type==="rule"&&!E.raws.ownSemicolon&&(E.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(d){let E=this.input.fromOffset(d);return{column:E.col,line:E.line,offset:d}}init(d,E){this.current.push(d),d.source={input:this.input,start:this.getPosition(E)},d.raws.before=this.spaces,this.spaces="",d.type!=="comment"&&(this.semicolon=!1)}other(d){let E=!1,c=null,m=!1,_=null,f=[],O=d[1].startsWith("--"),S=[],R=d;for(;R;){if(c=R[0],S.push(R),c==="("||c==="[")_||(_=R),f.push(c==="("?")":"]");else if(O&&m&&c==="{")_||(_=R),f.push("}");else if(f.length===0)if(c===";")if(m){this.decl(S,O);return}else break;else if(c==="{"){this.rule(S);return}else if(c==="}"){this.tokenizer.back(S.pop()),E=!0;break}else c===":"&&(m=!0);else c===f[f.length-1]&&(f.pop(),f.length===0&&(_=null));R=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(E=!0),f.length>0&&this.unclosedBracket(_),E&&m){if(!O)for(;S.length&&(R=S[S.length-1][0],!(R!=="space"&&R!=="comment"));)this.tokenizer.back(S.pop());this.decl(S,O)}else this.unknownWord(S)}parse(){let d;for(;!this.tokenizer.endOfFile();)switch(d=this.tokenizer.nextToken(),d[0]){case"space":this.spaces+=d[1];break;case";":this.freeSemicolon(d);break;case"}":this.end(d);break;case"comment":this.comment(d);break;case"at-word":this.atrule(d);break;case"{":this.emptyRule(d);break;default:this.other(d);break}this.endFile()}precheckMissedSemicolon(){}raw(d,E,c,m){let _,f,O=c.length,S="",R=!0,I,g;for(let N=0;Nb+C[1],"");d.raws[E]={raw:N,value:S}}d[E]=S}rule(d){d.pop();let E=new s;this.init(E,d[0][2]),E.raws.between=this.spacesAndCommentsFromEnd(d),this.raw(E,"selector",d),this.current=E}spacesAndCommentsFromEnd(d){let E,c="";for(;d.length&&(E=d[d.length-1][0],!(E!=="space"&&E!=="comment"));)c=d.pop()[1]+c;return c}spacesAndCommentsFromStart(d){let E,c="";for(;d.length&&(E=d[0][0],!(E!=="space"&&E!=="comment"));)c+=d.shift()[1];return c}spacesFromEnd(d){let E,c="";for(;d.length&&(E=d[d.length-1][0],E==="space");)c=d.pop()[1]+c;return c}stringFrom(d,E){let c="";for(let m=E;ma.type==="warning")}get content(){return this.css}}return ad=t,t.default=t,ad}var sd,uh;function OO(){if(uh)return sd;uh=1;let e=Ks(),t=kp(),n=SO(),a=Mp(),s=Wp(),o=lr(),i=yl(),{isClean:r,my:u}=$p();const l={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},d={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},E={Once:!0,postcssPlugin:!0,prepare:!0},c=0;function m(I){return typeof I=="object"&&typeof I.then=="function"}function _(I){let g=!1,N=l[I.type];return I.type==="decl"?g=I.prop.toLowerCase():I.type==="atrule"&&(g=I.name.toLowerCase()),g&&I.append?[N,N+"-"+g,c,N+"Exit",N+"Exit-"+g]:g?[N,N+"-"+g,N+"Exit",N+"Exit-"+g]:I.append?[N,c,N+"Exit"]:[N,N+"Exit"]}function f(I){let g;return I.type==="document"?g=["Document",c,"DocumentExit"]:I.type==="root"?g=["Root",c,"RootExit"]:g=_(I),{eventIndex:0,events:g,iterator:0,node:I,visitorIndex:0,visitors:[]}}function O(I){return I[r]=!1,I.nodes&&I.nodes.forEach(g=>O(g)),I}let S={};class R{constructor(g,N,b){this.stringified=!1,this.processed=!1;let C;if(typeof N=="object"&&N!==null&&(N.type==="root"||N.type==="document"))C=O(N);else if(N instanceof R||N instanceof s)C=O(N.root),N.map&&(typeof b.map>"u"&&(b.map={}),b.map.inline||(b.map.inline=!1),b.map.prev=N.map);else{let y=a;b.syntax&&(y=b.syntax.parse),b.parser&&(y=b.parser),y.parse&&(y=y.parse);try{C=y(N,b)}catch(D){this.processed=!0,this.error=D}C&&!C[u]&&e.rebuild(C)}this.result=new s(g,C,b),this.helpers={...S,postcss:S,result:this.result},this.plugins=this.processor.plugins.map(y=>typeof y=="object"&&y.prepare?{...y,...y.prepare(this.result)}:y)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(g){return this.async().catch(g)}finally(g){return this.async().then(g,g)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(g,N){let b=this.result.lastPlugin;try{N&&N.addToError(g),this.error=g,g.name==="CssSyntaxError"&&!g.plugin?(g.plugin=b.postcssPlugin,g.setMessage()):b.postcssVersion}catch(C){console&&console.error&&console.error(C)}return g}prepareVisitors(){this.listeners={};let g=(N,b,C)=>{this.listeners[b]||(this.listeners[b]=[]),this.listeners[b].push([N,C])};for(let N of this.plugins)if(typeof N=="object")for(let b in N){if(!d[b]&&/^[A-Z]/.test(b))throw new Error(`Unknown event ${b} in ${N.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!E[b])if(typeof N[b]=="object")for(let C in N[b])C==="*"?g(N,b,N[b][C]):g(N,b+"-"+C.toLowerCase(),N[b][C]);else typeof N[b]=="function"&&g(N,b,N[b])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let g=0;g0;){let b=this.visitTick(N);if(m(b))try{await b}catch(C){let y=N[N.length-1].node;throw this.handleError(C,y)}}}if(this.listeners.OnceExit)for(let[N,b]of this.listeners.OnceExit){this.result.lastPlugin=N;try{if(g.type==="document"){let C=g.nodes.map(y=>b(y,this.helpers));await Promise.all(C)}else await b(g,this.helpers)}catch(C){throw this.handleError(C)}}}return this.processed=!0,this.stringify()}runOnRoot(g){this.result.lastPlugin=g;try{if(typeof g=="object"&&g.Once){if(this.result.root.type==="document"){let N=this.result.root.nodes.map(b=>g.Once(b,this.helpers));return m(N[0])?Promise.all(N):N}return g.Once(this.result.root,this.helpers)}else if(typeof g=="function")return g(this.result.root,this.result)}catch(N){throw this.handleError(N)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let g=this.result.opts,N=i;g.syntax&&(N=g.syntax.stringify),g.stringifier&&(N=g.stringifier),N.stringify&&(N=N.stringify);let C=new n(N,this.result.root,this.result.opts).generate();return this.result.css=C[0],this.result.map=C[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let g of this.plugins){let N=this.runOnRoot(g);if(m(N))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let g=this.result.root;for(;!g[r];)g[r]=!0,this.walkSync(g);if(this.listeners.OnceExit)if(g.type==="document")for(let N of g.nodes)this.visitSync(this.listeners.OnceExit,N);else this.visitSync(this.listeners.OnceExit,g)}return this.result}then(g,N){return this.async().then(g,N)}toString(){return this.css}visitSync(g,N){for(let[b,C]of g){this.result.lastPlugin=b;let y;try{y=C(N,this.helpers)}catch(D){throw this.handleError(D,N.proxyOf)}if(N.type!=="root"&&N.type!=="document"&&!N.parent)return!0;if(m(y))throw this.getAsyncError()}}visitTick(g){let N=g[g.length-1],{node:b,visitors:C}=N;if(b.type!=="root"&&b.type!=="document"&&!b.parent){g.pop();return}if(C.length>0&&N.visitorIndex{C[r]||this.walkSync(C)});else{let C=this.listeners[b];if(C&&this.visitSync(C,g.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}}return R.registerPostcss=I=>{S=I},sd=R,R.default=R,o.registerLazyResult(R),t.registerLazyResult(R),sd}var od,lh;function nHe(){if(lh)return od;lh=1;let e=SO(),t=Mp();const n=Wp();let a=yl();class s{constructor(i,r,u){r=r.toString(),this.stringified=!1,this._processor=i,this._css=r,this._opts=u,this._map=void 0;let l,d=a;this.result=new n(this._processor,l,this._opts),this.result.css=r;let E=this;Object.defineProperty(this.result,"root",{get(){return E.root}});let c=new e(d,l,this._opts,r);if(c.isMap()){let[m,_]=c.generate();m&&(this.result.css=m),_&&(this.result.map=_)}else c.clearAnnotation(),this.result.css=c.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(i){return this.async().catch(i)}finally(i){return this.async().then(i,i)}sync(){if(this.error)throw this.error;return this.result}then(i,r){return this.async().then(i,r)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let i,r=t;try{i=r(this._css,this._opts)}catch(u){this.error=u}if(this.error)throw this.error;return this._root=i,i}get[Symbol.toStringTag](){return"NoWorkResult"}}return od=s,s.default=s,od}var id,ch;function aHe(){if(ch)return id;ch=1;let e=kp(),t=OO(),n=nHe(),a=lr();class s{constructor(i=[]){this.version="8.4.49",this.plugins=this.normalize(i)}normalize(i){let r=[];for(let u of i)if(u.postcss===!0?u=u():u.postcss&&(u=u.postcss),typeof u=="object"&&Array.isArray(u.plugins))r=r.concat(u.plugins);else if(typeof u=="object"&&u.postcssPlugin)r.push(u);else if(typeof u=="function")r.push(u);else if(!(typeof u=="object"&&(u.parse||u.stringify)))throw new Error(u+" is not a PostCSS plugin");return r}process(i,r={}){return!this.plugins.length&&!r.parser&&!r.stringifier&&!r.syntax?new n(this,i,r):new t(this,i,r)}use(i){return this.plugins=this.plugins.concat(this.normalize([i])),this}}return id=s,s.default=s,a.registerProcessor(s),e.registerProcessor(s),id}var rd,dh;function sHe(){if(dh)return rd;dh=1;var e={};let t=Up(),n=Ul(),a=Ks(),s=yp(),o=kl(),i=kp(),r=JVe(),u=wl(),l=OO(),d=hO(),E=$l(),c=Mp(),m=aHe(),_=Wp(),f=lr(),O=wp(),S=yl(),R=AO();function I(...g){return g.length===1&&Array.isArray(g[0])&&(g=g[0]),new m(g)}return I.plugin=function(N,b){let C=!1;function y(...M){console&&console.warn&&!C&&(C=!0,console.warn(N+`: postcss.plugin was deprecated. Migration guide: +https://evilmartians.com/chronicles/postcss-8-plugin-migration`),e.LANG&&e.LANG.startsWith("cn")&&console.warn(N+`: 里面 postcss.plugin 被弃用. 迁移指南: +https://www.w3ctech.com/topic/2226`));let P=b(...M);return P.postcssPlugin=N,P.postcssVersion=new m().version,P}let D;return Object.defineProperty(y,"postcss",{get(){return D||(D=y()),D}}),y.process=function(M,P,W){return I([y(W)]).process(M,P)},y},I.stringify=S,I.parse=c,I.fromJSON=r,I.list=d,I.comment=g=>new n(g),I.atRule=g=>new t(g),I.decl=g=>new o(g),I.rule=g=>new O(g),I.root=g=>new f(g),I.document=g=>new i(g),I.CssSyntaxError=s,I.Declaration=o,I.Container=a,I.Processor=m,I.Document=i,I.Comment=n,I.Warning=R,I.AtRule=t,I.Result=_,I.Input=u,I.Rule=O,I.Root=f,I.Node=E,l.registerPostcss(I),rd=I,I.default=I,rd}var ud,Eh;function oHe(){if(Eh)return ud;Eh=1;const e=GVe(),t=VVe(),{isPlainObject:n}=HVe(),a=KVe(),s=jVe(),{parse:o}=sHe(),i=["img","audio","video","picture","svg","object","map","iframe","embed"],r=["script","style"];function u(O,S){O&&Object.keys(O).forEach(function(R){S(O[R],R)})}function l(O,S){return{}.hasOwnProperty.call(O,S)}function d(O,S){const R=[];return u(O,function(I){S(I)&&R.push(I)}),R}function E(O){for(const S in O)if(l(O,S))return!1;return!0}function c(O){return O.map(function(S){if(!S.url)throw new Error("URL missing");return S.url+(S.w?` ${S.w}w`:"")+(S.h?` ${S.h}h`:"")+(S.d?` ${S.d}x`:"")}).join(", ")}ud=_;const m=/^[^\0\t\n\f\r /<=>]+$/;function _(O,S,R){if(O==null)return"";typeof O=="number"&&(O=O.toString());let I="",g="";function N(oe,U){const k=this;this.tag=oe,this.attribs=U||{},this.tagPosition=I.length,this.text="",this.mediaChildren=[],this.updateParentNodeText=function(){if(Ee.length){const G=Ee[Ee.length-1];G.text+=k.text}},this.updateParentNodeMediaChildren=function(){Ee.length&&i.includes(this.tag)&&Ee[Ee.length-1].mediaChildren.push(this.tag)}}S=Object.assign({},_.defaults,S),S.parser=Object.assign({},f,S.parser);const b=function(oe){return S.allowedTags===!1||(S.allowedTags||[]).indexOf(oe)>-1};r.forEach(function(oe){b(oe)&&!S.allowVulnerableTags&&console.warn(` + +⚠️ Your \`allowedTags\` option includes, \`${oe}\`, which is inherently +vulnerable to XSS attacks. Please remove it from \`allowedTags\`. +Or, to disable this warning, add the \`allowVulnerableTags\` option +and ensure you are accounting for this risk. + +`)});const C=S.nonTextTags||["script","style","textarea","option"];let y,D;S.allowedAttributes&&(y={},D={},u(S.allowedAttributes,function(oe,U){y[U]=[];const k=[];oe.forEach(function(G){typeof G=="string"&&G.indexOf("*")>=0?k.push(t(G).replace(/\\\*/g,".*")):y[U].push(G)}),k.length&&(D[U]=new RegExp("^("+k.join("|")+")$"))}));const M={},P={},W={};u(S.allowedClasses,function(oe,U){if(y&&(l(y,U)||(y[U]=[]),y[U].push("class")),M[U]=oe,Array.isArray(oe)){const k=[];M[U]=[],W[U]=[],oe.forEach(function(G){typeof G=="string"&&G.indexOf("*")>=0?k.push(t(G).replace(/\\\*/g,".*")):G instanceof RegExp?W[U].push(G):M[U].push(G)}),k.length&&(P[U]=new RegExp("^("+k.join("|")+")$"))}});const Q={};let Se;u(S.transformTags,function(oe,U){let k;typeof oe=="function"?k=oe:typeof oe=="string"&&(k=_.simpleTransform(oe)),U==="*"?Se=k:Q[U]=k});let J,Ee,fe,Pe,Ke,et,He=!1;we();const _t=new e.Parser({onopentag:function(oe,U){if(S.enforceHtmlBoundary&&oe==="html"&&we(),Ke){et++;return}const k=new N(oe,U);Ee.push(k);let G=!1;const le=!!k.text;let pe;if(l(Q,oe)&&(pe=Q[oe](oe,U),k.attribs=U=pe.attribs,pe.text!==void 0&&(k.innerText=pe.text),oe!==pe.tagName&&(k.name=oe=pe.tagName,Pe[J]=pe.tagName)),Se&&(pe=Se(oe,U),k.attribs=U=pe.attribs,oe!==pe.tagName&&(k.name=oe=pe.tagName,Pe[J]=pe.tagName)),(!b(oe)||S.disallowedTagsMode==="recursiveEscape"&&!E(fe)||S.nestingLimit!=null&&J>=S.nestingLimit)&&(G=!0,fe[J]=!0,(S.disallowedTagsMode==="discard"||S.disallowedTagsMode==="completelyDiscard")&&C.indexOf(oe)!==-1&&(Ke=!0,et=1),fe[J]=!0),J++,G){if(S.disallowedTagsMode==="discard"||S.disallowedTagsMode==="completelyDiscard"){if(k.innerText&&!le){const ie=se(k.innerText);S.textFilter?I+=S.textFilter(ie,oe):I+=se(k.innerText),He=!0}return}g=I,I=""}I+="<"+oe,oe==="script"&&(S.allowedScriptHostnames||S.allowedScriptDomains)&&(k.innerText=""),(!y||l(y,oe)||y["*"])&&u(U,function(ie,$){if(!m.test($)){delete k.attribs[$];return}if(ie===""&&!S.allowedEmptyAttributes.includes($)&&(S.nonBooleanAttributes.includes($)||S.nonBooleanAttributes.includes("*"))){delete k.attribs[$];return}let z=!1;if(!y||l(y,oe)&&y[oe].indexOf($)!==-1||y["*"]&&y["*"].indexOf($)!==-1||l(D,oe)&&D[oe].test($)||D["*"]&&D["*"].test($))z=!0;else if(y&&y[oe]){for(const V of y[oe])if(n(V)&&V.name&&V.name===$){z=!0;let j="";if(V.multiple===!0){const Re=ie.split(" ");for(const he of Re)V.values.indexOf(he)!==-1&&(j===""?j=he:j+=" "+he)}else V.values.indexOf(ie)>=0&&(j=ie);ie=j}}if(z){if(S.allowedSchemesAppliedToAttributes.indexOf($)!==-1&&ke(oe,ie)){delete k.attribs[$];return}if(oe==="script"&&$==="src"){let V=!0;try{const j=pt(ie);if(S.allowedScriptHostnames||S.allowedScriptDomains){const Re=(S.allowedScriptHostnames||[]).find(function(H){return H===j.url.hostname}),he=(S.allowedScriptDomains||[]).find(function(H){return j.url.hostname===H||j.url.hostname.endsWith(`.${H}`)});V=Re||he}}catch{V=!1}if(!V){delete k.attribs[$];return}}if(oe==="iframe"&&$==="src"){let V=!0;try{const j=pt(ie);if(j.isRelativeUrl)V=l(S,"allowIframeRelativeUrls")?S.allowIframeRelativeUrls:!S.allowedIframeHostnames&&!S.allowedIframeDomains;else if(S.allowedIframeHostnames||S.allowedIframeDomains){const Re=(S.allowedIframeHostnames||[]).find(function(H){return H===j.url.hostname}),he=(S.allowedIframeDomains||[]).find(function(H){return j.url.hostname===H||j.url.hostname.endsWith(`.${H}`)});V=Re||he}}catch{V=!1}if(!V){delete k.attribs[$];return}}if($==="srcset")try{let V=s(ie);if(V.forEach(function(j){ke("srcset",j.url)&&(j.evil=!0)}),V=d(V,function(j){return!j.evil}),V.length)ie=c(d(V,function(j){return!j.evil})),k.attribs[$]=ie;else{delete k.attribs[$];return}}catch{delete k.attribs[$];return}if($==="class"){const V=M[oe],j=M["*"],Re=P[oe],he=W[oe],H=W["*"],ce=P["*"],Me=[Re,ce].concat(he,H).filter(function(Ge){return Ge});if(V&&j?ie=Te(ie,a(V,j),Me):ie=Te(ie,V||j,Me),!ie.length){delete k.attribs[$];return}}if($==="style"){if(S.parseStyleAttributes)try{const V=o(oe+" {"+ie+"}",{map:!1}),j=me(V,S.allowedStyles);if(ie=Z(j),ie.length===0){delete k.attribs[$];return}}catch{typeof window<"u"&&console.warn('Failed to parse "'+oe+" {"+ie+`}", If you're running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547`),delete k.attribs[$];return}else if(S.allowedStyles)throw new Error("allowedStyles option cannot be used together with parseStyleAttributes: false.")}I+=" "+$,ie&&ie.length?I+='="'+se(ie,!0)+'"':S.allowedEmptyAttributes.includes($)&&(I+='=""')}else delete k.attribs[$]}),S.selfClosing.indexOf(oe)!==-1?I+=" />":(I+=">",k.innerText&&!le&&!S.textFilter&&(I+=se(k.innerText),He=!0)),G&&(I=g+se(I),g="")},ontext:function(oe){if(Ke)return;const U=Ee[Ee.length-1];let k;if(U&&(k=U.tag,oe=U.innerText!==void 0?U.innerText:oe),S.disallowedTagsMode==="completelyDiscard"&&!b(k))oe="";else if((S.disallowedTagsMode==="discard"||S.disallowedTagsMode==="completelyDiscard")&&(k==="script"||k==="style"))I+=oe;else{const G=se(oe,!1);S.textFilter&&!He?I+=S.textFilter(G,k):He||(I+=G)}if(Ee.length){const G=Ee[Ee.length-1];G.text+=oe}},onclosetag:function(oe,U){if(Ke)if(et--,!et)Ke=!1;else return;const k=Ee.pop();if(!k)return;if(k.tag!==oe){Ee.push(k);return}Ke=S.enforceHtmlBoundary?oe==="html":!1,J--;const G=fe[J];if(G){if(delete fe[J],S.disallowedTagsMode==="discard"||S.disallowedTagsMode==="completelyDiscard"){k.updateParentNodeText();return}g=I,I=""}if(Pe[J]&&(oe=Pe[J],delete Pe[J]),S.exclusiveFilter&&S.exclusiveFilter(k)){I=I.substr(0,k.tagPosition);return}if(k.updateParentNodeMediaChildren(),k.updateParentNodeText(),S.selfClosing.indexOf(oe)!==-1||U&&!b(oe)&&["escape","recursiveEscape"].indexOf(S.disallowedTagsMode)>=0){G&&(I=g,g="");return}I+="",G&&(I=g+se(I),g=""),He=!1}},S.parser);return _t.write(O),_t.end(),I;function we(){I="",J=0,Ee=[],fe={},Pe={},Ke=!1,et=0}function se(oe,U){return typeof oe!="string"&&(oe=oe+""),S.parser.decodeEntities&&(oe=oe.replace(/&/g,"&").replace(//g,">"),U&&(oe=oe.replace(/"/g,"""))),oe=oe.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,"&").replace(//g,">"),U&&(oe=oe.replace(/"/g,""")),oe}function ke(oe,U){for(U=U.replace(/[\x00-\x20]+/g,"");;){const le=U.indexOf("",le+4);if(pe===-1)break;U=U.substring(0,le)+U.substring(pe+3)}const k=U.match(/^([a-zA-Z][a-zA-Z0-9.\-+]*):/);if(!k)return U.match(/^[/\\]{2}/)?!S.allowProtocolRelative:!1;const G=k[1].toLowerCase();return l(S.allowedSchemesByTag,oe)?S.allowedSchemesByTag[oe].indexOf(G)===-1:!S.allowedSchemes||S.allowedSchemes.indexOf(G)===-1}function pt(oe){if(oe=oe.replace(/^(\w+:)?\s*[\\/]\s*[\\/]/,"$1//"),oe.startsWith("relative:"))throw new Error("relative: exploit attempt");let U="relative://relative-site";for(let le=0;le<100;le++)U+=`/${le}`;const k=new URL(oe,U);return{isRelativeUrl:k&&k.hostname==="relative-site"&&k.protocol==="relative:",url:k}}function me(oe,U){if(!U)return oe;const k=oe.nodes[0];let G;return U[k.selector]&&U["*"]?G=a(U[k.selector],U["*"]):G=U[k.selector]||U["*"],G&&(oe.nodes[0].nodes=k.nodes.reduce(Ae(G),[])),oe}function Z(oe){return oe.nodes[0].nodes.reduce(function(U,k){return U.push(`${k.prop}:${k.value}${k.important?" !important":""}`),U},[]).join(";")}function Ae(oe){return function(U,k){return l(oe,k.prop)&&oe[k.prop].some(function(le){return le.test(k.value)})&&U.push(k),U}}function Te(oe,U,k){return U?(oe=oe.split(/\s+/),oe.filter(function(G){return U.indexOf(G)!==-1||k.some(function(le){return le.test(G)})}).join(" ")):oe}}const f={decodeEntities:!0};return _.defaults={allowedTags:["address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","main","nav","section","blockquote","dd","div","dl","dt","figcaption","figure","hr","li","main","ol","p","pre","ul","a","abbr","b","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rb","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","caption","col","colgroup","table","tbody","td","tfoot","th","thead","tr"],nonBooleanAttributes:["abbr","accept","accept-charset","accesskey","action","allow","alt","as","autocapitalize","autocomplete","blocking","charset","cite","class","color","cols","colspan","content","contenteditable","coords","crossorigin","data","datetime","decoding","dir","dirname","download","draggable","enctype","enterkeyhint","fetchpriority","for","form","formaction","formenctype","formmethod","formtarget","headers","height","hidden","high","href","hreflang","http-equiv","id","imagesizes","imagesrcset","inputmode","integrity","is","itemid","itemprop","itemref","itemtype","kind","label","lang","list","loading","low","max","maxlength","media","method","min","minlength","name","nonce","optimum","pattern","ping","placeholder","popover","popovertarget","popovertargetaction","poster","preload","referrerpolicy","rel","rows","rowspan","sandbox","scope","shape","size","sizes","slot","span","spellcheck","src","srcdoc","srclang","srcset","start","step","style","tabindex","target","title","translate","type","usemap","value","width","wrap","onauxclick","onafterprint","onbeforematch","onbeforeprint","onbeforeunload","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextlost","oncontextmenu","oncontextrestored","oncopy","oncuechange","oncut","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onformdata","onhashchange","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onlanguagechange","onload","onloadeddata","onloadedmetadata","onloadstart","onmessage","onmessageerror","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onoffline","ononline","onpagehide","onpageshow","onpaste","onpause","onplay","onplaying","onpopstate","onprogress","onratechange","onreset","onresize","onrejectionhandled","onscroll","onscrollend","onsecuritypolicyviolation","onseeked","onseeking","onselect","onslotchange","onstalled","onstorage","onsubmit","onsuspend","ontimeupdate","ontoggle","onunhandledrejection","onunload","onvolumechange","onwaiting","onwheel"],disallowedTagsMode:"discard",allowedAttributes:{a:["href","name","target"],img:["src","srcset","alt","title","width","height","loading"]},allowedEmptyAttributes:["alt"],selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto","tel"],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:["href","src","cite"],allowProtocolRelative:!0,enforceHtmlBoundary:!1,parseStyleAttributes:!0},_.simpleTransform=function(O,S,R){return R=R===void 0?!0:R,S=S||{},function(I,g){let N;if(R)for(N in S)g[N]=S[N];else g=S;return{tagName:O,attribs:g}}},ud}var iHe=oHe();const IO=NE(iHe),gO=e=>IO(QGe(At.parseInline(e,{pedantic:!0}),{target:"_blank",validate:{email:()=>!1}}),{allowedTags:["a","p","span","strong","em","img"]}),rHe=e=>{const{value:t,selectionStart:n}=e,a=t.slice(0,n).search(/@\S+$/),s=t.slice(n).search(/\s/),o=a<0?"":s<0?t.slice(a+1):t.slice(a+1,s+n);return o.trim().length>1?{position:a,usernameQuery:o}:{position:null,usernameQuery:null}},uHe=(e,t,n,a)=>e.substring(0,t+1)+a+" "+e.substring(t+n.length+2),Vi=e=>{const t=At.parse(e,{breaks:!0});return IO(t)},RO=()=>["private","followers_only","public"],Xu=(e,t)=>t==="private"||t==="followers_only"&&e=="public"?t:e,Qu=e=>{switch(e){case"public":return["private","followers_only","public"];case"followers_only":return["private","followers_only"];case"private":return["private"]}},lHe=e=>{switch(e){case"public":return["private","followers_only","public"];case"followers_only":return["private","followers_only"];case"private":return["private"]}},cHe={class:"add-comment"},dHe={class:"form-items"},EHe={class:"form-item add-comment-label"},pHe={for:"comment",class:"visually-hidden"},mHe={class:"markdown-hints info-box"},THe={key:0,class:"users-suggestions"},_He=["onClick","onKeydown"],fHe={class:"form-select-buttons"},hHe={key:0,class:"form-item text-visibility"},SHe={for:"text_visibility"},AHe=["value"],OHe={key:1},IHe={key:2,class:"comment-buttons"},gHe={class:"confirm",type:"submit"},RHe=X({__name:"CommentEdition",props:{workout:{},commentsLoading:{},authUser:{},comment:{default:null},name:{default:"text"},mentions:{default:()=>[]}},setup(e){var N;const t=e,{authUser:n,comment:a,commentsLoading:s,mentions:o,name:i,workout:r}=_e(t),u=De(),{errorMessages:l}=Be();let d={position:null,usernameQuery:null};const E=Ie(f()),c=Ie(a!=null&&a.value?a.value.text_visibility:(N=r.value)==null?void 0:N.workout_visibility),m=F(()=>a.value?a.value.id===s.value:s.value==="new"),_=F(()=>u.getters[ue.GETTERS.USERS]);function f(){var b,C,y;if(a!=null&&a.value)return a.value.text||"";if(o.value.length>0){const D=o.value.filter(M=>M.username!==n.value.username);if(D.length>0)return D.map(M=>`@${M.username}`).join(" ")+" "}return(b=r.value)!=null&&b.user&&((C=r.value)==null?void 0:C.user.username)!==n.value.username?`@${(y=r.value)==null?void 0:y.user.username} `:""}function O(b){u.dispatch(ue.ACTIONS.GET_USERS,{per_page:5,q:b,with_following:"true"})}function S(b){E.value=b.value,d=rHe(b),d.usernameQuery?O(d.usernameQuery):u.dispatch(ue.ACTIONS.EMPTY_USERS)}function R(b,C,y){b.preventDefault(),b.stopPropagation();const D=`text${y?`-${y.id}`:""}`;if(d.position!==null&&d.usernameQuery){const M=uHe(E.value,d.position,d.usernameQuery,C.username),P=document.getElementById(D);P&&P instanceof HTMLTextAreaElement&&(P.value=M,P.focus(),P.selectionStart=M.length,E.value=M)}u.dispatch(ue.ACTIONS.EMPTY_USERS)}function I(){S({value:"",selectionStart:0}),u.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}function g(){if(r.value)if(a!=null&&a.value&&a.value.id){const b={id:a.value.id,text:E.value,workout_id:r.value.id};u.dispatch(ee.ACTIONS.EDIT_WORKOUT_COMMENT,b)}else{const b={text:E.value,text_visibility:c.value,workout_id:r.value.id};u.dispatch(ee.ACTIONS.ADD_COMMENT,b),S({value:"",selectionStart:0})}}return ct(()=>{u.dispatch(ue.ACTIONS.EMPTY_USERS)}),(b,C)=>{const y=q("CustomTextArea"),D=q("Loader"),M=q("ErrorMessage");return h(),v("div",cHe,[p("form",{onSubmit:ve(g,["prevent"])},[p("div",dHe,[p("div",EHe,[p("label",pHe,A(b.$t("workouts.COMMENTS.ADD")),1),w(y,{id:"comment",class:"comment",name:T(i),input:E.value,required:!0,placeholder:b.$t("workouts.COMMENTS.ADD"),onUpdateValue:S},null,8,["name","input","placeholder"]),p("div",mHe,[C[1]||(C[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(b.$t("workouts.MARKDOWN_SYNTAX")),1)]),_.value.length>0?(h(),v("ul",THe,[(h(!0),v(re,null,be(_.value,P=>(h(),v("li",{key:P.username,tabindex:"0",onClick:W=>R(W,P,T(a)),onKeydown:Ye(W=>R(W,P,T(a)),["enter"])},[w(Qt,{user:P},null,8,["user"]),p("span",null,A(P.username),1)],40,_He))),128))])):L("",!0)])]),p("div",fHe,[!T(a)&&T(r)&&T(r).workout_visibility?(h(),v("div",hHe,[p("label",SHe,A(b.$t("visibility_levels.VISIBILITY"))+": ",1),We(p("select",{id:"text_visibility","onUpdate:modelValue":C[0]||(C[0]=P=>c.value=P)},[(h(!0),v(re,null,be(T(lHe)(T(r).workout_visibility),P=>(h(),v("option",{value:P,key:P},A(b.$t(`visibility_levels.COMMENT_LEVELS.${P}`)),9,AHe))),128))],512),[[Jt,c.value]])])):L("",!0),C[2]||(C[2]=p("div",{class:"spacer"},null,-1)),m.value?(h(),v("div",OHe,[w(D)])):(h(),v("div",IHe,[p("button",gHe,A(b.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(I,["prevent"])},A(b.$t("buttons.CANCEL")),1)]))]),T(l)?(h(),B(M,{key:0,message:T(l)},null,8,["message"])):L("",!0)],32)])}}}),NO=ae(RHe,[["__scopeId","data-v-96400748"]]),NHe={class:"report-form"},vHe={class:"form-items"},bHe={class:"form-item"},CHe={for:"report"},PHe={class:"form-select-buttons"},DHe={key:0},LHe={key:1,class:"report-buttons"},yHe={class:"confirm",type:"submit"},$He=X({__name:"ReportForm",props:{objectId:{},objectType:{}},setup(e){const t=e,{objectId:n,objectType:a}=_e(t),s=De(),o={comment:"workouts.COMMENTS.REPORT",user:"user.REPORT",workout:"workouts.REPORT_WORKOUT"},i=Ie(""),r=F(()=>s.getters[te.GETTERS.ERROR_MESSAGES]),u=F(()=>s.getters[Le.GETTERS.REPORT_STATUS]),l=F(()=>o[a.value]);function d(m){i.value=m.value}function E(){i.value="",s.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),s.commit(Le.MUTATIONS.SET_REPORT_STATUS,null),a.value==="comment"?s.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}):a.value==="workout"?s.commit(ee.MUTATIONS.SET_CURRENT_REPORTING,!1):s.commit(ue.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1)}function c(){s.dispatch(Le.ACTIONS.SUBMIT_REPORT,{object_id:n.value,object_type:a.value,note:i.value})}return(m,_)=>{const f=q("CustomTextArea"),O=q("Loader"),S=q("ErrorMessage");return h(),v("div",NHe,[p("form",{onSubmit:ve(c,["prevent"])},[p("div",vHe,[p("div",bHe,[p("label",CHe,A(m.$t(l.value)),1),w(f,{class:"report-textarea",name:"report",required:!0,placeholder:m.$t("common.REPORT_PLACEHOLDER"),onUpdateValue:d},null,8,["placeholder"])])]),p("div",PHe,[_[0]||(_[0]=p("div",{class:"spacer"},null,-1)),u.value==="loading"?(h(),v("div",DHe,[w(O)])):(h(),v("div",LHe,[p("button",yHe,A(m.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(E,["prevent"])},A(m.$t("buttons.CANCEL")),1)]))]),r.value?(h(),B(S,{key:0,message:r.value,"no-margin":!0},null,8,["message"])):L("",!0)],32)])}}}),Fp=ae($He,[["__scopeId","data-v-2a4f7a0e"]]),UHe=X({__name:"Username",props:{user:{}},setup(e){const t=e,{user:n}=_e(t);return(a,s)=>{const o=q("router-link");return T(n).username?(h(),B(o,{key:0,class:"user-name",to:{name:a.$route.path.startsWith("/admin")?"UserFromAdmin":"User",params:{username:T(n).username}},title:T(n).username},{default:Y(()=>[x(A(T(n).username),1)]),_:1},8,["to","title"])):L("",!0)}}}),Ri=ae(UHe,[["__scopeId","data-v-b000441f"]]),kHe=["id"],wHe={class:"comment-detail"},MHe={class:"comment-info"},WHe=["title"],FHe=["innerHTML"],zHe={key:1,class:"suspended info-box"},xHe={key:3,class:"comment-actions"},BHe=["disabled","title"],GHe=["title"],VHe=["title"],HHe=["title"],KHe=["title"],qHe={key:6,class:"report-submitted"},jHe={class:"info-box"},YHe=X({__name:"Comment",props:{comment:{},workout:{default:null},authUser:{},commentsLoading:{},currentCommentEdition:{default:null},forNotification:{type:Boolean,default:!1},forAdmin:{type:Boolean,default:!1},displayAppeal:{type:Boolean,default:!1},hideSuspensionAppeal:{type:Boolean,default:!1},action:{default:null}},setup(e){const t=e,{action:n,authUser:a,comment:s,currentCommentEdition:o,forAdmin:i,forNotification:r,workout:u}=_e(t),l=rt(),d=De(),{displayAppealForm:E}=Tp(),{displayOptions:c,locale:m}=Be(),_=F(()=>d.getters[Le.GETTERS.REPORT_STATUS]),f=F(()=>l.params.commentId),O=F(()=>{var P,W,Q,Se;return s.value.id===f.value||(((P=o.value)==null?void 0:P.type)==="delete"||((W=o.value)==null?void 0:W.type)==="report")&&((Se=(Q=o.value)==null?void 0:Q.comment)==null?void 0:Se.id)===s.value.id}),S=F(()=>{var P,W,Q,Se;return s.value.user.username===(a==null?void 0:a.value.username)&&((P=n.value)==null?void 0:P.action_type)==="comment_suspension"&&(!n.value.appeal||((W=n.value.appeal)==null?void 0:W.approved)===!1||((Q=n.value.appeal)==null?void 0:Q.approved)===null&&!((Se=n.value.appeal)!=null&&Se.updated_at))&&s.value.suspended_at!==null&&s.value.suspension!==void 0&&E.value!==s.value.id}),R=F(()=>!r.value&&!s.value.suspended&&!I(a.value,s.value.user)&&!N()&&_.value!==`comment-${s.value.id}-created`);function I(P,W){return P&&P.username===W.username}function g(){var P,W,Q;return((P=o.value)==null?void 0:P.type)==="edit"&&((Q=(W=o.value)==null?void 0:W.comment)==null?void 0:Q.id)===s.value.id}function N(){var P,W,Q;return((P=o.value)==null?void 0:P.type)==="report"&&((Q=(W=o.value)==null?void 0:W.comment)==null?void 0:Q.id)===s.value.id}function b(P){d.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"delete",comment:P})}function C(P){d.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"report",comment:P}),d.commit(Le.MUTATIONS.SET_REPORT_STATUS,null)}function y(P){d.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:P,comment:s.value}),setTimeout(()=>{const W=document.getElementById(`text-${s.value.id}`);W&&W.focus()},100)}function D(P){d.dispatch(P.liked?ee.ACTIONS.UNDO_LIKE_COMMENT:ee.ACTIONS.LIKE_COMMENT,P)}function M(){let P=`/comments/${s.value.id}/likes`;return s.value.workout_id&&(P=`/workouts/${s.value.workout_id}${P}`),P}return Ce(()=>l.params.workoutId,()=>{d.commit(Le.MUTATIONS.SET_REPORT_STATUS,null)}),ct(()=>d.commit(Le.MUTATIONS.SET_REPORT_STATUS,null)),(P,W)=>{const Q=q("router-link"),Se=q("VisibilityIcon");return h(),v("div",{class:"workout-comment",id:T(s).id},[w(Qt,{user:T(s).user},null,8,["user"]),p("div",wHe,[p("div",MHe,[w(Ri,{user:T(s).user},null,8,["user"]),W[5]||(W[5]=p("div",{class:"spacer"},null,-1)),w(Q,{class:"comment-date",to:`${T(s).workout_id?`/workouts/${T(s).workout_id}`:""}/comments/${T(s).id}`,title:T(Ut)(T(s).created_at,T(c).timezone,T(c).dateFormat),onClick:W[0]||(W[0]=J=>P.$emit("commentLinkClicked"))},{default:Y(()=>[x(A(T(Ws)(new Date(T(s).created_at),new Date,{addSuffix:!0,locale:T(m)})),1)]),_:1},8,["to","title"]),T(s).modification_date?(h(),v("div",{key:0,class:"comment-edited",title:T(Ut)(T(s).modification_date,T(c).timezone,T(c).dateFormat)}," ("+A(P.$t("common.EDITED"))+") ",9,WHe)):L("",!0),w(Se,{visibility:T(s).text_visibility,"is-comment":!0},null,8,["visibility"])]),T(s).text_html?(h(),v(re,{key:0},[g()?(h(),B(NO,{key:1,workout:T(u),comment:T(s),"comments-loading":P.commentsLoading,name:`text-${T(s).id}`,authUser:T(a)},null,8,["workout","comment","comments-loading","name","authUser"])):(h(),v("span",{key:0,class:Oe(["comment-text",{highlight:O.value}]),innerHTML:T(gO)(T(s).text_html)},null,10,FHe))],64)):L("",!0),T(s).suspended&&!T(s).suspension?(h(),v("div",zHe,[W[6]||(W[6]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(P.$t("workouts.COMMENTS.SUSPENDED_COMMENT_BY_ADMIN")),1)])):L("",!0),S.value&&T(n)&&T(s).suspended?(h(),B(IGe,{key:2,"hide-suspension-appeal":P.hideSuspensionAppeal,action:T(n),comment:T(s)},null,8,["hide-suspension-appeal","action","comment"])):L("",!0),T(a).username&&!T(i)?(h(),v("div",xHe,[!T(s).suspended&&!T(r)?(h(),v("button",{key:0,class:"transparent icon-button likes",onClick:W[1]||(W[1]=J=>T(r)?null:D(T(s))),disabled:T(r),title:`${P.$t(`workouts.${T(s).liked?"REMOVE_LIKE":"COMMENTS.LIKE_COMMENT"}`)} (${T(s).likes_count} ${P.$t("workouts.LIKES",T(s).likes_count)})`},[p("i",{class:Oe(["fa",{"fa-heart":T(s).likes_count>0,"fa-heart-o":T(s).likes_count===0,liked:T(s).liked}]),"aria-hidden":"true"},null,2)],8,BHe)):L("",!0),!T(s).suspended&&!T(r)&&T(s).likes_count>0?(h(),B(Q,{key:1,to:M(),class:"likes-count"},{default:Y(()=>[x(A(T(s).likes_count),1)]),_:1},8,["to"])):L("",!0),R.value?(h(),v("button",{key:2,class:"transparent icon-button",onClick:W[2]||(W[2]=J=>C(T(s))),title:P.$t("workouts.COMMENTS.REPORT")},W[7]||(W[7]=[p("i",{class:"fa fa-flag","aria-hidden":"true"},null,-1)]),8,GHe)):L("",!0),I(T(a),T(s).user)&&!T(r)?(h(),v("button",{key:3,class:"transparent icon-button",onClick:W[3]||(W[3]=()=>y("edit")),title:P.$t("workouts.COMMENTS.EDIT")},W[8]||(W[8]=[p("i",{class:"fa fa-edit","aria-hidden":"true"},null,-1)]),8,VHe)):L("",!0),I(T(a),T(s).user)&&!T(r)?(h(),v("button",{key:4,class:"transparent icon-button",onClick:W[4]||(W[4]=J=>b(T(s))),title:P.$t("workouts.COMMENTS.DELETE")},W[9]||(W[9]=[p("i",{class:"fa fa-trash","aria-hidden":"true"},null,-1)]),8,HHe)):L("",!0)])):L("",!0),T(a).username?L("",!0):(h(),v("div",{key:4,class:"comment-likes",title:`${T(s).likes_count} ${P.$t("workouts.LIKES",T(s).likes_count)}`},[p("i",{class:Oe(["fa",{"fa-heart":T(s).likes_count>0,"fa-heart-o":T(s).likes_count===0}]),"aria-hidden":"true"},null,2),T(s).likes_count>0?(h(),B(Q,{key:0,to:M(),class:"likes-count"},{default:Y(()=>[x(A(T(s).likes_count),1)]),_:1},8,["to"])):L("",!0)],8,KHe)),N()?(h(),B(Fp,{key:5,"object-id":T(s).id,"object-type":"comment"},null,8,["object-id"])):L("",!0),_.value===`comment-${T(s).id}-created`?(h(),v("div",qHe,[p("div",jHe,[p("span",null,[W[10]||(W[10]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(P.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0)])],8,kHe)}}}),zp=ae(YHe,[["__scopeId","data-v-b1f8a959"]]),XHe={class:"alert-message"},QHe={key:0},ZHe=["innerHTML"],JHe=X({__name:"AlertMessage",props:{message:{},param:{default:()=>""}},setup(e){const t=e,{message:n,param:a}=_e(t);return(s,o)=>{const i=q("i18n-t");return h(),v("div",XHe,[T(a)?(h(),v("span",QHe,[w(i,{keypath:T(n)},{default:Y(()=>[p("span",null,A(T(a)),1)]),_:1},8,["keypath"])])):(h(),v("span",{key:1,innerHTML:s.$t(T(n))},null,8,ZHe)),Pt(s.$slots,"additionalMessage",{},void 0,!0)])}}}),eKe=ae(JHe,[["__scopeId","data-v-fc0d2d13"]]),tKe={},nKe={class:"card"},aKe={class:"card-title"},sKe={class:"card-content"};function oKe(e,t){return h(),v("div",nKe,[p("div",aKe,[Pt(e.$slots,"title")]),p("div",sKe,[Pt(e.$slots,"content")])])}const xp=ae(tKe,[["render",oKe]]),iKe={class:"custom-textarea"},rKe=["id","name","maxLength","disabled","rows","required","placeholder"],uKe={class:"remaining-chars"},lKe=X({__name:"CustomTextArea",props:{name:{},charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""},rows:{default:2},required:{type:Boolean,default:!1},placeholder:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,a=t,{input:s}=_e(n),o=Ie(s.value?s.value:"");function i(r){const u=r.target;a("updateValue",{value:u.value,selectionStart:u.selectionStart})}return Ce(()=>n.input,r=>{o.value=r===null?"":r}),(r,u)=>(h(),v("div",iKe,[We(p("textarea",{id:r.name,name:r.name,maxLength:r.charLimit,disabled:r.disabled,rows:r.rows,required:r.required,placeholder:r.placeholder,"onUpdate:modelValue":u[0]||(u[0]=l=>o.value=l),onInput:i},null,40,rKe),[[it,o.value]]),p("div",uKe,A(r.$t("workouts.REMAINING_CHARS"))+": "+A(o.value.length)+"/"+A(r.charLimit),1)]))}}),vO=ae(lKe,[["__scopeId","data-v-8d139e95"]]),vn={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},cKe={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},Yt=(e,t,n,a=3)=>{const s=vn[t],o=vn[n],i=e*s.multiplier*cKe[s.system][o.system]/o.multiplier;return a!==null?parseFloat(i.toFixed(a)):i},Jr=(e,t,n)=>{const a=n?vn[e].defaultTarget:e;return n?Yt(t,e,a,2):t},ph=(e,t)=>{const n=t?e*1.8+32:e,a=t?" °F":"°C";return`${n===0?0:Number(n).toFixed(1)}${a}`},dKe=(e,t)=>{const n=t?e*2.2369363:e,a=t?" mph":"m/s";return`${n===0?0:Number(n).toFixed(1)}${a}`},EKe=X({__name:"Distance",props:{distance:{},unitFrom:{},useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:a,distance:s,speed:o,strong:i,unitFrom:r,useImperialUnits:u}=_e(t),l=F(()=>u.value?vn[r.value].defaultTarget:r.value),d=F(()=>u.value?Yt(s.value,r.value,l.value,n.value):parseFloat(s.value.toFixed(n.value)));return(E,c)=>(h(),v(re,null,[p("span",{class:Oe(["distance",{strong:T(i)}])},A(d.value),3),c[0]||(c[0]=x(" "+A(" ")+" ")),T(a)?(h(),v("span",{key:0,class:Oe(["unit",{strong:T(i)}])},A(l.value)+A(T(o)?"/h":""),3)):L("",!0)],64))}}),pKe=ae(EKe,[["__scopeId","data-v-3aadc3cb"]]),mKe={class:"dropdown-wrapper"},TKe=["aria-expanded","aria-label"],_Ke=["aria-labelledby"],fKe=["id","onClick","onKeydown","onMouseover"],hKe=X({__name:"Dropdown",props:{options:{},selected:{},buttonLabel:{},listLabel:{},isMenuOpen:{type:Boolean}},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,{isMenuOpen:a,options:s,selected:o}=_e(n),i=t,r=rt(),u=Ie(!1),l=Ie(null),d=Ie(_(o.value));function E(){if(u.value)c();else{u.value=!0;const S=document.getElementById(`dropdown-item-${d.value}`);S==null||S.focus()}}function c(){var S;u.value=!1,d.value=_(o.value),(S=l.value)==null||S.focus()}function m(S){i("selected",S),u.value=!1}function _(S){const R=s.value.findIndex(I=>I.value===S);return R>=0?R:0}function f(S){let R=!1;u.value&&(S.key==="ArrowDown"&&(R=!0,d.value+=1,d.value>s.value.length&&(d.value=0)),S.key==="ArrowUp"&&(R=!0,d.value-=1,d.value<0&&(d.value=s.value.length-1)),S.key==="Home"&&(R=!0,d.value=0),S.key==="End"&&(R=!0,d.value=s.value.length-1),S.key==="Enter"&&(R=!0,m(s.value[d.value])),(S.key==="Escape"||S.key==="Tab")&&(R=S.key==="Escape",c())),R&&(S.stopPropagation(),S.preventDefault())}function O(S){d.value=S}return Ce(()=>r.path,()=>u.value=!1),Ce(()=>o.value,S=>d.value=_(S)),Ce(()=>a.value,S=>{S||c()}),mt(()=>{document.addEventListener("keydown",f)}),ct(()=>{document.removeEventListener("keydown",f)}),(S,R)=>(h(),v("div",mKe,[p("button",{"aria-controls":"dropdown-list","aria-expanded":u.value,"aria-haspopup":"true","aria-label":S.buttonLabel,class:"dropdown-selector transparent",onClick:R[0]||(R[0]=I=>E()),ref_key:"dropdownButton",ref:l},[Pt(S.$slots,"default",{},void 0,!0)],8,TKe),u.value?(h(),v("ul",{key:0,"aria-labelledby":S.listLabel,class:"dropdown-list",id:"dropdown-list",role:"menu"},[(h(!0),v(re,null,be(T(s),(I,g)=>(h(),v("li",{class:Oe(["dropdown-item",{selected:I.value===T(o),focused:g===d.value}]),key:g,id:`dropdown-item-${g}`,tabindex:"-1",onClick:N=>m(I),onKeydown:Ye(N=>m(I),["enter"]),onMouseover:N=>O(g),role:"menuitem"},A(I.label),43,fKe))),128))],8,_Ke)):L("",!0)]))}}),SKe=ae(hKe,[["__scopeId","data-v-f0445cd3"]]),AKe={key:0},OKe={key:1},IKe={key:2},gKe=X({__name:"ErrorMessage",props:{message:{},noMargin:{type:Boolean,default:!1}},setup(e){const t=e,{message:n}=_e(t);return(a,s)=>(h(),v("div",{class:Oe(["error-message",{"no-margin":a.noMargin}])},[Array.isArray(T(n))?(h(),v("ul",AKe,[(h(!0),v(re,null,be(T(n),(o,i)=>(h(),v("li",{key:i},A(a.$t(o)),1))),128))])):typeof T(n)=="string"?(h(),v("div",OKe,A(a.$t(T(n)).replace("api.ERROR.","")),1)):(h(),v("div",IKe,A(a.$t(`equipments.ERRORS.${T(n).status}`,{equipmentId:T(n).equipmentId,equipmentLabel:T(n).equipmentLabel})),1))],2))}}),RKe=ae(gKe,[["__scopeId","data-v-55f45146"]]),NKe={name:"Bike"},vKe={version:"1.1",id:"bike",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 35 35","xml:space":"preserve"};function bKe(e,t,n,a,s,o){return h(),v("svg",vKe,t[0]||(t[0]=[p("desc",{id:"BikeEquipmentDescription"},"bike",-1),p("g",null,[p("path",{d:`M25.8 14.32c-0.64 0-1.24 0.12-1.84 0.32l-1.52-3 2.6-3.88c0.28-0.4 0.12-1.32-0.72-1.32h-3.32c-0.48 0-0.84 + 0.36-0.84 0.84s0.36 0.84 0.84 0.84h1.76l-1.76 2.64h-9.68c-0.4 0-0.68 0.36-0.68 0.36v0 0 0 0l-2.56 + 3.76c-0.72-0.36-1.56-0.56-2.44-0.56-3.12 0-5.64 2.52-5.64 5.64s2.52 5.64 5.68 5.64c2.8 0 5.16-2.080 + 5.56-4.8h4.6c0.48 0 0.68-0.4 0.68-0.4v0l4.8-7.2 1.16 2.2c-1.4 1.040-2.32 2.68-2.32 4.56 0 3.12 2.52 5.64 5.64 + 5.64s5.64-2.52 5.64-5.64-2.56-5.64-5.64-5.64zM15.92 18.32l-3.2-5.92h7.12l-3.92 5.92zM11.24 13.2l3.16 + 5.92h-3.2c-0.2-1.28-0.84-2.44-1.76-3.28l1.8-2.64zM8.52 17.24c0.48 0.52 0.84 1.16 1 1.88h-2.28l1.28-1.88zM5.68 + 23.88c-2.16 0-3.96-1.76-3.96-3.96s1.76-3.92 3.96-3.92c0.52 0 1 0.12 1.48 0.28l-2.16 3.2c-0.36 0.44-0.040 1.28 + 0.68 1.28v0 0h3.84c-0.4 1.8-2 3.12-3.84 3.12zM25.8 23.88c-2.16 0-3.96-1.76-3.96-3.96 0-1.2 0.56-2.32 + 1.44-3.040l1.8 3.44c0.2 0.32 0.68 0.56 1.16 0.36 0.4-0.16 0.56-0.72 0.36-1.12l-1.8-3.4c0.32-0.080 0.68-0.16 + 1.040-0.16 2.16 0 3.96 1.76 3.96 3.96s-1.8 3.92-4 3.92zM9.8 9.4h3.080c0.48 0 0.84-0.36 + 0.84-0.84s-0.36-0.84-0.84-0.84h-3.080c-0.48 0-0.84 0.36-0.84 0.84-0.040 0.44 0.36 0.84 0.84 0.84z`})],-1)]))}const CKe=ae(NKe,[["render",bKe]]),PKe={name:"BikeTrainer"},DKe={version:"1.1",id:"bike_trainer",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve",style:{"shape-rendering":"geometricPrecision","text-rendering":"geometricPrecision","image-rendering":"optimizeQuality","fill-rule":"evenodd","clip-rule":"evenodd"}};function LKe(e,t,n,a,s,o){return h(),v("svg",DKe,t[0]||(t[0]=[Pn(`bike trainer`,7)]))}const yKe=ae(PKe,[["render",LKe]]),$Ke={name:"Kayak_Boat"},UKe={id:"kayak",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"-200 -150 800 800","xml:space":"preserve"};function kKe(e,t,n,a,s,o){return h(),v("svg",UKe,t[0]||(t[0]=[p("desc",{id:"kayakBoatEquipmentDescription"},"kayak",-1),p("g",null,[p("g",null,[p("path",{d:`M506.376,55.175L458.322,7.122c-5.504-5.504-14.428-5.504-19.933,0l-30.985,30.985 + c-14.252,14.252-17.674,35.223-10.286,52.713c-1.12,0.678-2.183,1.483-3.15,2.45L91.981,395.257 + c-1.027,1.027-1.872,2.163-2.574,3.361c-17.508-7.434-38.522-4.024-52.798,10.25L5.623,439.852 + c-5.504,5.504-5.504,14.429,0,19.933l48.054,48.054c5.504,5.504,14.428,5.504,19.933,0l30.985-30.985 + c15.23-15.23,18.103-38.138,8.621-56.267c0.783-0.549,1.537-1.157,2.237-1.857L417.44,116.745 + c0.634-0.634,1.188-1.317,1.699-2.021c18.126,9.473,41.025,6.598,56.252-8.629l30.985-30.985 + C511.88,69.604,511.88,60.679,506.376,55.175z`})])],-1),p("g",null,[p("g",null,[p("path",{d:`M287.822,18.22C281.289,6.959,269.286,0.007,256.267,0c-13.02-0.008-25.057,6.925-31.591,18.186 + c-29.734,51.242-69.75,138.626-69.75,237.815c0,9.547,0.378,18.983,1.074,28.29l53.352-53.352v-47.247 + c0-25.894,20.992-46.886,46.886-46.886c13.039,0,24.831,5.326,33.329,13.917l40.982-40.982 + C317.405,73.151,301.526,41.842,287.822,18.22z`})])],-1),p("g",null,[p("g",null,[p("path",{d:`M356.238,224.889l-53.113,53.115v50.303c0,25.894-20.992,46.886-46.886,46.886c-13.817,0-26.235-5.979-34.816-15.488 + l-40.306,40.306c13.297,37.559,29.552,69.661,43.538,93.767c6.534,11.261,18.536,18.214,31.556,18.22s25.057-6.925,31.591-18.186 + c29.734-51.242,69.75-138.626,69.75-237.815C357.552,245.483,357.078,235.11,356.238,224.889z`})])],-1)]))}const wKe=ae($Ke,[["render",kKe]]),MKe={name:"Shoes"},WKe={id:"shoes",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve"};function FKe(e,t,n,a,s,o){return h(),v("svg",WKe,t[0]||(t[0]=[Pn(`shoes`,4)]))}const zKe=ae(MKe,[["render",FKe]]),xKe={name:"Shoes"},BKe={id:"skis",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve"};function GKe(e,t,n,a,s,o){return h(),v("svg",BKe,t[0]||(t[0]=[p("desc",{id:"skisEquipmentDescription"},"skis",-1),p("path",{d:`m 105.01644,82.858537 c -0.75155,0 -1.40914,0.134433 -2.1607,0.373428 -1.52187,0.492925 -2.39554,1.127758 -3.400739,2.673751 + -1.01459,1.553454 -1.85068,4.040497 -2.16069,7.192229 -0.62942,6.296003 0.79852,14.996885 3.184669,23.511055 4.81929,17.02088 + 12.99235,33.25755 12.99235,33.25755 l 31.75279,62.51192 11.9308,-22.33103 28.18296,9.48509 -31.7528,-62.48952 c 0,0 -8.36096,-16.25161 + -19.82202,-31.129 -5.73054,-7.438695 -12.30656,-14.481551 -18.22498,-18.66396 -3.00618,-2.091199 -5.82448,-3.420599 -7.89123,-3.973273 + -1.03337,-0.283807 -1.87886,-0.41824 -2.63041,-0.41824 z m 144.48464,0.07468 c -0.75155,0 -1.59704,0.134434 -2.63042,0.41824 + -2.06674,0.552674 -4.88504,1.882085 -7.79728,3.973284 -6.01236,4.182398 -12.58839,11.217793 -18.31892,18.656489 -11.46107,14.87739 + -19.82202,31.12153 -19.82202,31.12153 l -14.56119,28.70918 20.94933,41.2265 2.34858,4.63051 31.47097,-61.69038 c 0,0 8.17306,-16.23667 + 12.96416,-33.27247 2.34858,-8.51417 3.75773,-17.222527 3.19408,-23.51853 -0.37578,-3.151743 -1.22127,-5.646237 -2.1607,-7.199702 + -1.03338,-1.553465 -1.87887,-2.188297 -3.4759,-2.681223 -0.75155,-0.238994 -1.40915,-0.373428 -2.16069,-0.373428 z m + 91.21884,119.325343 v 34.35542 h 24.42522 v -34.35542 z m 80.79115,0 v 34.35542 h 24.42522 v -34.35542 z m -255.33761,5.45205 + -12.02473,22.40571 7.98517,15.60931 11.93079,-22.40571 28.18296,9.48509 -7.89123,-15.60931 z m 16.90978,33.23514 -11.93079,22.33102 + 6.76391,13.36874 40.11375,-12.92063 -6.76391,-13.29406 z m -38.23488,6.57234 -8.36094,16.28148 19.91595,6.42297 z m + 199.62928,2.53931 v 153.85252 h -21.60693 v 13.44343 h 21.60693 v 17.17771 h 16.90978 v -17.17771 h 21.60693 V 403.90992 H 361.38742 + V 250.0574 Z m 80.79115,0 v 153.85252 h -21.60693 v 13.44343 h 21.60693 v 17.17771 h 16.90978 V 417.35335 H 463.7855 V 403.90992 + H 442.17857 V 250.0574 Z m -200.94449,26.13999 -40.0198,12.92062 10.52164,20.76263 40.11374,-12.92062 -4.88504,-9.63446 z m + -94.03714,0.0747 -10.61558,20.76262 40.0198,12.92063 8.45488,-16.58022 -2.25462,-4.48115 -0.65761,-1.34434 z m 110.94691,33.16045 + -40.0198,12.84594 55.61437,109.48923 40.0198,-12.92063 z m -127.95063,0.0373 -55.623763,109.33985 40.057384,12.92063 55.680129,-109.33986 z`},null,-1)]))}const VKe=ae(xKe,[["render",GKe]]),HKe={name:"Shoes"},KKe={id:"shoes",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve",style:{"shape-rendering":"geometricPrecision","text-rendering":"geometricPrecision","image-rendering":"optimizeQuality","fill-rule":"evenodd","clip-rule":"evenodd"}};function qKe(e,t,n,a,s,o){return h(),v("svg",KKe,t[0]||(t[0]=[Pn(`snowshoes`,3)]))}const jKe=ae(HKe,[["render",qKe]]),YKe=["title"],XKe=X({__name:"index",props:{equipmentTypeLabel:{},title:{}},setup(e){const t=e,{equipmentTypeLabel:n,title:a}=_e(t),{darkTheme:s}=Be();return(o,i)=>(h(),v("div",{class:"equipment-type-img",style:za({fill:T(s)?"#cfd0d0":"#2c3e50"}),title:T(a)},[T(n)==="Bike"?(h(),B(CKe,{key:0})):L("",!0),T(n)==="Bike Trainer"?(h(),B(yKe,{key:1})):L("",!0),T(n)==="Kayak_Boat"?(h(),B(wKe,{key:2})):L("",!0),T(n)==="Shoes"?(h(),B(zKe,{key:3})):L("",!0),T(n)==="Skis"?(h(),B(VKe,{key:4})):L("",!0),T(n)==="Snowshoes"?(h(),B(jKe,{key:5})):L("",!0)],12,YKe))}}),QKe={name:"CyclingSport"},ZKe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"};function JKe(e,t,n,a,s,o){return h(),v("svg",ZKe,t[0]||(t[0]=[p("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),p("g",null,[p("path",{d:`M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304 + c-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z`}),p("path",{d:`M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54 + c-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482 + c-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842 + c-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906 + c-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663 + c54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773 + c-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095 + l19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663 + C491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917 + c0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893 + c-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065 + C165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901 + C155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084 + c-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12 + c3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691 + c-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94 + c7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917 + c0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132 + c13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226 + c40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z`})],-1)]))}const eqe=ae(QKe,[["render",JKe]]),tqe={name:"CyclingTransport"},nqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function aqe(e,t,n,a,s,o){return h(),v("svg",nqe,t[0]||(t[0]=[p("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),p("g",{id:"g147"},[p("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),p("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1)]))}const sqe=ae(tqe,[["render",aqe]]),oqe={name:"CyclingTransport"},iqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function rqe(e,t,n,a,s,o){return h(),v("svg",iqe,t[0]||(t[0]=[Pn(' silhouette of a person riding a bicycle for touring/trekking ',2)]))}const uqe=ae(oqe,[["render",rqe]]),lqe={name:"CyclingVirtual"},cqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function dqe(e,t,n,a,s,o){return h(),v("svg",cqe,t[0]||(t[0]=[Pn(' silhouette of a person riding a bicycle with virtual indicator ',4)]))}const Eqe=ae(lqe,[["render",dqe]]),pqe={name:"Hiking"},mqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"};function Tqe(e,t,n,a,s,o){return h(),v("svg",mqe,t[0]||(t[0]=[p("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),p("g",null,[p("path",{d:`M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24 + c-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z`}),p("path",{d:`M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933 + c1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779 + c0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446 + l-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811 + c7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603 + c-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264 + c0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882 + l1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036 + C381.588,218.245,386.604,211.15,386.604,202.858z`})],-1)]))}const _qe=ae(pqe,[["render",Tqe]]),fqe={name:"MountainBiking"},hqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"};function Sqe(e,t,n,a,s,o){return h(),v("svg",hqe,t[0]||(t[0]=[p("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),p("g",null,[p("g",null,[p("path",{d:`M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539 + c-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z`}),p("path",{d:`M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271 + l76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201 + c0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997 + c17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285 + C102.205,73.858,91.112,77.243,87.517,89.072z`}),p("path",{d:`M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195 + c3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419 + c-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415 + c-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759 + c-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806 + c-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933 + c16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291 + c-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326 + v9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507 + c0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724 + l-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z`})])],-1)]))}const Aqe=ae(fqe,[["render",Sqe]]),Oqe={name:"MountainBikingElectric"},Iqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"};function gqe(e,t,n,a,s,o){return h(),v("svg",Iqe,t[0]||(t[0]=[Pn(' silhouette of a person riding an electric mountain bike ',18)]))}const Rqe=ae(Oqe,[["render",gqe]]),Nqe={name:"Mountaineering"},vqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"};function bqe(e,t,n,a,s,o){return h(),v("svg",vqe,t[0]||(t[0]=[Pn(` silhouette of a person doing mountaineering `,2)]))}const Cqe=ae(Nqe,[["render",bqe]]),Pqe={name:"OpenWaterSwimming"},Dqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 492.508 492.508",style:{"enable-background":"new 0 0 492.508 492.508"},"xml:space":"preserve"};function Lqe(e,t,n,a,s,o){return h(),v("svg",Dqe,t[0]||(t[0]=[Pn(` silhouette of a person swimming in open water `,3)]))}const yqe=ae(Pqe,[["render",Lqe]]),$qe={name:"Paragliding"},Uqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 170 170","xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function kqe(e,t,n,a,s,o){return h(),v("svg",Uqe,t[0]||(t[0]=[Pn('silhouette of a person paragliding',3)]))}const wqe=ae($qe,[["render",kqe]]),Mqe={name:"Rowing"},Wqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"};function Fqe(e,t,n,a,s,o){return h(),v("svg",Wqe,t[0]||(t[0]=[p("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),p("g",null,[p("g",null,[p("path",{d:`M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43 + c2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914 + c8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0 + l47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993 + l-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923 + c-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09 + c-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451 + c-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592 + C39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737 + l-43.453,43.012h-14.2L272.63,248.727z`}),p("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1)]))}const zqe=ae(Mqe,[["render",Fqe]]),xqe={name:"Running"},Bqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"};function Gqe(e,t,n,a,s,o){return h(),v("svg",Bqe,t[0]||(t[0]=[p("desc",{id:"runningDescription"},"silhouette of a running person",-1),p("g",null,[p("path",{d:`M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0 + c-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z`}),p("path",{d:`M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556 + c-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921 + c-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4 + c-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109 + c2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057 + l26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039 + c13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279 + l19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329 + C420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z`})],-1)]))}const Vqe=ae(xqe,[["render",Gqe]]),Hqe={name:"SkiingAlpine"},Kqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"};function qqe(e,t,n,a,s,o){return h(),v("svg",Kqe,t[0]||(t[0]=[p("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),p("g",null,[p("g",null,[p("path",{d:`M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604 + c2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229 + c-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15 + c15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187 + c0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19 + l-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709 + l-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087 + c-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737 + l102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175 + c0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199 + c-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z`}),p("path",{d:`M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668 + c15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z`})])],-1)]))}const jqe=ae(Hqe,[["render",qqe]]),Yqe={name:"SkiingCrossCountry"},Xqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"};function Qqe(e,t,n,a,s,o){return h(),v("svg",Xqe,t[0]||(t[0]=[p("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),p("g",null,[p("path",{d:`M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959 + l12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559 + c-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855 + c-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531 + c2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317 + l-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727 + c-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188 + h161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457 + c5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184 + h-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844 + s27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z`})],-1)]))}const Zqe=ae(Yqe,[["render",Qqe]]),Jqe={name:"Snowshoes"},eje={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function tje(e,t,n,a,s,o){return h(),v("svg",eje,t[0]||(t[0]=[Pn('silhouette of a person with snowshoes',6)]))}const nje=ae(Jqe,[["render",tje]]),aje={name:"Swimrun"},sje={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 492.508 492.508","xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function oje(e,t,n,a,s,o){return h(),v("svg",sje,t[0]||(t[0]=[Pn(' silhouette of a person swimming in open water and another silhouette of a person running ',4)]))}const ije=ae(aje,[["render",oje]]),rje={name:"Trail"},uje={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"};function lje(e,t,n,a,s,o){return h(),v("svg",uje,t[0]||(t[0]=[p("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),p("g",null,[p("g",null,[p("path",{d:`M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775 + h-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634 + l-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609 + c-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102 + c-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165 + c-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161 + l35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836 + c-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187 + c18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188 + c-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694 + c-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135 + c-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27 + c12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z`}),p("path",{d:`M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983 + c-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z`})])],-1)]))}const cje=ae(rje,[["render",lje]]),dje={name:"Walking"},Eje={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function pje(e,t,n,a,s,o){return h(),v("svg",Eje,t[0]||(t[0]=[Pn('silhouette of a walking person',3)]))}const mje=ae(dje,[["render",pje]]),Bp={"Cycling (Sport)":"#4c9792","Cycling (Trekking)":"#a8af88","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Mountaineering:"#48b3b7","Open Water Swimming":"#4058a4",Paragliding:"#c23c50",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Swimrun:"#3d9fc9",Trail:"#09a98a",Walking:"#838383"},Tje=e=>{const t={};return e.map(n=>t[n.id]=n.color?n.color:Bp[n.label]),t},_je=(e,t)=>{const n=e.translatedLabel.toLowerCase(),a=t.translatedLabel.toLowerCase();return n>a?1:ne.filter(s=>n==="all"?!0:a.includes(s.id)||s[n]).map(s=>({...s,translatedLabel:t(`sports.${s.label}.LABEL`)})).sort(_je),Gp=(e,t)=>t.filter(n=>n.id===e.sport_id).map(n=>n.label)[0],Vp=(e,t)=>t.filter(n=>n.id===e.sport_id).map(n=>n.color)[0];function nn(){const e=De(),{t}=$t(),n=kt("sportColors"),a="#838383",s=Ie(!1),o=Ie(""),i=F(()=>e.getters[Ht.GETTERS.SPORTS]),r=F(()=>ia(i.value,t)),u=yt({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1,fromSport:!1});function l(_){u.is_active=_.target.checked}function d(_){s.value=_}function E(_){const f={...u};f.stopped_speed_threshold=_.imperial_units?Yt(u.stopped_speed_threshold,"mi","km",2):u.stopped_speed_threshold,e.dispatch(K.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,f)}function c(_,f=!1){e.dispatch(K.ACTIONS.RESET_USER_SPORT_PREFERENCES,{sportId:_,fromSport:f})}function m(_){return _?i.value.filter(f=>f.id===_.sport_id)[0]:null}return{defaultColor:a,defaultEquipmentId:o,displayModal:s,sportColors:n,sportPayload:u,sports:i,translatedSports:r,getWorkoutSport:m,resetSport:c,updateDisplayModal:d,updateIsActive:l,updateSport:E}}const fje=["title"],hje=X({__name:"index",props:{sportLabel:{},color:{},title:{default:""}},setup(e){const t=e,{color:n,sportLabel:a,title:s}=_e(t),{sportColors:o}=nn();return(i,r)=>(h(),v("div",{class:"sport-img",style:za({fill:T(n)?T(n):T(o)[T(a)]}),title:T(s)?T(s):i.$t(`sports.${T(a)}.LABEL`)},[T(a)==="Cycling (Sport)"?(h(),B(eqe,{key:0})):L("",!0),T(a)==="Cycling (Trekking)"?(h(),B(uqe,{key:1})):L("",!0),T(a)==="Cycling (Transport)"?(h(),B(sqe,{key:2})):L("",!0),T(a)==="Cycling (Virtual)"?(h(),B(Eqe,{key:3})):L("",!0),T(a)==="Hiking"?(h(),B(_qe,{key:4})):L("",!0),T(a)==="Mountain Biking"?(h(),B(Aqe,{key:5})):L("",!0),T(a)==="Mountain Biking (Electric)"?(h(),B(Rqe,{key:6})):L("",!0),T(a)==="Mountaineering"?(h(),B(Cqe,{key:7})):L("",!0),T(a)==="Paragliding"?(h(),B(wqe,{key:8})):L("",!0),T(a)==="Open Water Swimming"?(h(),B(yqe,{key:9})):L("",!0),T(a)==="Rowing"?(h(),B(zqe,{key:10})):L("",!0),T(a)==="Running"?(h(),B(Vqe,{key:11})):L("",!0),T(a)==="Skiing (Alpine)"?(h(),B(jqe,{key:12})):L("",!0),T(a)==="Skiing (Cross Country)"?(h(),B(Zqe,{key:13})):L("",!0),T(a)==="Snowshoes"?(h(),B(nje,{key:14})):L("",!0),T(a)==="Swimrun"?(h(),B(ije,{key:15})):L("",!0),T(a)==="Trail"?(h(),B(cje,{key:16})):L("",!0),T(a)==="Walking"?(h(),B(mje,{key:17})):L("",!0)],12,fje))}}),Sje={},Aje={class:"loader"};function Oje(e,t){return h(),v("div",Aje)}const Ml=ae(Sje,[["render",Oje],["__scopeId","data-v-8b613881"]]),Ije={class:"custom-modal"},gje={key:0,class:"modal-message"},Rje={key:1,class:"modal-message"},Nje={key:2,class:"info-box"},vje={key:4},bje={key:5,class:"modal-buttons"},Cje=X({__name:"Modal",props:{title:{},message:{},strongMessage:{default:()=>""},loading:{type:Boolean,default:!1},warning:{default:()=>""},hideErrorMessage:{type:Boolean,default:!1}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,{title:a,message:s,strongMessage:o}=_e(n),i=t,{errorMessages:r}=Be();let u=null,l=null,d=null;function E(c){var m;(c.key==="Tab"||c.keyCode===9)&&(c.preventDefault(),((m=document.activeElement)==null?void 0:m.id)==="cancel-button"?u==null||u.focus():l==null||l.focus())}return mt(()=>{d=document.activeElement,l=document.getElementById("cancel-button"),u=document.getElementById("confirm-button"),l&&l.focus(),document.addEventListener("keydown",E)}),ct(()=>{document.removeEventListener("keydown",E),d==null||d.focus()}),(c,m)=>{const _=q("i18n-t"),f=q("ErrorMessage"),O=q("Loader"),S=q("Card");return h(),v("div",{id:"modal",role:"dialog",onClick:m[2]||(m[2]=ve(R=>i("cancelAction"),["self"]))},[p("div",Ije,[w(S,null,{title:Y(()=>[x(A(T(a)),1)]),content:Y(()=>[T(o)?(h(),v("div",gje,[w(_,{keypath:T(s)},{default:Y(()=>[p("span",null,A(T(o)),1)]),_:1},8,["keypath"])])):(h(),v("div",Rje,A(T(s)),1)),c.warning?(h(),v("div",Nje,[m[3]||(m[3]=p("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),x(" "+A(c.warning),1)])):L("",!0),T(r)&&!c.hideErrorMessage?(h(),B(f,{key:3,message:T(r)},null,8,["message"])):L("",!0),c.loading?(h(),v("div",vje,[w(O)])):(h(),v("div",bje,[T(r)?L("",!0):(h(),v("button",{key:0,class:Oe(["confirm",{danger:c.warning}]),id:"confirm-button",onClick:m[0]||(m[0]=R=>i("confirmAction"))},A(c.$t("buttons.YES")),3)),p("button",{tabindex:"0",id:"cancel-button",class:"cancel",onClick:m[1]||(m[1]=R=>i("cancelAction"))},A(c.$t(`buttons.${T(r)?"CANCEL":"NO"}`)),1)]))]),_:1})])])}}}),Pje=ae(Cje,[["__scopeId","data-v-9235de5f"]]),Dje={class:"visibility"},Lje=["title"],yje=X({__name:"VisibilityIcon",props:{visibility:{},isComment:{type:Boolean,default:!1}},setup(e){const t=e,{visibility:n,isComment:a}=_e(t);function s(o){switch(o){case"public":return"globe";case"followers_only":return"users";default:case"private":return"lock"}}return(o,i)=>(h(),v("span",Dje,[p("i",{class:Oe(`fa fa-${s(T(n))}`),"aria-hidden":"true",title:o.$t(`visibility_levels.${T(a)?"COMMENT_":""}LEVELS.${T(n)}`)},null,10,Lje)]))}}),$je=[{target:eKe,name:"AlertMessage"},{target:xp,name:"Card"},{target:vO,name:"CustomTextArea"},{target:pKe,name:"Distance"},{target:SKe,name:"Dropdown"},{target:RKe,name:"ErrorMessage"},{target:Ml,name:"Loader"},{target:Pje,name:"Modal"},{target:hje,name:"SportImage"},{target:XKe,name:"EquipmentTypeImage"},{target:yje,name:"VisibilityIcon"},{target:zp,name:"Comment"}],Uje={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}},kje=["bytes","KB","MB","GB","TB"],bO=e=>{if(!e)return{size:"0",suffix:"bytes"};const t=Math.floor(Math.log(e)/Math.log(1024)),n=(e/Math.pow(1024,t)).toFixed(1),a=kje[t];return{size:n,suffix:a}},Zu=e=>{if(!e)return"0 bytes";const t=bO(e);return`${t.size}${t.suffix}`},wje=e=>{const t=e/1048576;return!e&&0||+t.toFixed(2)},Mje={id:"admin-app",class:"admin-card"},Wje={for:"admin_contact"},Fje=["value"],zje=["disabled"],xje={for:"max_users"},Bje=["disabled"],Gje={class:"admin-help"},Vje={class:"info-box"},Hje={for:"max_single_file_size"},Kje=["disabled"],qje={for:"max_zip_file_size"},jje=["disabled"],Yje={for:"gpx_limit_import"},Xje=["disabled"],Qje={for:"stats_workouts_limit"},Zje=["disabled"],Jje={class:"admin-help"},eYe={class:"info-box"},tYe={class:"about-label",for:"about"},nYe={class:"textarea-description"},aYe=["innerHTML"],sYe={class:"privacy-policy-label",for:"privacy_policy"},oYe={class:"textarea-description"},iYe=["innerHTML"],rYe={key:5,class:"form-buttons"},uYe={class:"confirm",type:"submit"},lYe={key:6,class:"form-buttons"},cYe=X({__name:"AdminApplication",props:{edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=_e(t),a=gn(),s=De(),{appConfig:o,errorMessages:i}=Be(),r=yt({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:"",stats_workouts_limit:0});function u(E){Object.keys(r).map(c=>{["max_single_file_size","max_zip_file_size"].includes(c)?r[c]=wje(E[c]):["about","privacy_policy"].includes(c)?r[c]=E[c]!==null?E[c]:"":r[c]=E[c]})}function l(){u(o.value),s.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),a.push("/admin/application")}function d(){const E=Object.assign({},r);E.max_single_file_size*=1048576,E.max_zip_file_size*=1048576,s.dispatch(te.ACTIONS.UPDATE_APPLICATION_CONFIG,E)}return Je(()=>{o.value&&u(o.value)}),(E,c)=>{const m=q("ErrorMessage"),_=q("Card");return h(),v("div",Mje,[w(_,null,{title:Y(()=>[x(A(E.$t("admin.APP_CONFIG.TITLE")),1)]),content:Y(()=>[p("form",{class:"admin-form",onSubmit:ve(d,["prevent"])},[p("label",Wje,[x(A(E.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),!T(n)&&!r.admin_contact?(h(),v("input",{key:0,class:"no-contact",value:E.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,Fje)):We((h(),v("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":c[0]||(c[0]=f=>r.admin_contact=f),disabled:!T(n)},null,8,zje)),[[it,r.admin_contact]])]),p("label",xje,[x(A(E.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),We(p("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":c[1]||(c[1]=f=>r.max_users=f),disabled:!T(n)},null,8,Bje),[[it,r.max_users]])]),p("div",Gje,[p("span",Vje,[c[10]||(c[10]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(E.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),p("label",Hje,[x(A(E.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),We(p("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":c[2]||(c[2]=f=>r.max_single_file_size=f),disabled:!T(n)},null,8,Kje),[[it,r.max_single_file_size]])]),p("label",qje,[x(A(E.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),We(p("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":c[3]||(c[3]=f=>r.max_zip_file_size=f),disabled:!T(n)},null,8,jje),[[it,r.max_zip_file_size]])]),p("label",Yje,[x(A(E.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),We(p("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":c[4]||(c[4]=f=>r.gpx_limit_import=f),disabled:!T(n)},null,8,Xje),[[it,r.gpx_limit_import]])]),p("label",Qje,[x(A(E.$t("admin.APP_CONFIG.STATS_WORKOUTS_LIMIT_LABEL"))+": ",1),We(p("input",{id:"stats_workouts_limit",name:"stats_workouts_limit",type:"number",min:"0","onUpdate:modelValue":c[5]||(c[5]=f=>r.stats_workouts_limit=f),disabled:!T(n)},null,8,Zje),[[it,r.stats_workouts_limit]])]),p("div",Jje,[p("span",eYe,[c[11]||(c[11]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(E.$t("admin.APP_CONFIG.STATS_WORKOUTS_LIMIT_HELP")),1)])]),p("label",tYe,A(E.$t("admin.ABOUT.TEXT"))+": ",1),p("span",nYe,A(E.$t("admin.ABOUT.DESCRIPTION")),1),T(n)?We((h(),v("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":c[6]||(c[6]=f=>r.about=f)},null,512)),[[it,r.about]]):(h(),v("div",{key:1,innerHTML:r.about?T(Vi)(r.about):E.$t("admin.NO_TEXT_ENTERED"),class:"textarea-content"},null,8,aYe)),p("label",sYe,A(Fe(E.$t("privacy_policy.TITLE")))+": ",1),p("span",oYe,A(E.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),T(n)?We((h(),v("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":c[7]||(c[7]=f=>r.privacy_policy=f)},null,512)),[[it,r.privacy_policy]]):(h(),v("div",{key:3,innerHTML:r.privacy_policy?T(Vi)(r.privacy_policy):E.$t("admin.NO_TEXT_ENTERED"),class:"textarea-content"},null,8,iYe)),T(i)?(h(),B(m,{key:4,message:T(i)},null,8,["message"])):L("",!0),T(n)?(h(),v("div",rYe,[p("button",uYe,A(E.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(l,["prevent"])},A(E.$t("buttons.CANCEL")),1)])):(h(),v("div",lYe,[p("button",{class:"confirm",onClick:c[8]||(c[8]=ve(f=>E.$router.push("/admin/application/edit"),["prevent"]))},A(E.$t("buttons.EDIT")),1),p("button",{class:"cancel",onClick:c[9]||(c[9]=ve(f=>E.$router.push("/admin"),["prevent"]))},A(E.$t("admin.BACK_TO_ADMIN")),1)]))],32)]),_:1})])}}}),mh=ae(cYe,[["__scopeId","data-v-3a7598c9"]]),dYe=(e,t)=>{const n=e.translatedLabel.toLowerCase(),a=t.translatedLabel.toLowerCase();return n>a?1:ne.map(n=>({...n,translatedLabel:t(`equipment_types.${n.label}.LABEL`)})).sort(dYe),Hp=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:na?e.filter(o=>PO[o.equipment_type.label].includes(a.label)).filter(o=>n=="all"?!0:n=="withIncludedIds"&&s.includes(o.id)||o.is_active).map(o=>({...o,label:o.is_active?o.label:`${o.label} (${t("common.INACTIVE")})`})).sort(Hp):[],EYe={id:"admin-equipment-types",class:"admin-card"},pYe={class:"responsive-table"},mYe={class:"text-left"},TYe={class:"text-left equipment-type-action"},_Ye={class:"text-center"},fYe={class:"cell-heading"},hYe={class:"equipment-type-label"},SYe={class:"cell-heading"},AYe={class:"text-center"},OYe={class:"cell-heading"},IYe={class:"equipment-type-action"},gYe={class:"cell-heading"},RYe={class:"action-button"},NYe=["onClick"],vYe={key:0,class:"has-equipments"},bYe=X({__name:"AdminEquipmentTypes",setup(e){const t=De(),{t:n}=$t(),{errorMessages:a}=Be(),s=F(()=>CO(t.getters[xe.GETTERS.EQUIPMENT_TYPES],n));function o(){t.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES)}function i(r,u){t.dispatch(xe.ACTIONS.UPDATE_EQUIPMENT_TYPE,{id:r,isActive:u})}return Je(()=>o()),(r,u)=>{const l=q("EquipmentTypeImage"),d=q("ErrorMessage"),E=q("Card");return h(),v("div",EYe,[w(E,null,{title:Y(()=>[x(A(r.$t("admin.EQUIPMENT_TYPES.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:u[0]||(u[0]=ve(c=>r.$router.push("/admin"),["prevent"]))},A(r.$t("admin.BACK_TO_ADMIN")),1),p("div",pYe,[p("table",null,[p("thead",null,[p("tr",null,[u[2]||(u[2]=p("th",null,"#",-1)),p("th",null,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.IMAGE")),1),p("th",mYe,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.LABEL")),1),p("th",null,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.ACTIVE")),1),p("th",TYe,A(r.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(re,null,be(s.value,c=>(h(),v("tr",{key:c.id},[p("td",_Ye,[u[3]||(u[3]=p("span",{class:"cell-heading"},"id",-1)),x(" "+A(c.id),1)]),p("td",null,[p("span",fYe,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.IMAGE")),1),w(l,{title:c.translatedLabel,"equipment-type-label":c.label},null,8,["title","equipment-type-label"])]),p("td",hYe,[p("span",SYe,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.LABEL")),1),x(" "+A(c.translatedLabel),1)]),p("td",AYe,[p("span",OYe,A(r.$t("admin.EQUIPMENT_TYPES.TABLE.ACTIVE")),1),p("i",{class:Oe(`fa fa${c.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),p("td",IYe,[p("span",gYe,A(r.$t("admin.ACTION")),1),p("div",RYe,[p("button",{class:Oe({danger:c.is_active}),onClick:m=>i(c.id,!c.is_active)},A(r.$t(`buttons.${c.is_active?"DIS":"EN"}ABLE`)),11,NYe),c.has_equipments?(h(),v("span",vYe,[u[4]||(u[4]=p("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)),x(" "+A(r.$t("admin.EQUIPMENT_TYPES.TABLE.HAS_EQUIPMENTS")),1)])):L("",!0)])])]))),128))])]),T(a)?(h(),B(d,{key:0,message:T(a)},null,8,["message"])):L("",!0),p("button",{onClick:u[1]||(u[1]=ve(c=>r.$router.push("/admin"),["prevent"]))},A(r.$t("admin.BACK_TO_ADMIN")),1)])]),_:1})])}}}),CYe=ae(bYe,[["__scopeId","data-v-a3acbd9a"]]),PYe={class:"stat-card"},DYe={class:"stat-content box"},LYe={class:"stat-icon"},yYe={class:"stat-details"},$Ye={class:"stat-huge"},UYe={class:"stat"},wa=X({__name:"StatCard",props:{icon:{},text:{},value:{}},setup(e){const t=e,{icon:n,text:a,value:s}=_e(t);return(o,i)=>(h(),v("div",PYe,[p("div",DYe,[p("div",LYe,[p("i",{class:Oe(["fa",`fa-${T(n)}`])},null,2)]),p("div",yYe,[p("div",$Ye,A(T(s)),1),p("div",UYe,A(T(a)),1)])])]))}}),kYe={id:"user-stats"},wYe=X({__name:"AppStatsCards",props:{appStatistics:{}},setup(e){const t=e,{appStatistics:n}=_e(t),a=F(()=>bO(n.value.uploads_dir_size));return(s,o)=>(h(),v("div",kYe,[w(wa,{icon:"users",value:T(n).users,text:s.$t("user.ACTIVE_USER",T(n).users)},null,8,["value","text"]),w(wa,{icon:"tags",value:T(n).sports,text:s.$t("workouts.SPORT",T(n).sports)},null,8,["value","text"]),w(wa,{icon:"calendar",value:T(n).workouts,text:s.$t("workouts.WORKOUT",T(n).workouts)},null,8,["value","text"]),w(wa,{icon:"folder-open",value:a.value.size,text:a.value.suffix},null,8,["value","text"])]))}}),MYe={id:"admin-menu",class:"center-card"},WYe={class:"admin-menu description-list"},FYe={class:"application-config-details"},zYe={class:"registration-status"},xYe={key:0,class:"email-sending-status"},BYe={class:"application-config-details"},GYe=X({__name:"AdminMenu",setup(e){const t=De(),{appConfig:n}=Be(),{authUserHasAdminRights:a}=qe(),s=F(()=>t.getters[te.GETTERS.APP_STATS]),o=F(()=>t.getters[Le.GETTERS.UNRESOLVED_REPORTS_STATUS]);return Je(()=>t.dispatch(Le.ACTIONS.GET_UNRESOLVED_REPORTS_STATUS)),mt(()=>{const i=document.getElementById("adminLink");i&&i.focus()}),(i,r)=>{const u=q("router-link");return h(),v("div",MYe,[w(xp,null,{title:Y(()=>[x(A(i.$t("admin.ADMINISTRATION")),1)]),content:Y(()=>[w(wYe,{appStatistics:s.value},null,8,["appStatistics"]),p("div",WYe,[p("dl",null,[T(a)?(h(),v(re,{key:0},[p("dt",null,[w(u,{id:"adminLink",to:"/admin/application"},{default:Y(()=>[x(A(i.$t("admin.APPLICATION")),1)]),_:1})]),p("dd",FYe,[x(A(i.$t("admin.UPDATE_APPLICATION_DESCRIPTION"))+" ",1),p("span",zYe,A(i.$t(`admin.REGISTRATION_${T(n).is_registration_enabled?"ENABLED":"DISABLED"}`)),1),T(n).is_email_sending_enabled?L("",!0):(h(),v("span",xYe,[r[0]||(r[0]=p("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),x(" "+A(i.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),p("dt",null,[w(u,{to:"/admin/equipment-types"},{default:Y(()=>[x(A(Fe(i.$t("equipments.EQUIPMENT_TYPE",0))),1)]),_:1})]),p("dd",null,A(i.$t("admin.ENABLE_DISABLE_EQUIPMENT_TYPES")),1)],64)):L("",!0),p("dt",null,[w(u,{id:"adminLink",to:"/admin/reports"},{default:Y(()=>[x(A(i.$t("admin.APP_MODERATION.TITLE")),1)]),_:1})]),p("dd",BYe,[x(A(i.$t("admin.APP_MODERATION.DESCRIPTION"))+" ",1),o.value?(h(),B(u,{key:0,to:"/admin/reports?resolved=false"},{default:Y(()=>[x(A(i.$t("admin.APP_MODERATION.UNRESOLVED_REPORTS_EXIST")),1)]),_:1})):L("",!0)]),T(a)?(h(),v(re,{key:1},[p("dt",null,[w(u,{to:"/admin/sports"},{default:Y(()=>[x(A(Fe(i.$t("workouts.SPORT",0))),1)]),_:1})]),p("dd",null,A(i.$t("admin.ENABLE_DISABLE_SPORTS")),1),p("dt",null,[w(u,{to:"/admin/users"},{default:Y(()=>[x(A(Fe(i.$t("user.USER",0))),1)]),_:1})]),p("dd",null,A(i.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)],64)):L("",!0)])])]),_:1})])}}}),VYe=ae(GYe,[["__scopeId","data-v-18089d26"]]),HYe=["id"],KYe={class:"appeal-text"},qYe=["title"],jYe={class:"appeal-actions-buttons"},YYe={class:"small approve",value:"approve"},XYe={class:"small reject",value:"reject"},QYe={key:1,class:"automatically-approved"},ZYe={key:2,class:"description-list"},JYe=["title"],eXe=X({__name:"AdminReportActionAppeal",props:{appeal:{},authUser:{}},emits:["updateAppeal","closeAppeal"],setup(e,{emit:t}){const n=e,{appeal:a,authUser:s}=_e(n),o=t,{errorMessages:i,locale:r}=Be(),u=Ie("");function l(c){c.preventDefault(),o("updateAppeal",{approved:c.submitter.value==="approve",appealId:a.value.id,reason:u.value})}function d(c){u.value=c.value}function E(){o("closeAppeal")}return(c,m)=>{const _=q("ErrorMessage"),f=q("i18n-t");return h(),v("div",{class:"appeal box",id:`appeal-${T(a).id}`},[p("div",KYe,A(T(a).text),1),p("span",{class:"appeal-date",title:T(Ut)(T(a).created_at,T(s).timezone,T(s).date_format)},A(T(Ws)(new Date(T(a).created_at),new Date,{addSuffix:!0,locale:T(r)})),9,qYe),T(a).updated_at===null?(h(),v(re,{key:0},[T(a).approved===null?(h(),v("form",{key:0,onSubmit:ve(l,["prevent"]),class:"appeal-actions"},[w(vO,{name:"appeal-reason",required:!0,placeholder:c.$t("admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.UPDATE_APPEAL"),onUpdateValue:d},null,8,["placeholder"]),T(i)?(h(),B(_,{key:0,message:T(i),"no-margin":!0},null,8,["message"])):L("",!0),p("div",jYe,[p("button",YYe,A(c.$t("buttons.APPROVE")),1),p("button",XYe,A(c.$t("buttons.REJECT")),1),p("button",{class:"small reject",type:"button",onClick:E},A(c.$t("buttons.CANCEL")),1)])],32)):L("",!0)],64)):T(a).approved===null?(h(),v("div",QYe,A(c.$t("admin.APP_MODERATION.APPEAL.AUTOMATICALLY_APPROVED_BY_UNSUSPENSION")),1)):(h(),v("div",ZYe,[w(f,{keypath:`admin.APP_MODERATION.APPEAL.${T(a).approved?"APPROVED":"REJECTED"}`,tag:"p"},{default:Y(()=>[p("span",{class:"report-action-date",title:T(Ut)(T(a).updated_at,T(s).timezone,T(s).date_format)},A(T(Ws)(new Date(T(a).updated_at),new Date,{addSuffix:!0,locale:T(r)})),9,JYe)]),_:1},8,["keypath"]),p("dl",null,[p("dt",null,A(c.$t("admin.APP_MODERATION.APPEAL.REASON_IS")),1),p("dd",null,A(T(a).reason),1)])]))],8,HYe)}}}),tXe=ae(eXe,[["__scopeId","data-v-262300e8"]]),nXe={id:"error"},aXe={class:"error-content"},sXe=X({__name:"Error",props:{title:{},message:{},buttonText:{},path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:a,message:s,path:o}=_e(t);return(i,r)=>(h(),v("div",nXe,[p("div",aXe,[p("h1",null,A(T(a)),1),p("p",null,A(T(s)),1),T(n)?(h(),v("button",{key:0,onClick:r[0]||(r[0]=u=>i.$router.push(T(o))),class:"upper"},A(T(n)),1)):L("",!0)])]))}}),oXe=ae(sXe,[["__scopeId","data-v-48ec856d"]]),wo=X({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=_e(t),a=Ie(),s=Ie(!1);function o(){a.value=setTimeout(()=>{s.value=!0},500)}return mt(()=>o()),ct(()=>{a.value&&clearTimeout(a.value)}),(i,r)=>s.value?(h(),B(oXe,{key:0,title:"404",message:i.$t(`error.NOT_FOUND.${T(n)}`),"button-text":i.$t("common.HOME")},null,8,["message","button-text"])):L("",!0)}}),iXe={key:0,class:"user-actions"},rXe={key:0,class:"blocked-user"},uXe={class:"blocked"},lXe={key:1,class:"actions-buttons"},cXe={key:2},dXe={key:3,class:"follows-you"},EXe={key:1,class:"user-actions"},pXe={class:"follows-you"},mXe=X({__name:"UserRelationshipActions",props:{authUser:{},user:{},from:{},displayFollowsYou:{type:Boolean,default:!1}},emits:["updatedUser"],setup(e,{emit:t}){const n=e,{authUser:a,from:s,user:o,displayFollowsYou:i}=_e(n),r=t,u=De();function l(E,c){r("updatedUser",E),u.dispatch(ue.ACTIONS.UPDATE_RELATIONSHIP,{username:E,action:`${c?"un":""}follow`,from:s.value})}function d(E,c){r("updatedUser",E),u.dispatch(ue.ACTIONS.UPDATE_RELATIONSHIP,{username:E,action:`${c?"":"un"}block`,from:s.value})}return(E,c)=>(h(),v(re,null,[T(o).username!==T(a).username?(h(),v("div",iXe,[T(o).blocked?(h(),v("div",rXe,[p("div",uXe,A(E.$t("user.RELATIONSHIPS.BLOCKED")),1),p("button",{onClick:c[0]||(c[0]=m=>d(T(o).username,!1))},A(E.$t("buttons.UNBLOCK")),1)])):T(o).is_followed_by!=="pending"?(h(),v("div",lXe,[p("button",{onClick:c[1]||(c[1]=m=>l(T(o).username,T(o).is_followed_by==="true")),class:Oe({danger:T(o).is_followed_by==="true"})},A(E.$t(`buttons.${T(o).is_followed_by==="true"?"UN":""}FOLLOW`)),3),p("button",{onClick:c[2]||(c[2]=m=>d(T(o).username,!0))},A(E.$t("buttons.BLOCK")),1)])):(h(),v("div",cXe,[p("button",{onClick:c[3]||(c[3]=m=>l(T(o).username,!0))},A(E.$t("buttons.CANCEL_FOLLOW_REQUEST")),1)])),T(i)&&T(o).follows==="true"&&T(s)!=="notifications"?(h(),v("div",dXe,A(E.$t("user.RELATIONSHIPS.FOLLOWS_YOU")),1)):L("",!0)])):L("",!0),T(o).username===T(a).username&&T(s)!=="userInfos"?(h(),v("div",EXe,[p("div",pXe,A(E.$t("user.YOU")),1)])):L("",!0)],64))}}),Ju=ae(mXe,[["__scopeId","data-v-f72b5b8c"]]),TXe={class:"user-stats"},_Xe={class:"user-stat"},fXe={class:"stat-number"},hXe={class:"stat-label"},SXe={class:"user-stat"},AXe={key:1,class:"stat-number"},OXe={class:"stat-label"},IXe={class:"user-stat"},gXe={key:1,class:"stat-number"},RXe={class:"stat-label"},NXe=X({__name:"UserStats",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),{authUser:a}=qe(),s=F(()=>a.value.username?n.value.username===a.value.username?!a.value.suspended_at:!0:!1);function o(i,r,u){return i.username===(r==null?void 0:r.username)&&u.includes("/profile")?"profile":`users/${i.username}`}return(i,r)=>{const u=q("router-link");return h(),v("div",TXe,[p("div",_Xe,[p("span",fXe,A(T(n).nb_workouts),1),p("span",hXe,A(i.$t("workouts.WORKOUT",T(n).nb_workouts)),1)]),p("div",SXe,[s.value?(h(),B(u,{key:0,to:`/${o(T(n),T(a),i.$route.path)}/following`,class:"stat-number"},{default:Y(()=>[x(A(T(n).following),1)]),_:1},8,["to"])):(h(),v("span",AXe,A(T(n).following),1)),p("span",OXe,A(i.$t("user.RELATIONSHIPS.FOLLOWING",T(n).following)),1)]),p("div",IXe,[s.value?(h(),B(u,{key:0,to:`/${o(T(n),T(a),i.$route.path)}/followers`,class:"stat-number"},{default:Y(()=>[x(A(T(n).followers),1)]),_:1},8,["to"])):(h(),v("span",gXe,A(T(n).followers),1)),p("span",RXe,A(i.$t("user.RELATIONSHIPS.FOLLOWER",T(n).followers)),1)])])}}}),Kp=ae(NXe,[["__scopeId","data-v-9af0bb02"]]),vXe={class:"box"},bXe={class:"user-card"},CXe={class:"user-header"},PXe={class:"stats-role"},DXe={key:0,class:"role"},LXe={class:"user-role"},yXe=X({__name:"UserCard",props:{authUser:{},user:{},updatedUser:{},from:{default:null},hideRelationship:{type:Boolean,default:!1}},emits:["updatedUserRelationship"],setup(e,{emit:t}){const n=e,{authUser:a,from:s,hideRelationship:o,updatedUser:i,user:r}=_e(n),u=rt(),{authUserHasModeratorRights:l}=qe(),{errorMessages:d}=Be(),E=t,c=F(()=>r.value.suspended_at?Ut(r.value.suspended_at,a.value.timezone,a.value.date_format):null),m=F(()=>{var O;return l.value&&u.params.reportId!=((O=r.value.suspension_report_id)==null?void 0:O.toString())}),_=F(()=>r.value.role!=="user"?`user.ROLES.${r.value.role}`:"");function f(O){E("updatedUserRelationship",O)}return(O,S)=>{const R=q("router-link"),I=q("AlertMessage"),g=q("i18n-t"),N=q("ErrorMessage");return h(),v("div",vXe,[p("div",bXe,[p("div",CXe,[w(Qt,{user:T(r)},null,8,["user"]),w(R,{class:"user-name",to:O.$route.path.startsWith("/admin")?`/admin/users/${T(r).username}`:`/users/${T(r).username}?from=users`,title:T(r).username},{default:Y(()=>[x(A(T(r).username),1)]),_:1},8,["to","title"])]),p("div",PXe,[w(Kp,{user:T(r)},null,8,["user"]),_.value?(h(),v("div",DXe,[p("div",LXe,A(O.$t(_.value)),1)])):L("",!0)])]),T(o)!==!0?(h(),B(Ju,{key:0,authUser:T(a),user:T(r),from:T(s)?T(s):"userCard",displayFollowsYou:!0,onUpdatedUser:f},null,8,["authUser","user","from"])):L("",!0),"is_active"in T(r)&&!T(r).is_active?(h(),B(I,{key:1,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})):L("",!0),"suspended_at"in T(r)&&T(r).suspended_at!==null?(h(),B(I,{key:2,message:"user.ACCOUNT_SUSPENDED_AT",param:c.value},_o({_:2},[m.value?{name:"additionalMessage",fn:Y(()=>[w(g,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[w(R,{to:`/admin/reports/${T(r).suspension_report_id}`},{default:Y(()=>[x(" #"+A(T(r).suspension_report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1032,["param"])):L("",!0),T(d)&&T(i)&&T(i)===T(r).username?(h(),B(N,{key:3,message:T(d),"no-margin":!0},null,8,["message"])):L("",!0)])}}}),Wl=ae(yXe,[["__scopeId","data-v-96263843"]]),LO="/img/workouts/mountains.svg",$Xe=["alt"],yO=X({__name:"StaticMap",props:{workout:{},displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=_e(t),a=`${nr()}workouts/map/${t.workout.map}`;return(s,o)=>{const i=q("router-link");return h(),v("div",{class:Oe(["static-map",{"display-hover":T(n)}])},[T(n)?(h(),v("img",{key:0,src:a,alt:s.$t("workouts.WORKOUT_MAP")},null,8,$Xe)):(h(),B(i,{key:1,class:"bg-map-image",to:{name:"Workout",params:{workoutId:s.workout.id}},style:za({backgroundImage:`url(${a})`}),"aria-label":s.$t("workouts.WORKOUT_MAP"),onClick:o[0]||(o[0]=r=>s.$emit("workoutLinkClicked"))},null,8,["to","style","aria-label"])),o[1]||(o[1]=p("div",{class:"map-attribution"},[p("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," © OpenStreetMap ")],-1))],2)}}}),UXe={class:"timeline-workout workout-card"},kXe={class:"box"},wXe={class:"workout-card-title"},MXe={class:"workout-user-date"},WXe={class:"workout-user"},FXe={class:"workout-date-visibility"},zXe=["datetime","title"],xXe={class:"workout-map"},BXe={class:"no-map"},GXe={class:"img"},VXe={class:"data"},HXe={key:0},KXe={class:"data"},qXe={key:0,class:"data elevation"},jXe=["alt"],YXe={class:"data-values"},XXe={key:1,class:"data altitude"},QXe={class:"data-values"},ZXe=X({__name:"WorkoutCard",props:{user:{},useImperialUnits:{type:Boolean},dateFormat:{},timezone:{},workout:{default:()=>({})},sport:{default:()=>({})}},emits:["workoutLinkClicked"],setup(e,{emit:t}){const n=e,{dateFormat:a,sport:s,timezone:o,user:i,useImperialUnits:r,workout:u}=_e(n),{locale:l}=Be(),d=t,E=F(()=>Ut(u.value.workout_date,o.value,a.value));function c(f){return f.with_gpx&&f.min_alt!==null&&f.max_alt!==null}function m(f){return f.ascent!==null&&f.descent!==null}function _(f){f.id&&(lt.push({name:"Workout",params:{workoutId:f.id}}),d("workoutLinkClicked"))}return(f,O)=>{var N;const S=q("router-link"),R=q("VisibilityIcon"),I=q("SportImage"),g=q("Distance");return h(),v("div",UXe,[p("div",kXe,[p("div",wXe,[p("div",MXe,[p("div",WXe,[w(Qt,{user:T(i)},null,8,["user"]),w(Ri,{user:T(i)},null,8,["user"])]),T(u).id?(h(),B(S,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:T(u).id}},onClick:O[0]||(O[0]=b=>f.$emit("workoutLinkClicked"))},{default:Y(()=>[x(A(T(u).title),1)]),_:1},8,["to"])):L("",!0),p("div",FXe,[T(u).workout_date&&T(i)?(h(),v("time",{key:0,class:"workout-date",datetime:E.value,title:E.value},A(T(Ws)(new Date(T(u).workout_date),new Date,{addSuffix:!0,locale:T(l)})),9,zXe)):L("",!0),T(u).workout_visibility?(h(),B(R,{key:1,visibility:T(u).workout_visibility},null,8,["visibility"])):L("",!0)])])]),p("div",xXe,[T(u).with_gpx?(h(),B(yO,{key:0,workout:T(u),onWorkoutLinkClicked:O[1]||(O[1]=b=>f.$emit("workoutLinkClicked"))},null,8,["workout"])):T(u).id?(h(),B(S,{key:1,to:{name:"Workout",params:{workoutId:T(u).id}},onClick:O[2]||(O[2]=b=>f.$emit("workoutLinkClicked"))},{default:Y(()=>[p("div",BXe,A(f.$t("workouts.NO_MAP")),1)]),_:1},8,["to"])):L("",!0)]),p("div",{class:Oe(["workout-data",{"without-elevation":!c(T(u))}]),onClick:O[3]||(O[3]=b=>_(T(u)))},[p("div",GXe,[(N=T(s))!=null&&N.label?(h(),B(I,{key:0,"sport-label":T(s).label,color:T(s).color},null,8,["sport-label","color"])):L("",!0)]),p("div",VXe,[O[4]||(O[4]=p("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)),T(u)?(h(),v("span",HXe,A(T(u).moving),1)):L("",!0)]),p("div",KXe,[O[5]||(O[5]=p("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)),T(u).id?(h(),B(g,{key:0,distance:T(u).distance,digits:3,unitFrom:"km",useImperialUnits:T(r)},null,8,["distance","useImperialUnits"])):L("",!0)]),c(T(u))?(h(),v("div",qXe,[p("img",{class:"mountains",src:LO,alt:f.$t("workouts.ELEVATION")},null,8,jXe),p("div",YXe,[T(u).id?(h(),B(g,{key:0,distance:T(u).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:T(r)},null,8,["distance","useImperialUnits"])):L("",!0),O[6]||(O[6]=x("/ ")),T(u).id?(h(),B(g,{key:1,distance:T(u).max_alt,unitFrom:"m",useImperialUnits:T(r)},null,8,["distance","useImperialUnits"])):L("",!0)])])):L("",!0),m(T(u))?(h(),v("div",XXe,[O[9]||(O[9]=p("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)),p("div",QXe,[O[7]||(O[7]=x(" +")),T(u).id?(h(),B(g,{key:0,distance:T(u).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:T(r)},null,8,["distance","useImperialUnits"])):L("",!0),O[8]||(O[8]=x("/- ")),T(u).id?(h(),B(g,{key:1,distance:T(u).descent,unitFrom:"m",useImperialUnits:T(r)},null,8,["distance","useImperialUnits"])):L("",!0)])])):L("",!0)],2)])])}}}),Hi=ae(ZXe,[["__scopeId","data-v-9f1da2f4"]]),JXe={key:0,class:"report-loading"},eQe={key:0,id:"admin-report",class:"admin-card"},tQe={key:0,class:"report-status"},nQe={class:"report-data"},aQe={class:"report-detail"},sQe={key:1,class:"deleted-object"},oQe={key:2,class:"deleted-object"},iQe={key:1,class:"deleted-object"},rQe={key:2,class:"deleted-object"},uQe={key:1,class:"deleted-object"},lQe={key:1,class:"deleted-object"},cQe={class:"report-info"},dQe={key:0,class:"report-comment-user"},EQe={key:1,class:"deleted-object"},pQe={key:0},mQe={key:1},TQe={key:2},_Qe={key:3},fQe={class:"resolver-user"},hQe={key:4},SQe={key:5},AQe={key:0,class:"report-comment"},OQe={class:"report-comment-info"},IQe={class:"report-comment-user"},gQe=["title"],RQe={class:"report-comment-comment"},NQe={key:1,class:"report-action"},vQe=["title"],bQe=["onClick"],CQe={key:0,class:"report-action-note"},PQe={key:0,class:"no-notes"},DQe={key:0,class:"comment-textarea"},LQe={for:"report-comment"},yQe={class:"comment-buttons"},$Qe=["disabled"],UQe=["disabled"],kQe={class:"action-loading"},wQe={key:0,class:"fa fa-spinner fa-pulse","aria-hidden":"true"},MQe={key:1,class:"actions-buttons"},WQe={key:1,class:"container"},FQe={key:2,class:"container"},zQe=X({__name:"AdminReport",setup(e){const t=rt(),n=gn(),a=De(),{t:s}=$t(),{errorMessages:o,locale:i}=Be(),{authUser:r,authUserSuccess:u,dateFormat:l}=qe(),{sports:d}=nn(),E=Ie(""),c=Ie(null),m=Ie(""),_=Ie([]),f=F(()=>a.getters[Le.GETTERS.REPORT]),O=F(()=>f.value.reported_comment||f.value.reported_workout),S=F(()=>a.getters[Le.GETTERS.REPORT_LOADING]),R=F(()=>a.getters[Le.GETTERS.REPORT_UPDATE_LOADING]),I=Ie(!1),g=F(()=>we()),N=F(()=>c.value!==null&&["ADD_COMMENT","MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(c.value)),b=F(()=>{var Z,Ae;return(Z=f.value.reported_user)!=null&&Z.suspended_at?Ut((Ae=f.value.reported_user)==null?void 0:Ae.suspended_at,r.value.timezone,r.value.date_format):null}),C=F(()=>{var Z,Ae;return t.params.reportId!=((Ae=(Z=f.value.reported_user)==null?void 0:Z.suspension_report_id)==null?void 0:Ae.toString())});function y(){a.dispatch(Le.ACTIONS.GET_REPORT,{reportId:+t.params.reportId,loader:"REPORT"})}function D(Z=null){me(),c.value=Z,I.value=!0}function M(Z){E.value=Z.value}function P(){I.value=!1,E.value="",c.value=null,a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)}function W(){const Z={reportId:f.value.id,comment:E.value};c.value&&["MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(c.value)&&(Z.resolved=c.value==="MARK_AS_RESOLVED"),a.dispatch(Le.ACTIONS.UPDATE_REPORT,Z)}function Q(){switch(c.value){case"SEND_WARNING_EMAIL":Ke();break;case"SUSPEND_ACCOUNT":case"SUSPEND_CONTENT":Pe("suspension");break;case"UNSUSPEND_ACCOUNT":J();break;case"UNSUSPEND_CONTENT":Ee();break;default:return W()}}function Se(){switch(c.value){case"MARK_AS_RESOLVED":return`admin.APP_MODERATION.ACTIONS.${c.value}`;default:return"buttons.SUBMIT"}}function J(){if(f.value.reported_user&&c.value){const Ae={action_type:`user_${c.value==="SUSPEND_ACCOUNT"?"":"un"}suspension`,report_id:f.value.id,username:f.value.reported_user.username};E.value&&(Ae.reason=E.value),a.dispatch(Le.ACTIONS.SUBMIT_ADMIN_ACTION,Ae)}}function Ee(){var Z;if(O.value&&c.value){const Te={action_type:`${f.value.reported_comment?"comment":"workout"}_${(Z=c.value)!=null&&Z.startsWith("SUSPEND")?"":"un"}suspension`,report_id:f.value.id};f.value.reported_comment?Te.comment_id=f.value.reported_comment.id:f.value.reported_workout&&(Te.workout_id=f.value.reported_workout.id),E.value&&(Te.reason=E.value),a.dispatch(Le.ACTIONS.SUBMIT_ADMIN_ACTION,Te)}}function fe(){Pe(""),c.value==="SUSPEND_CONTENT"?Ee():J()}function Pe(Z){m.value=Z,Z!==""&&a.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function Ke(){var Ae;const Z={action_type:"user_warning",report_id:f.value.id,username:(Ae=f.value.reported_user)==null?void 0:Ae.username};E.value&&(Z.reason=E.value),a.dispatch(Le.ACTIONS.SUBMIT_ADMIN_ACTION,Z)}function et(){n.go(-1),a.commit(Le.MUTATIONS.EMPTY_REPORT)}function He(Z){return Ut(Z,r.value.timezone,r.value.date_format)}function _t(Z,Ae){return Ti(new Date(Z.created_at),new Date(Ae.created_at))}function we(){return!f.value.report_actions&&!f.value.comments?[]:[...f.value.report_actions,...f.value.comments].sort(_t)}function se(Z){_.value.includes(Z)?(_.value.splice(_.value.indexOf(Z),1),a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)):_.value.push(Z)}function ke(Z){a.dispatch(Le.ACTIONS.PROCESS_APPEAL,{...Z,reportId:f.value.id})}function pt(){var oe,U;const Z=(oe=c.value)!=null&&oe.includes("SUSPEND")?(U=c.value)==null?void 0:U.split("_")[0]:c.value,Ae=s(`admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.${Z}`);let Te="";return Z&&(Te=["ADD_COMMENT","MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(Z)?"":` ${s("admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.INFORMATION_VISIBLE_TO_USER")}`),`${Ae}${Te}`}function me(){a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),_.value=[]}return Ce(()=>f.value.comments,()=>{I.value=!1,E.value=""}),Ce(()=>t.params.reportId,()=>{y()}),Ce(()=>u.value,Z=>{Z&&Pe("")}),Je(async()=>y()),ct(()=>a.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1)),(Z,Ae)=>{var ie;const Te=q("Modal"),oe=q("router-link"),U=q("i18n-t"),k=q("AlertMessage"),G=q("Card"),le=q("CustomTextArea"),pe=q("ErrorMessage");return S.value?(h(),v("div",JXe,[w(Ml)])):(h(),v(re,{key:1},[(ie=f.value)!=null&&ie.id?(h(),v("div",eQe,[m.value&&f.value.reported_user?(h(),B(Te,{key:0,title:Z.$t("common.CONFIRMATION"),message:`admin.CONFIRM_${c.value}`,strongMessage:f.value.reported_user.username,onConfirmAction:fe,onCancelAction:Ae[0]||(Ae[0]=$=>Pe("")),onKeydown:Ae[1]||(Ae[1]=Ye($=>Pe(""),["esc"]))},null,8,["title","message","strongMessage"])):L("",!0),w(G,null,{title:Y(()=>[x(A(Z.$t("admin.APP_MODERATION.REPORT"))+" #"+A(f.value.id)+" ",1),f.value.resolved?(h(),v("span",tQe," ("+A(Z.$t("admin.APP_MODERATION.RESOLVED.TRUE"))+") ",1)):L("",!0)]),content:Y(()=>[p("div",nQe,[p("div",aQe,[w(G,{class:"report-detail-card"},{title:Y(()=>[x(A(Z.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1)]),content:Y(()=>{var $,z,V;return[f.value.object_type==="comment"?(h(),v(re,{key:0},[f.value.reported_comment?(h(),B(zp,{key:0,"auth-user":T(r),comment:f.value.reported_comment,"comments-loading":null,"for-admin":!0},null,8,["auth-user","comment"])):(h(),v("span",sQe,A(Z.$t("admin.DELETED_COMMENT")),1)),f.value.reported_user?L("",!0):(h(),v("span",oQe," ("+A(Z.$t("admin.DELETED_USER").toLocaleLowerCase())+") ",1))],64)):L("",!0),f.value.object_type==="workout"?(h(),v(re,{key:1},[f.value.reported_workout?(h(),B(Hi,{workout:f.value.reported_workout,sport:T(d).filter(j=>{var Re;return j.id===((Re=f.value.reported_workout)==null?void 0:Re.sport_id)})[0],user:f.value.reported_workout.user,useImperialUnits:T(r).imperial_units,dateFormat:T(l),timezone:T(r).timezone,key:f.value.reported_workout.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"])):(h(),v("span",iQe,A(Z.$t("admin.DELETED_WORKOUT")),1)),f.value.reported_user?(z=($=f.value.reported_workout)==null?void 0:$.suspension)!=null&&z.report_id?(h(),B(k,{key:3,message:"workouts.SUSPENDED_BY_ADMIN"},_o({_:2},[f.value.reported_workout.suspension.report_id!==parseInt(T(t).params.reportId)?{name:"additionalMessage",fn:Y(()=>[w(U,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[w(oe,{to:`/admin/reports/${f.value.reported_workout.suspension.report_id}`},{default:Y(()=>[x(" #"+A(f.value.reported_workout.suspension.report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1024)):L("",!0):(h(),v("span",rQe," ("+A(Z.$t("admin.DELETED_USER").toLocaleLowerCase())+") ",1))],64)):L("",!0),f.value.object_type==="user"?(h(),v(re,{key:2},[f.value.reported_user?(h(),B(Wl,{key:0,authUser:T(r),user:f.value.reported_user,hideRelationship:!0},null,8,["authUser","user"])):(h(),v("span",uQe,A(Z.$t("admin.DELETED_USER")),1))],64)):((V=f.value.reported_user)==null?void 0:V.suspended_at)!==null?(h(),B(k,{key:3,message:"user.ACCOUNT_SUSPENDED_AT",param:b.value},_o({_:2},[C.value?{name:"additionalMessage",fn:Y(()=>[w(U,{keypath:"common.SEE_REPORT"},{default:Y(()=>{var j;return[w(oe,{to:`/admin/reports/${(j=f.value.reported_user)==null?void 0:j.suspension_report_id}`},{default:Y(()=>{var Re;return[x(A((Re=f.value.reported_user)==null?void 0:Re.suspension_report_id),1)]}),_:1},8,["to"])]}),_:1})]),key:"0"}:void 0]),1032,["param"])):L("",!0)]}),_:1}),w(G,{class:"report-detail-card"},{title:Y(()=>[x(A(Z.$t("admin.APP_MODERATION.REPORT_NOTE"))+" ",1),f.value.reported_by?(h(),v(re,{key:0},[w(oe,{class:"link-with-image",to:`/admin/users/${f.value.reported_by.username}`},{default:Y(()=>[x(A(f.value.reported_by.username),1)]),_:1},8,["to"]),x(" ("+A(Z.$t("admin.APP_MODERATION.REPORTER"))+") ",1)],64)):(h(),v("span",lQe,A(Z.$t("admin.DELETED_USER").toLocaleLowerCase()),1))]),content:Y(()=>[x(A(f.value.note),1)]),_:1})]),p("dl",cQe,[p("dt",null,A(Z.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))+":",1),p("dd",null,A(He(f.value.created_at)),1),p("dt",null,A(Z.$t("admin.APP_MODERATION.REPORTED_BY"))+":",1),p("dd",null,[f.value.reported_by?(h(),v("div",dQe,[w(Qt,{user:f.value.reported_by},null,8,["user"]),w(Ri,{user:f.value.reported_by},null,8,["user"])])):(h(),v("span",EQe,A(Z.$t("admin.DELETED_USER")),1))]),p("dt",null,A(Z.$t("admin.APP_MODERATION.STATUS"))+":",1),p("dd",null,A(Z.$t(`admin.APP_MODERATION.RESOLVED.${f.value.resolved?"TRUE":"FALSE"}`)),1),f.value.resolved_at?(h(),v("dt",pQe,A(Z.$t("admin.APP_MODERATION.RESOLVED_AT"))+": ",1)):L("",!0),f.value.resolved_at?(h(),v("dd",mQe,[p("time",null,A(He(f.value.resolved_at)),1)])):L("",!0),f.value.resolved_by?(h(),v("dt",TQe,A(Z.$t("admin.APP_MODERATION.RESOLVED_BY"))+": ",1)):L("",!0),f.value.resolved_by?(h(),v("dd",_Qe,[p("div",fQe,[w(Qt,{user:f.value.resolved_by},null,8,["user"]),w(Ri,{user:f.value.resolved_by},null,8,["user"])])])):L("",!0),f.value.updated_at?(h(),v("dt",hQe,A(Z.$t("common.LAST_UPDATED_ON"))+": ",1)):L("",!0),f.value.updated_at?(h(),v("dd",SQe,[p("time",null,A(He(f.value.updated_at)),1)])):L("",!0)])]),w(G,{class:"report-action-and-comments"},{title:Y(()=>[x(A(Z.$t("admin.APP_MODERATION.NOTES_AND_ACTIONS")),1)]),content:Y(()=>[(h(!0),v(re,null,be(g.value,$=>(h(),v("div",{key:$.id},["comment"in $&&!("action_type"in $)?(h(),v("div",AQe,[p("div",OQe,[p("div",IQe,[w(Qt,{user:$.user},null,8,["user"]),w(Ri,{user:$.user},null,8,["user"])]),p("div",{class:"report-comment-date",title:He($.created_at)},A(T(Ws)(new Date($.created_at),new Date,{addSuffix:!0,locale:T(i)})),9,gQe)]),p("div",RQe,A($.comment),1)])):L("",!0),"action_type"in $?(h(),v("div",NQe,[p("div",null,[Ae[7]||(Ae[7]=x(" • ")),w(U,{keypath:`admin.APP_MODERATION.REPORT_ACTIONS.${$.action_type}`},{default:Y(()=>[$.action_type.startsWith("user_")&&$.user?(h(),B(oe,{key:0,class:"user-name",to:`/admin/users/${$.user.username}`,title:$.user.username},{default:Y(()=>[x(A($.user.username),1)]),_:2},1032,["to","title"])):L("",!0),w(oe,{class:"user-name",to:`/admin/users/${$.moderator.username}`,title:$.moderator.username},{default:Y(()=>[x(A($.moderator.username),1)]),_:2},1032,["to","title"]),p("span",{class:"report-action-date",title:He($.created_at)},A(T(Ws)(new Date($.created_at),new Date,{addSuffix:!0,locale:T(i)})),9,vQe)]),_:2},1032,["keypath"]),$.appeal?(h(),v("button",{key:0,class:"appeal-button small transparent",onClick:z=>se($.appeal.id)},A(Z.$t(`admin.APP_MODERATION.APPEAL.${_.value.includes($.appeal.id)?"HIDE":"SEE"}`)),9,bQe)):L("",!0)]),$.reason?(h(),v("div",CQe,[p("span",null,A(Z.$t("admin.APP_MODERATION.REASON"))+":",1),x(" "+A($.reason),1)])):L("",!0),$.appeal&&_.value.includes($.appeal.id)?(h(),B(tXe,{key:1,appeal:$.appeal,"auth-user":T(r),onUpdateAppeal:ke,onCloseAppeal:z=>se($.appeal.id)},null,8,["appeal","auth-user","onCloseAppeal"])):L("",!0)])):L("",!0)]))),128)),g.value.length==0?(h(),v("div",PQe,A(Z.$t("common.NO_NOTES")),1)):L("",!0)]),_:1}),w(G,{class:"report-detail-card"},{title:Y(()=>[x(A(Z.$t("admin.ACTION",0)),1)]),content:Y(()=>[I.value?(h(),v("div",DQe,[p("form",{onSubmit:ve(Q,["prevent"])},[p("label",LQe,A(Z.$t(`admin.APP_MODERATION.ACTIONS.${c.value}`)),1),w(le,{class:"report-comment-textarea",name:"report-comment",required:N.value,placeholder:pt(),disabled:R.value,onUpdateValue:M},null,8,["required","placeholder","disabled"]),p("div",yQe,[p("button",{class:"confirm",type:"submit",disabled:R.value},A(Z.$t(Se())),9,$Qe),p("button",{class:"cancel",onClick:ve(P,["prevent"]),disabled:R.value},A(Z.$t("buttons.CANCEL")),9,UQe),p("div",kQe,[R.value?(h(),v("i",wQe)):L("",!0)])]),T(o)?(h(),B(pe,{key:0,message:T(o)},null,8,["message"])):L("",!0)],32)])):(h(),v("div",MQe,[p("button",{onClick:Ae[2]||(Ae[2]=$=>D("ADD_COMMENT"))},A(Z.$t("admin.APP_MODERATION.ACTIONS.ADD_COMMENT")),1),!f.value.resolved&&f.value.reported_user&&!f.value.is_reported_user_warned?(h(),v("button",{key:0,onClick:Ae[3]||(Ae[3]=$=>D("SEND_WARNING_EMAIL"))},A(Z.$t("admin.APP_MODERATION.ACTIONS.SEND_WARNING_EMAIL")),1)):L("",!0),!f.value.resolved&&O.value?(h(),v("button",{key:1,class:Oe({danger:O.value.suspended_at===null}),onClick:Ae[4]||(Ae[4]=$=>D(`${O.value.suspended_at===null?"":"UN"}SUSPEND_CONTENT`))},A(Z.$t(`admin.APP_MODERATION.ACTIONS.${O.value.suspended_at===null?"":"UN"}SUSPEND_CONTENT`)),3)):L("",!0),!f.value.resolved&&f.value.reported_user?(h(),v("button",{key:2,class:Oe({danger:f.value.reported_user.suspended_at===null}),onClick:Ae[5]||(Ae[5]=$=>D(`${f.value.reported_user.suspended_at?"UN":""}SUSPEND_ACCOUNT`))},A(Z.$t(`admin.APP_MODERATION.ACTIONS.${f.value.reported_user.suspended_at?"UN":""}SUSPEND_ACCOUNT`)),3)):L("",!0),p("button",{onClick:Ae[6]||(Ae[6]=$=>D(`MARK_AS_${f.value.resolved?"UN":""}RESOLVED`))},A(Z.$t(`admin.APP_MODERATION.ACTIONS.MARK_AS_${f.value.resolved?"UN":""}RESOLVED`)),1)]))]),_:1}),p("button",{onClick:ve(et,["prevent"])},A(Z.$t("buttons.BACK")),1)]),_:1})])):S.value?(h(),v("div",WQe)):(h(),v("div",FQe,[w(wo,{target:"REPORT"})]))],64))}}}),xQe=ae(zQe,[["__scopeId","data-v-e9598d83"]]),BQe={class:"table-selects"},GQe=["value"],VQe=["value"],HQe=["value"],KQe=["value"],qQe=["value"],jQe=["value"],qp=X({__name:"FilterSelects",props:{order_by:{},query:{},sort:{},message:{}},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:a,query:s,sort:o,message:i}=_e(n),r=t,u=[10,25,50,100];function l(d){r("updateSelect",d.target.id,d.target.value)}return(d,E)=>(h(),v("div",BQe,[p("label",null,[x(A(d.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),p("select",{name:"order_by",id:"order_by",value:T(s).order_by,onChange:l},[(h(!0),v(re,null,be(T(a),c=>(h(),v("option",{value:c,key:c},A(d.$t(`${T(i)}.${c.toUpperCase()}`)),9,VQe))),128))],40,GQe)]),p("label",null,[x(A(d.$t("common.SELECTS.ORDER.LABEL"))+": ",1),p("select",{name:"order",id:"order",value:T(s).order,onChange:l},[(h(!0),v(re,null,be(T(o),c=>(h(),v("option",{value:c,key:c},A(d.$t(`common.SELECTS.ORDER.${c.toUpperCase()}`)),9,KQe))),128))],40,HQe)]),Pt(d.$slots,"additionalFilters"),p("label",null,[x(A(d.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),p("select",{name:"per_page",id:"per_page",value:T(s).per_page,onChange:l},[(h(),v(re,null,be(u,c=>p("option",{value:c,key:c},A(c),9,jQe)),64))],40,qQe)])]))}}),Fl=["asc","desc"],cr=1,YQe=10,bo=(e,t)=>e&&typeof e=="string"&&+e>0?+e:t,Th=(e,t,n)=>e&&typeof e=="string"&&t.includes(e)?e:n,Co=(e,t,n,a)=>{const o=(a||{}).defaultSort||"asc",i={};return i.page=bo(e.page,cr),i.per_page=bo(e.per_page,YQe),i.order=Th(e.order,Fl,o),i.order_by=Th(e.order_by,t,n),typeof e.q=="string"?i.q=e.q:delete i.q,typeof e.notes=="string"?i.notes=e.notes:delete i.notes,typeof e.description=="string"?i.description=e.description:delete i.description,typeof e.object_type=="string"?i.object_type=e.object_type:delete i.object_type,typeof e.resolved=="string"?i.resolved=e.resolved:delete i.resolved,i},XQe=["equipment_id","from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id","title"],Js=(e,t=1)=>Array.from({length:e-t+1},(n,a)=>t+a),QQe=(e,t)=>{if(e<0)return[];if(e<9)return Js(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(Js(t+2,3)):(n=n.concat(["..."]),t=e-2&&+n[n.length-1]{const u=q("router-link");return h(),v("nav",ZQe,[p("ul",JQe,[p("li",{class:Oe(["page-prev",{disabled:!T(n).has_prev}])},[w(u,{class:"page-link",to:{path:T(a),query:o(T(n).page,-1)},disabled:!T(n).has_prev,tabindex:T(n).has_prev?0:-1},{default:Y(({navigate:l})=>[Pt(i.$slots,"default",{onClick:d=>T(n).has_next?l:null},()=>[x(A(i.$t("common.PREVIOUS"))+" ",1),r[0]||(r[0]=p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))],!0)]),_:3},8,["to","disabled","tabindex"])],2),(h(!0),v(re,null,be(T(QQe)(T(n).pages,T(n).page),l=>(h(),v("li",{key:l,class:Oe(["page",{active:l===T(n).page}])},[l==="..."?(h(),v("span",eZe," ... ")):(h(),B(u,{key:1,class:"page-link",to:{path:T(a),query:o(+l)}},{default:Y(()=>[x(A(l),1)]),_:2},1032,["to"]))],2))),128)),p("li",{class:Oe(["page-next",{disabled:!T(n).has_next}])},[w(u,{class:"page-link",to:{path:T(a),query:o(T(n).page,1)},disabled:!T(n).has_next,tabindex:T(n).has_next?0:-1},{default:Y(({navigate:l})=>[Pt(i.$slots,"default",{onClick:d=>T(n).has_next?l:null},()=>[x(A(i.$t("common.NEXT"))+" ",1),r[1]||(r[1]=p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1))],!0)]),_:3},8,["to","disabled","tabindex"])],2)])])}}}),Qn=ae(tZe,[["__scopeId","data-v-d7c0bddb"]]),nZe={id:"admin-reports",class:"admin-card"},aZe=["value"],sZe=["value"],oZe=["value"],iZe={value:"true"},rZe={value:"false"},uZe={key:0,class:"no-reports"},lZe={key:1,class:"responsive-table"},cZe={class:"left-text"},dZe={class:"left-text"},EZe={class:"left-text"},pZe={class:"left-text"},mZe={class:"left-text"},TZe={class:"left-text"},_Ze={class:"left-text"},fZe={class:"cell-heading"},hZe={key:1,class:"deleted-object"},SZe={class:"cell-heading"},AZe={key:0},OZe={class:"cell-heading"},IZe={key:1,class:"deleted-object"},gZe={class:"cell-heading"},RZe={class:"cell-heading"},NZe={class:"cell-heading"},vZe={key:0},bZe=["onClick"],_h=20,fh="created_at",CZe=X({__name:"AdminReports",setup(e){const t=rt(),n=gn(),a=De(),{errorMessages:s}=Be(),{authUser:o}=qe(),i=["created_at","updated_at"],r={comment:"workouts.COMMENTS.COMMENT",user:"user.USER",workout:"workouts.WORKOUT"};let u=yt(Co(t.query,i,fh,{defaultSort:"desc"}));const l=F(()=>a.getters[Le.GETTERS.REPORTS]),d=F(()=>a.getters[Le.GETTERS.REPORTS_PAGINATION]);function E(R){a.dispatch(Le.ACTIONS.GET_REPORTS,R)}function c(R){const I=R.target;I.value?u.object_type=I.value:delete u.object_type,n.push({path:"/admin/reports",query:u})}function m(R){const I=R.target;I.value?u.resolved=I.value:delete u.resolved,n.push({path:"/admin/reports",query:u})}function _(R,I){u[R]=I,R==="per_page"&&(u.page=1),n.push({path:"/admin/reports",query:u})}function f(R){return Ut(R,o.value.timezone,o.value.date_format)}function O(R){return R=="user.USER"?"user.USER_PROFILE":R}function S(R){var g,N;let I;switch(R.object_type){case"workout":I=(g=R.reported_workout)==null?void 0:g.title;break;case"comment":I=((N=R.reported_comment)==null?void 0:N.text)||"";break;default:I=""}return I?I.length>_h?`${I.substring(0,_h-1)}…`:I:""}return Ce(()=>t.query,R=>{u=Co(R,i,fh,{query:u}),E(u)}),Je(()=>E(u)),(R,I)=>{const g=q("router-link"),N=q("ErrorMessage"),b=q("Card");return h(),v("div",nZe,[w(b,null,{title:Y(()=>[x(A(R.$t("admin.APP_MODERATION.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:I[0]||(I[0]=ve(C=>R.$router.push("/admin"),["prevent"]))},A(R.$t("admin.BACK_TO_ADMIN")),1),w(qp,{sort:T(Fl),order_by:i,query:T(u),message:"admin.APP_MODERATION.ORDER_BY",onUpdateSelect:_},{additionalFilters:Y(()=>[p("label",null,[x(A(R.$t("common.TYPE"))+": ",1),p("select",{name:"object_type",id:"object_type",value:T(u).object_type,onChange:c},[I[2]||(I[2]=p("option",{value:""},null,-1)),(h(!0),v(re,null,be(Object.keys(r),C=>(h(),v("option",{value:C,key:C},A(R.$t(r[C])),9,sZe))),128))],40,aZe)]),p("label",null,[x(A(R.$t("admin.APP_MODERATION.STATUS"))+": ",1),p("select",{name:"resolved",id:"resolved",value:T(u).resolved,onChange:m},[I[3]||(I[3]=p("option",{value:""},null,-1)),p("option",iZe,A(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("option",rZe,A(R.$t("admin.APP_MODERATION.RESOLVED.FALSE")),1)],40,oZe)])]),_:1},8,["sort","query"]),l.value.length===0?(h(),v("div",uZe,A(R.$t("admin.APP_MODERATION.NO_REPORTS_FOUND")),1)):(h(),v("div",lZe,[p("table",null,[p("thead",null,[p("tr",null,[I[4]||(I[4]=p("th",{class:"left-text"},"#",-1)),p("th",cZe,A(R.$t("admin.APP_MODERATION.REPORTED_USER")),1),p("th",dZe,A(R.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1),p("th",EZe,A(R.$t("admin.APP_MODERATION.REPORTED_BY")),1),p("th",pZe,A(Fe(R.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))),1),p("th",mZe,A(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("th",TZe,A(Fe(R.$t("common.LAST_UPDATED_ON"))),1),p("th",_Ze,A(R.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(re,null,be(l.value,C=>(h(),v("tr",{key:C.created_at},[p("td",null,[w(g,{to:`/admin/reports/${C.id}`},{default:Y(()=>[x(A(C.id),1)]),_:2},1032,["to"])]),p("td",null,[p("span",fZe,A(R.$t("admin.APP_MODERATION.REPORTED_USER")),1),C.reported_user?(h(),B(g,{key:0,class:"link-with-image",to:`/admin/users/${C.reported_user.username}`},{default:Y(()=>[w(Qt,{user:C.reported_user},null,8,["user"]),x(" "+A(C.reported_user.username),1)]),_:2},1032,["to"])):(h(),v("span",hZe,A(R.$t("admin.DELETED_USER")),1))]),p("td",null,[p("span",SZe,A(R.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1),x(" "+A(R.$t(O(r[C.object_type])))+" ",1),S(C)?(h(),v("span",AZe," ("+A(S(C))+") ",1)):L("",!0)]),p("td",null,[p("span",OZe,A(R.$t("admin.APP_MODERATION.REPORTED_BY")),1),C.reported_by?(h(),B(g,{key:0,class:"link-with-image",to:`/admin/users/${C.reported_by.username}`},{default:Y(()=>[w(Qt,{user:C.reported_by},null,8,["user"]),x(" "+A(C.reported_by.username),1)]),_:2},1032,["to"])):(h(),v("span",IZe,A(R.$t("admin.DELETED_USER")),1))]),p("td",null,[p("span",gZe,A(Fe(R.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))),1),p("time",null,A(f(C.created_at)),1)]),p("td",null,[p("span",RZe,A(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("i",{class:Oe(`fa fa${C.resolved?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",null,[p("span",NZe,A(Fe(R.$t("common.LAST_UPDATED_ON"))),1),C.updated_at?(h(),v("time",vZe,A(f(C.updated_at)),1)):L("",!0)]),p("td",null,[p("button",{onClick:y=>R.$router.push(`/admin/reports/${C.id}`)},A(R.$t("admin.APP_MODERATION.VIEW_REPORT")),9,bZe)])]))),128))])]),d.value.page?(h(),B(Qn,{key:0,path:"/admin/users",pagination:d.value,query:T(u)},null,8,["pagination","query"])):L("",!0),T(s)?(h(),B(N,{key:1,message:T(s)},null,8,["message"])):L("",!0),p("button",{onClick:I[1]||(I[1]=ve(C=>R.$router.push("/admin"),["prevent"]))},A(R.$t("admin.BACK_TO_ADMIN")),1)]))]),_:1})])}}}),PZe=ae(CZe,[["__scopeId","data-v-88c1fd48"]]),DZe={id:"admin-sports",class:"admin-card"},LZe={class:"responsive-table"},yZe={class:"text-left"},$Ze={class:"text-left sport-action"},UZe={class:"text-center"},kZe={class:"cell-heading"},wZe={class:"sport-label"},MZe={class:"cell-heading"},WZe={class:"text-center"},FZe={class:"cell-heading"},zZe={class:"sport-action"},xZe={class:"cell-heading"},BZe={class:"action-button"},GZe=["onClick"],VZe={key:0,class:"has-workouts"},HZe=X({__name:"AdminSports",setup(e){const t=De(),{errorMessages:n}=Be(),{translatedSports:a}=nn();function s(o,i){t.dispatch(Ht.ACTIONS.UPDATE_SPORTS,{id:o,isActive:i})}return Je(()=>t.dispatch(Ht.ACTIONS.GET_SPORTS,!0)),(o,i)=>{const r=q("SportImage"),u=q("ErrorMessage"),l=q("Card");return h(),v("div",DZe,[w(l,null,{title:Y(()=>[x(A(o.$t("admin.SPORTS.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:i[0]||(i[0]=ve(d=>o.$router.push("/admin"),["prevent"]))},A(o.$t("admin.BACK_TO_ADMIN")),1),p("div",LZe,[p("table",null,[p("thead",null,[p("tr",null,[i[2]||(i[2]=p("th",null,"#",-1)),p("th",null,A(o.$t("admin.SPORTS.TABLE.IMAGE")),1),p("th",yZe,A(o.$t("admin.SPORTS.TABLE.LABEL")),1),p("th",null,A(o.$t("admin.SPORTS.TABLE.ACTIVE")),1),p("th",$Ze,A(o.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(re,null,be(T(a),d=>(h(),v("tr",{key:d.id},[p("td",UZe,[i[3]||(i[3]=p("span",{class:"cell-heading"},"id",-1)),x(" "+A(d.id),1)]),p("td",null,[p("span",kZe,A(o.$t("admin.SPORTS.TABLE.IMAGE")),1),w(r,{title:d.translatedLabel,"sport-label":d.label,color:d.color},null,8,["title","sport-label","color"])]),p("td",wZe,[p("span",MZe,A(o.$t("admin.SPORTS.TABLE.LABEL")),1),x(" "+A(d.translatedLabel),1)]),p("td",WZe,[p("span",FZe,A(o.$t("admin.SPORTS.TABLE.ACTIVE")),1),p("i",{class:Oe(`fa fa${d.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),p("td",zZe,[p("span",xZe,A(o.$t("admin.ACTION")),1),p("div",BZe,[p("button",{class:Oe({danger:d.is_active}),onClick:E=>s(d.id,!d.is_active)},A(o.$t(`buttons.${d.is_active?"DIS":"EN"}ABLE`)),11,GZe),d.has_workouts?(h(),v("span",VZe,[i[4]||(i[4]=p("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)),x(" "+A(o.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):L("",!0)])])]))),128))])]),T(n)?(h(),B(u,{key:0,message:T(n)},null,8,["message"])):L("",!0),p("button",{onClick:i[1]||(i[1]=ve(d=>o.$router.push("/admin"),["prevent"]))},A(o.$t("admin.BACK_TO_ADMIN")),1)])]),_:1})])}}}),KZe=ae(HZe,[["__scopeId","data-v-f6f9d907"]]),qZe={class:"users-filters"},jZe={class:"search-username"},YZe=["placeholder"],XZe=X({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=t,a=rt(),s=Ie(a.query.q?a.query.q:"");function o(){s.value!==""&&n("filterOnUsername",s)}function i(){s.value="",n("filterOnUsername",s.value)}return(r,u)=>(h(),v("div",qZe,[p("div",jZe,[We(p("input",{id:"username",name:"username","onUpdate:modelValue":u[0]||(u[0]=l=>s.value=l),onKeyup:Ye(o,["enter"]),placeholder:r.$t("user.FILTER_ON_USERNAME")},null,40,YZe),[[it,s.value,void 0,{trim:!0}]]),s.value!==""?(h(),v("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:i})):L("",!0)]),p("i",{class:Oe(["fa fa-search",{"fa-disabled":s.value===""}]),"aria-hidden":"true",onClick:o},null,2)]))}}),$O=ae(XZe,[["__scopeId","data-v-359360da"]]),QZe={id:"admin-users",class:"admin-card"},ZZe={key:0,class:"no-users"},JZe={key:1,class:"responsive-table"},eJe={class:"left-text"},tJe={class:"left-text"},nJe={class:"cell-heading"},aJe={class:"cell-heading"},sJe={class:"cell-heading"},oJe={class:"text-center"},iJe={class:"cell-heading"},rJe={class:"text-center"},uJe={class:"cell-heading"},lJe={class:"text-center"},cJe={class:"cell-heading"},dJe={class:"text-center"},EJe={class:"cell-heading"},pJe={class:"text-center"},mJe={class:"cell-heading"},TJe={class:"roles"},_Je={key:0,class:"roles-buttons"},fJe=["onClick"],hJe={key:1},SJe=["disabled","onClick"],hh="created_at",AJe=X({__name:"AdminUsers",setup(e){const t=De(),n=rt(),a=gn(),{errorMessages:s}=Be(),{authUser:o}=qe(),i=["is_active","role","created_at","username","workouts_count"];let r=yt(Co(n.query,i,hh));const u=F(()=>t.getters[ue.GETTERS.USERS]),l=F(()=>t.getters[ue.GETTERS.USERS_PAGINATION]),d=F(()=>t.getters[ue.GETTERS.USERS_IS_SUCCESS]),E=Ie("");function c(I){t.dispatch(ue.ACTIONS.GET_USERS_FOR_ADMIN,I)}function m(I){S("q",I.value)}function _(I){return E.value===I}function f(I){switch(I){case"admin":return["moderator","user"];case"moderator":return["admin","user"];case"user":return["admin","moderator"];default:return[]}}function O(I,g){t.dispatch(ue.ACTIONS.UPDATE_USER,{username:I,role:g})}function S(I,g){r[I]=g,I==="per_page"&&(r.page=1),a.push({path:"/admin/users",query:r})}function R(I){return I.username===o.value.username||I.suspended_at!==null||I.role==="owner"}return Ce(()=>n.query,I=>{r=Co(I,i,hh,{query:r}),c(r)}),Ce(()=>d.value,I=>{I&&(E.value="")}),Je(()=>c(r)),ct(()=>{t.dispatch(ue.ACTIONS.EMPTY_USERS),t.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(I,g)=>{const N=q("router-link"),b=q("ErrorMessage"),C=q("Card");return h(),v("div",QZe,[w(C,null,{title:Y(()=>[x(A(Fe(I.$t("user.USER",0))),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:g[0]||(g[0]=ve(y=>I.$router.push("/admin"),["prevent"]))},A(I.$t("admin.BACK_TO_ADMIN")),1),w($O,{onFilterOnUsername:m}),w(qp,{sort:T(Fl),order_by:i,query:T(r),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:S},null,8,["sort","query"]),u.value.length===0?(h(),v("div",ZZe,A(I.$t("user.NO_USERS_FOUND")),1)):(h(),v("div",JZe,[p("table",null,[p("thead",null,[p("tr",null,[g[3]||(g[3]=p("th",null,"#",-1)),p("th",eJe,A(I.$t("user.USERNAME")),1),p("th",tJe,A(I.$t("user.PROFILE.REGISTRATION_DATE")),1),p("th",null,A(Fe(I.$t("workouts.WORKOUT",0))),1),p("th",null,A(I.$t("admin.ACTIVE")),1),p("th",null,A(I.$t("user.ROLE")),1),p("th",null,A(I.$t("user.SUSPENDED")),1),p("th",null,A(I.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(re,null,be(u.value,y=>(h(),v("tr",{key:y.username},[p("td",null,[p("span",nJe,A(I.$t("user.PROFILE.PICTURE")),1),w(Qt,{user:y},null,8,["user"])]),p("td",null,[p("span",aJe,A(I.$t("user.USERNAME")),1),w(N,{to:`/admin/users/${y.username}`},{default:Y(()=>[x(A(y.username),1)]),_:2},1032,["to"]),T(s)&&E.value===y.username?(h(),B(b,{key:0,message:T(s)},null,8,["message"])):L("",!0)]),p("td",null,[p("span",sJe,A(I.$t("user.PROFILE.REGISTRATION_DATE")),1),p("time",null,A(T(Ut)(y.created_at,T(o).timezone,T(o).date_format)),1)]),p("td",oJe,[p("span",iJe,A(Fe(I.$t("workouts.WORKOUT",0))),1),x(" "+A(y.nb_workouts),1)]),p("td",rJe,[p("span",uJe,A(I.$t("admin.ACTIVE")),1),p("i",{class:Oe(`fa fa${y.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",lJe,[p("span",cJe,A(I.$t("user.ROLE")),1),x(" "+A(I.$t(`user.ROLES.${y.role}`)),1)]),p("td",dJe,[p("span",EJe,A(I.$t("user.SUSPENDED")),1),p("i",{class:Oe(`fa fa${y.suspended_at!==null?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",pJe,[p("span",mJe,A(I.$t("admin.ACTION")),1),p("div",TJe,[_(y.username)?(h(),v("div",_Je,[(h(!0),v(re,null,be(f(y.role),D=>(h(),v("button",{class:Oe({danger:y.role==="admin"||D==="user"}),key:D,onClick:M=>O(y.username,D)},A(I.$t(`admin.USERS.TABLE.CHANGE_TO_${D.toUpperCase()}`)),11,fJe))),128)),p("button",{onClick:g[1]||(g[1]=D=>E.value="")},A(I.$t("buttons.CANCEL")),1)])):(h(),v("div",hJe,[p("button",{disabled:R(y),onClick:D=>E.value=y.username},A(I.$t("admin.USERS.TABLE.CHANGE_ROLE")),9,SJe)]))])])]))),128))])]),l.value.page?(h(),B(Qn,{key:0,path:"/admin/users",pagination:l.value,query:T(r)},null,8,["pagination","query"])):L("",!0),E.value===""&&T(s)?(h(),B(b,{key:1,message:T(s)},null,8,["message"])):L("",!0),p("button",{onClick:g[2]||(g[2]=ve(y=>I.$router.push("/admin"),["prevent"]))},A(I.$t("admin.BACK_TO_ADMIN")),1)]))]),_:1})])}}}),OJe=ae(AJe,[["__scopeId","data-v-4934ef0c"]]),IJe={class:"box"},gJe={class:"user-header"},RJe={key:0,class:"follows-you"},NJe={key:1,class:"follows-you"},vJe={class:"user-details"},bJe={class:"user-name"},CJe={key:2,class:"user-role"},PJe=X({__name:"UserHeader",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=rt(),{displayOptions:s}=Be(),{authUser:o,authUserHasModeratorRights:i}=qe(),r=F(()=>n.value.suspended_at?Ut(n.value.suspended_at,s.value.timezone,s.value.dateFormat):""),u=F(()=>n.value.suspended_at!==null&&a.name!=="AuthUserAccountSuspension"&&n.value.username===(o==null?void 0:o.value.username)),l=F(()=>i.value&&n.value.suspension_report_id!==void 0),d=F(()=>n.value.role!=="user"?`user.ROLES.${n.value.role}`:"");return(E,c)=>{const m=q("router-link"),_=q("i18n-t"),f=q("AlertMessage");return h(),v("div",IJe,[p("div",gJe,[T(n).follows==="true"?(h(),v("div",RJe,A(E.$t("user.RELATIONSHIPS.FOLLOWS_YOU")),1)):T(n).username===T(o).username&&!E.$route.path.startsWith("/profile")?(h(),v("div",NJe,A(E.$t("user.YOU")),1)):L("",!0),w(Qt,{user:T(n)},null,8,["user"]),p("div",vJe,[p("div",bJe,A(T(n).username),1),w(Kp,{user:T(n)},null,8,["user"])]),d.value?(h(),v("div",CJe,A(E.$t(d.value)),1)):L("",!0)]),"suspended_at"in T(n)&&T(n).suspended_at!==null?(h(),B(f,{key:0,message:"user.ACCOUNT_SUSPENDED_AT",param:r.value},_o({_:2},[u.value||l.value?{name:"additionalMessage",fn:Y(()=>[u.value?(h(),B(m,{key:0,to:"/profile/suspension",class:"appeal-link"},{default:Y(()=>[x(A(E.$t("user.APPEAL")),1)]),_:1})):L("",!0),l.value?(h(),B(_,{key:1,keypath:"common.SEE_REPORT"},{default:Y(()=>[w(m,{to:`/admin/reports/${T(n).suspension_report_id}`},{default:Y(()=>[x(A(T(n).suspension_report_id),1)]),_:1},8,["to"])]),_:1})):L("",!0)]),key:"0"}:void 0]),1032,["param"])):L("",!0)])}}}),UO=ae(PJe,[["__scopeId","data-v-12bd7069"]]),DJe={class:"profile-tabs"},LJe={class:"profile-tabs-links"},kO=X({__name:"UserProfileTabs",props:{tabs:{},selectedTab:{},edition:{type:Boolean}},setup(e){const t=e,{edition:n,selectedTab:a,tabs:s}=_e(t);mt(()=>{const i=document.getElementById(`tab-${s.value[0]}`);i&&i.focus()});function o(i){switch(i){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${i.toLocaleLowerCase()}`;case"APPS":case"BLOCKED-USERS":case"EQUIPMENTS":case"FOLLOW-REQUESTS":case"MODERATION":case"NOTIFICATIONS":case"PREFERENCES":case"SPORTS":return`/profile${n.value?"/edit":""}/${i.toLocaleLowerCase()}`;default:case"PROFILE":return`/profile${n.value?"/edit":""}`}}return(i,r)=>{const u=q("router-link");return h(),v("div",DJe,[p("div",LJe,[(h(!0),v(re,null,be(T(s),l=>(h(),B(u,{class:Oe(["profile-tab",{selected:l===T(a)}]),to:o(l),key:l},{default:Y(()=>[x(A(i.$t(`user.PROFILE.TABS.${l}`)),1)]),_:2},1032,["class","to"]))),128))])])}}}),yJe={id:"user-profile"},$Je={class:"box"},UJe=X({__name:"index",props:{user:{},tab:{}},setup(e){const t=e,{user:n,tab:a}=_e(t),s=De(),o=F(()=>s.getters[K.GETTERS.IS_SUSPENDED]),i=F(()=>o.value?["PROFILE","PREFERENCES","SPORTS","EQUIPMENTS","APPS","MODERATION"]:["PROFILE","PREFERENCES","SPORTS","EQUIPMENTS","APPS","FOLLOW-REQUESTS","BLOCKED-USERS","NOTIFICATIONS","MODERATION"]);return(r,u)=>{const l=q("router-view");return h(),v("div",yJe,[w(UO,{user:T(n)},null,8,["user"]),p("div",$Je,[w(kO,{tabs:i.value,selectedTab:T(a),edition:!1},null,8,["tabs","selectedTab"]),w(l,{user:T(n)},null,8,["user"])])])}}}),kJe=ae(UJe,[["__scopeId","data-v-eb19dd23"]]),wJe={id:"user-moderation-detail"},MJe={id:"user-reports",class:"description-list"},WJe={key:0,id:"user-sanctions"},FJe={key:0},zJe={class:"last-sanctions"},xJe=X({__name:"UserAdminReports",props:{authUser:{},user:{}},setup(e){const t=e,{authUser:n,user:a}=_e(t),s=rt(),o=De();let i=yt(d(s.query));const r=F(()=>o.getters[ue.GETTERS.USER_SANCTIONS]),u=F(()=>o.getters[ue.GETTERS.USER_SANCTIONS_LOADING]),l=F(()=>o.getters[ue.GETTERS.USER_SANCTIONS_PAGINATION]);function d(m){const _={};return m.page&&(_.page=bo(m.page,cr)),_}function E(m){if(m.updated_at)switch(m.approved){case!0:return"APPROVED";case!1:return"REJECTED";default:return"IN_PROGRESS"}return"IN_PROGRESS"}function c(m){o.dispatch(ue.ACTIONS.GET_USER_SANCTIONS,{username:a.value.username,...m})}return Ce(()=>s.query,async m=>{i=d(m),c(i)}),Je(()=>c({})),ct(()=>o.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS,[])),(m,_)=>{const f=q("router-link");return h(),v("div",wJe,[p("div",MJe,[p("dl",null,[p("dt",null,A(m.$t("user.PROFILE.CREATED_REPORTS"))+":",1),p("dd",null,A(T(a).created_reports_count),1),p("dt",null,A(m.$t("user.PROFILE.REPORTS_FROM_OTHER_USERS"))+":",1),p("dd",null,A(T(a).reported_count),1)])]),T(a).sanctions_count?(h(),v("div",WJe,[p("strong",null,A(m.$t("user.PROFILE.LATEST_SANCTIONS_RECEIVED"))+":",1),p("div",null,A(m.$t("user.PROFILE.USER_RECEIVED_SANCTIONS",{count:T(a).sanctions_count})),1),u.value?(h(),v("div",FJe,[w(Ml)])):(h(),v(re,{key:1},[p("ul",zJe,[(h(!0),v(re,null,be(r.value,O=>(h(),v("li",{key:O.id},[p("div",null,[x(A(m.$t(`user.PROFILE.SANCTIONS.${O.action_type}`,{date:T(Ut)(O.created_at,T(n).timezone,T(n).date_format)}))+" ",1),O.appeal?(h(),v("span",{key:0,class:Oe(["info-box appeal",{approved:E(O.appeal)==="APPROVED",rejected:E(O.appeal)==="REJECTED"}])},[p("i",{class:Oe(["fa",{"fa-info-circle":E(O.appeal)!=="REJECTED","fa-times":E(O.appeal)==="REJECTED"}]),"aria-hidden":"true"},null,2),x(" "+A(m.$t(`user.APPEAL_${E(O.appeal)}`)),1)],2)):L("",!0)]),w(f,{to:`/admin/reports/${O.report_id}`},{default:Y(()=>[x(A(m.$t("admin.APP_MODERATION.VIEW_REPORT"))+" #"+A(O.report_id),1)]),_:2},1032,["to"])]))),128))]),w(Qn,{pagination:l.value,path:`/admin/users/${T(a).username}`,query:T(i)},null,8,["pagination","path","query"])],64))])):L("",!0)])}}}),BJe=ae(xJe,[["__scopeId","data-v-bfe7e915"]]),GJe={id:"user-infos",class:"description-list"},VJe={key:1,class:"info-box success-message"},HJe={key:4,class:"email-form form-box"},KJe={class:"form-items",for:"email"},qJe={class:"form-items",for:"email"},jJe={class:"form-buttons"},YJe={class:"confirm",type:"submit"},XJe={key:5},QJe={key:0},ZJe={key:1},JJe={key:2},eet={key:3},tet={key:4},net={key:5},aet={key:6},set={key:7},oet={key:8},iet={key:9},ret={key:10},uet={key:11,class:"user-bio"},cet={key:0,class:"report-submitted"},det={class:"info-box"},Eet={key:0},pet={key:0,class:"profile-buttons"},met={key:1,class:"profile-buttons"},Tet=X({__name:"UserInfos",props:{user:{},authUser:{},fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,{authUser:n,user:a,fromAdmin:s}=_e(t),o=De(),{appConfig:i,appLanguage:r,displayOptions:u,errorMessages:l}=Be(),{authUserHasModeratorRights:d,authUserHasAdminRights:E,isAuthenticated:c}=qe(),m=Ie(""),_=Ie(!1),f=Ie(!1),O=Ie(""),S=Ie(""),R=F(()=>o.getters[ue.GETTERS.USER_CURRENT_REPORTING]),I=F(()=>o.getters[Le.GETTERS.REPORT_STATUS]),g=F(()=>a.value.created_at?Ut(a.value.created_at,u.value.timezone,u.value.dateFormat):""),N=F(()=>a.value.birth_date?On(new Date(a.value.birth_date),`${fs(u.value.dateFormat,r.value)}`,{locale:zs[r.value]}):""),b=F(()=>o.getters[ue.GETTERS.USERS_IS_SUCCESS]);function C(Ee){m.value=Ee,Ee!==""&&o.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function y(Ee){o.dispatch(ue.ACTIONS.DELETE_USER_ACCOUNT,{username:Ee})}function D(Ee){S.value="password-reset",o.dispatch(ue.ACTIONS.UPDATE_USER,{username:Ee,resetPassword:!0})}function M(Ee){o.dispatch(ue.ACTIONS.UPDATE_USER,{username:Ee,activate:!0})}function P(){Se(),O.value=a.value.email_to_confirm?a.value.email_to_confirm:"",f.value=!0,S.value="email-update"}function W(){O.value="",f.value=!1}function Q(Ee){o.dispatch(ue.ACTIONS.UPDATE_USER,{username:Ee,new_email:O.value})}function Se(){o.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),o.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1),o.commit(ue.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1),o.commit(Le.MUTATIONS.SET_REPORT_STATUS,null),S.value=""}function J(){o.commit(ue.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!0)}return Ce(()=>b.value,Ee=>{Ee&&(C(""),W())}),ct(()=>Se()),(Ee,fe)=>{var He,_t,we,se,ke,pt,me;const Pe=q("Modal"),Ke=q("AlertMessage"),et=q("ErrorMessage");return h(),v("div",GJe,[m.value?(h(),B(Pe,{key:0,title:Ee.$t("common.CONFIRMATION"),message:m.value==="delete"?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:T(a).username,onConfirmAction:fe[0]||(fe[0]=Z=>m.value==="delete"?y(T(a).username):D(T(a).username)),onCancelAction:fe[1]||(fe[1]=Z=>C("")),onKeydown:fe[2]||(fe[2]=Ye(Z=>C(""),["esc"]))},null,8,["title","message","strongMessage"])):L("",!0),b.value?(h(),v("div",VJe,A(Ee.$t(`admin.${S.value==="password-reset"?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):L("",!0),T(d)&&!T(a).is_active?(h(),B(Ke,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})):L("",!0),T(l)&&!R.value?(h(),B(et,{key:3,message:T(l),"no-margin":!0},null,8,["message"])):L("",!0),f.value?(h(),v("div",HJe,[p("form",{class:Oe({errors:_.value}),onSubmit:fe[5]||(fe[5]=ve(Z=>Q(T(a).username),["prevent"]))},[p("label",KJe,[x(A(Ee.$t("admin.CURRENT_EMAIL"))+" ",1),We(p("input",{id:"email",type:"email","onUpdate:modelValue":fe[3]||(fe[3]=Z=>T(a).email=Z),disabled:""},null,512),[[it,T(a).email]])]),p("label",qJe,[x(A(Ee.$t("admin.NEW_EMAIL"))+"* ",1),We(p("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":fe[4]||(fe[4]=Z=>O.value=Z)},null,512),[[it,O.value]])]),p("div",jJe,[p("button",YJe,A(Ee.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(W,["prevent"])},A(Ee.$t("buttons.CANCEL")),1)])],34)])):(h(),v("div",XJe,[p("dl",null,[p("dt",null,A(Ee.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),p("dd",null,[p("time",null,A(g.value),1)]),T(c)?(h(),v(re,{key:0},[T(s)?(h(),v("dt",QJe,A(Ee.$t("user.EMAIL"))+":",1)):L("",!0),T(s)?(h(),v("dd",ZJe,A(T(a).email),1)):L("",!0),T(a).first_name?(h(),v("dt",JJe,A(Ee.$t("user.PROFILE.FIRST_NAME"))+":",1)):L("",!0),T(a).first_name?(h(),v("dd",eet,A(T(a).first_name),1)):L("",!0),T(a).last_name?(h(),v("dt",tet,A(Ee.$t("user.PROFILE.LAST_NAME"))+":",1)):L("",!0),T(a).last_name?(h(),v("dd",net,A(T(a).last_name),1)):L("",!0),N.value?(h(),v("dt",aet,A(Ee.$t("user.PROFILE.BIRTH_DATE"))+":",1)):L("",!0),N.value?(h(),v("dd",set,[p("time",null,A(N.value),1)])):L("",!0),T(a).location?(h(),v("dt",oet,A(Ee.$t("user.PROFILE.LOCATION"))+":",1)):L("",!0),T(a).location?(h(),v("dd",iet,A(T(a).location),1)):L("",!0),T(a).bio?(h(),v("dt",ret,A(Ee.$t("user.PROFILE.BIO"))+":",1)):L("",!0),T(a).bio?(h(),v("dd",uet,A(T(a).bio),1)):L("",!0)],64)):L("",!0)]),I.value===`user-${T(a).username}-created`?(h(),v("div",cet,[p("div",det,[p("span",null,[fe[12]||(fe[12]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(Ee.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0),R.value?(h(),B(Fp,{key:1,"object-id":T(a).username,"object-type":"user"},null,8,["object-id"])):(h(),v(re,{key:2},[T(n)&&T(d)&&T(s)?(h(),v("div",Eet,[w(BJe,{authUser:T(n),user:T(a)},null,8,["authUser","user"])])):L("",!0),T(c)?(h(),v(re,{key:1},[T(s)?(h(),v("div",pet,[T(a).role!=="owner"&&T(E)?(h(),v(re,{key:0},[((He=T(n))==null?void 0:He.username)!==T(a).username?(h(),v("button",{key:0,class:"danger",onClick:fe[6]||(fe[6]=ve(Z=>C("delete"),["prevent"]))},A(Ee.$t("admin.DELETE_USER")),1)):L("",!0),T(a).is_active?L("",!0):(h(),v("button",{key:1,onClick:fe[7]||(fe[7]=ve(Z=>M(T(a).username),["prevent"]))},A(Ee.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),((_t=T(n))==null?void 0:_t.username)!==T(a).username?(h(),v("button",{key:2,onClick:ve(P,["prevent"])},A(Ee.$t("admin.UPDATE_USER_EMAIL")),1)):L("",!0),((we=T(n))==null?void 0:we.username)!==T(a).username&&T(i).is_email_sending_enabled?(h(),v("button",{key:3,onClick:fe[8]||(fe[8]=ve(Z=>C("reset"),["prevent"]))},A(Ee.$t("admin.RESET_USER_PASSWORD")),1)):L("",!0),(se=T(n))!=null&&se.username?(h(),B(Ju,{key:4,authUser:T(n),user:T(a),from:"userInfos"},null,8,["authUser","user"])):L("",!0)],64)):L("",!0),p("button",{onClick:fe[9]||(fe[9]=Z=>Ee.$router.go(-1))},A(Ee.$t("buttons.BACK")),1)])):(h(),v("div",met,[Ee.$route.path==="/profile"||T(a).username===((ke=T(n))==null?void 0:ke.username)?(h(),v("button",{key:0,onClick:fe[10]||(fe[10]=Z=>Ee.$router.push("/profile/edit"))},A(Ee.$t("user.PROFILE.EDIT")),1)):L("",!0),(pt=T(n))!=null&&pt.username?(h(),B(Ju,{key:1,authUser:T(n),user:T(a),from:"userInfos"},null,8,["authUser","user"])):L("",!0),Ee.$route.name==="User"&&T(a).username!==((me=T(n))==null?void 0:me.username)&&T(a).suspended_at===null&&I.value!==`user-${T(a).username}-created`?(h(),v("button",{key:2,onClick:J},A(Ee.$t("user.REPORT")),1)):L("",!0),p("button",{onClick:fe[11]||(fe[11]=Z=>Ee.$router.go(-1))},A(Ee.$t("buttons.BACK")),1)]))],64)):L("",!0)],64))]))])}}}),wO=ae(Tet,[["__scopeId","data-v-660c5d55"]]),MO=e=>{const t=["follow","follow_request","follow_request_approved","workout_like","workout_comment","comment_like","mention"];return(e==="admin"||e==="owner")&&t.push("account_creation"),t},_et={id:"user-notifications",class:"description-list"},fet={class:"profile-buttons"},het=X({__name:"UserNotifications",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=F(()=>MO(n.value.role));function s(o){return o in n.value.notification_preferences?n.value.notification_preferences[o]:!0}return(o,i)=>(h(),v(re,null,[p("h1",null,A(o.$t("user.PROFILE.NOTIFICATION_PREFERENCES")),1),p("div",_et,[p("dl",null,[(h(!0),v(re,null,be(a.value,r=>(h(),v(re,{key:r},[p("dt",null,A(Fe(o.$t(`user.PROFILE.NOTIFICATIONS.${r}`)))+":",1),p("dd",null,[p("i",{class:Oe(`fa fa-${s(r)?"check":"times"} fa-padding`),"aria-hidden":"true"},null,2),x(" "+A(o.$t(`common.${s(r)?"EN":"DIS"}ABLED`)),1)])],64))),128))]),p("div",fet,[p("button",{onClick:i[0]||(i[0]=r=>o.$router.push("/profile/edit/notifications"))},A(o.$t("user.PROFILE.EDIT_NOTIFICATION_PREFERENCES")),1),p("button",{onClick:i[1]||(i[1]=r=>o.$router.push("/notifications"))},A(Fe(o.$t("notifications.NOTIFICATIONS",0))),1),p("button",{onClick:i[2]||(i[2]=r=>o.$router.push("/"))},A(o.$t("common.HOME")),1)])])],64))}}),Aet=ae(het,[["__scopeId","data-v-be4b5620"]]),Oet={id:"user-preferences",class:"description-list"},Iet={class:"preferences-section"},get={class:"preferences-section"},Ret={class:"preferences-section"},Net={class:"info-box raw-speed-help"},vet={class:"profile-buttons"},bet=X({__name:"UserPreferences",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),{dateFormat:a,timezone:s}=qe(),o=F(()=>n.value.language&&n.value.language in mo?mo[n.value.language]:mo.en),i=F(()=>n.value.weekm?"MONDAY":"SUNDAY"),r=F(()=>n.value.display_ascent?"DISPLAYED":"HIDDEN"),u=F(()=>n.value.use_dark_mode===!0?"DARK":n.value.use_dark_mode===!1?"LIGHT":"DEFAULT");return(l,d)=>(h(),v("div",Oet,[p("div",Iet,A(l.$t("user.PROFILE.INTERFACE")),1),p("dl",null,[p("dt",null,A(l.$t("user.PROFILE.LANGUAGE"))+":",1),p("dd",null,A(o.value),1),p("dt",null,A(l.$t("user.PROFILE.THEME_MODE.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.THEME_MODE.VALUES.${u.value}`)),1),p("dt",null,A(l.$t("user.PROFILE.TIMEZONE"))+":",1),p("dd",null,A(T(s)),1),p("dt",null,A(l.$t("user.PROFILE.DATE_FORMAT"))+":",1),p("dd",null,A(T(a)),1),p("dt",null,A(l.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.${i.value}`)),1)]),p("div",get,A(l.$t("user.PROFILE.TABS.ACCOUNT")),1),p("dl",null,[p("dt",null,A(l.$t("user.PROFILE.FOLLOW_REQUESTS_APPROVAL.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.FOLLOW_REQUESTS_APPROVAL.${T(n).manually_approves_followers?"MANUALLY":"AUTOMATICALLY"}`)),1),p("dt",null,A(l.$t("user.PROFILE.PROFILE_IN_USERS_DIRECTORY.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.PROFILE_IN_USERS_DIRECTORY.${T(n).hide_profile_in_users_directory?"HIDDEN":"DISPLAYED"}`)),1)]),p("div",Ret,A(l.$t("workouts.WORKOUT",0)),1),p("dl",null,[p("dt",null,A(l.$t("user.PROFILE.UNITS.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.UNITS.${T(n).imperial_units?"IMPERIAL":"METRIC"}`)),1),p("dt",null,A(l.$t("user.PROFILE.ASCENT_DATA"))+":",1),p("dd",null,A(l.$t(`common.${r.value}`)),1),p("dt",null,A(l.$t("user.PROFILE.ELEVATION_CHART_START.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.ELEVATION_CHART_START.${T(n).start_elevation_at_zero?"ZERO":"MIN_ALT"}`)),1),p("dt",null,A(l.$t("user.PROFILE.USE_RAW_GPX_SPEED.LABEL"))+":",1),p("dd",null,A(l.$t(`user.PROFILE.USE_RAW_GPX_SPEED.${T(n).use_raw_gpx_speed?"RAW_SPEED":"FILTERED_SPEED"}`)),1),p("div",Net,[p("span",null,[d[2]||(d[2]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(l.$t("user.PROFILE.USE_RAW_GPX_SPEED.HELP")),1)])])]),p("dl",null,[p("dt",null,A(l.$t("visibility_levels.WORKOUTS_VISIBILITY"))+":",1),p("dd",null,A(l.$t(`visibility_levels.LEVELS.${T(n).workouts_visibility}`)),1),p("dt",null,A(l.$t("visibility_levels.ANALYSIS_VISIBILITY"))+":",1),p("dd",null,A(l.$t(`visibility_levels.LEVELS.${T(n).analysis_visibility}`)),1),p("dt",null,A(l.$t("visibility_levels.MAP_VISIBILITY"))+":",1),p("dd",null,A(l.$t(`visibility_levels.LEVELS.${T(n).map_visibility}`)),1)]),p("div",vet,[p("button",{onClick:d[0]||(d[0]=E=>l.$router.push("/profile/edit/preferences"))},A(l.$t("user.PROFILE.EDIT_PREFERENCES")),1),p("button",{onClick:d[1]||(d[1]=E=>l.$router.push("/"))},A(l.$t("common.HOME")),1)])]))}}),Cet=ae(bet,[["__scopeId","data-v-545b27a5"]]),Pet={class:"users-list"},Det={key:0},Let={class:"item"},yet={class:"user-name"},$et={key:0,class:"blocked-user"},Uet=["onClick"],ket={key:1,class:"follow-requests-list-actions"},wet=["onClick"],Met=["onClick"],Wet={key:1,class:"no-users-list"},Fet={class:"profile-buttons"},zet=X({__name:"UsersList",props:{itemType:{}},setup(e){const t=e,{itemType:n}=_e(t),a=rt(),s=De(),{errorMessages:o}=Be(),i={page:1},r=Ie(null),u=F(()=>s.getters[K.GETTERS[n.value==="follow-requests"?"FOLLOW_REQUESTS":"BLOCKED_USERS"]]),l=F(()=>s.getters[ue.GETTERS.USERS_PAGINATION]);function d(f){s.dispatch(K.ACTIONS[n.value==="follow-requests"?"GET_FOLLOW_REQUESTS":"GET_BLOCKED_USERS"],f)}function E(f,O){_(f),s.dispatch(K.ACTIONS.UPDATE_FOLLOW_REQUESTS,{username:f,action:O,getFollowRequests:!0})}function c(f,O){_(f);const S={username:f,action:"unblock",from:n.value,payload:m(a.query)};s.dispatch(ue.ACTIONS.UPDATE_RELATIONSHIP,S)}function m(f){return i.page=f.page?+f.page:1,i}function _(f){r.value=f}return Ce(()=>a.query,f=>{a.path==="/profile/follow-requests"&&s.dispatch(K.ACTIONS.GET_FOLLOW_REQUESTS,m(f)),a.path==="/profile/blocked-users"&&s.dispatch(K.ACTIONS.GET_BLOCKED_USERS,m(f))}),Je(()=>d(m(a.query))),ct(()=>{s.commit(K.MUTATIONS[n.value==="follow-requests"?"UPDATE_FOLLOW_REQUESTS":"UPDATE_BLOCKED_USERS"],[])}),(f,O)=>{const S=q("router-link"),R=q("ErrorMessage");return h(),v("div",Pet,[u.value.length>0?(h(),v("div",Det,[(h(!0),v(re,null,be(u.value,I=>(h(),v("div",{key:I.username,class:"box user-item"},[p("div",Let,[w(Qt,{user:I},null,8,["user"]),p("div",yet,[w(S,{to:`/users/${I.username}?from=users`},{default:Y(()=>[x(A(I.username),1)]),_:2},1032,["to"])]),I.blocked?(h(),v("div",$et,[p("button",{onClick:g=>c(I.username)},A(f.$t("buttons.UNBLOCK")),9,Uet)])):(h(),v("div",ket,[p("button",{onClick:g=>E(I.username,"accept")},[O[1]||(O[1]=p("i",{class:"fa fa-check","aria-hidden":"true"},null,-1)),x(" "+A(f.$t("buttons.ACCEPT")),1)],8,wet),p("button",{onClick:g=>E(I.username,"reject"),class:"danger"},[O[2]||(O[2]=p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)),x(" "+A(f.$t("buttons.REJECT")),1)],8,Met)]))]),T(o)&&r.value&&r.value===I.username?(h(),B(R,{key:0,message:T(o),"no-margin":!0},null,8,["message"])):L("",!0)]))),128))])):(h(),v("p",Wet,A(f.$t(T(n)==="follow-requests"?"user.RELATIONSHIPS.NO_FOLLOW_REQUESTS":"user.NO_USERS_FOUND")),1)),l.value.total>0?(h(),B(Qn,{key:2,path:`/profile/${T(n)}`,pagination:l.value,query:{}},null,8,["path","pagination"])):L("",!0),T(o)?(h(),B(R,{key:3,message:T(o),"no-margin":!0},null,8,["message"])):L("",!0),p("div",Fet,[p("button",{onClick:O[0]||(O[0]=I=>f.$router.push("/"))},A(f.$t("common.HOME")),1)])])}}}),Sh=ae(zet,[["__scopeId","data-v-d8bf8973"]]),xet={id:"user-profile-edition",class:"center-card"},Bet=X({__name:"index",props:{user:{},tab:{}},setup(e){const t=e,{user:n,tab:a}=_e(t),{isAuthUserSuspended:s}=qe(),o=F(()=>s.value?["PROFILE","ACCOUNT","PICTURE","PREFERENCES","PRIVACY-POLICY"]:["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","NOTIFICATIONS","EQUIPMENTS","PRIVACY-POLICY"]);return(i,r)=>{const u=q("router-view"),l=q("Card");return h(),v("div",xet,[w(l,null,{title:Y(()=>[x(A(i.$t(`user.PROFILE.${T(a)}_EDITION`)),1)]),content:Y(()=>[w(kO,{tabs:o.value,selectedTab:T(a),edition:!0},null,8,["tabs","selectedTab"]),w(u,{user:T(n)},null,8,["user"])]),_:1})])}}}),Ni=new Map,Get=e=>{const{method:t,url:n,params:a={},data:s={}}=e;return[t,n,JSON.stringify(a),JSON.stringify(s)].join("")},Po=e=>{const t=Get(e);if(Ni.has(t)){const n=Ni.get(t)||{};n==null||n.abort(),Ni.delete(t)}return t},as=Gt.create({baseURL:nr()});as.interceptors.request.use(e=>{const t=new AbortController;e.signal=t.signal;const n=Po(e);return Ni.set(n,t),e},e=>Promise.reject(e));as.interceptors.response.use(e=>(Po(e.config),e),e=>(e.message!=="canceled"&&e.response&&Po(e.response.config),Promise.reject(e)));const WO=(e,t)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`users/${t.username}`).then(n=>{n.status===204?t.fromAdmin?lt.push("/admin/users"):e.dispatch(K.ACTIONS.LOGOUT).then(()=>lt.push("/")):ne(e,null)}).catch(n=>ne(e,n))},Ah=(e,t,n=!1)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!0),n&&(t.with_inactive="true",t.with_hidden="true",t.with_suspended="true"),Ne.get("users",{params:t}).then(a=>{a.data.status==="success"?(e.commit(ue.MUTATIONS.UPDATE_USERS,a.data.data.users),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,a.data.pagination)):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!1))},Vet={[ue.ACTIONS.EMPTY_USER](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USER,{})},[ue.ACTIONS.EMPTY_USERS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USERS,[]),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[ue.ACTIONS.EMPTY_RELATIONSHIPS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USER_RELATIONSHIPS,[]),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[ue.ACTIONS.GET_USER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.get(`users/${t}`).then(n=>{n.data.status==="success"?e.commit(ue.MUTATIONS.UPDATE_USER,n.data.data.users[0]):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ue.ACTIONS.GET_USER_SANCTIONS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING,!0);const{username:n,...a}=t;Ne.get(`users/${n}/sanctions`,{params:a}).then(s=>{s.data.status==="success"?(e.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS,s.data.data.sanctions),e.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS_PAGINATION,s.data.pagination)):ne(e,null)}).catch(s=>ne(e,s)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING,!1))},[ue.ACTIONS.GET_USER_WORKOUTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING,!0),Ne.get(`users/${t}/workouts`).then(n=>{n.data.status==="success"?e.commit(ue.MUTATIONS.UPDATE_USER_WORKOUTS,n.data.data.workouts):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING,!1))},[ue.ACTIONS.GET_USERS](e,t){Ah(e,t,!1)},[ue.ACTIONS.GET_USERS_FOR_ADMIN](e,t){Ah(e,t,!0)},[ue.ACTIONS.UPDATE_USER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};t.role!==void 0&&(n.role=t.role),t.resetPassword&&(n.reset_password=t.resetPassword),"activate"in t&&t.activate!==void 0&&(n.activate=t.activate),t.new_email!==void 0&&(n.new_email=t.new_email),Ne.patch(`users/${t.username}`,n).then(a=>{a.data.status==="success"?(e.commit(ue.MUTATIONS.UPDATE_USER_IN_USERS,a.data.data.users[0]),(t.resetPassword||t.new_email||t.role)&&e.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(ue.MUTATIONS.UPDATE_USER,a.data.data.users[0])):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ue.ACTIONS.UPDATE_RELATIONSHIP](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.post(`users/${t.username}/${t.action}`).then(n=>{n.data.status==="success"?Ne.get(`users/${t.username}`).then(a=>{if(a.data.status==="success"){if(t.from==="blocked-users"){e.dispatch(K.ACTIONS.GET_BLOCKED_USERS,t.payload);return}e.commit(t.from==="userInfos"?ue.MUTATIONS.UPDATE_USER:t.from==="userCard"?ue.MUTATIONS.UPDATE_USER_IN_USERS:ue.MUTATIONS.UPDATE_USER_IN_RELATIONSHIPS,a.data.data.users[0]),e.dispatch(K.ACTIONS.GET_USER_PROFILE,{light:!0})}else ne(e,null)}):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ue.ACTIONS.GET_RELATIONSHIPS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.get(`users/${t.username}/${t.relationship}`,{params:{page:t.page}}).then(n=>{n.data.status==="success"?(e.commit(ue.MUTATIONS.UPDATE_USER_RELATIONSHIPS,n.data.data[t.relationship]),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ue.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ue.ACTIONS.DELETE_USER_ACCOUNT](e,t){WO(e,{username:t.username,fromAdmin:!0})}},Ur=e=>{localStorage.removeItem("authToken"),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Mt.MUTATIONS.EMPTY_USER_STATS),e.commit(Mt.MUTATIONS.EMPTY_USER_SPORT_STATS),e.commit(K.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(K.MUTATIONS.UPDATE_FOLLOW_REQUESTS,[]),e.commit(ue.MUTATIONS.UPDATE_USERS,[]),e.commit(ee.MUTATIONS.EMPTY_WORKOUTS),e.commit(ee.MUTATIONS.EMPTY_WORKOUT),lt.push("/login")},Het={[K.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[K.GETTERS.IS_AUTHENTICATED]&&(e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(K.ACTIONS.GET_USER_PROFILE,{updateUI:!0})),!window.localStorage.authToken&&e.getters[K.GETTERS.IS_AUTHENTICATED]&&Ur(e)},[K.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/account/confirm",{token:t.token}).then(n=>{if(n.data.status==="success"){const a=n.data.auth_token;window.localStorage.setItem("authToken",a),e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,a),e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}).then(()=>lt.push("/"))}else ne(e,null)}).catch(n=>{ne(e,n)})},[K.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),as.post("/auth/email/update",{token:t.token}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}).then(()=>lt.push("/profile/edit/account")),lt.push("/profile/edit/account")):ne(e,null)}).catch(n=>{ne(e,n)})},[K.ACTIONS.GET_USER_PROFILE](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("auth/profile").then(n=>{if(n.data.status==="success"){const a=e.getters[K.GETTERS.IS_PROFILE_NOT_LOADED];e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),e.commit(ue.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data),(a||t.updateUI)&&(n.data.data.language&&e.dispatch(te.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.commit(te.MUTATIONS.UPDATE_DARK_MODE,n.data.data.use_dark_mode)),(!("light"in t)||!t.light)&&(e.commit(te.MUTATIONS.UPDATE_DISPLAY_OPTIONS,n.data.data),e.dispatch(Ht.ACTIONS.GET_SPORTS),e.dispatch(xe.ACTIONS.GET_EQUIPMENTS),e.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES)),n.data.data.suspended_at===null?kn.dispatch(Et.ACTIONS.GET_UNREAD_STATUS):!lt.currentRoute.value.path.startsWith("/profile")&&!lt.currentRoute.value.meta.allowedToSuspendedUser&<.push("/profile")}else ne(e,null),Ur(e)}).catch(n=>{n.message!=="canceled"&&(ne(e,n),Ur(e))})},[K.ACTIONS.GET_ACCOUNT_SUSPENSION](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("auth/account/suspension").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_ACCOUNT_SUSPENSION,t.data.user_suspension):ne(e,null)}).catch(t=>{t.message!=="canceled"&&ne(e,t)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.GET_FOLLOW_REQUESTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("follow-requests",{params:t}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_FOLLOW_REQUESTS,n.data.data.follow_requests),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),as.post(`/auth/${t.actionType}`,t.formData).then(n=>{if(n.data.status==="success")if(t.actionType==="login"){const a=n.data.auth_token;window.localStorage.setItem("authToken",a),e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,a),e.dispatch(K.ACTIONS.GET_USER_PROFILE,{updateUI:!0}).then(()=>lt.push(typeof t.redirectUrl=="string"?t.redirectUrl:"/"))}else lt.push("/login").then(()=>e.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0));else ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.LOGOUT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/logout").then(t=>{t.data.status==="success"?Ur(e):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.APPEAL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n=t.actionType==="user_suspension"?"auth/account/suspension/appeal":`auth/account/sanctions/${t.actionId}/appeal`;Ne.post(n,{text:t.text}).then(a=>{a.data.status==="success"?e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0):ne(e,null)}).catch(a=>{a.message!=="canceled"&&ne(e,a)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_FOLLOW_REQUESTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post(`follow-requests/${t.username}/${t.action}`).then(n=>{n.data.status==="success"?t.getFollowRequests&&e.dispatch(K.ACTIONS.GET_FOLLOW_REQUESTS).then(()=>e.dispatch(K.ACTIONS.GET_USER_PROFILE,{})):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.post("auth/profile/edit",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),lt.push("/profile")):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),Ne.patch("auth/profile/edit/account",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.post("auth/profile/edit/preferences",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(te.MUTATIONS.UPDATE_DISPLAY_OPTIONS,n.data.data),e.commit(te.MUTATIONS.UPDATE_DARK_MODE,n.data.data.use_dark_mode),e.dispatch(te.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then(()=>lt.push("/profile/preferences"))):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.delete(`auth/profile/reset/sports/${t.sportId}`).then(n=>{n.status===204?(e.dispatch(Ht.ACTIONS.GET_SPORTS),t.fromSport&<.push(`/profile/sports/${t.sportId}`)):ne(e,null)}).catch(n=>{ne(e,n),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)})},[K.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0);const{fromSport:n,...a}=t;Ne.post("auth/profile/edit/sports",a).then(s=>{s.data.status==="success"?(e.dispatch(Ht.ACTIONS.GET_SPORTS),n&<.push(`/profile/sports/${a.sport_id}`)):ne(e,null)}).catch(s=>{ne(e,s),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)})},[K.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),Ne.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then(a=>{a.data.status==="success"?e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}).then(()=>lt.push("/profile")):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.DELETE_ACCOUNT](e,t){WO(e,t)},[K.ACTIONS.DELETE_PICTURE](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.delete("auth/picture").then(t=>{t.status===204?e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}).then(()=>lt.push("/profile")):ne(e,null)}).catch(t=>ne(e,t)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/password/reset-request",t).then(n=>{n.data.status==="success"?lt.push("/password-reset/sent"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/account/resend-confirmation",t).then(n=>{n.data.status==="success"?lt.push("/account-confirmation/email-sent"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/password/update",t).then(n=>{n.data.status==="success"?lt.push("/password-reset/password-updated"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.ACCEPT_PRIVACY_POLICY](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/account/privacy-policy",{accepted_policy:t}).then(n=>{n.data.status==="success"?e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}).then(()=>lt.push("/profile")):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/account/export/request").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_EXPORT_REQUEST,t.data.request):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("auth/account/export").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_EXPORT_REQUEST,t.data.request):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.GET_BLOCKED_USERS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("auth/blocked-users",{params:t}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_BLOCKED_USERS,n.data.blocked_users),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.GET_USER_SANCTION](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get(`auth/account/sanctions/${t}`).then(n=>{n.data.status==="success"?e.commit(K.MUTATIONS.SET_USER_SANCTION,n.data.sanction):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_NOTIFICATIONS_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.post("auth/profile/edit/notifications",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),lt.push("/profile/notifications")):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))}},Ket={[K.GETTERS.AUTH_TOKEN]:e=>e.authToken,[K.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[K.GETTERS.BLOCKED_USERS]:e=>e.blockedUsers,[K.GETTERS.FOLLOW_REQUESTS]:e=>e.followRequests,[K.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[K.GETTERS.IS_AUTHENTICATED]:e=>e.authToken!==null,[K.GETTERS.HAS_ADMIN_RIGHTS]:e=>e.authUserProfile&&["admin","owner"].includes(e.authUserProfile.role),[K.GETTERS.HAS_MODERATOR_RIGHTS]:e=>e.authUserProfile&&["admin","moderator","owner"].includes(e.authUserProfile.role),[K.GETTERS.HAS_OWNER_RIGHTS]:e=>e.authUserProfile&&e.authUserProfile.role==="owner",[K.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[K.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[K.GETTERS.IS_SUSPENDED]:e=>e.authUserProfile&&e.authUserProfile.suspended_at!==null,[K.GETTERS.IS_PROFILE_LOADED]:e=>{var t;return((t=e.authUserProfile)==null?void 0:t.username)!==void 0},[K.GETTERS.USER_LOADING]:e=>e.loading,[K.GETTERS.IS_PROFILE_NOT_LOADED]:e=>e.authUserProfile.username===void 0,[K.GETTERS.ACCOUNT_SUSPENSION]:e=>e.userReportAction,[K.GETTERS.USER_SANCTION]:e=>e.userReportAction},qet={[K.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[K.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[K.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[K.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[K.MUTATIONS.UPDATE_FOLLOW_REQUESTS](e,t){e.followRequests=t},[K.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t},[K.MUTATIONS.SET_EXPORT_REQUEST](e,t){e.exportRequest=t},[K.MUTATIONS.UPDATE_BLOCKED_USERS](e,t){e.blockedUsers=t},[K.MUTATIONS.SET_ACCOUNT_SUSPENSION](e,t){e.userReportAction=t},[K.MUTATIONS.SET_USER_SANCTION](e,t){e.userReportAction=t}},jet={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null,followRequests:[],blockedUsers:[],userReportAction:{}},Yet={state:jet,actions:Het,getters:Ket,mutations:qet},Xet={[xe.ACTIONS.ADD_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("equipments",{description:t.description,equipment_type_id:t.equipmentTypeId,label:t.label,default_for_sport_ids:t.defaultForSportIds}).then(n=>{if(n.data.status==="created"){if(n.data.data.equipments.length>0){const a=n.data.data.equipments[0];e.commit(xe.MUTATIONS.ADD_EQUIPMENT,a),lt.push(`/profile/equipments/${a.id}`)}e.dispatch(Ht.ACTIONS.GET_SPORTS),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)}else ne(e,null)}).catch(n=>ne(e,n))},[xe.ACTIONS.DELETE_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`equipments/${t.id}${t.force?"?force":""}`).then(()=>{e.commit(xe.MUTATIONS.REMOVE_EQUIPMENT,t.id),e.dispatch(Ht.ACTIONS.GET_SPORTS),lt.push("/profile/equipments")}).catch(n=>ne(e,n))},[xe.ACTIONS.GET_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`equipments/${t}`).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]):ne(e,null)}).catch(n=>ne(e,n))},[xe.ACTIONS.GET_EQUIPMENTS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("equipments").then(t=>{t.data.status==="success"?e.commit(xe.MUTATIONS.SET_EQUIPMENTS,t.data.data.equipments):ne(e,null)}).catch(t=>ne(e,t))},[xe.ACTIONS.GET_EQUIPMENT_TYPES](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("equipment-types").then(t=>{t.data.status==="success"?(e.commit(xe.MUTATIONS.SET_EQUIPMENT_TYPES,t.data.data.equipment_types),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)):ne(e,null)}).catch(t=>ne(e,t))},[xe.ACTIONS.REFRESH_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.post(`equipments/${t}/refresh`).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&(e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]),lt.push(`/profile/equipments/${t}`)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))},[xe.ACTIONS.UPDATE_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.patch(`equipments/${t.id}`,{description:t.description,equipment_type_id:t.equipmentTypeId,is_active:t.isActive,label:t.label,default_for_sport_ids:t.defaultForSportIds}).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&(e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]),e.dispatch(Ht.ACTIONS.GET_SPORTS),lt.push(`/profile/equipments/${t.id}`)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))},[xe.ACTIONS.UPDATE_EQUIPMENT_TYPE](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.patch(`equipment-types/${t.id}`,{is_active:t.isActive}).then(n=>{n.data.status==="success"?e.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))}},Qet={[xe.GETTERS.EQUIPMENTS]:e=>e.equipments,[xe.GETTERS.EQUIPMENT_TYPES]:e=>e.equipmentTypes,[xe.GETTERS.LOADING]:e=>e.loading},Zet={[xe.MUTATIONS.ADD_EQUIPMENT](e,t){e.equipments.push(t)},[xe.MUTATIONS.REMOVE_EQUIPMENT](e,t){e.equipments=e.equipments.filter(n=>n.id!=t)},[xe.MUTATIONS.SET_EQUIPMENTS](e,t){e.equipments=t},[xe.MUTATIONS.SET_EQUIPMENT_TYPES](e,t){e.equipmentTypes=t},[xe.MUTATIONS.SET_LOADING](e,t){e.loading=t},[xe.MUTATIONS.UPDATE_EQUIPMENT](e,t){const n=e.equipments.findIndex(a=>a.id===t.id);n!==-1&&(e.equipments[n]=t)}},Jet={equipments:[],equipmentTypes:[],loading:!1},ett={state:Jet,actions:Xet,getters:Qet,mutations:Zet},ttt={[Et.ACTIONS.GET_UNREAD_STATUS](e){Ne.get("notifications/unread").then(t=>{t.data.status==="success"&&e.commit(Et.MUTATIONS.UPDATE_UNREAD_STATUS,t.data.unread)}).catch(t=>ne(e,t))},[Et.ACTIONS.GET_NOTIFICATION_TYPES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("notifications/types",{params:t}).then(n=>{n.data.status==="success"?e.commit(Et.MUTATIONS.UPDATE_TYPES,n.data.notification_types):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})},[Et.ACTIONS.GET_NOTIFICATIONS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("notifications",{params:t}).then(n=>{n.data.status==="success"?(e.commit(Et.MUTATIONS.UPDATE_NOTIFICATIONS,n.data.notifications),e.commit(Et.MUTATIONS.UPDATE_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})},[Et.ACTIONS.MARK_ALL_AS_READ](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n={};t.type&&(n.type=t.type),Ne.post("notifications/mark-all-as-read",n).then(a=>{a.data.status==="success"?(e.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,t),e.dispatch(Et.ACTIONS.GET_UNREAD_STATUS)):ne(e,null)}).catch(a=>{a.message!=="canceled"&&ne(e,a)})},[Et.ACTIONS.UPDATE_STATUS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch(`notifications/${t.notificationId}`,{read_status:t.markedAsRead}).then(n=>{n.data.status==="success"?(e.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,t.currentQuery),e.dispatch(Et.ACTIONS.GET_UNREAD_STATUS)):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})}},ntt={[Et.GETTERS.NOTIFICATIONS]:e=>e.notifications,[Et.GETTERS.PAGINATION]:e=>e.pagination,[Et.GETTERS.TYPES]:e=>e.types,[Et.GETTERS.UNREAD_STATUS]:e=>e.unread},att={[Et.MUTATIONS.UPDATE_NOTIFICATIONS](e,t){e.notifications=t},[Et.MUTATIONS.UPDATE_PAGINATION](e,t){e.pagination=t},[Et.MUTATIONS.UPDATE_TYPES](e,t){e.types=t},[Et.MUTATIONS.UPDATE_UNREAD_STATUS](e,t){e.unread=t},[Et.MUTATIONS.EMPTY_NOTIFICATIONS](e){e.notifications=[],e.pagination={}}},stt={notifications:[],unread:!1,pagination:{},types:[]},ott={state:stt,actions:ttt,getters:ntt,mutations:att},Oh=(e,t)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(t).then(n=>{n.data.status==="success"?e.commit(st.MUTATIONS.SET_CLIENT,n.data.data.client):ne(e,null)}).catch(n=>ne(e,n))},itt={[st.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),Ne.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then(a=>{a.status==200&&a.data.redirect_url?window.location.href=a.data.redirect_url:ne(e,null)}).catch(a=>ne(e,a))},[st.ACTIONS.CREATE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("oauth/apps",t).then(n=>{n.data.status==="created"?(e.commit(st.MUTATIONS.SET_CLIENT,n.data.data.client),lt.push(`/profile/apps/${n.data.data.client.id}/created`)):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.DELETE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`oauth/apps/${t}`).then(n=>{n.status===204?e.dispatch(st.ACTIONS.GET_CLIENTS).then(()=>lt.push("/profile/apps")):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){Oh(e,`oauth/apps/${t}`)},[st.ACTIONS.GET_CLIENT_BY_ID](e,t){Oh(e,`oauth/apps/${t}/by_id`)},[st.ACTIONS.GET_CLIENTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("oauth/apps",{params:t}).then(n=>{n.data.status==="success"?(e.commit(st.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(st.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),Ne.post(`oauth/apps/${t}/revoke`).then(n=>{n.data.status==="success"?e.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):ne(e,null)}).catch(n=>ne(e,n))}},rtt={[st.GETTERS.CLIENT]:e=>e.client,[st.GETTERS.CLIENTS]:e=>e.clients,[st.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[st.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},utt={[st.MUTATIONS.SET_CLIENT](e,t){e.client=t},[st.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[st.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[st.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[st.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},ltt={client:{},clients:[],pagination:{},revocationSuccessful:!1},ctt={state:ltt,actions:itt,getters:rtt,mutations:utt},dtt={[Le.ACTIONS.EMPTY_REPORTS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Le.MUTATIONS.EMPTY_REPORT),e.commit(Le.MUTATIONS.SET_REPORTS,[]),e.commit(Le.MUTATIONS.SET_REPORTS_PAGINATION,{})},[Le.ACTIONS.GET_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Le.MUTATIONS[`SET_${t.loader}_LOADING`],!0),Ne.get(`reports/${t.reportId}`).then(n=>{n.data.status==="success"?e.commit(Le.MUTATIONS.SET_REPORT,n.data.report):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(Le.MUTATIONS[`SET_${t.loader}_LOADING`],!1))},[Le.ACTIONS.GET_REPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("reports",{params:t}).then(n=>{n.data.status==="success"?(e.commit(Le.MUTATIONS.SET_REPORTS,n.data.reports),e.commit(Le.MUTATIONS.SET_REPORTS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n))},[Le.ACTIONS.PROCESS_APPEAL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const{appealId:n,reportId:a,...s}=t;Ne.patch(`appeals/${n}`,s).then(o=>{o.data.status==="success"?e.dispatch(Le.ACTIONS.GET_REPORT,{reportId:a,loader:"REPORT_UPDATE"}):ne(e,null)}).catch(o=>{ne(e,o)})},[Le.ACTIONS.SUBMIT_ADMIN_ACTION](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!1),e.commit(Le.MUTATIONS.SET_REPORT_UPDATE_LOADING,!0);const{report_id:n,...a}=t;Ne.post(`reports/${n}/actions`,a).then(s=>{s.data.status==="success"?(e.commit(Le.MUTATIONS.SET_REPORT,s.data.report),e.commit(ue.MUTATIONS.UPDATE_IS_SUCCESS,!0)):ne(e,null)}).catch(s=>{ne(e,s)}).finally(()=>e.commit(Le.MUTATIONS.SET_REPORT_UPDATE_LOADING,!1))},[Le.ACTIONS.SUBMIT_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Le.MUTATIONS.SET_REPORT_STATUS,"loading"),Ne.post("reports",t).then(n=>{n.data.status==="created"?(e.commit(Le.MUTATIONS.SET_REPORT_STATUS,`${t.object_type}-${t.object_id}-created`),t.object_type==="comment"&&e.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}),t.object_type==="workout"&&e.commit(ee.MUTATIONS.SET_CURRENT_REPORTING,!1),t.object_type==="user"&&e.commit(ue.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1)):(e.commit(Le.MUTATIONS.SET_REPORT_STATUS,null),ne(e,null))}).catch(n=>{ne(e,n),e.commit(Le.MUTATIONS.SET_REPORT_STATUS,null)})},[Le.ACTIONS.UPDATE_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Le.MUTATIONS.SET_REPORT_UPDATE_LOADING,!0);const{reportId:n,...a}=t;Ne.patch(`reports/${n}`,a).then(s=>{s.data.status==="success"?e.commit(Le.MUTATIONS.SET_REPORT,s.data.report):(e.commit(Le.MUTATIONS.SET_REPORT_STATUS,null),ne(e,null))}).catch(s=>{ne(e,s),e.commit(Le.MUTATIONS.SET_REPORT_STATUS,null)}).finally(()=>e.commit(Le.MUTATIONS.SET_REPORT_UPDATE_LOADING,!1))},[Le.ACTIONS.GET_UNRESOLVED_REPORTS_STATUS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("reports/unresolved").then(t=>{t.data.status==="success"?e.commit(Le.MUTATIONS.SET_UNRESOLVED_REPORTS_STATUS,t.data.unresolved):ne(e,null)}).catch(t=>ne(e,t))}},Ett={[Le.GETTERS.UNRESOLVED_REPORTS_STATUS]:e=>e.unresolved,[Le.GETTERS.REPORT]:e=>e.report,[Le.GETTERS.REPORT_LOADING]:e=>e.reportLoading,[Le.GETTERS.REPORT_STATUS]:e=>e.reportStatus,[Le.GETTERS.REPORT_UPDATE_LOADING]:e=>e.reportUpdateLoading,[Le.GETTERS.REPORTS]:e=>e.reports,[Le.GETTERS.REPORTS_PAGINATION]:e=>e.pagination},ptt={[Le.MUTATIONS.EMPTY_REPORT](e){e.report={}},[Le.MUTATIONS.SET_REPORT](e,t){e.report=t},[Le.MUTATIONS.SET_REPORT_LOADING](e,t){e.reportLoading=t},[Le.MUTATIONS.SET_REPORT_STATUS](e,t){e.reportStatus=t},[Le.MUTATIONS.SET_REPORT_UPDATE_LOADING](e,t){e.reportUpdateLoading=t},[Le.MUTATIONS.SET_REPORTS](e,t){e.reports=t},[Le.MUTATIONS.SET_REPORTS_PAGINATION](e,t){e.pagination=t},[Le.MUTATIONS.SET_UNRESOLVED_REPORTS_STATUS](e,t){e.unresolved=t}},mtt={unresolved:!1,report:{},reports:[],pagination:{},reportStatus:null,reportLoading:!1,reportUpdateLoading:!1},Ttt={state:mtt,actions:dtt,getters:Ett,mutations:ptt},{locale:_tt}=ko.global,ftt={[te.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(te.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),Ne.get("config").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):ne(e,null)}).catch(t=>ne(e,t)).finally(()=>e.commit(te.MUTATIONS.UPDATE_APPLICATION_LOADING,!1))},[te.ACTIONS.GET_APPLICATION_STATS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("stats/all").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):ne(e,null)}).catch(t=>ne(e,t))},[te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("config").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,t.data.data):ne(e,null)}).catch(t=>ne(e,t))},[te.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch("config",t).then(n=>{n.data.status==="success"?(e.commit(te.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),lt.push("/admin/application")):ne(e,null)}).catch(n=>ne(e,n))},[te.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){var n;(n=document.querySelector("html"))==null||n.setAttribute("lang",t),e.commit(te.MUTATIONS.UPDATE_LANG,t),_tt.value=t}},htt={[te.GETTERS.APP_CONFIG]:e=>e.application.config,[te.GETTERS.APP_LOADING]:e=>e.appLoading,[te.GETTERS.APP_STATS]:e=>e.application.statistics,[te.GETTERS.DARK_MODE]:e=>e.darkMode,[te.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[te.GETTERS.LANGUAGE]:e=>e.language,[te.GETTERS.LOCALE]:e=>e.locale,[te.GETTERS.DISPLAY_OPTIONS]:e=>e.application.displayOptions},Stt={[te.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[te.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[te.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[te.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[te.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,t){e.application.config.privacy_policy=t.privacy_policy,e.application.config.privacy_policy_date=t.privacy_policy_date},[te.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[te.MUTATIONS.UPDATE_LANG](e,t){t in zs?(e.language=t,e.locale=zs[t]):(e.language="en",e.locale=ir)},[te.MUTATIONS.UPDATE_DARK_MODE](e,t){e.darkMode=t},[te.MUTATIONS.UPDATE_DISPLAY_OPTIONS](e,t){e.application.displayOptions={...e.application.displayOptions,dateFormat:t.date_format,displayAscent:t.display_ascent,timezone:t.timezone,useImperialUnits:t.imperial_units}}},Att={root:!0,language:"en",locale:ir,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0},displayOptions:{dateFormat:"MM/dd/yyyy",displayAscent:!0,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris",useImperialUnits:!1}},appLoading:!1,darkMode:null},Ott={[Ht.ACTIONS.GET_SPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`sports${t?"?check_workouts=true":""}`).then(n=>{n.data.status==="success"?(e.commit(Ht.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)):ne(e,null)}).catch(n=>ne(e,n))},[Ht.ACTIONS.UPDATE_SPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch(`sports/${t.id}`,{is_active:t.isActive}).then(n=>{n.data.status==="success"?e.dispatch(Ht.ACTIONS.GET_SPORTS):ne(e,null)}).catch(n=>ne(e,n))}},Itt={[Ht.GETTERS.SPORTS]:e=>e.sports},gtt={[Ht.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},Rtt={sports:[]},Ntt={state:Rtt,actions:Ott,getters:Itt,mutations:gtt},vtt={[Mt.ACTIONS.GET_USER_STATS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`stats/${t.username}/by_time`,{params:t.params}).then(n=>{n.data.status==="success"?e.commit(Mt.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):ne(e,null)}).catch(n=>ne(e,n))},[Mt.ACTIONS.GET_USER_SPORT_STATS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Mt.MUTATIONS.UPDATE_STATS_LOADING,!0),Ne.get(`stats/${t.username}/by_sport`,{params:{sport_id:t.sportId}}).then(n=>{n.data.status==="success"?(e.commit(Mt.MUTATIONS.UPDATE_USER_SPORT_STATS,n.data.data.statistics),e.commit(Mt.MUTATIONS.UPDATE_TOTAL_WORKOUTS,n.data.data.total_workouts)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(Mt.MUTATIONS.UPDATE_STATS_LOADING,!1))}},btt={[Mt.GETTERS.USER_SPORT_STATS]:e=>e.sportStatistics,[Mt.GETTERS.USER_STATS]:e=>e.statistics,[Mt.GETTERS.STATS_LOADING]:e=>e.loading,[Mt.GETTERS.TOTAL_WORKOUTS]:e=>e.totalWorkouts},Ctt={[Mt.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[Mt.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}},[Mt.MUTATIONS.EMPTY_USER_SPORT_STATS](e){e.sportStatistics={},e.totalWorkouts=0},[Mt.MUTATIONS.UPDATE_USER_SPORT_STATS](e,t){e.sportStatistics=t},[Mt.MUTATIONS.UPDATE_STATS_LOADING](e,t){e.loading=t},[Mt.MUTATIONS.UPDATE_TOTAL_WORKOUTS](e,t){e.totalWorkouts=t}},Ptt={statistics:{},sportStatistics:{},totalWorkouts:0,loading:!1},Dtt={state:Ptt,actions:vtt,getters:btt,mutations:Ctt},Ltt={[ue.GETTERS.USER]:e=>e.user,[ue.GETTERS.USER_CURRENT_REPORTING]:e=>e.currentReporting,[ue.GETTERS.USER_RELATIONSHIPS]:e=>e.user_relationships,[ue.GETTERS.USER_SANCTIONS]:e=>e.userSanctions.sanctions,[ue.GETTERS.USER_SANCTIONS_LOADING]:e=>e.userSanctions.loading,[ue.GETTERS.USER_SANCTIONS_PAGINATION]:e=>e.userSanctions.pagination,[ue.GETTERS.USER_WORKOUTS]:e=>e.userWorkouts.workouts,[ue.GETTERS.USER_WORKOUTS_LOADING]:e=>e.userWorkouts.loading,[ue.GETTERS.USERS]:e=>e.users,[ue.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[ue.GETTERS.USERS_LOADING]:e=>e.loading,[ue.GETTERS.USERS_PAGINATION]:e=>e.pagination},ytt={[ue.MUTATIONS.UPDATE_USER](e,t){e.user=t},[ue.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map(n=>n.username===t.username?t:n)},[ue.MUTATIONS.UPDATE_USER_IN_RELATIONSHIPS](e,t){e.user_relationships=e.user_relationships.map(n=>n.username===t.username?t:n)},[ue.MUTATIONS.UPDATE_USER_RELATIONSHIPS](e,t){e.user_relationships=t},[ue.MUTATIONS.UPDATE_USER_SANCTIONS](e,t){e.userSanctions.sanctions=t},[ue.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING](e,t){e.userSanctions.loading=t},[ue.MUTATIONS.UPDATE_USER_SANCTIONS_PAGINATION](e,t){e.userSanctions.pagination=t},[ue.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[ue.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[ue.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[ue.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[ue.MUTATIONS.UPDATE_USER_CURRENT_REPORTING](e,t){e.currentReporting=t},[ue.MUTATIONS.UPDATE_USER_WORKOUTS](e,t){e.userWorkouts.workouts=t},[ue.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING](e,t){e.userWorkouts.loading=t}},$tt={user:{},userSanctions:{sanctions:[],loading:!1,pagination:{}},userWorkouts:{workouts:[],loading:!1},user_relationships:[],users:[],loading:!1,isSuccess:!1,pagination:{},currentReporting:!1},Utt={state:$tt,actions:Vet,getters:Ltt,mutations:ytt},kr=(e,t,n)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(n.match("TIMELINE")?"timeline":"workouts",{params:t}).then(a=>{a.data.status==="success"?(e.commit(ee.MUTATIONS[n],a.data.data.workouts),[Ma.SET_USER_WORKOUTS,Ma.SET_TIMELINE_WORKOUTS,Ma.ADD_TIMELINE_WORKOUTS].includes(n)&&e.commit(ee.MUTATIONS.SET_WORKOUTS_PAGINATION,a.data.pagination)):ne(e,null)}).catch(a=>ne(e,a))},FO=(e,t,n)=>{n?e.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENTS,n):e.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENT,t)},Ih=(e,t,n=!1)=>{Ne.post(`comments/${t.id}/like${n?"/undo":""}`).then(a=>{a.data.status==="success"&&FO(e,t.id,t.workout_id)}).catch(a=>{ne(e,a)})},gh=(e,t,n=!1)=>{Ne.post(`workouts/${t}/like${n?"/undo":""}`).then(a=>{a.data.status==="success"&&e.commit(ee.MUTATIONS.SET_WORKOUT,a.data.data.workouts[0])}).catch(a=>{ne(e,a)})},ktt={[ee.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(ee.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),kr(e,t,Ma.SET_CALENDAR_WORKOUTS)},[ee.ACTIONS.GET_AUTH_USER_WORKOUTS](e,t){kr(e,t,Ma.SET_USER_WORKOUTS)},[ee.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){kr(e,t,Ma.SET_TIMELINE_WORKOUTS)},[ee.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){kr(e,t,Ma.ADD_TIMELINE_WORKOUTS)},[ee.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";Ne.get(`workouts/${t.workoutId}`).then(a=>{const s=a.data.data.workouts[0];if(a.data.status==="success"){if(t.segmentId&&(s.segments.length===0||!s.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(ee.MUTATIONS.SET_WORKOUT,a.data.data.workouts[0]),a.data.data.workouts[0].with_analysis&&Ne.get(`workouts/${t.workoutId}/chart_data${n}`).then(o=>{o.data.status==="success"&&e.commit(ee.MUTATIONS.SET_WORKOUT_CHART_DATA,o.data.data.chart_data)}),a.data.data.workouts[0].with_gpx&&Ne.get(`workouts/${t.workoutId}/gpx${n}`).then(o=>{o.data.status==="success"&&e.commit(ee.MUTATIONS.SET_WORKOUT_GPX,o.data.data.gpx)}),t.segmentId||e.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENTS,a.data.data.workouts[0].id)}else e.commit(ee.MUTATIONS.EMPTY_WORKOUT),ne(e,null)}).catch(a=>{e.commit(ee.MUTATIONS.EMPTY_WORKOUT),ne(e,a)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!1))},[ee.ACTIONS.DELETE_WORKOUT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.delete(`workouts/${t.workoutId}`).then(()=>{e.commit(ee.MUTATIONS.EMPTY_WORKOUT),e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}),lt.push("/")}).catch(n=>{ne(e,n)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!1))},[ee.ACTIONS.EDIT_WORKOUT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.patch(`workouts/${t.workoutId}`,t.data).then(()=>{e.dispatch(K.ACTIONS.GET_USER_PROFILE,{}),e.dispatch(ee.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then(()=>{lt.push({name:"Workout",params:{workoutId:t.workoutId}})})}).catch(n=>{ne(e,n)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!1))},[ee.ACTIONS.EDIT_WORKOUT_CONTENT](e,t){e.commit(ee.MUTATIONS.SET_WORKOUT_CONTENT_LOADING,!0),e.commit(ee.MUTATIONS.SET_WORKOUT_CONTENT_TYPE,t.contentType),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n={[t.contentType==="NOTES"?"notes":"description"]:t.content};Ne.patch(`workouts/${t.workoutId}`,n).then(a=>{const s=a.data.data.workouts[0];e.commit(ee.MUTATIONS.SET_WORKOUT_CONTENT,s)}).catch(a=>{ne(e,a)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_CONTENT_LOADING,!1))},[ee.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=t.notes.replace(/"/g,'\\"'),a=t.description.replace(/"/g,'\\"'),s=t.title.replace(/"/g,'\\"'),o=new FormData;o.append("file",t.file),o.append("data",`{"sport_id": ${t.sport_id}, "notes": "${n}", "description": "${a}", "title": "${s}", "equipment_ids": [${t.equipment_ids.map(i=>`"${i}"`).join(",")}], "workout_visibility": "${t.workout_visibility}", "map_visibility": "${t.map_visibility}"}`),Ne.post("workouts",o,{headers:{"content-type":"multipart/form-data"}}).then(i=>{if(i.data.status==="created"){e.dispatch(K.ACTIONS.GET_USER_PROFILE,{});const r=i.data.data.workouts[0];lt.push(i.data.data.workouts.length===1?`/workouts/${r.id}`:"/")}}).catch(i=>{ne(e,i)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!1))},[ee.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.post("workouts/no_gpx",t).then(n=>{if(n.data.status==="created"){e.dispatch(K.ACTIONS.GET_USER_PROFILE,{});const a=n.data.data.workouts[0];lt.push(`/workouts/${a.id}`)}}).catch(n=>{ne(e,n)}).finally(()=>e.commit(ee.MUTATIONS.SET_WORKOUT_LOADING,!1))},[ee.ACTIONS.ADD_COMMENT](e,t){e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,"new");const n={text:t.text,text_visibility:t.text_visibility};e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post(`/workouts/${t.workout_id}/comments`,n).then(a=>{a.data.status==="created"?(e.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENTS,t.workout_id),e.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})):ne(e,null)}).catch(a=>{ne(e,a),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null)})},[ee.ACTIONS.GET_WORKOUT_COMMENT](e,t){e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,"loading"),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`/comments/${t}`).then(n=>{n.data.status==="success"?(e.commit(ee.MUTATIONS.SET_WORKOUT_COMMENTS,[n.data.comment]),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null))},[ee.ACTIONS.GET_WORKOUT_COMMENTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`/workouts/${t}/comments`).then(n=>{n.data.status==="success"?(e.commit(ee.MUTATIONS.SET_WORKOUT_COMMENTS,n.data.data.comments),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null)):ne(e,null)}).catch(n=>{ne(e,n.status===500?null:n,"error when getting comments")}).finally(()=>e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null))},[ee.ACTIONS.DELETE_WORKOUT_COMMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,"delete"),Ne.delete(`comments/${t.commentId}`).then(n=>{n.status===204&&(t.workoutId?e.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENTS,t.workoutId):lt.push("/"))}).catch(n=>{ne(e,n)})},[ee.ACTIONS.EDIT_WORKOUT_COMMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,t.id),Ne.patch(`comments/${t.id}`,{text:t.text}).then(n=>{n.data.status==="success"&&(FO(e,t.id,t.workout_id),e.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}))}).catch(n=>{ne(e,n),e.commit(ee.MUTATIONS.SET_COMMENT_LOADING,null)})},[ee.ACTIONS.LIKE_COMMENT](e,t){Ih(e,t)},[ee.ACTIONS.UNDO_LIKE_COMMENT](e,t){Ih(e,t,!0)},[ee.ACTIONS.LIKE_WORKOUT](e,t){gh(e,t)},[ee.ACTIONS.UNDO_LIKE_WORKOUT](e,t){gh(e,t,!0)},[ee.ACTIONS.MAKE_APPEAL](e,t){const n=`${t.objectType}_${t.objectId}`;e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ee.MUTATIONS.SET_APPEAL_LOADING,n),e.commit(ee.MUTATIONS.SET_SUCCESS,null),Ne.post(`${t.objectType}s/${t.objectId}/suspension/appeal`,{text:t.text}).then(a=>{a.data.status==="success"&&e.commit(ee.MUTATIONS.SET_SUCCESS,n)}).catch(a=>{ne(e,a)}).finally(()=>e.commit(ee.MUTATIONS.SET_APPEAL_LOADING,null))},[ee.ACTIONS.GET_LIKES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`${t.objectType}s/${t.objectId}/likes?page=${t.page}`).then(n=>{n.data.status==="success"&&(e.commit(ue.MUTATIONS.UPDATE_USERS,n.data.data.likes),e.commit(ue.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination))}).catch(n=>{ne(e,n)})}},wtt={[ee.GETTERS.APPEAL_LOADING]:e=>e.appealLoading,[ee.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[ee.GETTERS.CURRENT_REPORTING]:e=>e.workoutData.currentReporting,[ee.GETTERS.SUCCESS]:e=>e.success,[ee.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[ee.GETTERS.AUTH_USER_WORKOUTS]:e=>e.user_workouts,[ee.GETTERS.WORKOUT_CONTENT_EDITION]:e=>e.workoutContent,[ee.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[ee.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},Mtt={[ee.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[ee.MUTATIONS.SET_APPEAL_LOADING](e,t){e.appealLoading=t},[ee.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[ee.MUTATIONS.SET_SUCCESS](e,t){e.success=t},[ee.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[ee.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[ee.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[ee.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[ee.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[ee.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[ee.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[ee.MUTATIONS.SET_WORKOUT_CONTENT](e,t){e.workoutData.workout=t},[ee.MUTATIONS.SET_WORKOUT_CONTENT_LOADING](e,t){e.workoutContent.loading=t},[ee.MUTATIONS.SET_WORKOUT_CONTENT_TYPE](e,t){e.workoutContent.contentType=t},[ee.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[ee.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[ee.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[],comments:[],commentsLoading:null,currentCommentEdition:{},currentReporting:!1}},[ee.MUTATIONS.SET_WORKOUT_COMMENTS](e,t){e.workoutData.comments=t},[ee.MUTATIONS.ADD_WORKOUT_COMMENT](e,t){e.workoutData.comments.push(t)},[ee.MUTATIONS.SET_COMMENT_LOADING](e,t){e.workoutData.commentsLoading=t},[ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION](e,t){e.workoutData.currentCommentEdition=t},[ee.MUTATIONS.SET_CURRENT_REPORTING](e,t){e.workoutData.currentReporting=t}},Wtt={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[],comments:[],commentsLoading:null,currentCommentEdition:{},currentReporting:!1},workoutContent:{loading:!1,contentType:""},success:null,appealLoading:null,likes:[]},Ftt={state:Wtt,actions:ktt,getters:wtt,mutations:Mtt},ztt={authUserModule:Yet,equipmentModule:ett,notificationsModule:ott,oAuthModule:ctt,reportsModule:Ttt,sportsModule:Ntt,statsModule:Dtt,usersModule:Utt,workoutsModule:Ftt},xtt={state:Att,actions:ftt,getters:htt,mutations:Stt,modules:ztt},kn=N2(xtt),Ne=Gt.create({baseURL:nr()});Ne.interceptors.request.use(e=>{const t=new AbortController;e.signal=t.signal;const n=Po(e);Ni.set(n,t);const a=kn.getters[K.GETTERS.AUTH_TOKEN];if(a){const s=`Bearer ${a}`;e.headers&&e.headers.Authorization!==s&&(e.headers.Authorization=`Bearer ${a}`)}return e},e=>Promise.reject(e));Ne.interceptors.response.use(e=>(Po(e.config),e),e=>(e.message!=="canceled"&&e.response&&Po(e.response.config),Promise.reject(e)));const hE=(e,t)=>e.push.apply(e,t),Do=e=>e.sort((t,n)=>t.i-n.i||t.j-n.j),Rh=e=>{const t={};let n=1;return e.forEach(a=>{t[a]=n,n+=1}),t};var Btt={4:[[1,2],[2,3]],5:[[1,3],[2,3],[2,4]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]};const Nh=2050,vh=1e3,Gtt=Btt,Vtt=10,Htt=1e4,zO=10,xO=50,BO=20,GO=/^[A-Z\xbf-\xdf][^A-Z\xbf-\xdf]+$/,Ktt=/^[^A-Z\xbf-\xdf]+[A-Z\xbf-\xdf]$/,qtt=/^[A-Z\xbf-\xdf]+$/,VO=/^[^a-z\xdf-\xff]+$/,jtt=/^[a-z\xdf-\xff]+$/,Ytt=/^[^A-Z\xbf-\xdf]+$/,Xtt=/[a-z\xdf-\xff]/,Qtt=/[A-Z\xbf-\xdf]/,Ztt=/[^A-Za-z\xbf-\xdf]/gi,Jtt=/^\d+$/,jp=new Date().getFullYear(),ent={recentYear:/19\d\d|200\d|201\d|202\d/g},HO=[" ",",",";",":","|","/","\\","_",".","-"],tnt=HO.length;class nnt{match({password:t}){const n=[...this.getMatchesWithoutSeparator(t),...this.getMatchesWithSeparator(t)],a=this.filterNoise(n);return Do(a)}getMatchesWithSeparator(t){const n=[],a=/^(\d{1,4})([\s/\\_.-])(\d{1,2})\2(\d{1,4})$/;for(let s=0;s<=Math.abs(t.length-6);s+=1)for(let o=s+5;o<=s+9&&!(o>=t.length);o+=1){const i=t.slice(s,+o+1||9e9),r=a.exec(i);if(r!=null){const u=this.mapIntegersToDayMonthYear([parseInt(r[1],10),parseInt(r[3],10),parseInt(r[4],10)]);u!=null&&n.push({pattern:"date",token:i,i:s,j:o,separator:r[2],year:u.year,month:u.month,day:u.day})}}return n}getMatchesWithoutSeparator(t){const n=[],a=/^\d{4,8}$/,s=o=>Math.abs(o.year-jp);for(let o=0;o<=Math.abs(t.length-4);o+=1)for(let i=o+3;i<=o+7&&!(i>=t.length);i+=1){const r=t.slice(o,+i+1||9e9);if(a.exec(r)){const u=[],l=r.length;if(Gtt[l].forEach(([E,c])=>{const m=this.mapIntegersToDayMonthYear([parseInt(r.slice(0,E),10),parseInt(r.slice(E,c),10),parseInt(r.slice(c),10)]);m!=null&&u.push(m)}),u.length>0){let E=u[0],c=s(u[0]);u.slice(1).forEach(m=>{const _=s(m);_{let a=!1;const s=t.length;for(let o=0;o=n.j){a=!0;break}}return!a})}mapIntegersToDayMonthYear(t){if(t[1]>31||t[1]<=0)return null;let n=0,a=0,s=0;for(let o=0,i=t.length;o99&&rNh)return null;r>31&&(a+=1),r>12&&(n+=1),r<=0&&(s+=1)}return a>=2||n===3||s>=2?null:this.getDayMonth(t)}getDayMonth(t){const n=[[t[2],t.slice(0,2)],[t[0],t.slice(1,3)]],a=n.length;for(let s=0;s=1&&o<=31&&i>=1&&i<=12)return{day:o,month:i}}return null}twoToFourDigitYear(t){return t>99?t:t>50?t+1900:t+2e3}}const ya=new Uint32Array(65536),ant=(e,t)=>{const n=e.length,a=t.length,s=1<{const n=t.length,a=e.length,s=[],o=[],i=Math.ceil(n/32),r=Math.ceil(a/32);for(let _=0;_>>R&1,N=s[R/32|0]>>>R&1,b=I|_,C=((I|N)&f)+f^f|I|N;let y=_|~(C|f),D=f&C;y>>>31^g&&(o[R/32|0]^=1<>>31^N&&(s[R/32|0]^=1<>>_&1,S=s[_/32|0]>>>_&1,R=f|l,I=((f|S)&d)+d^d|f|S;let g=l|~(I|d),N=d&I;m+=g>>>a-1&1,m-=N>>>a-1&1,g>>>31^O&&(o[_/32|0]^=1<<_),N>>>31^S&&(s[_/32|0]^=1<<_),g=g<<1|O,N=N<<1|S,d=N|~(R|g),l=g&R}for(let _=E;_{if(e.length{const a=e.length<=t.length,s=e.length<=n;return a||s?Math.ceil(e.length/4):n},rnt=(e,t,n)=>{let a=0;const s=Object.keys(t).find(o=>{const i=int(e,o,n);if(Math.abs(e.length-o.length)>i)return!1;const r=ont(e,o),u=r<=i;return u&&(a=r),u});return s?{levenshteinDistance:a,levenshteinDistanceEntry:s}:{}};var bh={a:["4","@"],b:["8"],c:["(","{","[","<"],d:["6","|)"],e:["3"],f:["#"],g:["6","9","&"],h:["#","|-|"],i:["1","!","|"],k:["<","|<"],l:["!","1","|","7"],m:["^^","nn","2n","/\\\\/\\\\"],n:["//"],o:["0","()"],q:["9"],u:["|_|"],s:["$","5"],t:["+","7"],v:["<",">","/"],w:["^/","uu","vv","2u","2v","\\\\/\\\\/"],x:["%","><"],z:["2"]},ld={warnings:{straightRow:"straightRow",keyPattern:"keyPattern",simpleRepeat:"simpleRepeat",extendedRepeat:"extendedRepeat",sequences:"sequences",recentYears:"recentYears",dates:"dates",topTen:"topTen",topHundred:"topHundred",common:"common",similarToCommon:"similarToCommon",wordByItself:"wordByItself",namesByThemselves:"namesByThemselves",commonNames:"commonNames",userInputs:"userInputs",pwned:"pwned"},suggestions:{l33t:"l33t",reverseWords:"reverseWords",allUppercase:"allUppercase",capitalization:"capitalization",dates:"dates",recentYears:"recentYears",associatedYears:"associatedYears",sequences:"sequences",repeated:"repeated",longerKeyboardPattern:"longerKeyboardPattern",anotherWord:"anotherWord",useWords:"useWords",noNeed:"noNeed",pwned:"pwned"},timeEstimation:{ltSecond:"ltSecond",second:"second",seconds:"seconds",minute:"minute",minutes:"minutes",hour:"hour",hours:"hours",day:"day",days:"days",month:"month",months:"months",year:"year",years:"years",centuries:"centuries"}};class Ki{constructor(t=[]){this.parents=t,this.children=new Map}addSub(t,...n){const a=t.charAt(0);this.children.has(a)||this.children.set(a,new Ki([...this.parents,a]));let s=this.children.get(a);for(let o=1;o(Object.entries(e).forEach(([n,a])=>{a.forEach(s=>{t.addSub(s,n)})}),t);class unt{constructor(){this.matchers={},this.l33tTable=bh,this.trieNodeRoot=Ch(bh,new Ki),this.dictionary={userInputs:[]},this.rankedDictionaries={},this.rankedDictionariesMaxWordSize={},this.translations=ld,this.graphs={},this.useLevenshteinDistance=!1,this.levenshteinThreshold=2,this.l33tMaxSubstitutions=100,this.maxLength=256,this.setRankedDictionaries()}setOptions(t={}){t.l33tTable&&(this.l33tTable=t.l33tTable,this.trieNodeRoot=Ch(t.l33tTable,new Ki)),t.dictionary&&(this.dictionary=t.dictionary,this.setRankedDictionaries()),t.translations&&this.setTranslations(t.translations),t.graphs&&(this.graphs=t.graphs),t.useLevenshteinDistance!==void 0&&(this.useLevenshteinDistance=t.useLevenshteinDistance),t.levenshteinThreshold!==void 0&&(this.levenshteinThreshold=t.levenshteinThreshold),t.l33tMaxSubstitutions!==void 0&&(this.l33tMaxSubstitutions=t.l33tMaxSubstitutions),t.maxLength!==void 0&&(this.maxLength=t.maxLength)}setTranslations(t){if(this.checkCustomTranslations(t))this.translations=t;else throw new Error("Invalid translations object fallback to keys")}checkCustomTranslations(t){let n=!0;return Object.keys(ld).forEach(a=>{if(a in t){const s=a;Object.keys(ld[s]).forEach(o=>{o in t[s]||(n=!1)})}else n=!1}),n}setRankedDictionaries(){const t={},n={};Object.keys(this.dictionary).forEach(a=>{t[a]=Rh(this.dictionary[a]),n[a]=this.getRankedDictionariesMaxWordSize(this.dictionary[a])}),this.rankedDictionaries=t,this.rankedDictionariesMaxWordSize=n}getRankedDictionariesMaxWordSize(t){const n=t.map(a=>typeof a!="string"?a.toString().length:a.length);return n.length===0?0:n.reduce((a,s)=>Math.max(a,s),-1/0)}buildSanitizedRankedDictionary(t){const n=[];return t.forEach(a=>{const s=typeof a;(s==="string"||s==="number"||s==="boolean")&&n.push(a.toString().toLowerCase())}),Rh(n)}extendUserInputsDictionary(t){this.dictionary.userInputs||(this.dictionary.userInputs=[]);const n=[...this.dictionary.userInputs,...t];this.rankedDictionaries.userInputs=this.buildSanitizedRankedDictionary(n),this.rankedDictionariesMaxWordSize.userInputs=this.getRankedDictionariesMaxWordSize(n)}addMatcher(t,n){this.matchers[t]?console.info(`Matcher ${t} already exists`):this.matchers[t]=n}}const Ve=new unt;class lnt{constructor(t){this.defaultMatch=t}match({password:t}){const n=t.split("").reverse().join("");return this.defaultMatch({password:n}).map(a=>({...a,token:a.token.split("").reverse().join(""),reversed:!0,i:t.length-1-a.j,j:t.length-1-a.i}))}}class cnt{constructor({substr:t,limit:n,trieRoot:a}){this.buffer=[],this.finalPasswords=[],this.substr=t,this.limit=n,this.trieRoot=a}getAllPossibleSubsAtIndex(t){const n=[];let a=this.trieRoot;for(let s=t;s=this.limit)return;if(a===this.substr.length){t===n&&this.finalPasswords.push({password:this.buffer.join(""),changes:o});return}const u=[...this.getAllPossibleSubsAtIndex(a)];let l=!1;for(let d=a+u.length-1;d>=a;d-=1){const E=u[d-a];if(E.isTerminal()){if(i===E.parents.join("")&&r>=3)continue;l=!0;const c=E.subs;for(const m of c){this.buffer.push(m);const _=o.concat({i:s,letter:m,substitution:E.parents.join("")});if(this.helper({onlyFullSub:t,isFullSub:n,index:d+1,subIndex:s+m.length,changes:_,lastSubLetter:E.parents.join(""),consecutiveSubCount:i===E.parents.join("")?r+1:1}),this.buffer.pop(),this.finalPasswords.length>=this.limit)return}}}if(!t||!l){const d=this.substr.charAt(a);this.buffer.push(d),this.helper({onlyFullSub:t,isFullSub:n&&!l,index:a+1,subIndex:s+1,changes:o,lastSubLetter:i,consecutiveSubCount:r}),this.buffer.pop()}}getAll(){return this.helper({onlyFullSub:!0,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.helper({onlyFullSub:!1,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.finalPasswords}}const dnt=(e,t,n)=>new cnt({substr:e,limit:t,trieRoot:n}).getAll(),Ent=(e,t,n)=>{const s=e.changes.filter(l=>l.il-d.letter.length+d.substitution.length,t),o=e.changes.filter(l=>l.i>=t&&l.i<=n),i=o.reduce((l,d)=>l-d.letter.length+d.substitution.length,n-t+s),r=[],u=[];return o.forEach(l=>{r.findIndex(E=>E.letter===l.letter&&E.substitution===l.substitution)<0&&(r.push({letter:l.letter,substitution:l.substitution}),u.push(`${l.substitution} -> ${l.letter}`))}),{i:s,j:i,subs:r,subDisplay:u.join(", ")}};class pnt{constructor(t){this.defaultMatch=t}isAlreadyIncluded(t,n){return t.some(a=>Object.entries(a).every(([s,o])=>s==="subs"||o===n[s]))}match({password:t}){const n=[],a=dnt(t,Ve.l33tMaxSubstitutions,Ve.trieNodeRoot);let s=!1,o=!0;return a.forEach(i=>{if(s)return;const r=this.defaultMatch({password:i.password,useLevenshtein:o});o=!1,r.forEach(u=>{s||(s=u.i===0&&u.j===t.length-1);const l=Ent(i,u.i,u.j),d=t.slice(l.i,+l.j+1||9e9),E={...u,l33t:!0,token:d,...l},c=this.isAlreadyIncluded(n,E);d.toLowerCase()!==u.matchedWord&&!c&&n.push(E)})}),n.filter(i=>i.token.length>1)}}class mnt{constructor(){this.l33t=new pnt(this.defaultMatch),this.reverse=new lnt(this.defaultMatch)}match({password:t}){const n=[...this.defaultMatch({password:t}),...this.reverse.match({password:t}),...this.l33t.match({password:t})];return Do(n)}defaultMatch({password:t,useLevenshtein:n=!0}){const a=[],s=t.length,o=t.toLowerCase();return Object.keys(Ve.rankedDictionaries).forEach(i=>{const r=Ve.rankedDictionaries[i],u=Ve.rankedDictionariesMaxWordSize[i],l=Math.min(u,s);for(let d=0;d{const o=n[s];o.lastIndex=0;let i;for(;i=o.exec(t);)if(i){const r=i[0];a.push({pattern:"regex",token:r,i:i.index,j:i.index+i[0].length-1,regexName:s,regexMatch:i})}}),Do(a)}}var qs={nCk(e,t){let n=e;if(t>n)return 0;if(t===0)return 1;let a=1;for(let s=1;s<=t;s+=1)a*=n,a/=s,n-=1;return a},log10(e){return e===0?0:Math.log(e)/Math.log(10)},log2(e){return Math.log(e)/Math.log(2)},factorial(e){let t=1;for(let n=2;n<=e;n+=1)t*=n;return t}},_nt=({token:e})=>{let t=Vtt**e.length;t===Number.POSITIVE_INFINITY&&(t=Number.MAX_VALUE);let n;return e.length===1?n=zO+1:n=xO+1,Math.max(t,n)},fnt=({year:e,separator:t})=>{let a=Math.max(Math.abs(e-jp),BO)*365;return t&&(a*=4),a};const hnt=e=>{const t=e.split(""),n=t.filter(i=>i.match(Qtt)).length,a=t.filter(i=>i.match(Xtt)).length;let s=0;const o=Math.min(n,a);for(let i=1;i<=o;i+=1)s+=qs.nCk(n+a,i);return s};var Snt=e=>{const t=e.replace(Ztt,"");if(t.match(Ytt)||t.toLowerCase()===t)return 1;const n=[GO,Ktt,VO],a=n.length;for(let s=0;s{let n=0,a=e.indexOf(t);for(;a>=0;)n+=1,a=e.indexOf(t,a+t.length);return n},Ant=({sub:e,token:t})=>{const n=t.toLowerCase(),a=Ph(n,e.substitution),s=Ph(n,e.letter);return{subbedCount:a,unsubbedCount:s}};var Ont=({l33t:e,subs:t,token:n})=>{if(!e)return 1;let a=1;return t.forEach(s=>{const{subbedCount:o,unsubbedCount:i}=Ant({sub:s,token:n});if(o===0||i===0)a*=2;else{const r=Math.min(i,o);let u=0;for(let l=1;l<=r;l+=1)u+=qs.nCk(i+o,l);a*=u}}),a},Int=({rank:e,reversed:t,l33t:n,subs:a,token:s,dictionaryName:o})=>{const i=e,r=Snt(s),u=Ont({l33t:n,subs:a,token:s}),l=t&&2||1;let d;return o==="diceware"?d=6**5/2:d=i*r*u*l,{baseGuesses:i,uppercaseVariations:r,l33tVariations:u,calculation:d}},gnt=({regexName:e,regexMatch:t,token:n})=>{const a={alphaLower:26,alphaUpper:26,alpha:52,alphanumeric:62,digits:10,symbols:33};if(e in a)return a[e]**n.length;switch(e){case"recentYear":return Math.max(Math.abs(parseInt(t[0],10)-jp),BO)}return 0},Rnt=({baseGuesses:e,repeatCount:t})=>e*t,Nnt=({token:e,ascending:t})=>{const n=e.charAt(0);let a=0;return["a","A","z","Z","0","1","9"].includes(n)?a=4:n.match(/\d/)?a=10:a=26,t||(a*=2),a*e.length};const vnt=e=>{let t=0;return Object.keys(e).forEach(n=>{const a=e[n];t+=a.filter(s=>!!s).length}),t/=Object.entries(e).length,t},bnt=({token:e,graph:t,turns:n})=>{const a=Object.keys(Ve.graphs[t]).length,s=vnt(Ve.graphs[t]);let o=0;const i=e.length;for(let r=2;r<=i;r+=1){const u=Math.min(n,r-1);for(let l=1;l<=u;l+=1)o+=qs.nCk(r-1,l-1)*a*s**l}return o};var Cnt=({graph:e,token:t,shiftedCount:n,turns:a})=>{let s=bnt({token:t,graph:e,turns:a});if(n){const o=t.length-n;if(n===0||o===0)s*=2;else{let i=0;for(let r=1;r<=Math.min(n,o);r+=1)i+=qs.nCk(n+o,r);s*=i}}return Math.round(s)},Pnt=()=>tnt;const Dnt=(e,t)=>{let n=1;return e.token.lengthDh[e]?Dh[e](t):Ve.matchers[e]&&"scoring"in Ve.matchers[e]?Ve.matchers[e].scoring(t):0;var ynt=(e,t)=>{const n={};if("guesses"in e&&e.guesses!=null)return e;const a=Dnt(e,t),s=Lnt(e.pattern,e);let o=0;typeof s=="number"?o=s:e.pattern==="dictionary"&&(o=s.calculation,n.baseGuesses=s.baseGuesses,n.uppercaseVariations=s.uppercaseVariations,n.l33tVariations=s.l33tVariations);const i=Math.max(o,a);return{...e,...n,guesses:i,guessesLog10:qs.log10(i)}};const Un={password:"",optimal:{},excludeAdditive:!1,separatorRegex:void 0,fillArray(e,t){const n=[];for(let a=0;a1&&(s*=this.optimal.pi[a.i-1][t-1]);let o=qs.factorial(t)*s;this.excludeAdditive||(o+=Htt**(t-1));let i=!1;Object.keys(this.optimal.g[n]).forEach(r=>{const u=this.optimal.g[n][r];parseInt(r,10)<=t&&u<=o&&(i=!0)}),i||(this.optimal.g[n][t]=o,this.optimal.m[n][t]=a,this.optimal.pi[n][t]=s)},bruteforceUpdate(e){let t=this.makeBruteforceMatch(0,e);this.update(t,1);for(let n=1;n<=e;n+=1){t=this.makeBruteforceMatch(n,e);const a=this.optimal.m[n-1];Object.keys(a).forEach(s=>{a[s].pattern!=="bruteforce"&&this.update(t,parseInt(s,10)+1)})}},unwind(e){const t=[];let n=e-1,a=0,s=1/0;const o=this.optimal.g[n];for(o&&Object.keys(o).forEach(i=>{const r=o[i];r=0;){const i=this.optimal.m[n][a];t.unshift(i),n=i.i-1,a-=1}return t}};var SE={mostGuessableMatchSequence(e,t,n=!1){Un.password=e,Un.excludeAdditive=n;const a=e.length;let s=Un.fillArray(a,"array");t.forEach(u=>{s[u.j].push(u)}),s=s.map(u=>u.sort((l,d)=>l.i-d.i)),Un.optimal={m:Un.fillArray(a,"object"),pi:Un.fillArray(a,"object"),g:Un.fillArray(a,"object")};for(let u=0;u{l.i>0?Object.keys(Un.optimal.m[l.i-1]).forEach(d=>{Un.update(l,parseInt(d,10)+1)}):Un.update(l,1)}),Un.bruteforceUpdate(u);const o=Un.unwind(a),i=o.length,r=this.getGuesses(e,i);return{password:e,guesses:r,guessesLog10:qs.log10(r),sequence:o}},getGuesses(e,t){const n=e.length;let a=0;return e.length===0?a=1:a=Un.optimal.g[n-1][t],a}};class $nt{match({password:t,omniMatch:n}){const a=[];let s=0;for(;si instanceof Promise)?Promise.all(a):a}normalizeMatch(t,n,a,s){const o={pattern:"repeat",i:a.index,j:n,token:a[0],baseToken:t,baseGuesses:0,repeatCount:a[0].length/t.length};return s instanceof Promise?s.then(i=>({...o,baseGuesses:i})):{...o,baseGuesses:s}}getGreedyMatch(t,n){const a=/(.+)\1+/g;return a.lastIndex=n,a.exec(t)}getLazyMatch(t,n){const a=/(.+?)\1+/g;return a.lastIndex=n,a.exec(t)}setMatchToken(t,n){const a=/^(.+?)\1+$/;let s,o="";if(n&&t[0].length>n[0].length){s=t;const i=a.exec(s[0]);i&&(o=i[1])}else s=n,s&&(o=s[1]);return{match:s,baseToken:o}}getBaseGuesses(t,n){const a=n.match(t);return a instanceof Promise?a.then(o=>SE.mostGuessableMatchSequence(t,o).guesses):SE.mostGuessableMatchSequence(t,a).guesses}}class Unt{constructor(){this.MAX_DELTA=5}match({password:t}){const n=[];if(t.length===1)return[];let a=0,s=null;const o=t.length;for(let i=1;i1||Math.abs(a)===1){const i=Math.abs(a);if(i>0&&i<=this.MAX_DELTA){const r=s.slice(t,+n+1||9e9),{sequenceName:u,sequenceSpace:l}=this.getSequence(r);return o.push({pattern:"sequence",i:t,j:n,token:s.slice(t,+n+1||9e9),sequenceName:u,sequenceSpace:l,ascending:a>0})}}return null}getSequence(t){let n="unicode",a=26;return jtt.test(t)?(n="lower",a=26):qtt.test(t)?(n="upper",a=26):Jtt.test(t)&&(n="digits",a=10),{sequenceName:n,sequenceSpace:a}}}class knt{constructor(){this.SHIFTED_RX=/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/}match({password:t}){const n=[];return Object.keys(Ve.graphs).forEach(a=>{const s=Ve.graphs[a];hE(n,this.helper(t,s,a))}),Do(n)}checkIfShifted(t,n,a){return!t.includes("keypad")&&this.SHIFTED_RX.test(n.charAt(a))?1:0}helper(t,n,a){let s;const o=[];let i=0;const r=t.length;for(;i2&&o.push({pattern:"spatial",i,j:u-1,token:t.slice(i,u),graph:a,turns:d,shiftedCount:s}),i=u;break}}}return o}}const wnt=new RegExp(`[${HO.join("")}]`);class el{static getMostUsedSeparatorChar(t){const n=[...t.split("").filter(s=>wnt.test(s)).reduce((s,o)=>{const i=s.get(o);return i?s.set(o,i+1):s.set(o,1),s},new Map).entries()].sort(([s,o],[i,r])=>r-o);if(!n.length)return;const a=n[0];if(!(a[1]<2))return a[0]}static getSeparatorRegex(t){return new RegExp(`([^${t} +])(${t})(?!${t})`,"g")}match({password:t}){const n=[];if(t.length===0)return n;const a=el.getMostUsedSeparatorChar(t);if(a===void 0)return n;const s=el.getSeparatorRegex(a);for(const o of t.matchAll(s)){if(o.index===void 0)continue;const i=o.index+1;n.push({pattern:"separator",token:a,i,j:i})}return n}}class Mnt{constructor(){this.matchers={date:nnt,dictionary:mnt,regex:Tnt,repeat:$nt,sequence:Unt,spatial:knt,separator:el}}match(t){const n=[],a=[];return[...Object.keys(this.matchers),...Object.keys(Ve.matchers)].forEach(o=>{if(!this.matchers[o]&&!Ve.matchers[o])return;const i=this.matchers[o]?this.matchers[o]:Ve.matchers[o].Matching,u=new i().match({password:t,omniMatch:this});u instanceof Promise?(u.then(l=>{hE(n,l)}),a.push(u)):hE(n,u)}),a.length>0?new Promise((o,i)=>{Promise.all(a).then(()=>{o(Do(n))}).catch(r=>{i(r)})}):Do(n)}}const KO=1,qO=KO*60,jO=qO*60,YO=jO*24,XO=YO*31,QO=XO*12,Wnt=QO*100,cd={second:KO,minute:qO,hour:jO,day:YO,month:XO,year:QO,century:Wnt};class Fnt{translate(t,n){let a=t;n!==void 0&&n!==1&&(a+="s");const{timeEstimation:s}=Ve.translations;return s[a].replace("{base}",`${n}`)}estimateAttackTimes(t){const n={onlineThrottling100PerHour:t/.027777777777777776,onlineNoThrottling10PerSecond:t/10,offlineSlowHashing1e4PerSecond:t/1e4,offlineFastHashing1e10PerSecond:t/1e10},a={onlineThrottling100PerHour:"",onlineNoThrottling10PerSecond:"",offlineSlowHashing1e4PerSecond:"",offlineFastHashing1e10PerSecond:""};return Object.keys(n).forEach(s=>{const o=n[s];a[s]=this.displayTime(o)}),{crackTimesSeconds:n,crackTimesDisplay:a,score:this.guessesToScore(t)}}guessesToScore(t){return t<1005?0:t<1000005?1:t<100000005?2:t<1e10+5?3:4}displayTime(t){let n="centuries",a;const s=Object.keys(cd),o=s.findIndex(i=>t-1&&(n=s[o-1],o!==0?a=Math.round(t/cd[n]):n="ltSecond"),this.translate(n,a)}}var znt=()=>null,xnt=()=>({warning:Ve.translations.warnings.dates,suggestions:[Ve.translations.suggestions.dates]});const Bnt=(e,t)=>{let n=null;return t&&!e.l33t&&!e.reversed?e.rank<=10?n=Ve.translations.warnings.topTen:e.rank<=100?n=Ve.translations.warnings.topHundred:n=Ve.translations.warnings.common:e.guessesLog10<=4&&(n=Ve.translations.warnings.similarToCommon),n},Gnt=(e,t)=>{let n=null;return t&&(n=Ve.translations.warnings.wordByItself),n},Vnt=(e,t)=>t?Ve.translations.warnings.namesByThemselves:Ve.translations.warnings.commonNames,Hnt=(e,t)=>{let n=null;const a=e.dictionaryName,s=a==="lastnames"||a.toLowerCase().includes("firstnames");return a==="passwords"?n=Bnt(e,t):a.includes("wikipedia")?n=Gnt(e,t):s?n=Vnt(e,t):a==="userInputs"&&(n=Ve.translations.warnings.userInputs),n};var Knt=(e,t)=>{const n=Hnt(e,t),a=[],s=e.token;return s.match(GO)?a.push(Ve.translations.suggestions.capitalization):s.match(VO)&&s.toLowerCase()!==s&&a.push(Ve.translations.suggestions.allUppercase),e.reversed&&e.token.length>=4&&a.push(Ve.translations.suggestions.reverseWords),e.l33t&&a.push(Ve.translations.suggestions.l33t),{warning:n,suggestions:a}},qnt=e=>e.regexName==="recentYear"?{warning:Ve.translations.warnings.recentYears,suggestions:[Ve.translations.suggestions.recentYears,Ve.translations.suggestions.associatedYears]}:{warning:null,suggestions:[]},jnt=e=>{let t=Ve.translations.warnings.extendedRepeat;return e.baseToken.length===1&&(t=Ve.translations.warnings.simpleRepeat),{warning:t,suggestions:[Ve.translations.suggestions.repeated]}},Ynt=()=>({warning:Ve.translations.warnings.sequences,suggestions:[Ve.translations.suggestions.sequences]}),Xnt=e=>{let t=Ve.translations.warnings.keyPattern;return e.turns===1&&(t=Ve.translations.warnings.straightRow),{warning:t,suggestions:[Ve.translations.suggestions.longerKeyboardPattern]}},Qnt=()=>null;const Lh={warning:null,suggestions:[]};class Znt{constructor(){this.matchers={bruteforce:znt,date:xnt,dictionary:Knt,regex:qnt,repeat:jnt,sequence:Ynt,spatial:Xnt,separator:Qnt},this.defaultFeedback={warning:null,suggestions:[]},this.setDefaultSuggestions()}setDefaultSuggestions(){this.defaultFeedback.suggestions.push(Ve.translations.suggestions.useWords,Ve.translations.suggestions.noNeed)}getFeedback(t,n){if(n.length===0)return this.defaultFeedback;if(t>2)return Lh;const a=Ve.translations.suggestions.anotherWord,s=this.getLongestMatch(n);let o=this.getMatchFeedback(s,n.length===1);return o!=null?o.suggestions.unshift(a):o={warning:null,suggestions:[a]},o}getLongestMatch(t){let n=t[0];return t.slice(1).forEach(s=>{s.token.length>n.token.length&&(n=s)}),n}getMatchFeedback(t,n){return this.matchers[t.pattern]?this.matchers[t.pattern](t,n):Ve.matchers[t.pattern]&&"feedback"in Ve.matchers[t.pattern]?Ve.matchers[t.pattern].feedback(t,n):Lh}}const ZO=()=>new Date().getTime(),Jnt=(e,t,n)=>{const a=new Znt,s=new Fnt,o=SE.mostGuessableMatchSequence(t,e),i=ZO()-n,r=s.estimateAttackTimes(o.guesses);return{calcTime:i,...o,...r,feedback:a.getFeedback(r.score,o.sequence)}},eat=(e,t)=>new Mnt().match(e),tat=(e,t)=>{const n=ZO(),a=eat(e);if(a instanceof Promise)throw new Error("You are using a Promised matcher, please use `zxcvbnAsync` for it.");return Jnt(a,e,n)},nat="modulepreload",aat=function(e){return"/"+e},yh={},xt=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),r=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(u=>{if(u=aat(u),u in yh)return;yh[u]=!0;const l=u.endsWith(".css"),d=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const E=document.createElement("link");if(E.rel=l?"stylesheet":nat,l||(E.as="script"),E.crossOrigin="",E.href=u,r&&E.setAttribute("nonce",r),document.head.appendChild(E),l)return new Promise((c,m)=>{E.addEventListener("load",c),E.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${u}`)))})}))}function o(i){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=i,window.dispatchEvent(r),!r.defaultPrevented)throw i}return s.then(i=>{for(const r of i||[])r.status==="rejected"&&o(r.reason);return t().catch(o)})},sat=async e=>{switch(e){case"fr":return await xt(()=>import("./password.fr-LQIeIoMk.js"),[]);case"de":return await xt(()=>import("./password.de-SDMVbHi1.js"),[]);case"it":return await xt(()=>import("./password.it-CReO5S7F.js"),[]);case"es":return await xt(()=>import("./password.es-es-DLU3Rh6X.js"),[]);case"pl":return await xt(()=>import("./password.pl-T3z7Kg0O.js"),[]);case"cs":return await xt(()=>import("./password.cs-CLn3Tyh5.js"),[]);default:return await xt(()=>import("./password.en-BDtqNyGO.js"),[])}},$h=async e=>{const t=await xt(()=>import("./password.common-bdamX4EN.js"),[]),n=await sat(e),a={graphs:t.adjacencyGraphs,dictionary:{...t.dictionary,...n.dictionary}};Ve.setOptions(a)},oat=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},iat={class:"password-strength"},rat={for:"password-strength",class:"visually-hidden"},uat=["value"],lat={key:0,class:"password-strength-details"},cat={class:"password-strength-value"},dat={key:0,class:"info-box"},Eat={class:"password-feedback"},pat=X({__name:"PasswordStength",props:{password:{}},setup(e){const t=e,{password:n}=_e(t),a=De(),{appLanguage:s}=Be(),o=F(()=>a.getters[K.GETTERS.IS_SUCCESS]),i=Ie(0),r=Ie(""),u=Ie([]),l=Ie("0% 100%");Je(async()=>await $h(s.value));function d(E){const c=tat(E);i.value=c.score,r.value=oat(i.value),u.value=c.feedback.suggestions,l.value=i.value*100/4+"% 100%"}return Ce(()=>s.value,async E=>{await $h(E)}),Ce(()=>n.value,async E=>{o.value?r.value="":d(E)}),(E,c)=>(h(),v("div",iat,[p("label",rat,A(E.$t("user.PASSWORD_STRENGTH.LABEL")),1),p("input",{id:"password-strength",class:Oe(["password-slider",`strength-${i.value}`]),style:za({backgroundSize:l.value}),type:"range",value:i.value,min:"0",max:"4",step:"1",tabindex:-1,autocomplete:"off"},null,14,uat),r.value?(h(),v("div",lat,[p("span",cat,A(E.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+A(E.$t(`user.PASSWORD_STRENGTH.${r.value}`)),1),u.value.length>0?(h(),v("div",dat,[p("ul",Eat,[(h(!0),v(re,null,be(u.value,m=>(h(),v("li",{key:m},A(E.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${m}`)),1))),128))])])):L("",!0)])):L("",!0)]))}}),mat=ae(pat,[["__scopeId","data-v-dee3cf5a"]]),Tat={class:"password-input"},_at=["id","disabled","placeholder","required","type","autocomplete"],fat={class:"show-password"},hat={key:0,class:"form-info"},Sat=X({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:{},required:{type:Boolean,default:!1},autocomplete:{}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{autocomplete:a,checkStrength:s,disabled:o,id:i,password:r,placeholder:u,required:l}=_e(n),d=t,E=Ie(!1),c=Ie("");function m(){E.value=!E.value}function _(O){d("updatePassword",O.target.value)}function f(){d("passwordError")}return Ce(()=>r.value,O=>{O===""&&(c.value="",E.value=!1)}),(O,S)=>(h(),v("div",Tat,[We(p("input",{id:T(i),disabled:T(o),placeholder:T(u),required:T(l),type:E.value?"text":"password","onUpdate:modelValue":S[0]||(S[0]=R=>c.value=R),minlength:"8",onInput:_,onInvalid:f,autocomplete:T(a)},null,40,_at),[[fN,c.value]]),p("div",fat,[p("button",{class:"transparent",onClick:ve(m,["prevent"]),type:"button"},[x(A(O.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),p("i",{class:Oe(["fa",`fa-eye${E.value?"-slash":""}`]),"aria-hidden":"true"},null,2)])]),T(s)?(h(),v("div",hat,[S[1]||(S[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(O.$t("user.PASSWORD_INFO")),1)])):L("",!0),T(s)?(h(),B(mat,{key:1,password:c.value},null,8,["password"])):L("",!0)]))}}),AE=ae(Sat,[["__scopeId","data-v-56852c2e"]]),Aat={id:"user-infos-edition"},Oat={class:"profile-form form-box"},Iat={key:1,class:"info-box success-message"},gat={class:"form-items",for:"email"},Rat=["disabled"],Nat={class:"form-items",for:"password-field"},vat={class:"form-items",for:"new-password-field"},bat={class:"form-buttons"},Cat={class:"confirm",type:"submit"},Pat={class:"data-export"},Dat={class:"info-box"},Lat={key:0,class:"data-export-archive"},yat={key:1},$at={key:2},Uat=X({__name:"UserAccountEdition",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{appConfig:s,errorMessages:o}=Be(),{authUserLoading:i,authUserSuccess:r}=qe(),u=yt({email:"",password:"",new_password:""}),l=Ie(!1),d=Ie(!1),E=Ie(!1),c=Ie(!1),m=F(()=>a.getters[K.GETTERS.EXPORT_REQUEST]),_=F(()=>I());function f(){d.value=!0}function O(M){u.email=M.email}function S(M){u.password=M}function R(M){u.new_password=M}function I(){return m.value?Ut(m.value.created_at,n.value.timezone,n.value.date_format,!0,null,!0):null}function g(){return _.value?GD(new Date(_.value),KD(new Date,1)):!0}function N(){const M={email:u.email,password:u.password};u.new_password&&(M.new_password=u.new_password),l.value=u.email!==n.value.email,a.dispatch(K.ACTIONS.UPDATE_USER_ACCOUNT,M)}function b(M){E.value=M}function C(M){a.dispatch(K.ACTIONS.DELETE_ACCOUNT,{username:M})}function y(){a.dispatch(K.ACTIONS.REQUEST_DATA_EXPORT)}async function D(M){c.value=!0,await Ne.get(`/auth/account/export/${M}`,{responseType:"blob"}).then(P=>{const W=window.URL.createObjectURL(new Blob([P.data],{type:"application/zip"})),Q=document.createElement("a");Q.href=W,Q.setAttribute("download",M),document.body.appendChild(Q),Q.click()}).finally(()=>c.value=!1)}return Ce(()=>r.value,async M=>{M&&(S(""),R(""),O(n.value),d.value=!1)}),Ce(()=>n.value.email,async()=>{O(n.value)}),mt(()=>{t.user&&(a.dispatch(K.ACTIONS.GET_REQUEST_DATA_EXPORT),O(t.user))}),ct(()=>{a.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(M,P)=>{const W=q("Modal"),Q=q("ErrorMessage");return h(),v("div",Aat,[E.value?(h(),B(W,{key:0,title:M.$t("common.CONFIRMATION"),message:M.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:P[0]||(P[0]=Se=>C(T(n).username)),onCancelAction:P[1]||(P[1]=Se=>b(!1)),onKeydown:P[2]||(P[2]=Ye(Se=>b(!1),["esc"]))},null,8,["title","message"])):L("",!0),p("div",Oat,[T(o)?(h(),B(Q,{key:0,message:T(o)},null,8,["message"])):L("",!0),T(r)?(h(),v("div",Iat,A(M.$t(`user.PROFILE.SUCCESSFUL_${l.value&&T(s).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):L("",!0),p("form",{class:Oe({errors:d.value}),onSubmit:ve(N,["prevent"])},[p("label",gat,[x(A(M.$t("user.EMAIL"))+"* ",1),We(p("input",{id:"email","onUpdate:modelValue":P[3]||(P[3]=Se=>u.email=Se),disabled:T(i),required:!0,onInvalid:f,autocomplete:"email"},null,40,Rat),[[it,u.email]])]),p("label",Nat,[x(A(M.$t("user.CURRENT_PASSWORD"))+"* ",1),w(AE,{id:"password-field",disabled:T(i),password:u.password,required:!0,onUpdatePassword:S,onPasswordError:f,autocomplete:"current-password"},null,8,["disabled","password"])]),p("label",vat,[x(A(M.$t("user.NEW_PASSWORD"))+" ",1),w(AE,{id:"new-password-field",disabled:T(i),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:f,autocomplete:"new-password"},null,8,["disabled","password"])]),p("div",bat,[p("button",Cat,A(M.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:P[4]||(P[4]=ve(Se=>M.$router.push("/profile"),["prevent"]))},A(M.$t("buttons.CANCEL")),1),p("button",{class:"danger",onClick:P[5]||(P[5]=ve(Se=>b(!0),["prevent"]))},A(M.$t("buttons.DELETE_MY_ACCOUNT")),1),g()?(h(),v("button",{key:0,class:"confirm",onClick:ve(y,["prevent"])},A(M.$t("buttons.REQUEST_DATA_EXPORT")),1)):L("",!0)])],34),p("div",Pat,[p("span",Dat,[P[7]||(P[7]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(M.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),m.value?(h(),v("div",Lat,[x(A(M.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+A(_.value)+"): ",1),m.value.status==="successful"?(h(),v("span",{key:0,class:"archive-link",onClick:P[6]||(P[6]=ve(Se=>D(m.value.file_name),["prevent"]))},[P[8]||(P[8]=p("i",{class:"fa fa-download","aria-hidden":"true"},null,-1)),x(" "+A(M.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+A(T(Zu)(m.value.file_size))+") ",1)])):(h(),v("span",yat,A(M.$t(`user.EXPORT_REQUEST.STATUS.${m.value.status}`)),1)),c.value?(h(),v("span",$at,[x(A(M.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),P[9]||(P[9]=p("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1))])):L("",!0)])):L("",!0)])])])}}}),kat=ae(Uat,[["__scopeId","data-v-881b0d2d"]]),wat={id:"user-infos-edition"},Mat={class:"profile-form form-box"},Wat={class:"form-items",for:"registrationDate"},Fat=["value"],zat={class:"form-items",for:"first_name"},xat=["disabled"],Bat={class:"form-items",for:"last_name"},Gat={class:"form-items",for:"birth_date"},Vat=["disabled"],Hat={class:"form-items",for:"location"},Kat=["disabled"],qat={class:"form-items"},jat={class:"form-buttons"},Yat={class:"confirm",type:"submit"},Xat=X({__name:"UserInfosEdition",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{errorMessages:s}=Be(),{authUserLoading:o}=qe(),i=yt({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),r=F(()=>n.value.created_at?Ut(n.value.created_at,n.value.timezone,n.value.date_format):"");function u(E){i.first_name=E.first_name?E.first_name:"",i.last_name=E.last_name?E.last_name:"",i.birth_date=E.birth_date?On(new Date(E.birth_date),"yyyy-MM-dd"):"",i.location=E.location?E.location:"",i.bio=E.bio?E.bio:""}function l(E){i.bio=E.value}function d(){a.dispatch(K.ACTIONS.UPDATE_USER_PROFILE,i)}return mt(()=>{n.value&&u(n.value)}),(E,c)=>{const m=q("ErrorMessage"),_=q("CustomTextArea");return h(),v("div",wat,[p("div",Mat,[T(s)?(h(),B(m,{key:0,message:T(s)},null,8,["message"])):L("",!0),p("form",{onSubmit:ve(d,["prevent"])},[p("label",Wat,[x(A(E.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),p("input",{id:"registrationDate",value:r.value,disabled:""},null,8,Fat)]),p("label",zat,[x(A(E.$t("user.PROFILE.FIRST_NAME"))+" ",1),We(p("input",{id:"first_name","onUpdate:modelValue":c[0]||(c[0]=f=>i.first_name=f),disabled:T(o)},null,8,xat),[[it,i.first_name]])]),p("label",Bat,[x(A(E.$t("user.PROFILE.LAST_NAME"))+" ",1),We(p("input",{id:"last_name","onUpdate:modelValue":c[1]||(c[1]=f=>i.last_name=f)},null,512),[[it,i.last_name]])]),p("label",Gat,[x(A(E.$t("user.PROFILE.BIRTH_DATE"))+" ",1),We(p("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":c[2]||(c[2]=f=>i.birth_date=f),disabled:T(o)},null,8,Vat),[[it,i.birth_date]])]),p("label",Hat,[x(A(E.$t("user.PROFILE.LOCATION"))+" ",1),We(p("input",{id:"location","onUpdate:modelValue":c[3]||(c[3]=f=>i.location=f),disabled:T(o)},null,8,Kat),[[it,i.location]])]),p("label",qat,[x(A(E.$t("user.PROFILE.BIO"))+" ",1),w(_,{name:"bio",charLimit:200,input:i.bio,disabled:T(o),onUpdateValue:l},null,8,["input","disabled"])]),p("div",jat,[p("button",Yat,A(E.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:c[4]||(c[4]=ve(f=>E.$router.push("/profile"),["prevent"]))},A(E.$t("buttons.CANCEL")),1)])],32)])])}}}),Qat=ae(Xat,[["__scopeId","data-v-74879b02"]]),Zat={id:"user-notifications-edition"},Jat={class:"notifications-form form-box"},est={class:"checkboxes-label"},tst={class:"checkboxes"},nst=["id","name","checked","disabled","onInput"],ast={class:"checkbox-label"},sst=["id","name","checked","disabled","onInput"],ost={class:"checkbox-label"},ist={class:"form-buttons"},rst={class:"confirm",type:"submit"},ust=X({__name:"UserNotificationsEdition",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{errorMessages:s}=Be(),{authUserLoading:o}=qe(),i=F(()=>MO(n.value.role)),r=yt({account_creation:!0,comment_like:!0,follow:!0,follow_request:!0,follow_request_approved:!0,mention:!0,workout_comment:!0,workout_like:!0});function u(E){i.value.forEach(c=>{r[c]=c in E?E[c]:!0})}function l(E,c){r[E]=c}function d(){a.dispatch(K.ACTIONS.UPDATE_USER_NOTIFICATIONS_PREFERENCES,r)}return mt(()=>{n.value&&u(n.value.notification_preferences)}),(E,c)=>{const m=q("ErrorMessage");return h(),v("div",Zat,[p("div",Jat,[T(s)?(h(),B(m,{key:0,message:T(s)},null,8,["message"])):L("",!0),p("form",{onSubmit:ve(d,["prevent"])},[(h(!0),v(re,null,be(i.value,_=>(h(),v("div",{class:"form-items form-checkboxes",key:_},[p("span",est,A(Fe(E.$t(`user.PROFILE.NOTIFICATIONS.${_}`)))+": ",1),p("div",tst,[p("label",null,[p("input",{type:"radio",id:_,name:_,checked:r[_],disabled:T(o),onInput:f=>l(_,!0)},null,40,nst),p("span",ast,A(E.$t("common.ENABLED")),1)]),p("label",null,[p("input",{type:"radio",id:_,name:_,checked:!r[_],disabled:T(o),onInput:f=>l(_,!1)},null,40,sst),p("span",ost,A(E.$t("common.DISABLED")),1)])])]))),128)),p("div",ist,[p("button",rst,A(E.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:c[0]||(c[0]=ve(_=>E.$router.push("/profile/notifications"),["prevent"]))},A(E.$t("buttons.CANCEL")),1)])],32)])])}}}),lst=ae(ust,[["__scopeId","data-v-96181cff"]]),cst={id:"user-picture-edition"},dst={class:"user-picture-form"},Est={class:"picture-help"},pst={class:"info-box"},mst={class:"picture-buttons"},Tst=["disabled"],_st=X({__name:"UserPictureEdition",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{appConfig:s,errorMessages:o}=Be(),i=Ie(null),r=F(()=>s.value.max_single_file_size?Zu(s.value.max_single_file_size):"");function u(){a.dispatch(K.ACTIONS.DELETE_PICTURE)}function l(E){E.target.files!==null&&(i.value=E.target.files[0])}function d(){i.value&&a.dispatch(K.ACTIONS.UPDATE_USER_PICTURE,{picture:i.value})}return(E,c)=>{const m=q("ErrorMessage");return h(),v("div",cst,[p("div",dst,[T(o)?(h(),B(m,{key:0,message:T(o)},null,8,["message"])):L("",!0),w(Qt,{user:T(n)},null,8,["user"]),p("form",{onSubmit:ve(d,["prevent"])},[p("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:l},null,32),p("div",Est,[p("span",pst,[c[1]||(c[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(E.$t("workouts.MAX_SIZE"))+": "+A(r.value),1)])]),p("div",mst,[p("button",{type:"submit",disabled:!i.value},A(E.$t("user.PROFILE.PICTURE_UPDATE")),9,Tst),T(n).picture?(h(),v("button",{key:0,class:"danger",onClick:u},A(E.$t("user.PROFILE.PICTURE_REMOVE")),1)):L("",!0),p("button",{class:"cancel",onClick:c[0]||(c[0]=_=>E.$router.push("/profile"))},A(E.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32)])])}}}),fst=ae(_st,[["__scopeId","data-v-0a8e1dca"]]),Uh=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],hst={id:"tz-dropdown"},Sst=["value","disabled","aria-expanded"],Ast=["aria-label"],Ost=["id","onClick","onMouseover","autofocus"],Ist=X({__name:"TimezoneDropdown",props:{input:{},disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:a,disabled:s}=_e(n),o=t,i=Ie(a.value),r=Ie(!1),u=Ie(0),l=F(()=>a.value?Uh.filter(g=>d(g)):Uh);function d(g){return g.toLowerCase().match(i.value.toLowerCase())}function E(g){u.value=g}function c(g){l.value.length>g&&(i.value=l.value[g],o("updateTimezone",i.value),r.value=!1)}function m(g){g.preventDefault(),l.value.length>0&&c(u.value)}function _(g){g.preventDefault(),r.value=!0,i.value=g.target.value.trim()}function f(){c(u.value)}function O(g){const N=document.getElementById(`tz-dropdown-item-${g}`);N&&(N.focus(),N.scrollIntoView({behavior:"smooth",block:"nearest"}))}function S(){r.value=!0,u.value=u.value===null?0:u.value+=1,u.value>=l.value.length&&(u.value=0),O(u.value)}function R(){r.value=!0,u.value=u.value===null?l.value.length-1:u.value-=1,u.value<=-1&&(u.value=l.value.length-1),O(u.value)}function I(){r.value&&(r.value=!1,i.value=a.value)}return Ce(()=>n.input,g=>{i.value=g}),(g,N)=>(h(),v("div",hst,[p("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:i.value,disabled:T(s),required:"",role:"combobox","aria-autocomplete":"list","aria-controls":"tz-dropdown-list","aria-expanded":r.value,onKeydown:[N[0]||(N[0]=Ye(b=>I(),["esc"])),Ye(m,["enter"]),N[2]||(N[2]=Ye(b=>S(),["down"])),N[3]||(N[3]=Ye(b=>R(),["up"]))],onInput:_,onBlur:N[1]||(N[1]=b=>f())},null,40,Sst),r.value?(h(),v("ul",{key:0,class:"tz-dropdown-list",id:"tz-dropdown-list",role:"listbox",tabindex:"-1","aria-label":g.$t("user.PROFILE.TIMEZONE",0)},[(h(!0),v(re,null,be(l.value,(b,C)=>(h(),v("li",{key:b,id:`tz-dropdown-item-${C}`,class:Oe(["tz-dropdown-item",{focus:C===u.value}]),onClick:y=>c(C),onMouseover:y=>E(C),autofocus:C===u.value,role:"option"},A(b),43,Ost))),128))],8,Ast)):L("",!0)]))}}),gst=ae(Ist,[["__scopeId","data-v-de57165c"]]),Rst={id:"user-preferences-edition"},Nst={class:"profile-form form-box"},vst={class:"preferences-section"},bst={class:"form-items"},Cst=["disabled"],Pst=["value"],Dst={class:"form-items"},Lst=["disabled"],yst=["value"],$st={class:"form-items"},Ust={class:"form-items"},kst=["disabled"],wst=["value"],Mst={class:"form-items form-checkboxes"},Wst={class:"checkboxes-label"},Fst={class:"checkboxes"},zst=["id","name","checked","disabled","onInput"],xst={class:"checkbox-label"},Bst={class:"preferences-section"},Gst={class:"form-items form-checkboxes"},Vst={class:"checkboxes-label"},Hst={class:"checkboxes"},Kst=["id","name","checked","disabled","onInput"],qst={class:"checkbox-label"},jst={class:"form-items form-checkboxes"},Yst={class:"checkboxes-label"},Xst={class:"checkboxes"},Qst=["id","name","checked","disabled","onInput"],Zst={class:"checkbox-label"},Jst={class:"preferences-section"},eot={class:"form-items form-checkboxes"},tot={class:"checkboxes-label"},not={class:"checkboxes"},aot=["id","name","checked","disabled","onInput"],sot={class:"checkbox-label"},oot={class:"form-items form-checkboxes"},iot={class:"checkboxes-label"},rot={class:"checkboxes"},uot=["id","name","checked","disabled","onInput"],lot={class:"checkbox-label"},cot={class:"form-items form-checkboxes"},dot={class:"checkboxes-label"},Eot={class:"checkboxes"},pot=["id","name","checked","disabled","onInput"],mot={class:"checkbox-label"},Tot={class:"form-items form-checkboxes"},_ot={class:"checkboxes-label"},fot={class:"checkboxes"},hot=["id","name","checked","disabled","onInput"],Sot={class:"checkbox-label"},Aot={class:"info-box raw-speed-help"},Oot={class:"form-items"},Iot=["disabled"],got=["value"],Rot={class:"form-items"},Not=["disabled"],vot=["value"],bot={class:"form-items"},Cot=["disabled"],Pot=["value"],Dot={class:"form-buttons"},Lot={class:"confirm",type:"submit"},yot=X({__name:"UserPreferencesEdition",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{errorMessages:s}=Be(),{authUserLoading:o}=qe(),i=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],r=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],u=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],l=[{label:"ZERO",value:!0},{label:"MIN_ALT",value:!1}],d=[{label:"FILTERED_SPEED",value:!1},{label:"RAW_SPEED",value:!0}],E=[{label:"DARK",value:!0},{label:"DEFAULT",value:null},{label:"LIGHT",value:!1}],c=[{label:"MANUALLY",value:!0},{label:"AUTOMATICALLY",value:!1}],m=[{label:"HIDDEN",value:!0},{label:"DISPLAYED",value:!1}],_=yt({analysis_visibility:"private",date_format:"dd/MM/yyyy",display_ascent:!0,hide_profile_in_users_directory:!0,imperial_units:!1,language:"en",manually_approves_followers:!0,map_visibility:"private",start_elevation_at_zero:!1,timezone:"Europe/Paris",use_dark_mode:!1,use_raw_gpx_speed:!1,weekm:!1,workouts_visibility:"private"}),f=F(()=>bBe(new Date().toUTCString(),n.value.timezone,_.language)),O=F(()=>RO()),S=F(()=>Qu(_.workouts_visibility)),R=F(()=>Qu(_.analysis_visibility));function I(y){_.analysis_visibility=y.analysis_visibility?y.analysis_visibility:"private",_.display_ascent=y.display_ascent,_.start_elevation_at_zero=y.start_elevation_at_zero?y.start_elevation_at_zero:!1,_.use_raw_gpx_speed=y.use_raw_gpx_speed?y.use_raw_gpx_speed:!1,_.imperial_units=y.imperial_units?y.imperial_units:!1,_.language=y.language&&y.language in mo?y.language:"en",_.manually_approves_followers="manually_approves_followers"in y?y.manually_approves_followers:!0,_.map_visibility=y.map_visibility?y.map_visibility:"private",_.timezone=y.timezone?y.timezone:"Europe/Paris",_.date_format=y.date_format?y.date_format:"dd/MM/yyyy",_.weekm=y.weekm?y.weekm:!1,_.use_dark_mode=y.use_dark_mode,_.workouts_visibility=y.workouts_visibility?y.workouts_visibility:"private",_.hide_profile_in_users_directory=y.hide_profile_in_users_directory}function g(){a.dispatch(K.ACTIONS.UPDATE_USER_PREFERENCES,_)}function N(y,D){_[y]=D}function b(){_.analysis_visibility=Xu(_.analysis_visibility,_.workouts_visibility),C()}function C(){_.map_visibility=Xu(_.map_visibility,_.analysis_visibility)}return mt(()=>{n.value&&I(n.value)}),(y,D)=>{const M=q("ErrorMessage");return h(),v("div",Rst,[p("div",Nst,[T(s)?(h(),B(M,{key:0,message:T(s)},null,8,["message"])):L("",!0),p("form",{onSubmit:ve(g,["prevent"])},[p("div",vst,A(y.$t("user.PROFILE.INTERFACE")),1),p("label",bst,[x(A(y.$t("user.PROFILE.LANGUAGE"))+" ",1),We(p("select",{id:"language","onUpdate:modelValue":D[0]||(D[0]=P=>_.language=P),disabled:T(o)},[(h(!0),v(re,null,be(T(oE),P=>(h(),v("option",{value:P.value,key:P.value},A(P.label),9,Pst))),128))],8,Cst),[[Jt,_.language]])]),p("label",Dst,[x(A(y.$t("user.PROFILE.THEME_MODE.LABEL"))+" ",1),We(p("select",{id:"use_dark_mode","onUpdate:modelValue":D[1]||(D[1]=P=>_.use_dark_mode=P),disabled:T(o)},[(h(),v(re,null,be(E,P=>p("option",{value:P.value,key:P.label},A(y.$t(`user.PROFILE.THEME_MODE.VALUES.${P.label}`)),9,yst)),64))],8,Lst),[[Jt,_.use_dark_mode]])]),p("label",$st,[x(A(y.$t("user.PROFILE.TIMEZONE"))+" ",1),w(gst,{input:_.timezone,disabled:T(o),onUpdateTimezone:D[2]||(D[2]=P=>N("timezone",P))},null,8,["input","disabled"])]),p("label",Ust,[x(A(y.$t("user.PROFILE.DATE_FORMAT"))+" ",1),We(p("select",{id:"date_format","onUpdate:modelValue":D[3]||(D[3]=P=>_.date_format=P),disabled:T(o)},[(h(!0),v(re,null,be(f.value,P=>(h(),v("option",{value:P.value,key:P.value},A(P.label),9,wst))),128))],8,kst),[[Jt,_.date_format]])]),p("div",Mst,[p("span",Wst,A(y.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),p("div",Fst,[(h(),v(re,null,be(i,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.weekm,disabled:T(o),onInput:W=>N("weekm",P.value)},null,40,zst),p("span",xst,A(y.$t(`user.PROFILE.${P.label}`)),1)])),64))])]),p("div",Bst,A(y.$t("user.PROFILE.TABS.ACCOUNT")),1),p("div",Gst,[p("span",Vst,A(y.$t("user.PROFILE.FOLLOW_REQUESTS_APPROVAL.LABEL")),1),p("div",Hst,[(h(),v(re,null,be(c,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.manually_approves_followers,disabled:T(o),onInput:W=>N("manually_approves_followers",P.value)},null,40,Kst),p("span",qst,A(y.$t(`user.PROFILE.FOLLOW_REQUESTS_APPROVAL.${P.label}`)),1)])),64))])]),p("div",jst,[p("span",Yst,A(y.$t("user.PROFILE.PROFILE_IN_USERS_DIRECTORY.LABEL")),1),p("div",Xst,[(h(),v(re,null,be(m,P=>p("label",{key:P.label},[p("input",{type:"radio",id:`hide_profile_${P.label}`,name:`hide_profile_${P.label}`,checked:P.value===_.hide_profile_in_users_directory,disabled:T(o),onInput:W=>N("hide_profile_in_users_directory",P.value)},null,40,Qst),p("span",Zst,A(y.$t(`user.PROFILE.PROFILE_IN_USERS_DIRECTORY.${P.label}`)),1)])),64))])]),p("div",Jst,A(y.$t("workouts.WORKOUT",0)),1),p("div",eot,[p("span",tot,A(y.$t("user.PROFILE.UNITS.LABEL")),1),p("div",not,[(h(),v(re,null,be(r,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.imperial_units,disabled:T(o),onInput:W=>N("imperial_units",P.value)},null,40,aot),p("span",sot,A(y.$t(`user.PROFILE.UNITS.${P.label}`)),1)])),64))])]),p("div",oot,[p("span",iot,A(y.$t("user.PROFILE.ASCENT_DATA")),1),p("div",rot,[(h(),v(re,null,be(u,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.display_ascent,disabled:T(o),onInput:W=>N("display_ascent",P.value)},null,40,uot),p("span",lot,A(y.$t(`common.${P.label}`)),1)])),64))])]),p("div",cot,[p("span",dot,A(y.$t("user.PROFILE.ELEVATION_CHART_START.LABEL")),1),p("div",Eot,[(h(),v(re,null,be(l,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.start_elevation_at_zero,disabled:T(o),onInput:W=>N("start_elevation_at_zero",P.value)},null,40,pot),p("span",mot,A(y.$t(`user.PROFILE.ELEVATION_CHART_START.${P.label}`)),1)])),64))])]),p("div",Tot,[p("span",_ot,A(y.$t("user.PROFILE.USE_RAW_GPX_SPEED.LABEL")),1),p("div",fot,[(h(),v(re,null,be(d,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.use_raw_gpx_speed,disabled:T(o),onInput:W=>N("use_raw_gpx_speed",P.value)},null,40,hot),p("span",Sot,A(y.$t(`user.PROFILE.USE_RAW_GPX_SPEED.${P.label}`)),1)])),64))]),p("div",Aot,[p("span",null,[D[8]||(D[8]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(y.$t("user.PROFILE.USE_RAW_GPX_SPEED.HELP")),1)])])]),p("label",Oot,[x(A(y.$t("visibility_levels.WORKOUTS_VISIBILITY"))+" ",1),We(p("select",{id:"workouts_visibility","onUpdate:modelValue":D[4]||(D[4]=P=>_.workouts_visibility=P),disabled:T(o),onChange:b},[(h(!0),v(re,null,be(O.value,P=>(h(),v("option",{value:P,key:P},A(y.$t(`visibility_levels.LEVELS.${P}`)),9,got))),128))],40,Iot),[[Jt,_.workouts_visibility]])]),p("label",Rot,[x(A(y.$t("visibility_levels.ANALYSIS_VISIBILITY"))+" ",1),We(p("select",{id:"analysis_visibility","onUpdate:modelValue":D[5]||(D[5]=P=>_.analysis_visibility=P),disabled:T(o),onChange:C},[(h(!0),v(re,null,be(S.value,P=>(h(),v("option",{value:P,key:P},A(y.$t(`visibility_levels.LEVELS.${P}`)),9,vot))),128))],40,Not),[[Jt,_.analysis_visibility]])]),p("label",bot,[x(A(y.$t("visibility_levels.MAP_VISIBILITY"))+" ",1),We(p("select",{id:"map_visibility","onUpdate:modelValue":D[6]||(D[6]=P=>_.map_visibility=P),disabled:T(o)},[(h(!0),v(re,null,be(R.value,P=>(h(),v("option",{value:P,key:P},A(y.$t(`visibility_levels.LEVELS.${P}`)),9,Pot))),128))],8,Cot),[[Jt,_.map_visibility]])]),p("div",Dot,[p("button",Lot,A(y.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:D[7]||(D[7]=ve(P=>y.$router.push("/profile/preferences"),["prevent"]))},A(y.$t("buttons.CANCEL")),1)])],32)])])}}}),$ot=ae(yot,[["__scopeId","data-v-a2dba7d8"]]),Uot={class:"privacy-policy-text"},kot={class:"last-update"},wot=["innerHTML"],Mot=["innerHTML"],Wot=X({__name:"PrivacyPolicy",setup(e){const{appConfig:t}=Be(),{dateFormat:n,timezone:a}=qe(),s=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"],o=F(()=>i());function i(){return Ut(t.value.privacy_policy_date,a.value,n.value,!1)}return(r,u)=>(h(),v("div",Uot,[p("h1",null,A(Fe(r.$t("privacy_policy.TITLE"))),1),p("p",kot,[x(A(r.$t("privacy_policy.LAST_UPDATE"))+": ",1),p("time",null,A(o.value),1)]),T(t).privacy_policy?(h(),v("div",{key:0,innerHTML:T(Vi)(T(t).privacy_policy)},null,8,wot)):(h(),v(re,{key:1},be(s,l=>(h(),v(re,{key:l},[p("h2",null,A(r.$t(`privacy_policy.CONTENT.${l}.TITLE`)),1),p("p",{innerHTML:T(Vi)(r.$t(`privacy_policy.CONTENT.${l}.CONTENT`))},null,8,Mot)],64))),64))]))}}),JO=ae(Wot,[["__scopeId","data-v-4c6083e4"]]),Fot={id:"user-privacy-policy"},zot={key:1},xot={class:"policy-content"},Bot={for:"accepted_policy",class:"accepted_policy"},Got={class:"form-buttons"},Vot={class:"confirm",type:"submit"},Hot=X({__name:"UserPrivacyPolicyValidation",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De(),{errorMessages:s}=Be(),o=Ie(!1),i=Ie(!1);function r(){a.dispatch(K.ACTIONS.ACCEPT_PRIVACY_POLICY,o.value)}function u(){i.value=!0}return(l,d)=>{const E=q("ErrorMessage"),c=q("router-link"),m=q("i18n-t");return h(),v("div",Fot,[T(s)?(h(),B(E,{key:0,message:T(s)},null,8,["message"])):L("",!0),T(n).accepted_privacy_policy?(h(),v("div",zot,[p("p",null,[w(m,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:Y(()=>[w(c,{to:"/privacy-policy"},{default:Y(()=>[x(A(l.$t("privacy_policy.TITLE")),1)]),_:1})]),_:1})]),p("button",{class:"cancel",onClick:d[0]||(d[0]=_=>l.$router.push("/profile"))},A(l.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):(h(),v("form",{key:2,class:Oe({errors:i.value}),onSubmit:d[3]||(d[3]=ve(_=>r(),["prevent"]))},[p("div",xot,[w(JO)]),p("label",Bot,[We(p("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":d[1]||(d[1]=_=>o.value=_),onInvalid:u},null,544),[[El,o.value]]),p("span",null,[w(m,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:Y(()=>[x(A(l.$t("privacy_policy.TITLE")),1)]),_:1})])]),w(c,{to:"/profile/edit/account"},{default:Y(()=>[x(A(l.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)]),_:1}),p("div",Got,[p("button",Vot,A(l.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:d[2]||(d[2]=_=>l.$router.push("/profile"))},A(l.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],34))])}}}),Kot=ae(Hot,[["__scopeId","data-v-ac974385"]]),qot={key:0},jot={key:1},Yot={key:2},Xot={class:"no-suspension"},Qot=X({__name:"UserAccountSuspension",setup(e){const t=De(),{authUserLoading:n,authUserSuccess:a}=qe(),s=Ie(""),o=F(()=>t.getters[K.GETTERS.ACCOUNT_SUSPENSION]);function i(){t.dispatch(K.ACTIONS.GET_ACCOUNT_SUSPENSION)}function r(u){s.value=u,t.dispatch(K.ACTIONS.APPEAL,{actionId:o.value.id,actionType:"user_suspension",text:u})}return mt(()=>i()),ct(()=>{t.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(u,l)=>{const d=q("Loader");return T(n)&&!s.value?(h(),v("div",qot,[w(d)])):o.value.id?(h(),v("div",jot,[p("div",null,A(u.$t("user.YOUR_ACCOUNT_HAS_BEEN_SUSPENDED"))+".",1),w(Cl,{"report-action":o.value,success:T(a),loading:T(n),onSubmitForm:r},{additionalButtons:Y(()=>[p("button",{onClick:l[0]||(l[0]=E=>u.$router.push("/profile"))},A(u.$t("user.PROFILE.BACK_TO_PROFILE")),1)]),_:1},8,["report-action","success","loading"])])):(h(),v("div",Yot,[p("div",Xot,A(u.$t("user.ACTIVE_ACCOUNT")),1),p("button",{onClick:l[1]||(l[1]=E=>u.$router.push("/profile"))},A(u.$t("user.PROFILE.BACK_TO_PROFILE")),1)]))}}}),Zot=ae(Qot,[["__scopeId","data-v-2a9aa8c5"]]),Jot=["equipments:read","equipments:write","follow:read","follow:write","notifications:read","notifications:write","profile:read","profile:write","reports:read","reports:write","users:read","users:write","workouts:read","workouts:write"],eit=["application:write"],tit={id:"new-oauth2-app"},nit={id:"new-oauth2-title"},ait={id:"apps-form"},sit={class:"form-items"},oit={class:"form-item"},iit={for:"app-name"},rit={class:"form-item"},uit={for:"app-description"},lit={class:"form-item"},cit={for:"app-url"},dit={class:"form-item"},Eit={for:"app-redirect-uri"},pit={class:"form-item-scope"},mit={class:"form-item-scope-label"},Tit={class:"scope-label"},_it=["name","checked","onChange"],fit=["innerHTML"],hit={class:"form-buttons"},Sit=["disabled"],Ait=X({__name:"AddUserApp",setup(e){const t=De(),{errorMessages:n}=Be(),{authUserHasAdminRights:a}=qe(),s=yt({client_name:"",client_uri:"",client_description:"",description:"",redirect_uri:""}),o=yt([]),i=F(()=>d(a.value,eit,Jot));function r(){const E={client_name:s.client_name,client_description:s.client_description,client_uri:s.client_uri,redirect_uris:[s.redirect_uri],scope:o.sort().join(" ")};t.dispatch(st.ACTIONS.CREATE_CLIENT,E)}function u(E){s.client_description=E.value}function l(E){const c=o.indexOf(E);c>-1?o.splice(c,1):o.push(E)}function d(E,c,m){const _=[...m];return E&&_.push(...c),_.sort()}return(E,c)=>{const m=q("CustomTextArea"),_=q("ErrorMessage");return h(),v("div",tit,[p("h1",nit,A(E.$t("oauth2.ADD_A_NEW_APP")),1),p("div",ait,[p("form",{onSubmit:ve(r,["prevent"])},[p("div",sit,[p("div",oit,[p("label",iit,A(E.$t("oauth2.APP.NAME"))+"*",1),We(p("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":c[0]||(c[0]=f=>s.client_name=f)},null,512),[[it,s.client_name]])]),p("div",rit,[p("label",uit,A(E.$t("oauth2.APP.DESCRIPTION")),1),w(m,{name:"app-description",charLimit:200,input:s.description,onUpdateValue:u},null,8,["input"])]),p("div",lit,[p("label",cit,A(E.$t("oauth2.APP.URL"))+"*",1),We(p("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":c[1]||(c[1]=f=>s.client_uri=f)},null,512),[[it,s.client_uri]])]),p("div",dit,[p("label",Eit,A(E.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),We(p("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":c[2]||(c[2]=f=>s.redirect_uri=f)},null,512),[[it,s.redirect_uri]])]),p("div",pit,[p("div",mit,A(E.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),(h(!0),v(re,null,be(i.value,f=>(h(),v("div",{class:"form-item-scope-checkboxes",key:f},[p("label",Tit,[p("input",{type:"checkbox",name:f,checked:o.includes(f),onChange:O=>l(f)},null,40,_it),p("code",null,A(f),1)]),p("p",{class:"scope-description",innerHTML:E.$t(`oauth2.APP.SCOPE.${f}_DESCRIPTION`)},null,8,fit)]))),128))])]),T(n)?(h(),B(_,{key:0,message:T(n)},null,8,["message"])):L("",!0),p("div",hit,[p("button",{class:"confirm",type:"submit",disabled:o.length===0},A(E.$t("buttons.SUBMIT")),9,Sit),p("button",{class:"cancel",onClick:c[3]||(c[3]=ve(()=>E.$router.push("/profile/apps"),["prevent"]))},A(E.$t("buttons.CANCEL")),1)])],32)])])}}}),Oit=ae(Ait,[["__scopeId","data-v-f0f43085"]]),Iit={id:"authorize-oauth2-app"},git={key:0},Rit={id:"authorize-oauth2-title"},Nit={class:"oauth2-access description-list"},vit={class:"client-scope"},bit=["innerHTML"],Cit={class:"authorize-oauth2-buttons"},Pit={key:1},Dit={class:"no-app"},Lit=X({__name:"AuthorizeUserApp",setup(e){const t=rt(),n=De(),{errorMessages:a}=Be(),s=F(()=>n.getters[st.GETTERS.CLIENT]);function o(){t.query.client_id&&typeof t.query.client_id=="string"&&n.dispatch(st.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function i(){n.dispatch(st.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return Je(()=>o()),(r,u)=>{const l=q("router-link"),d=q("i18n-t"),E=q("ErrorMessage");return h(),v("div",Iit,[s.value.client_id?(h(),v("div",git,[p("h1",Rit,[w(d,{keypath:"oauth2.AUTHORIZE_APP"},{default:Y(()=>[w(l,{to:{name:"UserApp",params:{id:s.value.id}}},{default:Y(()=>[x(A(s.value.name),1)]),_:1},8,["to"])]),_:1})]),T(a)?(h(),B(E,{key:0,message:T(a)},null,8,["message"])):L("",!0),p("div",Nit,[p("p",null,A(r.$t("oauth2.APP_REQUESTING_ACCESS")),1),p("dl",null,[(h(!0),v(re,null,be(s.value.scope.split(" "),c=>(h(),v(re,{key:c},[p("dt",vit,[p("code",null,A(c),1)]),p("dd",{innerHTML:r.$t(`oauth2.APP.SCOPE.${c}_DESCRIPTION`)},null,8,bit)],64))),128))]),p("div",Cit,[p("button",{class:"danger",onClick:i},A(r.$t("buttons.AUTHORIZE")),1),p("button",{class:"cancel",onClick:u[0]||(u[0]=c=>r.$router.push("/profile/apps"))},A(r.$t("buttons.CANCEL")),1)])])])):(h(),v("div",Pit,[p("p",Dit,A(r.$t("oauth2.NO_APP")),1),p("button",{onClick:u[1]||(u[1]=c=>r.$router.push("/profile/apps"))},A(r.$t("buttons.BACK")),1)]))])}}}),yit=ae(Lit,[["__scopeId","data-v-6462d75b"]]),$it={id:"oauth2-apps"},Uit=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),a=De();return ct(()=>{a.commit(st.MUTATIONS.SET_CLIENTS,[])}),(s,o)=>{const i=q("router-view");return h(),v("div",$it,[w(i,{authUser:T(n)},null,8,["authUser"])])}}}),kit={id:"oauth2-app",class:"description-list"},wit={key:1},Mit={key:0,class:"info-box success-message"},Wit=["title"],Fit={key:0},zit={key:1,class:"app-secret"},xit=["title"],Bit={class:"client-scopes"},Git={class:"app-buttons"},Vit={key:2},Hit={class:"no-app"},Kit=X({__name:"UserApp",props:{authUser:{},afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,{afterCreation:n,authUser:a}=_e(t),s=rt(),o=De(),i=Ie(!1),r=Ie(""),u=Ie(!1),l=Ie(!1),d=Ie(!1),E=F(()=>o.getters[st.GETTERS.CLIENT]),c=F(()=>o.getters[st.GETTERS.REVOCATION_SUCCESSFUL]);function m(){!n.value&&s.params.id&&typeof s.params.id=="string"&&o.dispatch(st.ACTIONS.GET_CLIENT_BY_ID,+s.params.id)}function _(I){r.value=I?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",f(!0)}function f(I){i.value=I,I||(r.value="")}function O(I){r.value==="oauth2.APP_DELETION_CONFIRMATION"?o.dispatch(st.ACTIONS.DELETE_CLIENT,I):o.dispatch(st.ACTIONS.REVOKE_ALL_TOKENS,I)}function S(){navigator.clipboard.writeText(E.value.client_id),u.value=!0,l.value=!1,setTimeout(()=>{u.value=!1},3e3)}function R(){E.value.client_secret&&(navigator.clipboard.writeText(E.value.client_secret),l.value=!0,u.value=!1,setTimeout(()=>{l.value=!1},3e3))}return Ce(()=>c.value,I=>{I&&f(!1)}),Je(()=>{m(),navigator.clipboard&&(d.value=!0)}),ct(()=>{o.commit(st.MUTATIONS.EMPTY_CLIENT),o.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)}),(I,g)=>{const N=q("Modal");return h(),v("div",kit,[i.value?(h(),B(N,{key:0,title:I.$t("common.CONFIRMATION"),message:I.$t(r.value),onConfirmAction:g[0]||(g[0]=b=>O(E.value.id)),onCancelAction:g[1]||(g[1]=b=>f(!1)),onKeydown:g[2]||(g[2]=Ye(b=>f(!1),["esc"]))},null,8,["title","message"])):L("",!0),E.value&&E.value.client_id?(h(),v("div",wit,[T(n)||c.value?(h(),v("div",Mit,A(I.$t(T(n)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):L("",!0),p("dl",null,[p("dt",null,A(I.$t("oauth2.APP.CLIENT_ID"))+":",1),p("dd",null,[x(A(E.value.client_id)+" ",1),T(n)&&d.value?(h(),v("i",{key:0,class:Oe(`fa fa-${u.value?"check":"copy"}`),"aria-hidden":"true",title:I.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:S},null,10,Wit)):L("",!0)]),T(n)&&E.value.client_secret?(h(),v("dt",Fit,A(I.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):L("",!0),T(n)&&E.value.client_secret?(h(),v("dd",zit,[x(A(E.value.client_secret)+" ",1),d.value?(h(),v("i",{key:0,class:Oe(`fa fa-${l.value?"check":"copy"}`),"aria-hidden":"true",title:I.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:R},null,10,xit)):L("",!0)])):L("",!0),p("dt",null,A(Fe(I.$t("oauth2.APP.ISSUE_AT")))+":",1),p("dd",null,[p("time",null,A(T(Ut)(E.value.issued_at,T(a).timezone,T(a).date_format)),1)]),p("dt",null,A(I.$t("oauth2.APP.NAME"))+":",1),p("dd",null,A(E.value.name),1),p("dt",null,A(I.$t("oauth2.APP.DESCRIPTION"))+":",1),p("dd",{class:Oe({"no-description":!E.value.client_description})},A(E.value.client_description?E.value.client_description:I.$t("common.NO_DESCRIPTION")),3),p("dt",null,A(I.$t("oauth2.APP.URL"))+":",1),p("dd",null,A(E.value.website),1),p("dt",null,A(I.$t("oauth2.APP.REDIRECT_URL"))+":",1),p("dd",null,A(E.value.redirect_uris.length>0?E.value.redirect_uris[0]:""),1),p("dt",null,A(I.$t("oauth2.APP.SCOPE.LABEL"))+":",1),p("dd",Bit,[(h(!0),v(re,null,be(E.value.scope.split(" "),b=>(h(),v("span",{class:"client-scope",key:b},[p("code",null,A(b),1)]))),128))])]),p("div",Git,[p("button",{class:"danger",onClick:g[3]||(g[3]=b=>_(!1))},A(I.$t("oauth2.REVOKE_ALL_TOKENS")),1),p("button",{class:"danger",onClick:g[4]||(g[4]=b=>_(!0))},A(I.$t("oauth2.DELETE_APP")),1),p("button",{onClick:g[5]||(g[5]=b=>I.$router.push("/profile/apps"))},A(I.$t("buttons.BACK")),1)])])):(h(),v("div",Vit,[p("p",Hit,A(I.$t("oauth2.NO_APP")),1),p("button",{onClick:g[6]||(g[6]=b=>I.$router.push("/profile/apps"))},A(I.$t("buttons.BACK")),1)]))])}}}),kh=ae(Kit,[["__scopeId","data-v-7371d7c1"]]),qit={id:"oauth2-apps-list"},jit={class:"apps-list"},Yit={key:0},Xit={class:"app-issued-at"},Qit={key:1,class:"no-apps"},Zit={class:"app-list-buttons"},Jit=X({__name:"UserAppsList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=_e(t),a=De(),s=rt();let o=u(s.query);const i=F(()=>a.getters[st.GETTERS.CLIENTS]),r=F(()=>a.getters[st.GETTERS.CLIENTS_PAGINATION]);function u(d){const E={};return d.page&&(E.page=bo(d.page,cr)),E}function l(d){a.dispatch(st.ACTIONS.GET_CLIENTS,d)}return Ce(()=>s.query,async d=>{o=u(d),l(o)}),Je(()=>{l(o)}),(d,E)=>{const c=q("router-link");return h(),v("div",qit,[p("h1",jit,A(d.$t("oauth2.APPS_LIST")),1),i.value.length>0?(h(),v("ul",Yit,[(h(!0),v(re,null,be(i.value,m=>(h(),v("li",{key:m.client_id},[w(c,{to:{name:"UserApp",params:{id:m.id}}},{default:Y(()=>[x(A(m.name),1)]),_:2},1032,["to"]),p("span",Xit,[x(A(d.$t("oauth2.APP.ISSUE_AT"))+" ",1),p("time",null,A(T(Ut)(m.issued_at,T(n).timezone,T(n).date_format)),1)])]))),128))])):(h(),v("div",Qit,A(d.$t("oauth2.NO_APPS")),1)),i.value.length>0?(h(),B(Qn,{key:2,pagination:r.value,path:"/profile/apps",query:T(o)},null,8,["pagination","query"])):L("",!0),p("div",Zit,[T(n).suspended_at?L("",!0):(h(),v("button",{key:0,onClick:E[0]||(E[0]=m=>d.$router.push("/profile/apps/new"))},A(d.$t("oauth2.NEW_APP")),1)),p("button",{onClick:E[1]||(E[1]=m=>d.$router.push("/"))},A(d.$t("common.HOME")),1)])])}}}),ert=ae(Jit,[["__scopeId","data-v-018b8e7c"]]);function dd(e){return e===0?!1:Array.isArray(e)&&e.length===0?!0:!e}function trt(e){return(...t)=>!e(...t)}function nrt(e,t){return e===void 0&&(e="undefined"),e===null&&(e="null"),e===!1&&(e="false"),e.toString().toLowerCase().indexOf(t.trim())!==-1}function eI(e,t,n,a){return t?e.filter(s=>nrt(a(s,n),t)).sort((s,o)=>a(s,n).length-a(o,n).length):e}function art(e){return e.filter(t=>!t.$isLabel)}function Ed(e,t){return n=>n.reduce((a,s)=>s[e]&&s[e].length?(a.push({$groupLabel:s[t],$isLabel:!0}),a.concat(s[e])):a,[])}function srt(e,t,n,a,s){return o=>o.map(i=>{if(!i[n])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];const r=eI(i[n],e,t,s);return r.length?{[a]:i[a],[n]:r}:[]})}const wh=(...e)=>t=>e.reduce((n,a)=>a(n),t);var ort={data(){return{search:"",isOpen:!1,preferredOpenDirection:"below",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default(e,t){return dd(e)?"":t?e[t]:e}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},tagPosition:{type:String,default:"top"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1},preventAutofocus:{type:Boolean,default:!1}},mounted(){!this.multiple&&this.max&&console.warn("[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false."),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue(){return this.modelValue||this.modelValue===0?Array.isArray(this.modelValue)?this.modelValue:[this.modelValue]:[]},filteredOptions(){const e=this.search||"",t=e.toLowerCase().trim();let n=this.options.concat();return this.internalSearch?n=this.groupValues?this.filterAndFlat(n,t,this.label):eI(n,t,this.label,this.customLabel):n=this.groupValues?Ed(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(trt(this.isSelected)):n,this.taggable&&t.length&&!this.isExistingOption(t)&&(this.tagPosition==="bottom"?n.push({isTag:!0,label:e}):n.unshift({isTag:!0,label:e})),n.slice(0,this.optionsLimit)},valueKeys(){return this.trackBy?this.internalValue.map(e=>e[this.trackBy]):this.internalValue},optionKeys(){return(this.groupValues?this.flatAndStrip(this.options):this.options).map(t=>this.customLabel(t,this.label).toString().toLowerCase())},currentOptionLabel(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue:{handler(){this.resetAfter&&this.internalValue.length&&(this.search="",this.$emit("update:modelValue",this.multiple?[]:null))},deep:!0},search(){this.$emit("search-change",this.search)}},emits:["open","search-change","close","select","update:modelValue","remove","tag"],methods:{getValue(){return this.multiple?this.internalValue:this.internalValue.length===0?null:this.internalValue[0]},filterAndFlat(e,t,n){return wh(srt(t,n,this.groupValues,this.groupLabel,this.customLabel),Ed(this.groupValues,this.groupLabel))(e)},flatAndStrip(e){return wh(Ed(this.groupValues,this.groupLabel),art)(e)},updateSearch(e){this.search=e},isExistingOption(e){return this.options?this.optionKeys.indexOf(e)>-1:!1},isSelected(e){const t=this.trackBy?e[this.trackBy]:e;return this.valueKeys.indexOf(t)>-1},isOptionDisabled(e){return!!e.$isDisabled},getOptionLabel(e){if(dd(e))return"";if(e.isTag)return e.label;if(e.$isLabel)return e.$groupLabel;const t=this.customLabel(e,this.label);return dd(t)?"":t},select(e,t){if(e.$isLabel&&this.groupSelect){this.selectGroup(e);return}if(!(this.blockKeys.indexOf(t)!==-1||this.disabled||e.$isDisabled||e.$isLabel)&&!(this.max&&this.multiple&&this.internalValue.length===this.max)&&!(t==="Tab"&&!this.pointerDirty)){if(e.isTag)this.$emit("tag",e.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(e)){t!=="Tab"&&this.removeElement(e);return}this.multiple?this.$emit("update:modelValue",this.internalValue.concat([e])):this.$emit("update:modelValue",e),this.$emit("select",e,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup(e){const t=this.options.find(n=>n[this.groupLabel]===e.$groupLabel);if(t){if(this.wholeGroupSelected(t)){this.$emit("remove",t[this.groupValues],this.id);const n=this.trackBy?t[this.groupValues].map(s=>s[this.trackBy]):t[this.groupValues],a=this.internalValue.filter(s=>n.indexOf(this.trackBy?s[this.trackBy]:s)===-1);this.$emit("update:modelValue",a)}else{let n=t[this.groupValues].filter(a=>!(this.isOptionDisabled(a)||this.isSelected(a)));this.max&&n.splice(this.max-this.internalValue.length),this.$emit("select",n,this.id),this.$emit("update:modelValue",this.internalValue.concat(n))}this.closeOnSelect&&this.deactivate()}},wholeGroupSelected(e){return e[this.groupValues].every(t=>this.isSelected(t)||this.isOptionDisabled(t))},wholeGroupDisabled(e){return e[this.groupValues].every(this.isOptionDisabled)},removeElement(e,t=!0){if(this.disabled||e.$isDisabled)return;if(!this.allowEmpty&&this.internalValue.length<=1){this.deactivate();return}const n=typeof e=="object"?this.valueKeys.indexOf(e[this.trackBy]):this.valueKeys.indexOf(e);if(this.multiple){const a=this.internalValue.slice(0,n).concat(this.internalValue.slice(n+1));this.$emit("update:modelValue",a)}else this.$emit("update:modelValue",null);this.$emit("remove",e,this.id),this.closeOnSelect&&t&&this.deactivate()},removeLastElement(){this.blockKeys.indexOf("Delete")===-1&&this.search.length===0&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate(){this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&this.pointer===0&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.preventAutofocus||this.$nextTick(()=>this.$refs.search&&this.$refs.search.focus())):this.preventAutofocus||typeof this.$el<"u"&&this.$el.focus(),this.$emit("open",this.id))},deactivate(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search!==null&&typeof this.$refs.search<"u"&&this.$refs.search.blur():typeof this.$el<"u"&&this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle(){this.isOpen?this.deactivate():this.activate()},adjustPosition(){if(typeof window>"u")return;const e=this.$el.getBoundingClientRect().top,t=window.innerHeight-this.$el.getBoundingClientRect().bottom;t>this.maxHeight||t>e||this.openDirection==="below"||this.openDirection==="bottom"?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(t-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(e-40,this.maxHeight))}}},irt={data(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition(){return this.pointer*this.optionHeight},visibleElements(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions(){this.pointerAdjust()},isOpen(){this.pointerDirty=!1},pointer(){this.$refs.search&&this.$refs.search.setAttribute("aria-activedescendant",this.id+"-"+this.pointer.toString())}},methods:{optionHighlight(e,t){return{"multiselect__option--highlight":e===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(t)}},groupHighlight(e,t){if(!this.groupSelect)return["multiselect__option--disabled",{"multiselect__option--group":t.$isLabel}];const n=this.options.find(a=>a[this.groupLabel]===t.$groupLabel);return n&&!this.wholeGroupDisabled(n)?["multiselect__option--group",{"multiselect__option--highlight":e===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(n)}]:"multiselect__option--disabled"},addPointerElement({key:e}="Enter"){this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward(){this.pointer0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet(e){this.pointer=e,this.pointerDirty=!0}}},tI={name:"vue-multiselect",mixins:[ort,irt],compatConfig:{MODE:3,ATTR_ENUMERATED_COERCION:!1},props:{name:{type:String,default:""},modelValue:{type:null,default(){return[]}},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:e=>`and ${e} more`},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},spellcheck:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0},required:{type:Boolean,default:!1}},computed:{hasOptionGroup(){return this.groupValues&&this.groupLabel&&this.groupSelect},isSingleLabelVisible(){return(this.singleValue||this.singleValue===0)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible(){return!this.internalValue.length&&(!this.searchable||!this.isOpen)},visibleValues(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue(){return this.internalValue[0]},deselectLabelText(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText(){return this.showLabels?this.selectLabel:""},selectGroupLabelText(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText(){return this.showLabels?this.selectedLabel:""},inputStyle(){return this.searchable||this.multiple&&this.modelValue&&this.modelValue.length?this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}:""},contentStyle(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove(){return this.openDirection==="above"||this.openDirection==="top"?!0:this.openDirection==="below"||this.openDirection==="bottom"?!1:this.preferredOpenDirection==="above"},showSearchInput(){return this.searchable&&(this.hasSingleSelectedSlot&&(this.visibleSingleValue||this.visibleSingleValue===0)?this.isOpen:!0)}}};const rrt={ref:"tags",class:"multiselect__tags"},urt={class:"multiselect__tags-wrap"},lrt={class:"multiselect__spinner"},crt={key:0},drt={class:"multiselect__option"},Ert={class:"multiselect__option"},prt=x("No elements found. Consider changing the search query."),mrt={class:"multiselect__option"},Trt=x("List is empty.");function _rt(e,t,n,a,s,o){return h(),B("div",{tabindex:e.searchable?-1:n.tabindex,class:[{"multiselect--active":e.isOpen,"multiselect--disabled":n.disabled,"multiselect--above":o.isAbove,"multiselect--has-options-group":o.hasOptionGroup},"multiselect"],onFocus:t[14]||(t[14]=i=>e.activate()),onBlur:t[15]||(t[15]=i=>e.searchable?!1:e.deactivate()),onKeydown:[t[16]||(t[16]=Ye(ve(i=>e.pointerForward(),["self","prevent"]),["down"])),t[17]||(t[17]=Ye(ve(i=>e.pointerBackward(),["self","prevent"]),["up"]))],onKeypress:t[18]||(t[18]=Ye(ve(i=>e.addPointerElement(i),["stop","self"]),["enter","tab"])),onKeyup:t[19]||(t[19]=Ye(i=>e.deactivate(),["esc"])),role:"combobox","aria-owns":"listbox-"+e.id},[Pt(e.$slots,"caret",{toggle:e.toggle},()=>[w("div",{onMousedown:t[1]||(t[1]=ve(i=>e.toggle(),["prevent","stop"])),class:"multiselect__select"},null,32)]),Pt(e.$slots,"clear",{search:e.search}),w("div",rrt,[Pt(e.$slots,"selection",{search:e.search,remove:e.removeElement,values:o.visibleValues,isOpen:e.isOpen},()=>[We(w("div",urt,[(h(!0),B(re,null,be(o.visibleValues,(i,r)=>Pt(e.$slots,"tag",{option:i,search:e.search,remove:e.removeElement},()=>[(h(),B("span",{class:"multiselect__tag",key:r},[w("span",{textContent:A(e.getOptionLabel(i))},null,8,["textContent"]),w("i",{tabindex:"1",onKeypress:Ye(ve(u=>e.removeElement(i),["prevent"]),["enter"]),onMousedown:ve(u=>e.removeElement(i),["prevent"]),class:"multiselect__tag-icon"},null,40,["onKeypress","onMousedown"])]))])),256))],512),[[Go,o.visibleValues.length>0]]),e.internalValue&&e.internalValue.length>n.limit?Pt(e.$slots,"limit",{key:0},()=>[w("strong",{class:"multiselect__strong",textContent:A(n.limitText(e.internalValue.length-n.limit))},null,8,["textContent"])]):L("v-if",!0)]),w(ym,{name:"multiselect__loading"},{default:Y(()=>[Pt(e.$slots,"loading",{},()=>[We(w("div",lrt,null,512),[[Go,n.loading]])])]),_:3}),e.searchable?(h(),B("input",{key:0,ref:"search",name:n.name,id:e.id,type:"text",autocomplete:"off",spellcheck:n.spellcheck,placeholder:e.placeholder,required:n.required,style:o.inputStyle,value:e.search,disabled:n.disabled,tabindex:n.tabindex,onInput:t[2]||(t[2]=i=>e.updateSearch(i.target.value)),onFocus:t[3]||(t[3]=ve(i=>e.activate(),["prevent"])),onBlur:t[4]||(t[4]=ve(i=>e.deactivate(),["prevent"])),onKeyup:t[5]||(t[5]=Ye(i=>e.deactivate(),["esc"])),onKeydown:[t[6]||(t[6]=Ye(ve(i=>e.pointerForward(),["prevent"]),["down"])),t[7]||(t[7]=Ye(ve(i=>e.pointerBackward(),["prevent"]),["up"])),t[9]||(t[9]=Ye(ve(i=>e.removeLastElement(),["stop"]),["delete"]))],onKeypress:t[8]||(t[8]=Ye(ve(i=>e.addPointerElement(i),["prevent","stop","self"]),["enter"])),class:"multiselect__input","aria-controls":"listbox-"+e.id},null,44,["name","id","spellcheck","placeholder","required","value","disabled","tabindex","aria-controls"])):L("v-if",!0),o.isSingleLabelVisible?(h(),B("span",{key:1,class:"multiselect__single",onMousedown:t[10]||(t[10]=ve((...i)=>e.toggle&&e.toggle(...i),["prevent"]))},[Pt(e.$slots,"singleLabel",{option:o.singleValue},()=>[x(A(e.currentOptionLabel),1)])],32)):L("v-if",!0),o.isPlaceholderVisible?(h(),B("span",{key:2,class:"multiselect__placeholder",onMousedown:t[11]||(t[11]=ve((...i)=>e.toggle&&e.toggle(...i),["prevent"]))},[Pt(e.$slots,"placeholder",{},()=>[x(A(e.placeholder),1)])],32)):L("v-if",!0)],512),w(ym,{name:"multiselect"},{default:Y(()=>[We(w("div",{class:"multiselect__content-wrapper",onFocus:t[12]||(t[12]=(...i)=>e.activate&&e.activate(...i)),tabindex:"-1",onMousedown:t[13]||(t[13]=ve(()=>{},["prevent"])),style:{maxHeight:e.optimizedHeight+"px"},ref:"list"},[w("ul",{class:"multiselect__content",style:o.contentStyle,role:"listbox",id:"listbox-"+e.id,"aria-multiselectable":e.multiple},[Pt(e.$slots,"beforeList"),e.multiple&&e.max===e.internalValue.length?(h(),B("li",crt,[w("span",drt,[Pt(e.$slots,"maxElements",{},()=>[x("Maximum of "+A(e.max)+" options selected. First remove a selected option to select another.",1)])])])):L("v-if",!0),!e.max||e.internalValue.length(h(),B("li",{class:"multiselect__element",key:r,"aria-selected":e.isSelected(i),id:e.id+"-"+r,role:i&&(i.$isLabel||i.$isDisabled)?null:"option"},[i&&(i.$isLabel||i.$isDisabled)?L("v-if",!0):(h(),B("span",{key:0,class:[e.optionHighlight(r,i),"multiselect__option"],onClick:ve(u=>e.select(i),["stop"]),onMouseenter:ve(u=>e.pointerSet(r),["self"]),"data-select":i&&i.isTag?e.tagPlaceholder:o.selectLabelText,"data-selected":o.selectedLabelText,"data-deselect":o.deselectLabelText},[Pt(e.$slots,"option",{option:i,search:e.search,index:r},()=>[w("span",null,A(e.getOptionLabel(i)),1)])],42,["onClick","onMouseenter","data-select","data-selected","data-deselect"])),i&&(i.$isLabel||i.$isDisabled)?(h(),B("span",{key:1,"data-select":e.groupSelect&&o.selectGroupLabelText,"data-deselect":e.groupSelect&&o.deselectGroupLabelText,class:[e.groupHighlight(r,i),"multiselect__option"],onMouseenter:ve(u=>e.groupSelect&&e.pointerSet(r),["self"]),onMousedown:ve(u=>e.selectGroup(i),["prevent"])},[Pt(e.$slots,"option",{option:i,search:e.search,index:r},()=>[w("span",null,A(e.getOptionLabel(i)),1)])],42,["data-select","data-deselect","onMouseenter","onMousedown"])):L("v-if",!0)],8,["aria-selected","id","role"]))),128)):L("v-if",!0),We(w("li",null,[w("span",Ert,[Pt(e.$slots,"noResult",{search:e.search},()=>[prt])])],512),[[Go,n.showNoResults&&e.filteredOptions.length===0&&e.search&&!n.loading]]),We(w("li",null,[w("span",mrt,[Pt(e.$slots,"noOptions",{},()=>[Trt])])],512),[[Go,n.showNoOptions&&(e.options.length===0||o.hasOptionGroup===!0&&e.filteredOptions.length===0)&&!e.search&&!n.loading]]),Pt(e.$slots,"afterList")],12,["id","aria-multiselectable"])],36),[[Go,e.isOpen]])]),_:3})],42,["tabindex","aria-owns"])}tI.render=_rt;const frt=X({__name:"SportsMultiSelect",props:{sports:{},name:{},equipmentSports:{default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["updatedValues"],setup(e,{emit:t}){const n=e,{equipmentSports:a,name:s,sports:o}=_e(n),i=t,r=Ie([]);function u(l){i("updatedValues",l.map(d=>d.id))}return Ce(()=>a.value,async l=>{r.value=l,u(l)}),Je(()=>{a.value&&(r.value=a.value)}),(l,d)=>T(o)?(h(),B(T(tI),{key:0,placeholder:"",id:T(s),name:T(s),disabled:l.disabled,modelValue:r.value,"onUpdate:modelValue":[d[0]||(d[0]=E=>r.value=E),u],multiple:!0,options:T(o),taggable:!0,label:"translatedLabel","track-by":"id",selectLabel:l.$t("workouts.MULTISELECT.selectLabel"),selectedLabel:l.$t("workouts.MULTISELECT.selectedLabel"),deselectLabel:l.$t("workouts.MULTISELECT.deselectLabel")},null,8,["id","name","disabled","modelValue","options","selectLabel","selectedLabel","deselectLabel"])):L("",!0)}}),hrt=ae(frt,[["__scopeId","data-v-016d8e47"]]);function Yp(){const e=rt(),t=De(),{t:n}=$t(),a=F(()=>u(s.value)),s=F(()=>t.getters[xe.GETTERS.EQUIPMENTS]),o=F(()=>t.getters[xe.GETTERS.LOADING]),i=F(()=>t.getters[xe.GETTERS.EQUIPMENT_TYPES]),r=F(()=>CO(i.value,n));function u(l){if(!e.params.id)return null;const d=l.filter(E=>e.params.id?E.id===e.params.id:null);return d.length===0?null:d[0]}return{equipment:a,equipments:s,equipmentTypes:i,translatedEquipmentTypes:r,equipmentsLoading:o}}const Srt={id:"new-equipment"},Art={key:0,id:"new-equipment-title"},Ort={id:"equipment-form"},Irt={class:"form-items"},grt={class:"form-item"},Rrt={for:"equipment-label"},Nrt={class:"equipment-label-help"},vrt={class:"info-box"},brt={class:"form-item"},Crt={for:"equipment-type-id"},Prt=["value"],Drt={key:0,class:"equipment-warning"},Lrt={class:"info-box"},yrt={class:"form-item"},$rt={for:"equipment-description"},Urt={key:1,class:"form-item-checkbox"},krt={for:"equipment-active"},wrt={class:"form-item"},Mrt={for:"equipment-sports"},Wrt={class:"form-buttons"},Frt=["disabled"],zrt=["disabled"],xrt=X({__name:"EquipmentEdition",props:{translatedEquipmentTypes:{},equipmentsLoading:{type:Boolean}},setup(e){const t=e,{equipmentsLoading:n,translatedEquipmentTypes:a}=_e(t),s=De(),o=rt(),{t:i}=$t(),{errorMessages:r}=Be(),{equipment:u}=Yp(),l=yt({id:"",label:"",description:"",equipmentTypeId:0,isActive:!0,defaultForSportIds:[]}),d=Ie(!1),E=F(()=>ia(s.getters[Ht.GETTERS.SPORTS],i)),c=F(()=>a.value.filter(b=>b.id===l.equipmentTypeId)),m=F(()=>c.value.length>0?E.value.filter(b=>PO[c.value[0].label].includes(b.label)):[]),_=Ie([]),f=F(()=>a.value.filter(b=>{var C;return b.is_active||((C=u.value)==null?void 0:C.equipment_type.id)===b.id}));function O(b){_.value=ia(E.value,i,"all").filter(C=>b.default_for_sport_ids.includes(C.id))}function S(b){l.id=b.id,l.label=b.label,l.description=b.description?b.description:"",l.equipmentTypeId=b.equipment_type.id,l.isActive=b.is_active,O(b)}function R(){s.dispatch(xe.ACTIONS[l.id?"UPDATE_EQUIPMENT":"ADD_EQUIPMENT"],l)}function I(b){l.description=b}function g(){d.value=!0}function N(b){l.defaultForSportIds=b}return Ce(()=>u.value,b=>{o.params.id&&(b!=null&&b.id)&&S(b)}),Ce(()=>l.equipmentTypeId,b=>{u.value&&b===u.value.equipment_type.id?O(u.value):_.value=[]}),mt(()=>{var C;const b=document.getElementById("equipment-label");b==null||b.focus(),o.params.id&&o.params.id&&(C=u.value)!=null&&C.id&&S(u.value)}),(b,C)=>{var M,P;const y=q("CustomTextArea"),D=q("ErrorMessage");return h(),v("div",Srt,[l.id?L("",!0):(h(),v("h1",Art,A(b.$t("equipments.ADD_A_NEW_EQUIPMENT")),1)),p("div",Ort,[p("form",{class:Oe({errors:d.value}),onSubmit:ve(R,["prevent"])},[p("div",Irt,[p("div",grt,[p("label",Rrt,A(Fe(b.$t("common.LABEL")))+"* ",1),We(p("input",{id:"equipment-label",maxlength:"50",type:"text",required:"",onInvalid:g,"onUpdate:modelValue":C[0]||(C[0]=W=>l.label=W)},null,544),[[it,l.label]]),p("div",Nrt,[p("span",vrt,[C[4]||(C[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(b.$t("equipments.50_CHARACTERS_MAX")),1)])])]),p("div",brt,[p("label",Crt,A(Fe(b.$t("equipments.EQUIPMENT_TYPE")))+"* ",1),We(p("select",{id:"equipment-type-id",required:"",onInvalid:g,"onUpdate:modelValue":C[1]||(C[1]=W=>l.equipmentTypeId=W)},[(h(!0),v(re,null,be(f.value,W=>(h(),v("option",{value:W.id,key:W.id},A(W.translatedLabel)+" "+A(W.is_active?"":`(${b.$t("common.INACTIVE")})`),9,Prt))),128))],544),[[Jt,l.equipmentTypeId]])]),(M=T(u))!=null&&M.workouts_count&&l.equipmentTypeId!==((P=T(u))==null?void 0:P.equipment_type.id)?(h(),v("div",Drt,[p("span",Lrt,[C[5]||(C[5]=p("i",{class:"fa fa-exclamation-triangle warning","aria-hidden":"true"},null,-1)),x(" "+A(b.$t("equipments.ALL_WORKOUTS_ASSOCIATIONS_REMOVED")),1)])])):L("",!0),p("div",yrt,[p("label",$rt,A(b.$t("common.DESCRIPTION")),1),w(y,{name:"equipment-description",charLimit:200,input:l.description,onUpdateValue:I},null,8,["input"])]),l.id?(h(),v("div",Urt,[p("label",krt,A(Fe(b.$t("common.ACTIVE"))),1),We(p("input",{id:"equipment-active",name:"equipment-active",type:"checkbox","onUpdate:modelValue":C[2]||(C[2]=W=>l.isActive=W)},null,512),[[El,l.isActive]])])):L("",!0),p("div",wrt,[p("label",Mrt,A(Fe(b.$t("equipments.DEFAULT_FOR_SPORTS",0))),1),w(hrt,{sports:m.value,name:"equipment-sports",equipmentSports:_.value,disabled:!l.equipmentTypeId,onUpdatedValues:N},null,8,["sports","equipmentSports","disabled"])])]),T(r)?(h(),B(D,{key:0,message:T(r),"no-margin":!0},null,8,["message"])):L("",!0),p("div",Wrt,[p("button",{class:"confirm",type:"submit",disabled:T(n)},A(b.$t("buttons.SUBMIT")),9,Frt),p("button",{class:"cancel",disabled:T(n),onClick:C[3]||(C[3]=ve(()=>{var W;return b.$router.push((W=T(u))!=null&&W.id?b.$route.query.fromEdition?"/profile/edit/equipments":`/profile/equipments/${T(u).id}`:"/profile/equipments")},["prevent"]))},A(b.$t("buttons.CANCEL")),9,zrt)])],34)])])}}}),Mh=ae(xrt,[["__scopeId","data-v-89043f9c"]]),Brt={key:0,id:"user-equipments"},Wh=X({__name:"index",props:{user:{},isEdition:{type:Boolean}},setup(e){const t=e,{user:n}=_e(t),a=rt(),s=De(),{equipments:o,translatedEquipmentTypes:i,equipmentsLoading:r}=Yp();return Ce(()=>a.name,u=>{u==="UserEquipmentsList"&&s.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),Je(()=>{s.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES),s.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(u,l)=>{const d=q("router-view");return T(i)?(h(),v("div",Brt,[w(d,{authUser:T(n),equipments:T(o),translatedEquipmentTypes:T(i),isEdition:u.isEdition,equipmentsLoading:T(r)},null,8,["authUser","equipments","translatedEquipmentTypes","isEdition","equipmentsLoading"])])):L("",!0)}}}),Grt=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const a=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const s=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return t?`${n==="0"?"":`${n}d `}${a==="00"?"":`${a}h `}${s}m ${o}s`:`${a==="00"?"":`${a}:`}${s}:${o}`},Xp=(e,t)=>{const n=e.match(/day/g)?e.split(", ")[1]:e;return{days:e.match(/day/g)?`${e.split(" ")[0]} ${e.match(/days/g)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}},OE=(e,t)=>{if(e.match(/day/g)){const n=Xp(e,t);return`${n.days}, ${n.duration}`}return e},Vrt={key:0,id:"user-equipment",class:"description-list"},Hrt={class:"equipment-type"},Krt={key:0,class:"equipment-description"},qrt={key:1,class:"no-description"},jrt={class:"duration-detail"},Yrt={class:"sports-list"},Xrt={class:"equipment-buttons"},Qrt=["disabled"],Zrt=["disabled"],Jrt=["disabled"],eut=["disabled"],tut={key:1},nut={class:"no-equipment"},aut=["disabled"],sut=X({__name:"UserEquipment",props:{authUser:{},equipmentsLoading:{type:Boolean}},setup(e){const t=e,{authUser:n}=_e(t),a=De(),{t:s}=$t(),{errorMessages:o}=Be(),{equipment:i}=Yp(),{sportColors:r,sports:u}=nn(),l=Ie(!1),d=F(()=>ia(u.value,s,"all",n.value.sports_list).filter(_=>{var f;return i.value?(f=i.value)==null?void 0:f.default_for_sport_ids.includes(_.id):!1}));function E(_){l.value=_}function c(){var _,f;if((_=i.value)!=null&&_.id){const O={id:i.value.id};((f=i.value)==null?void 0:f.workouts_count)>0&&(O.force=!0),a.dispatch(xe.ACTIONS.DELETE_EQUIPMENT,O)}}function m(_){a.dispatch(xe.ACTIONS.REFRESH_EQUIPMENT,_)}return Je(()=>{a.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(_,f)=>{const O=q("Modal"),S=q("EquipmentTypeImage"),R=q("router-link"),I=q("Distance"),g=q("SportImage"),N=q("ErrorMessage");return T(i)?(h(),v("div",Vrt,[l.value?(h(),B(O,{key:0,title:_.$t("common.CONFIRMATION"),message:"user.PROFILE.EQUIPMENTS.CONFIRM_EQUIPMENT_DELETION",strongMessage:T(i).label,warning:T(i).workouts_count>0?_.$t("user.PROFILE.EQUIPMENTS.EQUIPMENT_ASSOCIATED_WITH_WORKOUTS"):"",onConfirmAction:c,onCancelAction:f[0]||(f[0]=b=>E(!1)),onKeydown:f[1]||(f[1]=Ye(b=>E(!1),["esc"]))},null,8,["title","strongMessage","warning"])):L("",!0),p("dl",null,[p("dt",null,A(Fe(_.$t("common.LABEL"))),1),p("dd",null,A(T(i).label),1),p("dt",null,A(Fe(_.$t("equipments.EQUIPMENT_TYPE"))),1),p("dd",Hrt,[w(S,{title:_.$t(`equipment_types.${T(i).equipment_type.label}.LABEL`),"equipment-type-label":T(i).equipment_type.label},null,8,["title","equipment-type-label"]),p("span",null,A(_.$t(`equipment_types.${T(i).equipment_type.label}.LABEL`))+" "+A(T(i).equipment_type.is_active?"":`(${_.$t("common.INACTIVE")})`),1)]),p("dt",null,A(_.$t("common.DESCRIPTION")),1),p("dd",null,[T(i).description?(h(),v("span",Krt,A(T(i).description),1)):(h(),v("span",qrt,A(_.$t("common.NO_DESCRIPTION")),1))]),p("dt",null,A(Fe(_.$t("workouts.WORKOUT",0))),1),p("dd",null,[T(i).workouts_count?(h(),B(R,{key:0,to:`/workouts?equipment_id=${T(i).id}`},{default:Y(()=>[x(A(T(i).workouts_count),1)]),_:1},8,["to"])):(h(),v(re,{key:1},[x(A(T(i).workouts_count),1)],64))]),p("dt",null,A(Fe(_.$t("workouts.TOTAL_DISTANCE",0))),1),p("dd",null,[w(I,{distance:T(i).total_distance,unitFrom:"km",digits:2,displayUnit:!1,useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"]),p("span",null,A(T(n).imperial_units?"miles":"km"),1)]),p("dt",null,A(Fe(_.$t("workouts.TOTAL_DURATION",0))),1),p("dd",null,[x(A(T(OE)(T(i).total_moving,_.$t))+" ",1),T(i).total_duration!==T(i).total_moving?(h(),v(re,{key:0},[f[7]||(f[7]=x(" (")),p("span",jrt,A(_.$t("common.TOTAL_DURATION_WITH_PAUSES"))+": ",1),x(" "+A(T(OE)(T(i).total_duration,_.$t))+") ",1)],64)):L("",!0)]),p("dt",null,A(Fe(_.$t("common.ACTIVE",0))),1),p("dd",null,[p("i",{class:Oe(`fa fa-${T(i).is_active?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),T(i).default_for_sport_ids.length>0?(h(),v(re,{key:0},[p("dt",null,A(Fe(_.$t("equipments.DEFAULT_FOR_SPORTS",0))),1),p("dd",Yrt,[(h(!0),v(re,null,be(d.value,b=>(h(),v("span",{class:Oe(["sport-badge",{inactive:!b.is_active_for_user}]),key:b.label},[w(g,{title:b.translatedLabel,"sport-label":b.label,color:b.color?b.color:T(r)[b.label]},null,8,["title","sport-label","color"]),w(R,{to:`/profile/sports/${b.id}?fromEquipmentId=${T(i).id}`},{default:Y(()=>[x(A(b.translatedLabel)+" "+A(b.is_active_for_user?"":`(${_.$t("common.INACTIVE")})`),1)]),_:2},1032,["to"])],2))),128))])],64)):L("",!0)]),T(o)?(h(),B(N,{key:1,message:T(o)},null,8,["message"])):L("",!0),p("div",Xrt,[T(n).suspended_at?L("",!0):(h(),v(re,{key:0},[p("button",{onClick:f[2]||(f[2]=b=>_.$router.push(`/profile/edit/equipments/${T(i).id}`)),disabled:_.equipmentsLoading},A(_.$t("buttons.EDIT")),9,Qrt),p("button",{disabled:_.equipmentsLoading,onClick:f[3]||(f[3]=b=>m(T(i).id))},A(_.$t("buttons.REFRESH_TOTALS")),9,Zrt),p("button",{class:"danger",onClick:f[4]||(f[4]=b=>l.value=!0),disabled:_.equipmentsLoading},A(_.$t("buttons.DELETE")),9,Jrt)],64)),p("button",{disabled:_.equipmentsLoading,onClick:f[5]||(f[5]=b=>_.$router.push(_.$route.query.fromWorkoutId?`/workouts/${_.$route.query.fromWorkoutId}`:_.$route.query.fromSportId?`/profile/sports/${_.$route.query.fromSportId}`:"/profile/equipments"))},A(_.$t("buttons.BACK")),9,eut)])])):(h(),v("div",tut,[p("p",nut,A(_.$t("equipments.NO_EQUIPMENT")),1),p("button",{onClick:f[6]||(f[6]=b=>_.$router.push("/profile/equipments")),disabled:_.equipmentsLoading},A(_.$t("buttons.BACK")),9,aut)]))}}}),out=ae(sut,[["__scopeId","data-v-a3438555"]]),iut={id:"user-equipments-list"},rut={key:0,class:"mobile-display"},uut={key:1,class:"equipments-list"},lut={key:3},cut={class:"responsive-table"},dut={class:"text-left"},Eut={class:"text-left"},put={class:"text-left"},mut={class:"text-left"},Tut={key:0},_ut={class:"equipment-label"},fut={class:"cell-heading"},hut={class:"column"},Sut={class:"cell-heading"},Aut={class:"column"},Out={class:"cell-heading"},Iut={class:"active"},gut={class:"cell-heading"},Rut={key:0,class:"action-buttons"},Nut={class:"cell-heading"},vut=["onClick"],but={class:"equipments-list-buttons"},Cut=X({__name:"UserEquipmentsList",props:{equipments:{},translatedEquipmentTypes:{},authUser:{},isEdition:{type:Boolean}},setup(e){const t=e,{authUser:n,isEdition:a,equipments:s,translatedEquipmentTypes:o}=_e(t),i=F(()=>r(s.value));function r(u){const l={};return u.map(d=>{d.equipment_type.id in l?l[d.equipment_type.id].push(d):l[d.equipment_type.id]=[d]}),l}return(u,l)=>{const d=q("EquipmentTypeImage"),E=q("router-link"),c=q("Distance");return h(),v("div",iut,[T(s).length>0?(h(),v("div",rut,[T(a)?L("",!0):(h(),v("button",{key:0,onClick:l[0]||(l[0]=m=>u.$router.push("/profile/edit/equipments"))},A(u.$t("equipments.EDIT_EQUIPMENTS")),1)),T(a)?L("",!0):(h(),v("button",{key:1,onClick:l[1]||(l[1]=m=>u.$router.push("/profile/equipments/new"))},A(u.$t("equipments.NEW_EQUIPMENT")),1)),T(a)?(h(),v("button",{key:2,onClick:l[2]||(l[2]=m=>u.$router.push("/profile/equipments"))},A(u.$t("buttons.BACK")),1)):(h(),v("button",{key:3,onClick:l[3]||(l[3]=m=>u.$router.push("/"))},A(u.$t("common.HOME")),1))])):L("",!0),T(a)?L("",!0):(h(),v("h1",uut,A(u.$t("user.PROFILE.EQUIPMENTS.YOUR_EQUIPMENTS")),1)),T(s).length===0?(h(),v("p",{key:2,class:Oe(["no-equipments",{edition:T(a)}])},A(u.$t("equipments.NO_EQUIPMENTS")),3)):(h(),v("div",lut,[(h(!0),v(re,null,be(T(o),m=>(h(),v(re,{key:m.label},[i.value[m.id]?(h(),v(re,{key:0},[p("h2",null,[w(d,{title:m.translatedLabel,"equipment-type-label":m.label},null,8,["title","equipment-type-label"]),x(" "+A(m.translatedLabel)+" "+A(m.is_active?"":`(${u.$t("common.INACTIVE")})`),1)]),p("div",cut,[p("table",null,[p("thead",null,[p("tr",null,[p("th",dut,A(u.$t("common.LABEL")),1),p("th",Eut,A(u.$t("workouts.WORKOUT",0)),1),p("th",put,A(Fe(u.$t("workouts.TOTAL_DISTANCE"))),1),p("th",mut,A(u.$t("common.ACTIVE")),1),T(a)&&!T(n).suspended_at?(h(),v("th",Tut,A(u.$t("common.ACTION")),1)):L("",!0),l[8]||(l[8]=p("th",null,null,-1))])]),p("tbody",null,[(h(!0),v(re,null,be(i.value[m.id].sort(T(Hp)),_=>(h(),v("tr",{key:_.label},[p("td",_ut,[p("span",fut,A(u.$t("common.LABEL")),1),w(E,{to:{name:"Equipment",params:{id:_.id}}},{default:Y(()=>[x(A(_.label),1)]),_:2},1032,["to"])]),p("td",hut,[p("span",Sut,A(u.$t("workouts.WORKOUT",0)),1),_.workouts_count?(h(),B(E,{key:0,to:`/workouts?equipment_id=${_.id}`},{default:Y(()=>[x(A(_.workouts_count),1)]),_:2},1032,["to"])):(h(),v(re,{key:1},[x(A(_.workouts_count),1)],64))]),p("td",Aut,[p("span",Out,A(u.$t("workouts.TOTAL_DISTANCE",0)),1),w(c,{distance:_.total_distance,unitFrom:"km",digits:2,displayUnit:!1,useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"]),p("span",null,A(T(n).imperial_units?"miles":"km"),1)]),p("td",Iut,[p("span",gut,A(u.$t("common.ACTIVE")),1),p("i",{class:Oe(`fa fa${_.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),T(a)&&!T(n).suspended_at?(h(),v("td",Rut,[p("span",Nut,A(u.$t("user.PROFILE.SPORT.ACTION")),1),p("button",{onClick:f=>u.$router.push(`/profile/edit/equipments/${_.id}${T(a)?"?fromEdition=true":""}`)},A(u.$t("buttons.EDIT")),9,vut)])):L("",!0)]))),128))])])])],64)):L("",!0)],64))),128))])),p("div",but,[!T(a)&&!T(n).suspended_at&&T(s).length>0?(h(),v("button",{key:0,onClick:l[4]||(l[4]=m=>u.$router.push("/profile/edit/equipments"))},A(u.$t("equipments.EDIT_EQUIPMENTS")),1)):L("",!0),!T(a)&&!T(n).suspended_at?(h(),v("button",{key:1,onClick:l[5]||(l[5]=m=>u.$router.push("/profile/equipments/new"))},A(u.$t("equipments.NEW_EQUIPMENT")),1)):L("",!0),T(a)?(h(),v("button",{key:2,onClick:l[6]||(l[6]=m=>u.$router.push("/profile/equipments"))},A(u.$t("buttons.BACK")),1)):(h(),v("button",{key:3,onClick:l[7]||(l[7]=m=>u.$router.push("/"))},A(u.$t("common.HOME")),1))])])}}}),Fh=ae(Cut,[["__scopeId","data-v-235c4af3"]]),Put=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=_e(t);return(a,s)=>{const o=q("router-view");return h(),v("div",null,[w(o,{authUser:T(n)},null,8,["authUser"])])}}}),Dut={key:0,class:"notification-object"},Lut={class:"box comment-box"},yut=X({__name:"CommentForUser",props:{comment:{},displayObjectName:{type:Boolean},action:{}},setup(e){const t=e,{comment:n,displayObjectName:a}=_e(t),{authUser:s}=qe();return(o,i)=>(h(),v(re,null,[T(a)?(h(),v("div",Dut,A(o.$t("workouts.COMMENTS.COMMENT"))+": ",1)):L("",!0),p("div",Lut,[w(zp,{comment:T(n),authUser:T(s),"display-appeal":!1,"hide-suspension-appeal":T(a),"comments-loading":"null","for-notification":!0,action:o.action,onCommentLinkClicked:i[0]||(i[0]=r=>o.$emit("commentLinkClicked"))},null,8,["comment","authUser","hide-suspension-appeal","action"])])],64))}}),Qp=ae(yut,[["__scopeId","data-v-ed2176b7"]]),$ut={class:"appeal-action"},Uut=X({__name:"WorkoutActionAppeal",props:{action:{},workout:{},displaySuspensionMessage:{type:Boolean,default:!1}},setup(e){const t=e,{workout:n}=_e(t),{appealLoading:a,displayAppealForm:s,success:o,submitAppeal:i,cancelAppeal:r}=Tp(),u=F(()=>`workout_${n.value.id}`);return(l,d)=>(h(),v("div",$ut,[p("div",{class:Oe({suspended:l.displaySuspensionMessage,"info-box":l.displaySuspensionMessage})},[l.displaySuspensionMessage?(h(),v(re,{key:0},[d[4]||(d[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(l.$t("workouts.SUSPENDED_BY_ADMIN")),1)],64)):L("",!0),l.displaySuspensionMessage&&!T(o)&&!T(s)?(h(),v("button",{key:1,class:"transparent appeal-button",onClick:d[0]||(d[0]=E=>s.value=u.value)},A(l.$t("user.APPEAL")),1)):L("",!0)],2),T(s)?(h(),B(Cl,{key:0,"report-action":l.action,success:T(o)===u.value,loading:T(a)===u.value,onSubmitForm:d[2]||(d[2]=E=>T(i)(E,"workout",T(n).id)),onHideMessage:d[3]||(d[3]=E=>s.value=null)},{cancelButton:Y(()=>[p("button",{onClick:d[1]||(d[1]=E=>T(r)())},A(l.$t("buttons.CANCEL")),1)]),_:1},8,["report-action","success","loading"])):L("",!0)]))}}),nI=ae(Uut,[["__scopeId","data-v-a3f01233"]]),kut={key:0,class:"notification-object"},wut=X({__name:"WorkoutForUser",props:{action:{default:null},displayAppeal:{type:Boolean},displayObjectName:{type:Boolean},workout:{},reportId:{}},setup(e){const t=e,{action:n,displayAppeal:a,displayObjectName:s,reportId:o,workout:i}=_e(t),{getWorkoutSport:r}=nn(),{dateFormat:u,imperialUnits:l,timezone:d}=qe(),E=F(()=>r(i.value)),c=F(()=>{var m,_,f;return i.value.suspended===!0&&n.value!==null&&(!n.value.appeal||((m=n.value.appeal)==null?void 0:m.approved)===!1||((_=n.value.appeal)==null?void 0:_.approved)===null&&!((f=n.value.appeal)!=null&&f.updated_at))&&a.value});return(m,_)=>{var R;const f=q("router-link"),O=q("i18n-t"),S=q("AlertMessage");return h(),v(re,null,[T(s)?(h(),v("div",kut,A(m.$t("workouts.WORKOUT"))+": ",1)):L("",!0),w(Hi,{workout:T(i),sport:E.value,user:T(i).user,useImperialUnits:T(l),dateFormat:T(u),timezone:T(d),onWorkoutLinkClicked:_[0]||(_[0]=I=>m.$emit("workoutLinkClicked"))},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]),T(n)&&c.value?(h(),B(nI,{key:1,action:T(n),workout:T(i),"display-suspension-message":T(n).action_type==="workout_suspension"},null,8,["action","workout","display-suspension-message"])):(R=T(i).suspension)!=null&&R.report_id?(h(),B(S,{key:2,message:"workouts.SUSPENDED_BY_ADMIN"},_o({_:2},[T(i).suspension.report_id!==T(o)?{name:"additionalMessage",fn:Y(()=>[w(O,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[w(f,{to:`/admin/reports/${T(i).suspension.report_id}`},{default:Y(()=>[x(" #"+A(T(i).suspension.report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1024)):L("",!0)],64)}}}),Zp=ae(wut,[["__scopeId","data-v-bb831628"]]),Mut={id:"user-sanction"},Wut={key:0},Fut={key:1},zut={key:2},xut={class:"no-warning"},But={class:"buttons"},Gut=X({__name:"UserSanctionDetail",props:{authUser:{}},setup(e){const t=e,{authUser:n}=_e(t),a=De(),s=rt(),{authUserLoading:o,authUserSuccess:i}=qe(),r=Ie(""),u=F(()=>a.getters[K.GETTERS.USER_SANCTION]);function l(){a.dispatch(K.ACTIONS.GET_USER_SANCTION,s.params.action_id)}function d(E){r.value=E,a.dispatch(K.ACTIONS.APPEAL,{actionId:u.value.id,actionType:"user_warning",text:E})}return mt(()=>l()),ct(()=>{a.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.commit(K.MUTATIONS.SET_USER_SANCTION,{})}),(E,c)=>{const m=q("Loader");return h(),v("div",Mut,[T(o)&&!r.value?(h(),v("div",Wut,[w(m)])):u.value.id?(h(),v("div",Fut,[p("h1",null,A(E.$t(`user.PROFILE.SANCTIONS.${u.value.action_type}`,{date:T(Ut)(u.value.created_at,T(n).timezone,T(n).date_format)})),1),u.value.comment?(h(),B(Qp,{key:0,"display-object-name":!0,comment:u.value.comment},null,8,["comment"])):u.value.workout?(h(),B(Zp,{key:1,action:u.value,"display-appeal":!1,"display-object-name":!0,workout:u.value.workout},null,8,["action","workout"])):L("",!0),w(Cl,{"report-action":u.value,success:T(i),loading:T(o),"can-appeal":u.value.action_type!=="user_suspension"&&!T(n).suspended_at,onSubmitForm:d},null,8,["report-action","success","loading","can-appeal"])])):(h(),v("div",zut,[p("div",xut,A(E.$t("user.NO_WARNING_FOUND")),1)])),p("div",But,[p("button",{onClick:c[0]||(c[0]=_=>E.$router.push("/profile/moderation"))},A(E.$t("buttons.BACK")),1),T(n).suspended_at?L("",!0):(h(),v(re,{key:0},[p("button",{onClick:c[1]||(c[1]=_=>E.$router.push("/"))},A(E.$t("common.HOME")),1),p("button",{onClick:c[2]||(c[2]=_=>E.$router.push("/notifications"))},A(E.$t("notifications.NOTIFICATIONS",0)),1)],64))])])}}}),Vut=ae(Gut,[["__scopeId","data-v-f297e854"]]),Hut={id:"user-moderation"},Kut={key:0,id:"user-sanctions"},qut={key:0},jut={class:"last-sanctions"},Yut={key:1},Xut={class:"no-sanctions"},Qut=X({__name:"UserSanctionsList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=_e(t),a=rt(),s=De(),{displayOptions:o}=Be(),{errorMessages:i}=Be();let r=yt(E(a.query));const u=F(()=>s.getters[ue.GETTERS.USER_SANCTIONS]),l=F(()=>s.getters[ue.GETTERS.USER_SANCTIONS_LOADING]),d=F(()=>s.getters[ue.GETTERS.USER_SANCTIONS_PAGINATION]);function E(_){const f={};return _.page&&(f.page=bo(_.page,cr)),f}function c(_){if(_.updated_at)switch(_.approved){case!0:return"APPROVED";case!1:return"REJECTED";default:return"IN_PROGRESS"}return"IN_PROGRESS"}function m(_){s.dispatch(ue.ACTIONS.GET_USER_SANCTIONS,{username:n.value.username,..._})}return Ce(()=>a.query,async _=>{r=E(_),m(r)}),Je(()=>m({})),ct(()=>s.commit(ue.MUTATIONS.UPDATE_USER_SANCTIONS,[])),(_,f)=>{const O=q("router-link"),S=q("ErrorMessage");return h(),v("div",Hut,[p("h1",null,A(_.$t("user.PROFILE.SANCTIONS_RECEIVED")),1),T(n).sanctions_count?(h(),v("div",Kut,[l.value?(h(),v("div",qut,[w(Ml)])):(h(),v(re,{key:1},[p("ul",jut,[(h(!0),v(re,null,be(u.value,R=>(h(),v("li",{key:R.id},[p("div",null,[w(O,{to:`/profile/moderation/sanctions/${R.id}`},{default:Y(()=>[x(A(_.$t(`user.PROFILE.SANCTIONS.${R.action_type}`,{date:T(Ut)(R.created_at,T(o).timezone,T(o).dateFormat)})),1)]),_:2},1032,["to"]),R.appeal?(h(),v("span",{key:0,class:Oe(["info-box appeal",{approved:c(R.appeal)==="APPROVED",rejected:c(R.appeal)==="REJECTED"}])},[p("i",{class:Oe(["fa",{"fa-info-circle":c(R.appeal)!=="REJECTED","fa-times":c(R.appeal)==="REJECTED"}]),"aria-hidden":"true"},null,2),x(" "+A(_.$t(`user.PROFILE.SANCTION_APPEAL.${c(R.appeal)}`)),1)],2)):L("",!0)])]))),128))]),w(Qn,{pagination:d.value,path:"/profile/moderation",query:T(r)},null,8,["pagination","query"])],64))])):(h(),v("div",Yut,[p("p",Xut,A(_.$t("user.PROFILE.NO_SANCTIONS")),1)])),T(i)?(h(),B(S,{key:2,message:T(i),"no-margin":!0},null,8,["message"])):L("",!0),p("div",null,[p("button",{onClick:f[0]||(f[0]=R=>_.$router.push("/"))},A(_.$t("common.HOME")),1)])])}}}),Zut=ae(Qut,[["__scopeId","data-v-868ac62f"]]),Jut={class:"relationships"},elt={key:0},tlt={class:"user-relationships"},nlt={key:1,class:"no-relationships"},alt={class:"profile-buttons"},slt=X({__name:"UserRelationships",props:{user:{},relationship:{}},setup(e){const t=e,{relationship:n,user:a}=_e(t),s=De(),o=rt(),{authUser:i}=qe(),{errorMessages:r}=Be(),u=Ie(null),l=F(()=>({username:a.value.username,relationship:n.value,page:1})),d=F(()=>s.getters[ue.GETTERS.USER_RELATIONSHIPS]),E=F(()=>s.getters[ue.GETTERS.USERS_PAGINATION]);function c(_){s.dispatch(ue.ACTIONS.GET_RELATIONSHIPS,_)}function m(_){u.value=_}return Ce(()=>o.path,_=>{l.value.page=E.value.page,l.value.relationship=_.includes("following")?"following":"followers",c(l.value)}),Ce(()=>o.query,(_,f)=>{_.page!==f.page&&(l.value.page=_.page?+_.page:1,c(l.value))}),Ce(()=>a.value.following,()=>{c(l.value)}),Ce(()=>a.value.followers,()=>{c(l.value)}),Je(()=>c(l.value)),ct(()=>{s.dispatch(ue.ACTIONS.EMPTY_RELATIONSHIPS)}),(_,f)=>{const O=q("ErrorMessage");return h(),v("div",Jut,[d.value.length>0?(h(),v("div",elt,[p("div",tlt,[(h(!0),v(re,null,be(d.value,S=>(h(),B(Wl,{key:S.username,authUser:T(i),user:S,updatedUser:u.value,onUpdatedUserRelationship:m,from:"relationship"},null,8,["authUser","user","updatedUser"]))),128))]),w(Qn,{path:`/profile/${T(n)}`,pagination:E.value,query:{}},null,8,["path","pagination"])])):(h(),v("p",nlt,A(_.$t(`user.RELATIONSHIPS.NO_${T(n).toUpperCase()}`)),1)),T(r)?(h(),B(O,{key:2,message:T(r),"no-margin":!0},null,8,["message"])):L("",!0),p("div",alt,[p("button",{onClick:f[0]||(f[0]=S=>_.$route.path.startsWith("/profile")?_.$router.push("/profile"):_.$router.push(`/users/${T(a).username}`))},A(_.$t("user.PROFILE.BACK_TO_PROFILE")),1)])])}}}),wr=ae(slt,[["__scopeId","data-v-801d27af"]]),olt={id:"users-sports"},zh=X({__name:"index",props:{user:{},isEdition:{type:Boolean}},setup(e){const t=e,{user:n,isEdition:a}=_e(t),s=De(),{t:o}=$t(),{sports:i}=nn(),r=F(()=>ia(i.value,o,"is_active",n.value.sports_list));return ct(()=>{s.commit(st.MUTATIONS.SET_CLIENTS,[])}),(u,l)=>{const d=q("router-view");return h(),v("div",olt,[w(d,{authUser:T(n),isEdition:T(a),translatedSports:r.value},null,8,["authUser","isEdition","translatedSports"])])}}}),ilt=X({__name:"EquipmentBadge",props:{equipment:{},workoutId:{},sportId:{}},setup(e){const t=e,{equipment:n,sportId:a,workoutId:s}=_e(t);return(o,i)=>{var l;const r=q("EquipmentTypeImage"),u=q("router-link");return h(),B(u,{class:Oe(["equipment-badge",{inactive:!T(n).is_active}]),to:{name:"Equipment",params:{id:T(n).id},query:{fromWorkoutId:T(s),fromSportId:(l=T(a))==null?void 0:l.toString()}}},{default:Y(()=>[w(r,{title:o.$t(`equipment_types.${T(n).equipment_type.label}.LABEL`),"equipment-type-label":T(n).equipment_type.label},null,8,["title","equipment-type-label"]),p("span",null,A(T(n).label)+" "+A(T(n).is_active?"":`(${o.$t("common.INACTIVE")})`),1)]),_:1},8,["class","to"])}}}),aI=ae(ilt,[["__scopeId","data-v-35b40eb3"]]),rlt={key:0,id:"user-sport",class:"description-list"},ult={class:"sport-equipments"},llt={key:0,class:"no-equipments"},clt={class:"sport-buttons"},dlt=["disabled"],Elt={key:1},plt={class:"no-sport"},mlt=X({__name:"UserSport",props:{authUser:{},translatedSports:{}},setup(e){const t=e,{translatedSports:n}=_e(t),a=rt(),{errorMessages:s}=Be(),{displayModal:o,sportColors:i,resetSport:r,updateDisplayModal:u}=nn(),{authUserLoading:l}=qe(),d=F(()=>E(n.value));function E(c){if(!a.params.id)return null;const m=c.filter(_=>a.params.id?_.id===+a.params.id:null);return m.length===0?null:m[0]}return Ce(()=>l.value,c=>{!c&&!s.value&&u(!1)}),(c,m)=>{const _=q("Modal"),f=q("SportImage"),O=q("Distance");return d.value?(h(),v("div",rlt,[T(o)?(h(),B(_,{key:0,title:c.$t("common.CONFIRMATION"),message:c.$t(`user.PROFILE.SPORT.CONFIRM_SPORT_RESET${d.value.default_equipments.length>0?"_WITH_EQUIPMENTS":""}`),onConfirmAction:m[0]||(m[0]=S=>T(r)(d.value.id,!0)),onCancelAction:m[1]||(m[1]=S=>T(u)(!1)),onKeydown:m[2]||(m[2]=Ye(S=>T(u)(!1),["esc"]))},null,8,["title","message"])):L("",!0),p("dl",null,[p("dt",null,A(Fe(c.$t("workouts.SPORT",1))),1),p("dd",null,A(d.value.translatedLabel),1),p("dt",null,A(Fe(c.$t("user.PROFILE.SPORT.COLOR"))),1),p("dd",null,[w(f,{title:d.value.translatedLabel,"sport-label":d.value.label,color:d.value.color?d.value.color:T(i)[d.value.label]},null,8,["title","sport-label","color"])]),p("dt",null,A(Fe(c.$t("workouts.WORKOUT",0))),1),p("dd",null,[p("i",{class:Oe(`fa fa-${c.authUser.sports_list.includes(d.value.id)?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),p("dt",null,A(Fe(c.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD"))),1),p("dd",null,[w(O,{distance:d.value.stopped_speed_threshold,unitFrom:"km",speed:!0,useImperialUnits:c.authUser.imperial_units},null,8,["distance","useImperialUnits"])]),p("dt",null,A(Fe(c.$t("common.ACTIVE",0))),1),p("dd",null,[p("i",{class:Oe(`fa fa-${d.value.is_active_for_user?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),p("dt",null,A(c.$t("user.PROFILE.SPORT.DEFAULT_EQUIPMENTS",1)),1),p("dd",ult,[(h(!0),v(re,null,be(d.value.default_equipments,S=>(h(),B(aI,{equipment:S,"sport-id":d.value.id,key:S.label},null,8,["equipment","sport-id"]))),128)),d.value.default_equipments.length===0?(h(),v("div",llt,A(c.$t("equipments.NO_EQUIPMENTS")),1)):L("",!0)])]),p("div",clt,[c.authUser.suspended_at?L("",!0):(h(),v(re,{key:0},[p("button",{onClick:m[3]||(m[3]=S=>c.$router.push(`/profile/edit/sports/${d.value.id}`))},A(c.$t("buttons.EDIT")),1),p("button",{disabled:T(l),class:"danger",onClick:m[4]||(m[4]=ve(S=>T(u)(!0),["prevent"]))},A(c.$t("buttons.RESET")),9,dlt)],64)),p("button",{onClick:m[5]||(m[5]=S=>c.$router.push(T(a).query.fromEquipmentId?`/profile/equipments/${T(a).query.fromEquipmentId}`:"/profile/sports"))},A(c.$t("buttons.BACK")),1)])])):(h(),v("div",Elt,[p("p",plt,A(c.$t("user.NO_SPORT_FOUND")),1),p("button",{onClick:m[6]||(m[6]=S=>c.$router.push("/profile/sports"))},A(c.$t("buttons.BACK")),1)]))}}}),Tlt=ae(mlt,[["__scopeId","data-v-fbec81b5"]]),_lt={key:0,id:"sport-edition"},flt={class:"form-items"},hlt={class:"form-item"},Slt={for:"sport-label"},Alt={class:"form-item"},Olt={for:"sport-color"},Ilt=["disabled"],glt={class:"form-item"},Rlt={for:"sport-threshold"},Nlt=["disabled"],vlt={class:"form-item-checkbox"},blt={for:"equipment-active"},Clt=["checked","disabled"],Plt={class:"form-item"},Dlt={for:"sport-default-equipment"},Llt=["disabled"],ylt={value:""},$lt=["value"],Ult={class:"form-buttons"},klt=["disabled"],wlt=["disabled"],Mlt=X({__name:"UserSportEdition",props:{authUser:{},translatedSports:{}},setup(e){const t=e,{authUser:n,translatedSports:a}=_e(t),{t:s}=$t(),o=De(),i=rt(),{errorMessages:r}=Be(),{defaultColor:u,defaultEquipmentId:l,sportColors:d,sportPayload:E,updateIsActive:c,updateSport:m}=nn(),{authUserLoading:_}=qe(),f=Ie(!1),O=F(()=>I(a.value)),S=F(()=>o.getters[xe.GETTERS.EQUIPMENTS]),R=F(()=>S.value&&O.value?DO(S.value,s,"withIncludedIds",O.value,O.value.default_equipments.map(C=>C.id)):[]);function I(C){if(!i.params.id)return null;const y=C.filter(D=>i.params.id?D.id===+i.params.id:null);return y.length===0?null:y[0]}function g(C,y=!1){C!==null&&(E.sport_id=C.id,E.color=C.color?C.color:d?d[C.label]:u,E.is_active=C.is_active_for_user,E.stopped_speed_threshold=+`${n.value.imperial_units?Yt(C.stopped_speed_threshold,"km","mi",2):parseFloat(C.stopped_speed_threshold.toFixed(2))}`,E.fromSport=!0,y&&(l.value=C.default_equipments.length>0?C.default_equipments[0].id:""))}function N(){E.default_equipment_ids=l.value?[l.value]:[],m(n.value)}function b(){f.value=!0}return Ce(()=>O.value,C=>{i.params.id&&(C!=null&&C.id)&&g(C,!0)}),mt(()=>{var y;const C=document.getElementById("sport-color");C==null||C.focus(),i.params.id&&i.params.id&&(y=O.value)!=null&&y.id&&g(O.value,!0)}),(C,y)=>{const D=q("ErrorMessage");return O.value?(h(),v("div",_lt,[p("form",{class:Oe({errors:f.value}),onSubmit:ve(N,["prevent"])},[p("div",flt,[p("div",hlt,[p("label",Slt,A(Fe(C.$t("workouts.SPORT",1))),1),x(" "+A(O.value.translatedLabel),1)]),p("div",Alt,[p("label",Olt,A(Fe(C.$t("user.PROFILE.SPORT.COLOR"))),1),We(p("input",{id:"sport-color",name:"sport-color",class:"sport-color",type:"color",required:"","onUpdate:modelValue":y[0]||(y[0]=M=>T(E).color=M),disabled:T(_),onInvalid:b},null,40,Ilt),[[it,T(E).color]])]),p("div",glt,[p("label",Rlt,A(Fe(C.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")))+" ("+A(`${T(n).imperial_units?"mi":"km"}/h`)+")* ",1),We(p("input",{id:"sport-threshold",name:"sport-threshold",class:"threshold-input",type:"number",min:"0",step:"0.1",required:"","onUpdate:modelValue":y[1]||(y[1]=M=>T(E).stopped_speed_threshold=M),disabled:T(_),onInvalid:b},null,40,Nlt),[[it,T(E).stopped_speed_threshold]])]),p("div",vlt,[p("label",blt,A(Fe(C.$t("common.ACTIVE"))),1),p("input",{id:"equipment-active",name:"equipment-active",type:"checkbox",checked:O.value.is_active_for_user,onChange:y[2]||(y[2]=(...M)=>T(c)&&T(c)(...M)),disabled:T(_)},null,40,Clt)]),p("div",Plt,[p("label",Dlt,A(C.$t("user.PROFILE.SPORT.DEFAULT_EQUIPMENTS",1)),1),We(p("select",{id:"sport-default-equipment",onInvalid:b,disabled:T(_),"onUpdate:modelValue":y[3]||(y[3]=M=>Kt(l)?l.value=M:null)},[p("option",ylt,A(C.$t("equipments.NO_EQUIPMENTS")),1),(h(!0),v(re,null,be(R.value,M=>(h(),v("option",{value:M.id,key:M.id},A(M.label),9,$lt))),128))],40,Llt),[[Jt,T(l)]])])]),T(r)?(h(),B(D,{key:0,message:T(r),"no-margin":!0},null,8,["message"])):L("",!0),p("div",Ult,[p("button",{class:"confirm",type:"submit",disabled:T(_)},A(C.$t("buttons.SUBMIT")),9,klt),p("button",{class:"cancel",onClick:y[4]||(y[4]=ve(()=>{var M;return C.$router.push(`/profile/sports/${(M=O.value)==null?void 0:M.id}`)},["prevent"])),disabled:T(_)},A(C.$t("buttons.CANCEL")),9,wlt)])],34)])):L("",!0)}}}),Wlt=ae(Mlt,[["__scopeId","data-v-80127015"]]),Flt={id:"user-sport-preferences"},zlt={key:1,class:"responsive-table"},xlt={class:"mobile-display"},Blt={key:0,class:"profile-buttons mobile-display"},Glt={key:1,class:"profile-buttons"},Vlt={class:"text-left"},Hlt={class:"threshold"},Klt={key:0},qlt={class:"cell-heading"},jlt={class:"cell-heading"},Ylt={key:2,class:"disabled-message"},Xlt={key:3,class:"fa fa-refresh fa-spin fa-fw"},Qlt={class:"cell-heading"},Zlt={class:"cell-heading"},Jlt={class:"cell-heading"},ect=["checked"],tct={class:"cell-heading"},nct={key:1},act={key:0,class:"action-buttons"},sct={class:"cell-heading"},oct=["onClick"],ict={key:1,class:"edition-buttons"},rct=["disabled"],uct=["disabled"],lct=["disabled"],cct={key:0,class:"profile-buttons"},dct={key:1,class:"profile-buttons"},Ect=X({__name:"UserSportPreferences",props:{authUser:{},translatedSports:{},isEdition:{type:Boolean}},setup(e){const t=e,{authUser:n,isEdition:a,translatedSports:s}=_e(t),o=De(),{errorMessages:i}=Be(),{defaultColor:r,displayModal:u,sportColors:l,sportPayload:d,resetSport:E,updateDisplayModal:c,updateIsActive:m,updateSport:_}=nn(),{authUserLoading:f}=qe(),O=Ie(!1);function S(g){g!==null?(d.sport_id=g.id,d.color=g.color?g.color:l?l[g.label]:r,d.is_active=g.is_active_for_user,d.stopped_speed_threshold=+`${n.value.imperial_units?Yt(g.stopped_speed_threshold,"km","mi",2):parseFloat(g.stopped_speed_threshold.toFixed(2))}`,O.value=g.default_equipments.length>0):I()}function R(g){return d.sport_id===g}function I(){d.sport_id=0,d.color=null,d.is_active=!0,d.stopped_speed_threshold=1,O.value=!1,o.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)}return Ce(()=>f.value,g=>{!g&&!i.value&&(I(),c(!1))}),(g,N)=>{const b=q("Modal"),C=q("SportImage"),y=q("router-link"),D=q("ErrorMessage"),M=q("Distance");return h(),v("div",Flt,[T(u)?(h(),B(b,{key:0,title:g.$t("common.CONFIRMATION"),message:g.$t(`user.PROFILE.SPORT.CONFIRM_SPORT_RESET${O.value?"_WITH_EQUIPMENTS":""}`),onConfirmAction:N[0]||(N[0]=P=>T(E)(T(d).sport_id)),onCancelAction:N[1]||(N[1]=P=>T(c)(!1)),onKeydown:N[2]||(N[2]=Ye(P=>T(c)(!1),["esc"]))},null,8,["title","message"])):L("",!0),T(s).length>0?(h(),v("div",zlt,[p("div",xlt,[T(a)?(h(),v("div",Blt,[p("button",{class:"cancel",onClick:N[3]||(N[3]=ve(P=>g.$router.push("/profile/sports"),["prevent"]))},A(g.$t("buttons.BACK")),1)])):(h(),v("div",Glt,[p("button",{onClick:N[4]||(N[4]=P=>g.$router.push("/profile/edit/sports"))},A(g.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),p("button",{onClick:N[5]||(N[5]=P=>g.$router.push("/"))},A(g.$t("common.HOME")),1)]))]),p("table",null,[p("thead",null,[p("tr",null,[p("th",null,A(g.$t("user.PROFILE.SPORT.COLOR")),1),p("th",Vlt,A(g.$t("workouts.SPORT",0)),1),p("th",null,A(g.$t("workouts.WORKOUT",0)),1),p("th",null,A(g.$t("equipments.EQUIPMENT",0)),1),p("th",null,A(g.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),p("th",null,[p("div",Hlt,[p("span",null,A(g.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),p("span",null," ("+A(`${T(n).imperial_units?"mi":"km"}/h`)+") ",1)])]),T(a)&&!T(n).suspended_at?(h(),v("th",Klt,A(g.$t("user.PROFILE.SPORT.ACTION")),1)):L("",!0)])]),p("tbody",null,[(h(!0),v(re,null,be(T(s),P=>(h(),v("tr",{key:P.id},[p("td",null,[p("span",qlt,A(g.$t("user.PROFILE.SPORT.COLOR")),1),R(P.id)?We((h(),v("input",{key:0,class:"sport-color",type:"color","onUpdate:modelValue":N[6]||(N[6]=W=>T(d).color=W)},null,512)),[[it,T(d).color]]):(h(),B(C,{key:1,title:P.translatedLabel,"sport-label":P.label,color:P.color?P.color:T(l)[P.label]},null,8,["title","sport-label","color"]))]),p("td",{class:Oe(["sport-label",{"disabled-sport":!P.is_active}])},[p("span",jlt,A(g.$t("user.PROFILE.SPORT.LABEL")),1),R(P.id)?(h(),v(re,{key:0},[x(A(P.translatedLabel),1)],64)):(h(),B(y,{key:1,to:`/profile/sports/${P.id}`},{default:Y(()=>[x(A(P.translatedLabel),1)]),_:2},1032,["to"])),P.is_active?L("",!0):(h(),v("span",Ylt," ("+A(g.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),T(f)&&R(P.id)?(h(),v("i",Xlt)):L("",!0),T(i)&&T(d).sport_id===P.id?(h(),B(D,{key:4,message:T(i)},null,8,["message"])):L("",!0)],2),p("td",{class:Oe(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Qlt,A(g.$t("workouts.WORKOUT",0)),1),p("i",{class:Oe(`fa fa${T(n).sports_list.includes(P.id)?"-check":""}`),"aria-hidden":"true"},null,2)],2),p("td",{class:Oe(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Zlt,A(g.$t("equipments.EQUIPMENT",0)),1),p("i",{class:Oe(`fa fa${P.default_equipments.length>0?"-check":""}`),"aria-hidden":"true"},null,2)],2),p("td",{class:Oe(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Jlt,A(g.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),R(P.id)&&P.is_active?(h(),v("input",{key:0,type:"checkbox",checked:P.is_active_for_user,onChange:N[7]||(N[7]=(...W)=>T(m)&&T(m)(...W))},null,40,ect)):(h(),v("i",{key:1,class:Oe(`fa fa${P.is_active_for_user?"-check":""}`),"aria-hidden":"true"},null,2))],2),p("td",{class:Oe(["text-center",{"disabled-sport":!P.is_active}])},[p("span",tct,A(g.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD"))+" "+A(`${T(n).imperial_units?"mi":"km"}/h`),1),R(P.id)&&P.is_active?We((h(),v("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1","onUpdate:modelValue":N[8]||(N[8]=W=>T(d).stopped_speed_threshold=W)},null,512)),[[it,T(d).stopped_speed_threshold]]):(h(),v("span",nct,[w(M,{distance:P.stopped_speed_threshold,unitFrom:"km",speed:!0,useImperialUnits:T(n).imperial_units,displayUnit:!1},null,8,["distance","useImperialUnits"])]))],2),T(a)&&!T(n).suspended_at?(h(),v("td",act,[p("span",sct,A(g.$t("user.PROFILE.SPORT.ACTION")),1),T(d).sport_id===0?(h(),v("button",{key:0,onClick:W=>S(P)},A(g.$t("buttons.EDIT")),9,oct)):L("",!0),R(P.id)?(h(),v("div",ict,[p("button",{disabled:T(f),onClick:N[9]||(N[9]=ve(W=>T(_)(T(n)),["prevent"]))},A(g.$t("buttons.SUBMIT")),9,rct),p("button",{disabled:T(f),class:"warning",onClick:N[10]||(N[10]=ve(W=>T(c)(!0),["prevent"]))},A(g.$t("buttons.RESET")),9,uct),p("button",{disabled:T(f),onClick:N[11]||(N[11]=W=>S(null))},A(g.$t("buttons.CANCEL")),9,lct)])):L("",!0)])):L("",!0)]))),128))])]),T(a)?(h(),v("div",cct,[p("button",{class:"cancel",onClick:N[12]||(N[12]=ve(P=>g.$router.push("/profile/sports"),["prevent"]))},A(g.$t("buttons.BACK")),1)])):(h(),v("div",dct,[T(n).suspended_at?L("",!0):(h(),v("button",{key:0,onClick:N[13]||(N[13]=P=>g.$router.push("/profile/edit/sports"))},A(g.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1)),p("button",{onClick:N[14]||(N[14]=P=>g.$router.push("/"))},A(g.$t("common.HOME")),1)]))])):L("",!0)])}}}),xh=ae(Ect,[["__scopeId","data-v-3988f4cc"]]),pct={class:"about-text"},mct=["innerHTML"],Tct=["href"],_ct={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},fct={key:0},hct=["href"],Sct={key:1},Act=["href"],Oct={class:"about-instance"},Ict=["innerHTML"],gct=X({__name:"About",setup(e){const{appConfig:t,appLanguage:n}=Be(),a=F(()=>o()),s=F(()=>i());function o(){const r={};return t.value.weatherProvider==="visualcrossing"&&(r.name="Visual Crossing",r.url="https://www.visualcrossing.com"),r}function i(){let r="https://samr1.github.io/FitTrackee/";return n.value==="fr"&&(r+="fr/"),r}return(r,u)=>{const l=q("i18n-t");return h(),v("div",pct,[p("div",null,[p("p",{class:"error-message",innerHTML:r.$t("about.FITTRACKEE_DESCRIPTION")},null,8,mct),p("p",null,[u[0]||(u[0]=p("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1)),p("a",{class:"documentation-link",href:s.value,target:"_blank",rel:"noopener noreferrer"},A(Fe(r.$t("common.DOCUMENTATION"))),9,Tct)]),p("p",null,[u[1]||(u[1]=p("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1)),p("a",_ct,A(r.$t("about.SOURCE_CODE")),1)]),p("p",null,[u[3]||(u[3]=p("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1)),w(l,{keypath:"about.FITTRACKEE_LICENSE"},{default:Y(()=>u[2]||(u[2]=[p("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"},"AGPLv3",-1)])),_:1})]),T(t).admin_contact?(h(),v("div",fct,[u[4]||(u[4]=p("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1)),p("a",{href:`mailto:${T(t).admin_contact}`},A(r.$t("about.CONTACT_ADMIN")),9,hct)])):L("",!0),a.value&&a.value.name?(h(),v("div",Sct,[x(A(r.$t("about.WEATHER_DATA_FROM"))+" ",1),p("a",{href:a.value.url,target:"_blank",rel:"nofollow noopener"},A(a.value.name),9,Act)])):L("",!0),T(t).about?(h(),v(re,{key:2},[p("p",Oct,A(r.$t("about.ABOUT_THIS_INSTANCE")),1),p("div",{innerHTML:T(Vi)(T(t).about)},null,8,Ict)],64)):L("",!0)])])}}}),Rct=ae(gct,[["__scopeId","data-v-28993d11"]]),Nct={},vct={id:"bike"};function bct(e,t){return h(),v("div",vct,t[0]||(t[0]=[p("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,-1)]))}const sI=ae(Nct,[["render",bct],["__scopeId","data-v-dc181e30"]]),Cct={id:"about",class:"view"},Pct={class:"container"},Dct={class:"container-sub"},Lct={class:"container-sub about-details"},yct=X({__name:"AboutView",setup(e){return(t,n)=>(h(),v("div",Cct,[p("div",Pct,[p("div",Dct,[w(sI)]),p("div",Lct,[w(Rct)])])]))}}),$ct=ae(yct,[["__scopeId","data-v-ef9c7198"]]),Uct={id:"admin",class:"view"},kct={key:0,class:"container"},wct={key:1,class:"container"},Mct=X({__name:"AdminView",setup(e){const t=De(),{authUserHasModeratorRights:n,authUserHasAdminRights:a,authUserLoading:s}=qe();return Je(()=>{n.value&&t.dispatch(te.ACTIONS.GET_APPLICATION_STATS)}),(o,i)=>{const r=q("router-view");return h(),v("div",Uct,[T(s)?L("",!0):(h(),v("div",kct,[(o.$route.meta.minimumRole==="moderator"?T(n):T(a))?(h(),B(r,{key:0})):(h(),v("div",wct,[w(wo)])),i[0]||(i[0]=p("div",{id:"bottom"},null,-1))]))])}}}),Wct=ae(Mct,[["__scopeId","data-v-580b02ed"]]),Fct={},zct={class:"no-workouts box"};function xct(e,t){const n=q("router-link");return h(),v("div",zct,[p("div",null,[x(A(e.$t("workouts.NO_WORKOUTS"))+" ",1),w(n,{to:"/workouts/add"},{default:Y(()=>[x(A(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)]),_:1})])])}const Jp=ae(Fct,[["render",xct],["__scopeId","data-v-b0c91cc6"]]),is={ligthMode:{text:"#666",line:"rgba(0, 0, 0, 0.1)"},darkMode:{text:"#a1a1a1",line:"#3f3f3f"}},Bct=(e,t,n,a=!1)=>{const s={speed:{label:t("workouts.SPEED"),backgroundColor:["transparent"],borderColor:[a?"#5f5c97":"#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:[a?"#303030":"#e5e5e5"],borderColor:[a?"#222222":"#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],i=[],r=[];return e.map(u=>{o.push(Jr("km",u.distance,n)),i.push(u.duration),s.speed.data.push(Jr("km",u.speed,n)),u.elevation!==void 0&&s.elevation.data.push(Jr("m",u.elevation,n)),r.push({latitude:u.latitude,longitude:u.longitude})}),{distance_labels:o,duration_labels:i,datasets:s,coordinates:r}},Gct=e=>{const t=e.length;if(t===0)return{};const n={};return e.map(a=>{n[a.sport_id]||(n[a.sport_id]={count:0,percentage:0}),n[a.sport_id].count+=1,n[a.sport_id].percentage=n[a.sport_id].count/t}),n},qi={order:"desc",order_by:"workout_date"},Vct={id:"timeline"},Hct={class:"section-title"},Kct={key:0},qct={key:1},jct={key:1,class:"more-workouts"},Mr=5,Yct=X({__name:"Timeline",props:{sports:{},authUser:{}},setup(e){const t=e,{sports:n,authUser:a}=_e(t),{dateFormat:s}=qe(),o=De(),i=Ie(1),r=F(()=>a.value.nb_workouts>=Mr?Mr:a.value.nb_workouts),u=F(()=>o.getters[ee.GETTERS.TIMELINE_WORKOUTS]),l=F(()=>o.getters[ee.GETTERS.WORKOUTS_PAGINATION]),d=F(()=>o.getters[K.GETTERS.IS_SUSPENDED]);function E(){d.value||o.dispatch(ee.ACTIONS.GET_TIMELINE_WORKOUTS,{page:i.value,per_page:Mr,...qi})}function c(){d.value||(i.value+=1,o.dispatch(ee.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:i.value,per_page:Mr,...qi}))}return Je(()=>E()),ct(()=>o.commit(ee.MUTATIONS.SET_WORKOUTS_PAGINATION,{})),(m,_)=>(h(),v("div",Vct,[p("div",Hct,A(m.$t("workouts.LATEST_WORKOUTS")),1),T(a).nb_workouts>0&&u.value.length===0?(h(),v("div",Kct,[(h(!0),v(re,null,be([...Array(r.value).keys()],f=>(h(),B(Hi,{user:T(a),useImperialUnits:T(a).imperial_units,dateFormat:T(s),timezone:T(a).timezone,key:f},null,8,["user","useImperialUnits","dateFormat","timezone"]))),128))])):(h(),v("div",qct,[(h(!0),v(re,null,be(u.value,f=>(h(),B(Hi,{workout:f,sport:u.value.length>0?T(n).filter(O=>O.id===f.sport_id)[0]:null,user:f.user,useImperialUnits:T(a).imperial_units,dateFormat:T(s),timezone:T(a).timezone,key:f.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]))),128)),u.value.length===0?(h(),B(Jp,{key:0})):L("",!0),l.value.has_next?(h(),v("div",jct,[p("button",{onClick:c},A(m.$t("workouts.LOAD_MORE_WORKOUT")),1)])):L("",!0)]))]))}}),Xct=ae(Yct,[["__scopeId","data-v-bab374a4"]]),Qct=["title"],oI=X({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:{},sportLabel:{},sportColor:{}},setup(e){const t=e,{displayHARecord:n,workout:a,sportLabel:s,sportColor:o}=_e(t);return(i,r)=>{const u=q("SportImage"),l=q("router-link");return h(),B(l,{class:"calendar-workout",to:{name:"Workout",params:{workoutId:T(a).id}}},{default:Y(()=>[w(u,{"sport-label":T(s),title:T(a).title,color:T(o)},null,8,["sport-label","title","color"]),p("sup",null,[T(a).records.length>0?(h(),v("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:T(a).records.filter(d=>T(n)?!0:d.record_type!=="HA").map(d=>` ${i.$t(`workouts.RECORD_${d.record_type}`)}`)[0]},null,8,Qct)):L("",!0)])]),_:1},8,["to"])}}}),Zct={class:"donut-chart"},Jct={height:"34",width:"34",viewBox:"0 0 34 34"},edt=["stroke","stroke-dashoffset","transform"],Bh=16,Gh=16,Vh=14,tdt=X({__name:"DonutChart",props:{colors:{},datasets:{}},setup(e){const t=e,{colors:n,datasets:a}=_e(t);let s=-90;const o=2*Math.PI*Vh;function i(u,l){return l-u*l}function r(u,l){const d=`rotate(${s}, ${Bh}, ${Gh})`;return s=l*360+s,d}return(u,l)=>(h(),v("div",Zct,[(h(),v("svg",Jct,[(h(!0),v(re,null,be(Object.entries(T(a)),(d,E)=>(h(),v("g",{key:E},[p("circle",{cx:Bh,cy:Gh,r:Vh,fill:"transparent",stroke:T(n)[+d[0]],"stroke-dashoffset":i(d[1].percentage,o),"stroke-dasharray":o,"stroke-width":"3","stroke-opacity":"0.8",transform:r(E,d[1].percentage)},null,8,edt)]))),128))]))]))}}),ndt={class:"calendar-workouts-chart"},adt=["id"],sdt={class:"workouts-count"},odt={key:0,class:"workouts-pane"},idt=["id"],rdt=X({__name:"CalendarWorkoutsChart",props:{colors:{},datasets:{},sports:{},workouts:{},displayHARecord:{type:Boolean},index:{}},setup(e){const t=e,{colors:n,datasets:a,index:s,sports:o,workouts:i}=_e(t);let r=0;const u=Ie(!0);function l(){const c=document.getElementById(`workouts-pane-${s.value}`);return c!=null&&c.children&&(c==null?void 0:c.children.length)>0?c:null}async function d(c){var _;c.preventDefault(),c.stopPropagation(),u.value=!u.value,await ln();const m=l();u.value?(_=document.getElementById(`workouts-donut-${s.value}`))==null||_.focus():(m==null?void 0:m.children[0]).focus()}function E(c){if(!u.value){if(!u.value&&(c.key==="Tab"||c.keyCode===9)){c.preventDefault(),c.stopPropagation();const m=l();m&&(c.shiftKey?(r-=1,r<0&&(r=m.children.length-1)):(r+=1,r>=m.children.length&&(r=0)),m.children[r].focus())}c.key==="Escape"&&d(c)}}return mt(()=>{document.addEventListener("keydown",E)}),ct(()=>{document.removeEventListener("keydown",E)}),(c,m)=>{const _=oR("click-outside");return h(),v("div",ndt,[p("button",{class:"workouts-chart transparent",id:`workouts-donut-${T(s)}`,onClick:d},[p("div",sdt,A(T(i).length),1),w(tdt,{datasets:T(a),colors:T(n)},null,8,["datasets","colors"])],8,adt),u.value?L("",!0):(h(),v("div",odt,[We((h(),v("div",{class:"more-workouts",id:`workouts-pane-${T(s)}`},[p("button",{class:"calendar-more-close transparent",onClick:d},m[0]||(m[0]=[p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])),(h(!0),v(re,null,be(T(i),(f,O)=>(h(),B(oI,{key:O,displayHARecord:c.displayHARecord,workout:f,sportLabel:T(Gp)(f,T(o)),sportColor:T(Vp)(f,T(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"]))),128))],8,idt)),[[_,d]])]))])}}}),Hh=ae(rdt,[["__scopeId","data-v-fda2985a"]]),udt={class:"calendar-workouts"},ldt={class:"desktop-display"},cdt={key:0,class:"workouts-display"},ddt={key:1,class:"donut-display"},Edt={class:"mobile-display"},pdt={key:0,class:"donut-display"},Kh=6,mdt=X({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:{},sports:{},index:{}},setup(e){const t=e,{displayHARecord:n,index:a,sports:s,workouts:o}=_e(t),i=F(()=>Gct(t.workouts)),r=F(()=>Tje(t.sports));return(u,l)=>(h(),v("div",udt,[p("div",ldt,[T(o).length<=Kh?(h(),v("div",cdt,[(h(!0),v(re,null,be(T(o).slice(0,Kh),(d,E)=>(h(),B(oI,{key:E,displayHARecord:T(n),workout:d,sportLabel:T(Gp)(d,T(s)),sportColor:T(Vp)(d,T(s))},null,8,["displayHARecord","workout","sportLabel","sportColor"]))),128))])):(h(),v("div",ddt,[w(Hh,{workouts:T(o),sports:T(s),datasets:i.value,colors:r.value,displayHARecord:T(n),index:T(a)},null,8,["workouts","sports","datasets","colors","displayHARecord","index"])]))]),p("div",Edt,[T(o).length>0?(h(),v("div",pdt,[w(Hh,{workouts:T(o),sports:T(s),datasets:i.value,colors:r.value,displayHARecord:T(n),index:T(a)},null,8,["workouts","sports","datasets","colors","displayHARecord","index"])])):L("",!0)])]))}}),Tdt={class:"calendar-cells"},_dt={class:"calendar-cell-day"},fdt=X({__name:"CalendarCells",props:{currentDay:{},displayHARecord:{type:Boolean},endDate:{},sports:{},startDate:{},timezone:{},weekStartingMonday:{type:Boolean},workouts:{}},setup(e){const t=e,{currentDay:n,displayHARecord:a,endDate:s,sports:o,startDate:i,timezone:r,weekStartingMonday:u,workouts:l}=_e(t),d=Ie([]);function E(){d.value=[];let _=i.value;for(;_<=s.value;){const f=[];for(let O=0;O<7;O++)f.push(_),_=ar(_,1);d.value.push(f)}}function c(_){return u.value?[5,6].includes(_):[0,6].includes(_)}function m(_,f){return f?f.filter(O=>f1(bl(O.workout_date,r.value),_)).reverse():[]}return Ce(()=>t.currentDay,()=>E()),mt(()=>E()),(_,f)=>(h(),v("div",Tdt,[(h(!0),v(re,null,be(d.value,(O,S)=>(h(),v("div",{class:"calendar-row",key:S},[(h(!0),v(re,null,be(O,(R,I)=>(h(),v("div",{class:Oe(["calendar-cell",{"disabled-cell":!T(VD)(R,T(n)),"week-end":c(I),today:T(HD)(R)}]),key:I},[w(mdt,{workouts:m(R,T(l)),sports:T(o),displayHARecord:T(a),index:I},null,8,["workouts","sports","displayHARecord","index"]),p("div",_dt,A(T(On)(R,"d")),1)],2))),128))]))),128))]))}}),hdt={class:"calendar-days"},Sdt=X({__name:"CalendarDays",props:{startDate:{},localeOptions:{}},setup(e){const t=e,n=[];for(let a=0;a<7;a++)n.push(ar(t.startDate,a));return(a,s)=>(h(),v("div",hdt,[(h(),v(re,null,be(n,(o,i)=>p("div",{class:"calendar-day",key:i},A(T(On)(o,a.localeOptions.code==="eu"?"EEEEEE.":"EEE",{locale:a.localeOptions})),1)),64))]))}}),Adt={class:"calendar-header"},Odt=["aria-label"],Idt={class:"calendar-month"},gdt=["aria-label"],Rdt=X({__name:"CalendarHeader",props:{day:{},localeOptions:{}},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:a,localeOptions:s}=_e(n),o=t;return(i,r)=>(h(),v("div",Adt,[p("button",{class:"calendar-arrow calendar-arrow-left transparent",onClick:r[0]||(r[0]=u=>o("displayPreviousMonth")),"aria-label":i.$t("common.PREVIOUS")},r[2]||(r[2]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),8,Odt),p("div",Idt,[p("span",null,A(T(On)(T(a),"MMM yyyy",{locale:T(s)})),1)]),p("button",{class:"calendar-arrow calendar-arrow-right transparent",onClick:r[1]||(r[1]=u=>o("displayNextMonth")),"aria-label":i.$t("common.NEXT")},r[3]||(r[3]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),8,gdt)]))}}),Ndt={id:"user-calendar"},vdt={class:"section-title"},bdt={class:"calendar-card box"},qh="yyyy-MM-dd",Cdt=X({__name:"index",props:{sports:{},user:{}},setup(e){const t=e,{sports:n,user:a}=_e(t),s=De(),{locale:o}=Be(),{isAuthUserSuspended:i}=qe(),r=Ie(new Date),u=Ie(K_(r.value,a.value.weekm)),l=F(()=>s.getters[ee.GETTERS.CALENDAR_WORKOUTS]);function d(){if(!i.value){u.value=K_(r.value,t.user.weekm);const m={from:On(u.value.start,qh),to:On(u.value.end,qh),page:1,per_page:100,...qi};s.dispatch(ee.ACTIONS.GET_CALENDAR_WORKOUTS,m)}}function E(){r.value=Oo(r.value,1),d()}function c(){r.value=Mi(r.value,1),d()}return Je(()=>d()),(m,_)=>(h(),v("div",Ndt,[p("div",vdt,A(m.$t("workouts.MY_WORKOUTS")),1),p("div",bdt,[w(Rdt,{day:r.value,"locale-options":T(o),onDisplayNextMonth:E,onDisplayPreviousMonth:c},null,8,["day","locale-options"]),w(Sdt,{"start-date":u.value.start,"locale-options":T(o)},null,8,["start-date","locale-options"]),w(fdt,{currentDay:r.value,displayHARecord:T(a).display_ascent,"end-date":u.value.end,sports:T(n),"start-date":u.value.start,timezone:T(a).timezone,workouts:l.value,weekStartingMonday:T(a).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}}),iI={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},Pdt={ariaLabel:{type:String},ariaDescribedby:{type:String}},Ddt={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...iI,...Pdt},Ldt=NS[0]==="2"?(e,t)=>Object.assign(e,{attrs:t}):(e,t)=>Object.assign(e,t);function eo(e){return Yi(e)?dt(e):e}function ydt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e;return Yi(t)?new Proxy(e,{}):e}function $dt(e,t){const n=e.options;n&&t&&Object.assign(n,t)}function rI(e,t){e.labels=t}function uI(e,t,n){const a=[];e.datasets=t.map(s=>{const o=e.datasets.find(i=>i[n]===s[n]);return!o||!s.data||a.includes(o)?{...s}:(a.push(o),Object.assign(o,s),o)})}function Udt(e,t){const n={labels:[],datasets:[]};return rI(n,e.labels),uI(n,e.datasets,t),n}const kdt=X({props:Ddt,setup(e,t){let{expose:n,slots:a}=t;const s=Ie(null),o=il(null);n({chart:o});const i=()=>{if(!s.value)return;const{type:l,data:d,options:E,plugins:c,datasetIdKey:m}=e,_=Udt(d,m),f=ydt(_,d);o.value=new RE(s.value,{type:l,data:f,options:{...E},plugins:c})},r=()=>{const l=dt(o.value);l&&(e.destroyDelay>0?setTimeout(()=>{l.destroy(),o.value=null},e.destroyDelay):(l.destroy(),o.value=null))},u=l=>{l.update(e.updateMode)};return mt(i),ct(r),Ce([()=>e.options,()=>e.data],(l,d)=>{let[E,c]=l,[m,_]=d;const f=dt(o.value);if(!f)return;let O=!1;if(E){const S=eo(E),R=eo(m);S&&S!==R&&($dt(f,S),O=!0)}if(c){const S=eo(c.labels),R=eo(_.labels),I=eo(c.datasets),g=eo(_.datasets);S!==R&&(rI(f.config.data,S),O=!0),I&&I!==g&&(uI(f.config.data,I,e.datasetIdKey),O=!0)}O&&ln(()=>{u(f)})},{deep:!0}),()=>bn("canvas",{role:"img",ariaLabel:e.ariaLabel,ariaDescribedby:e.ariaDescribedby,ref:s},[bn("p",{},[a.default?a.default():""])])}});function lI(e,t){return RE.register(t),X({props:iI,setup(n,a){let{expose:s}=a;const o=il(null),i=r=>{o.value=r==null?void 0:r.chart};return s({chart:o}),()=>bn(kdt,Ldt({ref:i},{type:e,...n}))}})}const wdt=lI("bar",l0),Mdt=lI("line",c0),ai=(e,t,n,a=!0,s="km")=>{const o=n?vn[s].defaultTarget:s;switch(e){case"average_speed":return`${t.toFixed(2)} ${o}/h`;case"average_duration":case"total_duration":return Grt(t,a);case"average_distance":case"average_ascent":case"average_descent":case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${o}`;default:return t.toString()}},Wdt=X({__name:"Chart",props:{datasets:{},labels:{},displayedData:{},displayedSportIds:{},fullStats:{type:Boolean},useImperialUnits:{type:Boolean},label:{}},setup(e){const t=e,{datasets:n,labels:a,displayedData:s,displayedSportIds:o,fullStats:i,useImperialUnits:r}=_e(t),{t:u}=$t(),{darkTheme:l}=Be(),d=F(()=>({color:l.value?is.darkMode.line:is.ligthMode.line})),E=F(()=>({color:l.value?is.darkMode.text:is.ligthMode.text})),c=F(()=>s.value!=="average_workouts"&&s.value.startsWith("average")),m=F(()=>({labels:a.value,datasets:JSON.parse(JSON.stringify(n.value))})),_=F(()=>({responsive:!0,maintainAspectRatio:!1,animation:!1,layout:{padding:{top:i.value?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1,...d.value},border:{...d.value},ticks:{...E.value}},y:{stacked:!s.value.startsWith("average"),grid:{drawOnChartArea:!1,...d.value},border:{...d.value},ticks:{maxTicksLimit:6,callback:function(R){return ai(s.value,+R,r.value,!1,S(s.value))},...E.value},afterFit:function(R){R.width=i.value?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(R){return c.value&&R.dataset.backgroundColor?R.dataset.backgroundColor[0]:E.value.color},rotation:function(R){return i.value&&R.chart.chartArea.width<580?310:0},display:function(R){return i.value&&R.chart.chartArea.width<300?!1:c.value?o.value.length==1?"auto":!1:!0},formatter:function(R,I){if(s.value.startsWith("average"))return ai(s.value,R,r.value,!1);{const g=I.chart.data.datasets.map(N=>N.data[I.dataIndex]).reduce((N,b)=>O(N,b),0);return I.datasetIndex===o.value.length-1&&g>0?ai(s.value,g,r.value,!1,S(s.value)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:c.value?"nearest":"average"},filter:function(R){return R.formattedValue!=="0"},callbacks:{label:function(R){let I=s.value==="average_workouts"?u("workouts.WORKOUT",0):u(`sports.${R.dataset.label}.LABEL`)||"";return I&&(I+=": "),R.parsed.y!==null&&(I+=ai(s.value,R.parsed.y,r.value,!0,S(s.value))),I},footer:function(R){if(s.value.startsWith("average"))return"";let I=0;return R.map(g=>{I+=g.parsed.y}),`${u("common.TOTAL")}: `+ai(s.value,I,r.value,!0,S(s.value))}}}}}));function f(R){return isNaN(R)?0:+R}function O(R,I){return f(R)+f(I)}function S(R){return R.includes("scent")?"m":"km"}return(R,I)=>(h(),v("div",{class:Oe(["bar-chart",{minimal:!T(i)}])},[w(T(wdt),{data:m.value,options:_.value,"aria-label":R.label},null,8,["data","options","aria-label"])],2))}}),Fdt=ae(Wdt,[["__scopeId","data-v-f96e822f"]]),{locale:tl}=ko.global,cI={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},zdt=["average_ascent","average_descent","average_distance","average_duration","average_speed","total_workouts","total_duration","total_distance","total_ascent","total_descent"],xdt=(e,t)=>{const n=[];for(let a=gBe(e.duration,e.start,t);a<=e.end;a=RBe(e.duration,a))n.push(a);return n},Ta=(e,t,n=!1)=>{const a={label:e,backgroundColor:[t],data:[]};return n?(a.type="line",a.borderColor=[t],a.spanGaps=!0):a.type="bar",a},Bdt=e=>{const t={average_ascent:[],average_descent:[],average_distance:[],average_duration:[],average_speed:[],average_workouts:[],total_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map(n=>{const a=n.color?n.color:Bp[n.label];t.average_ascent.push(Ta(n.label,a,!0)),t.average_descent.push(Ta(n.label,a,!0)),t.average_distance.push(Ta(n.label,a,!0)),t.average_duration.push(Ta(n.label,a,!0)),t.average_speed.push(Ta(n.label,a,!0)),t.total_workouts.push(Ta(n.label,a)),t.total_distance.push(Ta(n.label,a)),t.total_duration.push(Ta(n.label,a)),t.total_ascent.push(Ta(n.label,a)),t.total_descent.push(Ta(n.label,a))}),t},Gdt=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":case"average_distance":case"average_ascent":case"average_descent":return Jr(["average_speed","total_distance","average_distance"].includes(e)?"km":"m",t,n);default:case"total_workouts":case"total_duration":case"average_duration":return t}},IE=(e,t,n,a)=>On(e,t==="week"?fs(n,tl.value):a,{locale:zs[tl.value]}),Vdt=(e,t,n,a,s,o,i)=>{const r=xdt(e,t),u=cI[e.duration],l=n.filter(m=>a.includes(m.id)),d=[],E=Bdt(l),c={};return l.map(m=>c[m.label]=m.id),r.map(m=>{const _=On(m,u.api),f=IE(m,e.duration,i,u.chart);On(m,e.duration==="week"?fs(i,tl.value):u.chart,{locale:zs[tl.value]}),d.push(f),zdt.map(O=>{E[O].map(S=>{S.data.push(_ in s&&c[S.label]in s[_]?Gdt(O,s[_][c[S.label]][O],o):O.startsWith("average")?null:0)})})}),{labels:d,datasets:E}},Hdt=(e,t,n,a)=>{const s=n?1:0,o=t==="year"?ep(Kd(e,9)):t==="week"?gl(Mi(e,2),{weekStartsOn:s}):or(Mi(e,11)),i=t==="year"?h1(e):t==="week"?tp(e,{weekStartsOn:s}):sr(e);return{duration:t,end:i,start:o,statsType:a}},Kdt=(e,t,n)=>{const{duration:a,start:s,end:o}=e,i=n?1:0;return{duration:a,end:a==="year"?h1(t?Kd(o,1):Tu(o,1)):a==="week"?tp(t?JT(o,1):Hd(o,1),{weekStartsOn:i}):sr(t?Mi(o,1):Oo(o,1)),start:a==="year"?ep(t?Kd(s,1):Tu(s,1)):a==="week"?gl(t?JT(s,1):Hd(s,1),{weekStartsOn:i}):or(t?Mi(s,1):Oo(s,1)),statsType:e.statsType}},jh=e=>{const t=e.reduce((a,s)=>(a||0)+(s||0),0);return+(e.length?(t||0)/e.length:0).toFixed(1)},qdt=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:n{const n=[],a={label:"workouts_average",backgroundColor:[],data:[]};let s=[];const o=e.map(i=>(i.label=t(`sports.${i.label}.LABEL`),i)).sort(qdt);for(const i of o)a.data.push(jh(i.data)),a.backgroundColor.push(i.backgroundColor[0]),n.push(i.label),s.length>0?s=s.map((r,u)=>r+(i.data[u]||0)):s=i.data.map(r=>r||0);return{labels:n,datasets:{workouts_average:[a]},workoutsAverage:jh(s)}},Ydt={class:"stats-chart"},Xdt={key:0},Qdt={key:1},Zdt={class:"chart-radio"},Jdt=["value","checked","disabled"],eEt=["value","checked","disabled"],tEt=["value","checked","disabled"],nEt={key:0},aEt=["checked","disabled"],sEt={key:1},oEt=["value","checked","disabled"],iEt={key:2},rEt=["value","checked","disabled"],uEt={class:"workouts-average"},lEt={key:0,class:"info-box"},cEt=X({__name:"index",props:{sports:{},user:{},chartParams:{},displayedSportIds:{default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},selectedTimeFrame:{default:null}},setup(e){const t=e,{sports:n,user:a,chartParams:s,displayedSportIds:o,fullStats:i,hideChartIfNoData:r,isDisabled:u}=_e(t),l=De(),{t:d}=$t(),E=Ie("total_distance"),c=F(()=>l.getters[Mt.GETTERS.USER_STATS]),m=F(()=>cI[s.value.duration].chart),_=F(()=>IE(s.value.start,s.value.duration,a.value.date_format,m.value)),f=F(()=>IE(s.value.end,s.value.duration,a.value.date_format,m.value)),O=F(()=>Vdt(s.value,a.value.weekm,n.value,o.value,c.value,a.value.imperial_units,a.value.date_format)),S=F(()=>O.value.datasets[E.value]),R=F(()=>O.value.labels),I=F(()=>Object.keys(c.value).length===0),g=F(()=>s.value.statsType),N=F(()=>jdt(O.value.datasets.total_workouts,d));function b(D){a.value.suspended_at||l.dispatch(Mt.ACTIONS.GET_USER_STATS,{username:a.value.username,params:D})}function C(D){E.value=D.target.value}function y(D,M){return{from:On(D.start,"yyyy-MM-dd"),to:On(D.end,"yyyy-MM-dd"),time:D.duration==="week"?`week${M.weekm?"m":""}`:D.duration,type:g.value}}return Ce(()=>s.value,async D=>{b(y(D,a.value))}),Ce(()=>g.value,async D=>{E.value=D==="total"&&E.value==="average_speed"?"total_distance":`${g.value}_${E.value.split("_")[1]}`}),Je(()=>b(y(s.value,a.value))),(D,M)=>(h(),v("div",Ydt,[T(r)&&I.value?(h(),v("div",Xdt,A(D.$t("workouts.NO_WORKOUTS")),1)):(h(),v("div",Qdt,[p("div",Zdt,[p("label",null,[p("input",{type:"radio",name:"value_type",value:`${g.value}_distance`,checked:E.value===`${g.value}_distance`,disabled:T(u),onClick:C},null,8,Jdt),x(" "+A(D.$t("workouts.DISTANCE")),1)]),p("label",null,[p("input",{type:"radio",name:"value_type",value:`${g.value}_duration`,checked:E.value===`${g.value}_duration`,disabled:T(u),onClick:C},null,8,eEt),x(" "+A(D.$t("workouts.DURATION")),1)]),p("label",null,[p("input",{type:"radio",name:"value_type",value:`${g.value}_workouts`,checked:E.value===`${g.value}_workouts`,disabled:T(u),onClick:C},null,8,tEt),x(" "+A(D.$t("workouts.WORKOUT",2)),1)]),T(i)&&g.value==="average"?(h(),v("label",nEt,[p("input",{type:"radio",name:"value_type",value:"average_speed",checked:E.value==="average_speed",disabled:T(u),onClick:C},null,8,aEt),x(" "+A(D.$t("workouts.SPEED")),1)])):L("",!0),T(i)?(h(),v("label",sEt,[p("input",{type:"radio",name:"value_type",value:`${g.value}_ascent`,checked:E.value===`${g.value}_ascent`,disabled:T(u),onClick:C},null,8,oEt),x(" "+A(D.$t("workouts.ASCENT")),1)])):L("",!0),T(i)?(h(),v("label",iEt,[p("input",{type:"radio",name:"value_type",value:`${g.value}_descent`,checked:E.value===`${g.value}_descent`,disabled:T(u),onClick:C},null,8,rEt),x(" "+A(D.$t("workouts.DESCENT")),1)])):L("",!0)]),R.value.length>0||N.value.labels.length>0?(h(),B(Fdt,{key:0,datasets:E.value==="average_workouts"?N.value.datasets.workouts_average:S.value,labels:E.value==="average_workouts"?N.value.labels:R.value,displayedData:E.value,displayedSportIds:T(o),fullStats:T(i),useImperialUnits:T(a).imperial_units,label:D.$t(`statistics.STATISTICS_CHARTS.${T(s).duration}`)+` (${_.value} - ${f.value})`},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits","label"])):L("",!0),p("div",uEt,[E.value==="average_workouts"&&D.selectedTimeFrame?(h(),v("div",lEt,[M[0]||(M[0]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(D.$t("statistics.DATES"))+": "+A(_.value)+" - "+A(f.value)+", "+A(D.$t("statistics.WORKOUTS_AVERAGE"))+": "+A(N.value.workoutsAverage)+"/"+A(D.$t(`statistics.TIME_FRAMES.${D.selectedTimeFrame}`)),1)])):L("",!0)])]))]))}}),dI=ae(cEt,[["__scopeId","data-v-f61443a0"]]),dEt={class:"user-month-stats"},EEt={class:"section-title"},pEt={class:"box"},mEt=X({__name:"UserMonthStats",props:{sports:{},user:{}},setup(e){const t=e,{sports:n,user:a}=_e(t),s=new Date,o={duration:"week",start:or(s),end:sr(s),statsType:"total"},i=F(()=>n.value.map(r=>r.id));return(r,u)=>(h(),v("div",dEt,[p("div",EEt,[u[0]||(u[0]=p("i",{class:"fa fa-calendar custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+A(r.$t("dashboard.THIS_MONTH")),1)]),p("div",pEt,[w(dI,{sports:T(n),user:T(a),"chart-params":o,"displayed-sport-ids":i.value,"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])]))}}),TEt=ae(mEt,[["__scopeId","data-v-f5b0f1af"]]),_Et={class:"record"},fEt={class:"record-type"},hEt={class:"record-value"},SEt={class:"record-date"},AEt=X({__name:"SportRecordsTable",props:{record:{}},setup(e){const t=e,{record:n}=_e(t);return(a,s)=>{const o=q("router-link");return h(),v("div",_Et,[p("span",fEt,A(Fe(T(n).label)),1),p("span",hEt,A(T(n).value),1),p("span",SEt,[w(o,{to:{name:"Workout",params:{workoutId:T(n).workout_id}}},{default:Y(()=>[p("time",null,A(T(n).workout_date),1)]),_:1},8,["to"])])])}}}),EI=ae(AEt,[["__scopeId","data-v-f8125b68"]]),{locale:OEt}=ko.global,IEt=(e,t,n,a)=>{const s="km",o=n?vn[s].defaultTarget:s,i="m",r=n?vn[i].defaultTarget:i;let u;switch(e.record_type){case"AS":case"MS":u=`${Yt(+e.value,s,o,2)} ${o}/h`;break;case"FD":u=`${Yt(+e.value,s,o,3)} ${o}`;break;case"HA":u=`${Yt(+e.value,i,r,2)} ${r}`;break;case"LD":u=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{id:e.id,record_type:e.record_type,sport_id:e.sport_id,value:u,user:e.user,workout_date:Ut(e.workout_date,t,a,!1),workout_id:e.workout_id}},pI=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:n(o=fs(o,OEt.value),e.filter(r=>s?!0:r.record_type!=="HA").reduce((r,u)=>{const l=t.find(d=>d.id===u.sport_id);return l&&l.label&&(i===null||l.id===i)&&(r[l.translatedLabel]===void 0&&(r[l.translatedLabel]={label:l.label,color:l.color,records:[]}),r[l.translatedLabel].records.push(IEt(u,n,a,o))),r},{})),gEt={class:"records-card"},REt=X({__name:"RecordsCard",props:{records:{},sportTranslatedLabel:{}},setup(e){const t=e,{records:n,sportTranslatedLabel:a}=_e(t),s=De(),{t:o}=$t(),i=F(()=>s.getters[te.GETTERS.LANGUAGE]),r=F(()=>i.value==="bg");function u(l){const d=[];return l.map(E=>{d.push({...E,label:o(`workouts.RECORD_${E.record_type}`)})}),d.sort(pI)}return(l,d)=>{const E=q("SportImage"),c=q("Card");return h(),v("div",gEt,[w(c,null,{title:Y(()=>[w(E,{"sport-label":T(n).label,color:T(n).color},null,8,["sport-label","color"]),x(" "+A(T(a)),1)]),content:Y(()=>[(h(!0),v(re,null,be(u(T(n).records),m=>(h(),B(EI,{class:Oe({"max-width":r.value}),record:m,key:m.id},null,8,["class","record"]))),128))]),_:1})])}}}),NEt=ae(REt,[["__scopeId","data-v-7ab88f3c"]]),vEt={class:"user-records-section"},bEt={class:"section-title"},CEt={class:"title"},PEt={class:"user-records"},DEt={key:0,class:"no-records"},LEt=X({__name:"index",props:{sports:{},user:{}},setup(e){const t=e,{user:n}=_e(t),{t:a}=$t(),s=F(()=>mI(n.value.records,ia(t.sports,a),n.value.timezone,n.value.imperial_units,n.value.display_ascent,n.value.date_format));return(o,i)=>(h(),v("div",vEt,[p("div",bEt,[i[0]||(i[0]=p("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1)),p("span",CEt,A(o.$t("workouts.RECORD",2)),1)]),p("div",PEt,[Object.keys(s.value).length===0?(h(),v("div",DEt,A(o.$t("workouts.NO_RECORDS")),1)):L("",!0),(h(!0),v(re,null,be(Object.keys(s.value).sort(),r=>(h(),B(NEt,{sportTranslatedLabel:r,records:s.value[r],key:r,useImperialUnits:T(n).imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"]))),128))])]))}}),yEt=ae(LEt,[["__scopeId","data-v-e0d23747"]]),$Et={id:"user-stats"},pd="km",md="m",UEt=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),{t:a}=$t(),s=F(()=>Xp(n.value.total_duration,a)),o=F(()=>n.value.imperial_units?vn[pd].defaultTarget:pd),i=F(()=>n.value.imperial_units?Yt(n.value.total_distance,pd,o.value,2):parseFloat(n.value.total_distance.toFixed(2))),r=F(()=>n.value.imperial_units?vn[md].defaultTarget:md),u=F(()=>n.value.imperial_units?Yt(n.value.total_ascent,md,r.value,2):parseFloat(n.value.total_ascent.toFixed(2)));return(l,d)=>(h(),v("div",$Et,[w(wa,{icon:"calendar",value:T(n).nb_workouts,text:l.$t("workouts.WORKOUT",T(n).nb_workouts)},null,8,["value","text"]),w(wa,{icon:"road",value:i.value,text:o.value==="mi"?"miles":o.value},null,8,["value","text"]),T(n).display_ascent?(h(),B(wa,{key:0,icon:"location-arrow",value:u.value,text:r.value==="ft"?"feet":r.value},null,8,["value","text"])):L("",!0),w(wa,{icon:"clock-o",value:s.value.days,text:s.value.duration},null,8,["value","text"]),T(n).display_ascent?L("",!0):(h(),B(wa,{key:1,icon:"tags",value:T(n).nb_sports,text:l.$t("workouts.SPORT",T(n).nb_sports)},null,8,["value","text"]))]))}}),kEt={class:"policy-message"},wEt=X({__name:"PrivacyPolicyToAccept",props:{isPrivacyUpdated:{type:Boolean}},setup(e){const t=e,{isPrivacyUpdated:n}=_e(t);return(a,s)=>{const o=q("router-link"),i=q("i18n-t");return h(),v("div",kEt,[p("span",null,[w(i,{keypath:`user.${T(n)?"LAST_":""}PRIVACY_POLICY_TO_VALIDATE`},{default:Y(()=>[w(o,{to:"/profile/edit/privacy-policy",class:"policy-link"},{default:Y(()=>[x(A(a.$t("user.REVIEW")),1)]),_:1})]),_:1},8,["keypath"])])])}}}),MEt=ae(wEt,[["__scopeId","data-v-a0e19cca"]]),WEt={key:0,id:"dashboard",class:"view"},FEt={class:"container mobile-menu"},zEt={class:"box"},xEt={key:0,class:"container policy-container"},BEt={class:"container"},GEt={class:"container dashboard-container"},VEt={class:"left-container dashboard-sub-container"},HEt={class:"right-container dashboard-sub-container"},KEt={key:1,class:"app-loading"},qEt=X({__name:"Dashboard",setup(e){const t=De(),{authUser:n}=qe(),{sports:a}=nn(),s=Ie("calendar");function o(i){s.value=i}return Je(()=>t.dispatch(K.ACTIONS.GET_USER_PROFILE,{})),(i,r)=>{const u=q("Loader");return T(n).username&&T(a).length>0?(h(),v("div",WEt,[p("div",FEt,[p("div",zEt,[p("div",{class:Oe(["mobile-menu-item",{"is-selected":s.value==="calendar"}]),onClick:r[0]||(r[0]=l=>o("calendar"))},r[4]||(r[4]=[p("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1)]),2),p("div",{class:Oe(["mobile-menu-item",{"is-selected":s.value==="chart"}]),onClick:r[1]||(r[1]=l=>o("chart"))},r[5]||(r[5]=[p("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1)]),2),p("div",{class:Oe(["mobile-menu-item",{"is-selected":s.value==="timeline"}]),onClick:r[2]||(r[2]=l=>o("timeline"))},r[6]||(r[6]=[p("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1)]),2),p("div",{class:Oe(["mobile-menu-item",{"is-selected":s.value==="records"}]),onClick:r[3]||(r[3]=l=>o("records"))},r[7]||(r[7]=[p("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1)]),2)])]),T(n).accepted_privacy_policy!==!0?(h(),v("div",xEt,[w(MEt,{"is-privacy-updated":T(n).accepted_privacy_policy===!1},null,8,["is-privacy-updated"])])):L("",!0),p("div",BEt,[w(UEt,{user:T(n)},null,8,["user"])]),p("div",GEt,[p("div",VEt,[w(TEt,{sports:T(a),user:T(n),class:Oe({"is-hidden":s.value!=="chart"})},null,8,["sports","user","class"]),w(yEt,{sports:T(a),user:T(n),class:Oe({"is-hidden":s.value!=="records"})},null,8,["sports","user","class"])]),p("div",HEt,[w(Cdt,{sports:T(a),user:T(n),class:Oe({"is-hidden":s.value!=="calendar"})},null,8,["sports","user","class"]),w(Xct,{sports:T(a),authUser:T(n),class:Oe({"is-hidden":s.value!=="timeline"})},null,8,["sports","authUser","class"])])]),r[8]||(r[8]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",KEt,[w(u)]))}}}),jEt=ae(qEt,[["__scopeId","data-v-7312a5ea"]]),YEt={class:"not-found view"},XEt=X({__name:"NotFoundView",setup(e){return(t,n)=>(h(),v("div",YEt,[w(wo)]))}}),QEt={key:0,class:"follow-request"},ZEt={class:"follow-request-user"},JEt={class:"user-name"},ept={key:0,class:"follow-request-actions"},tpt={key:1,class:"follow-request-actions"},npt=X({__name:"RelationshipDetail",props:{authUser:{},notification:{}},emits:["updatedUserRelationship","userLinkClicked"],setup(e,{emit:t}){const n=e,{authUser:a,notification:s}=_e(n),o=t,i=De();function r(u,l){i.dispatch(K.ACTIONS.UPDATE_FOLLOW_REQUESTS,{username:u,action:l}),o("updatedUserRelationship")}return(u,l)=>{const d=q("router-link");return T(s).from?(h(),v("div",QEt,[p("div",ZEt,[w(Qt,{user:T(s).from},null,8,["user"]),p("div",JEt,[w(d,{to:`/users/${T(s).from.username}`,onClick:l[0]||(l[0]=E=>u.$emit("userLinkClicked"))},{default:Y(()=>[x(A(T(s).from.username),1)]),_:1},8,["to"])])]),T(s).type==="follow_request"?(h(),v("div",ept,[p("button",{onClick:l[1]||(l[1]=E=>r(T(s).from.username,"accept"))},[l[4]||(l[4]=p("i",{class:"fa fa-check","aria-hidden":"true"},null,-1)),x(" "+A(u.$t("buttons.ACCEPT")),1)]),p("button",{onClick:l[2]||(l[2]=E=>r(T(s).from.username,"reject")),class:"danger"},[l[5]||(l[5]=p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)),x(" "+A(u.$t("buttons.REJECT")),1)])])):(h(),v("div",tpt,[w(Ju,{authUser:T(a),user:T(s).from,from:"notifications",displayFollowsYou:!0,onUpdatedUser:l[3]||(l[3]=()=>o("updatedUserRelationship"))},null,8,["authUser","user"])]))])):L("",!0)}}}),apt=ae(npt,[["__scopeId","data-v-dc09ab49"]]),spt={class:"report-notification"},opt={key:0,class:"reported-workout"},ipt={key:1,class:"reported-comment"},rpt={key:2,class:"reported-user"},upt={class:"user-name"},lpt={key:3,class:"reported-user"},cpt={class:"deleted-object"},dpt={class:"report-button"},Ept=X({__name:"ReportNotification",props:{report:{}},emits:["reportButtonClicked"],setup(e,{emit:t}){const n=e,{report:a}=_e(n),s=t,o=gn();function i(r){o.push(`/admin/reports/${r}`),s("reportButtonClicked")}return(r,u)=>{const l=q("router-link");return h(),v("div",spt,[T(a).reported_workout?(h(),v("div",opt,[w(Zp,{"display-appeal":!1,"display-object-name":!0,workout:T(a).reported_workout,"report-id":T(a).id},null,8,["workout","report-id"])])):T(a).reported_comment?(h(),v("div",ipt,[w(Qp,{"display-object-name":!0,comment:T(a).reported_comment},null,8,["comment"])])):T(a).reported_user?(h(),v("div",rpt,[w(Qt,{user:T(a).reported_user},null,8,["user"]),p("div",upt,[w(l,{to:`/users/${T(a).reported_user.username}`},{default:Y(()=>[x(A(T(a).reported_user.username),1)]),_:1},8,["to"])])])):(h(),v("div",lpt,[p("span",cpt,A(r.$t("admin.DELETED_USER")),1)])),p("div",dpt,[p("button",{onClick:u[0]||(u[0]=d=>i(T(a).id))},A(r.$t("admin.APP_MODERATION.VIEW_REPORT"))+" #"+A(T(a).id),1)])])}}}),ppt=ae(Ept,[["__scopeId","data-v-ff0a4948"]]),mpt={class:"notification-data-button"},Tpt={class:"notification-date"},_pt=["title"],fpt={class:"hidden-content"},hpt={key:0},Spt={class:"notification-reason"},Apt={key:5,class:"auth-user"},Opt={class:"user-name"},Ipt={key:6},gpt={key:0,class:"info-box appeal-in-progress"},Rpt=X({__name:"NotificationDetail",props:{authUser:{},notification:{}},emits:["reload","updateReadStatus"],setup(e,{emit:t}){const n=e,{authUser:a,notification:s}=_e(n),o=t,{locale:i}=Be(),r=F(()=>_(s.value.type));function u(){o("reload")}function l(f,O){o("updateReadStatus",{notificationId:f,markedAsRead:O})}function d(f){f.marked_as_read||l(f.id,!0)}function E(f){return["comment_like","comment_suspension","comment_unsuspension","mention","user_warning","user_warning_lifting","workout_comment"].includes(f)&&s.value.comment!==void 0}function c(f){return["account_creation","follow","follow_request","follow_request_approved"].includes(f)}function m(f){var O;switch(f){case"account_creation":return"notifications.SIGN_UP";case"comment_like":return"notifications.LIKED_YOUR_COMMENT";case"comment_suspension":return"notifications.YOUR_COMMENT_HAS_BEEN_SUSPENDED";case"comment_unsuspension":return"notifications.YOUR_COMMENT_HAS_BEEN_UNSUSPENDED";case"follow":return"user.RELATIONSHIPS.FOLLOWS_YOU";case"follow_request":return"notifications.SEND_FOLLOW_REQUEST_TO_YOU";case"follow_request_approved":return"notifications.ACCEPTED_FOLLOW_REQUEST";case"mention":return"notifications.MENTIONED_YOU";case"suspension_appeal":return"notifications.APPEALED_SUSPENSION";case"user_warning":return"notifications.YOU_RECEIVED_A_WARNING";case"user_warning_appeal":return"notifications.APPEALED_USER_WARNING";case"user_warning_lifting":return"notifications.YOUR_WARNING_HAS_BEEN_LIFTED";case"workout_comment":return"notifications.COMMENTED_YOUR_WORKOUT";case"workout_like":return"notifications.LIKED_YOUR_WORKOUT";case"workout_suspension":return"notifications.YOUR_WORKOUT_HAS_BEEN_SUSPENDED";case"workout_unsuspension":return"notifications.YOUR_WORKOUT_HAS_BEEN_UNSUSPENDED";case"report":return`notifications.REPORTED_USER_${(O=s.value.report)!=null&&O.object_type?s.value.report.object_type.toUpperCase():""}`;default:return""}}function _(f){switch(f){case"account_creation":return"user";case"follow":case"follow_request":case"follow_request_approved":return"user-plus";case"mention":return"at";case"comment_suspension":case"comment_unsuspension":case"report":case"suspension_appeal":case"user_warning":case"user_warning_appeal":case"user_warning_lifting":case"workout_suspension":case"workout_unsuspension":return"flag";case"comment_like":case"workout_like":return"heart";case"workout_comment":return"comment";default:return"bell"}}return(f,O)=>{const S=q("router-link"),R=q("Card");return T(s).id?(h(),B(R,{key:0,class:Oe(["notification-card",{read:T(s).marked_as_read}])},{title:Y(()=>[p("div",null,[p("i",{class:Oe([`fa-${r.value}`,"fa notification-icon"]),"aria-hidden":"true"},null,2),T(s).from?(h(),B(S,{key:0,to:`/users/${T(s).from.username}`},{default:Y(()=>[x(A(T(s).from.username),1)]),_:1},8,["to"])):L("",!0),x(" "+A(f.$t(m(T(s).type))),1)]),p("div",mpt,[p("div",Tpt,A(T(Ws)(new Date(T(s).created_at),new Date,{addSuffix:!0,locale:T(i)})),1),p("button",{class:"mark-action",title:f.$t(`notifications.MARK_AS_${T(s).marked_as_read?"UN":""}READ`),onClick:O[0]||(O[0]=()=>l(T(s).id,!T(s).marked_as_read))},[p("span",fpt,A(f.$t(`notifications.MARK_AS_${T(s).marked_as_read?"UN":""}READ`)),1),p("i",{class:Oe(["fa",`fa-eye${T(s).marked_as_read?"-slash":""}`]),"aria-hidden":"true"},null,2)],8,_pt)])]),content:Y(()=>{var I,g,N,b,C,y;return[(I=T(s).report_action)!=null&&I.reason?(h(),v("div",hpt,[p("span",Spt,A(f.$t("admin.APP_MODERATION.REASON"))+": ",1),x(" "+A(T(s).report_action.reason),1)])):L("",!0),E(T(s).type)&&T(s).comment?(h(),B(Qp,{key:1,"display-object-name":T(s).type.startsWith("user_warning"),comment:T(s).comment,action:T(s).report_action,onCommentLinkClicked:O[1]||(O[1]=D=>d(T(s)))},null,8,["display-object-name","comment","action"])):c(T(s).type)?(h(),B(apt,{key:2,notification:T(s),authUser:T(a),onUpdatedUserRelationship:u,onUserLinkClicked:O[2]||(O[2]=D=>d(T(s)))},null,8,["notification","authUser"])):["report","suspension_appeal","user_warning_appeal"].includes(T(s).type)&&T(s).report?(h(),B(ppt,{key:3,report:T(s).report,onReportButtonClicked:O[3]||(O[3]=D=>d(T(s)))},null,8,["report"])):T(s).workout?(h(),B(Zp,{key:4,action:T(s).report_action,"display-appeal":T(s).type!=="user_warning","display-object-name":T(s).type.startsWith("user_warning"),workout:T(s).workout,onWorkoutLinkClicked:O[4]||(O[4]=D=>d(T(s)))},null,8,["action","display-appeal","display-object-name","workout"])):L("",!0),((g=T(s).report_action)==null?void 0:g.action_type)==="user_warning_lifting"&&!T(s).comment&&!T(s).workout?(h(),v("div",Apt,[w(Qt,{user:T(a)},null,8,["user"]),p("div",Opt,[w(S,{to:`/users/${T(a).username}`},{default:Y(()=>[x(A(T(a).username),1)]),_:1},8,["to"])])])):L("",!0),((N=T(s).report_action)==null?void 0:N.action_type)==="user_warning"?(h(),v("div",Ipt,[((C=(b=T(s).report_action)==null?void 0:b.appeal)==null?void 0:C.approved)===null?(h(),v("div",gpt,[p("span",null,[O[6]||(O[6]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(f.$t("user.APPEAL_IN_PROGRESS")),1)])])):(y=T(s).report_action)!=null&&y.appeal?L("",!0):(h(),B(S,{key:1,class:"appeal-link",to:`profile/moderation/sanctions/${T(s).report_action.id}`,onClick:O[5]||(O[5]=D=>d(T(s)))},{default:Y(()=>[x(A(f.$t("user.APPEAL")),1)]),_:1},8,["to"]))])):L("",!0)]}),_:1},8,["class"])):L("",!0)}}}),Npt=ae(Rpt,[["__scopeId","data-v-ffa8664f"]]),vpt={key:0,id:"notifications"},bpt={key:0,class:"no-notifications box"},Cpt={class:"preferences-link"},Ppt=X({__name:"Notifications",setup(e){const t=De(),n=rt(),{authUser:a,isAuthUserSuspended:s}=qe();let o=yt(u(n.query));const i=F(()=>t.getters[Et.GETTERS.NOTIFICATIONS]),r=F(()=>t.getters[Et.GETTERS.PAGINATION]);function u(m){const _={};return"page"in m&&m.page&&(_.page=+m.page),"type"in m&&m.type&&(_.type=m.type),"status"in m&&m.status==="unread"&&(_.status="unread"),_}function l(){setTimeout(()=>{d(o)},500)}function d(m){s.value||t.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,m)}function E(m){t.dispatch(Et.ACTIONS.UPDATE_STATUS,{...m,currentQuery:o})}function c(){t.dispatch(Et.ACTIONS.MARK_ALL_AS_READ,o)}return Ce(()=>n.query,m=>{o=u(m),d(o)}),Ce(()=>s.value,m=>{m||d(o)}),Je(()=>d(o)),ct(()=>{t.commit(Et.MUTATIONS.EMPTY_NOTIFICATIONS)}),(m,_)=>{const f=q("router-link");return T(a).username?(h(),v("div",vpt,[i.value.length===0?(h(),v("div",bpt,A(m.$t("notifications.NO_NOTIFICATIONS")),1)):(h(),v(re,{key:1},[p("button",{class:"mark-all-action",onClick:c},A(m.$t("notifications.MARK_ALL_AS_READ")),1),(h(!0),v(re,null,be(i.value,O=>(h(),B(Npt,{key:O.id,"auth-user":T(a),notification:O,onReload:l,onUpdateReadStatus:E},null,8,["auth-user","notification"]))),128)),r.value.page?(h(),B(Qn,{key:0,path:"/notifications",pagination:r.value,query:T(o)},null,8,["pagination","query"])):L("",!0)],64)),p("div",Cpt,[w(f,{to:"/profile/edit/notifications"},{default:Y(()=>[x(A(m.$t("user.PROFILE.EDIT_NOTIFICATION_PREFERENCES")),1)]),_:1})])])):L("",!0)}}}),Dpt=ae(Ppt,[["__scopeId","data-v-b6c325e6"]]),Lpt={class:"notifications-filters"},ypt={class:"box"},$pt={class:"form"},Upt={class:"form-all-items"},kpt={class:"form-items-group"},wpt={class:"status-title"},Mpt={class:"status-radio"},Wpt=["checked"],Fpt=["checked"],zpt={class:"form-items-group"},xpt={class:"form-item"},Bpt={for:"notification-labels"},Gpt=["disabled","value"],Vpt={value:""},Hpt=["value"],Kpt=X({__name:"NotificationsFilters",setup(e){const t=rt(),n=gn(),a=De(),{t:s}=$t(),{authUserHasModeratorRights:o,isAuthUserSuspended:i}=qe(),r=F(()=>a.getters[Et.GETTERS.TYPES]),u=F(()=>S());let l=Object.assign({},t.query);const d=Ie(E(t.query));function E(R){return"status"in R?R.status:null}function c(R){d.value=R,l.status=R,_()}function m(R){const I=R.target;I.value===""?delete l[I.name]:l[I.name]=I.value,_()}function _(){"page"in l&&(l.page="1"),n.push({path:"/notifications",query:l})}function f(R,I){return R.label>I.label?1:R.label!["report","suspension_appeal","user_warning_appeal"].includes(I)||o.value).map(I=>{R.push({label:s(`notifications.TYPES.${I}`),value:I})}),R.sort(f)}return Ce(()=>t.query,R=>{l=Object.assign({},R),d.value=E(R),O()}),Je(()=>O()),ct(()=>{a.commit(Et.MUTATIONS.UPDATE_TYPES,[])}),(R,I)=>(h(),v("div",Lpt,[p("div",ypt,[p("form",$pt,[p("div",Upt,[p("div",kpt,[p("span",wpt,A(R.$t("notifications.STATUS")),1),p("div",Mpt,[p("label",null,[p("input",{type:"radio",name:"duration",checked:d.value==="unread",onClick:I[0]||(I[0]=g=>c("unread"))},null,8,Wpt),x(" "+A(R.$t("notifications.UNREAD")),1)]),p("label",null,[p("input",{type:"radio",name:"all",checked:d.value!=="unread",onClick:I[1]||(I[1]=g=>c("all"))},null,8,Fpt),x(" "+A(R.$t("notifications.ALL")),1)])])]),p("div",zpt,[p("div",xpt,[p("label",Bpt,A(R.$t("notifications.TYPES.LABEL")),1),p("select",{class:"notification-labels",id:"notification-labels",name:"type",disabled:u.value.length===0,value:R.$route.query.type,onChange:m},[u.value.length>0?(h(),v(re,{key:0},[p("option",Vpt,A(R.$t("notifications.TYPES.ALL")),1),I[2]||(I[2]=p("option",{disabled:""},"──────",-1))],64)):L("",!0),(h(!0),v(re,null,be(u.value,g=>(h(),v("option",{value:g.value,key:g.value},A(g.label),9,Hpt))),128))],40,Gpt)])])])])])]))}}),qpt=ae(Kpt,[["__scopeId","data-v-6cb336ec"]]),jpt={id:"notifications",class:"view items-list-view"},Ypt={class:"container items-list-container"},Xpt={class:"display-filters"},Qpt={class:"list-container"},Zpt=X({__name:"NotificationsView",setup(e){const t=Ie(!0);function n(){t.value=!t.value}return(a,s)=>(h(),v("div",jpt,[p("div",Ypt,[p("div",{class:Oe(["filters-container",{hidden:t.value}])},[w(qpt)],2),p("div",Xpt,[p("div",{onClick:n},[p("i",{class:Oe(`fa fa-caret-${t.value?"down":"up"}`),"aria-hidden":"true"},null,2),p("span",null,A(a.$t(`workouts.${t.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),p("div",Qpt,[w(Dpt)])])]))}}),Jpt={id:"privacy-policy",class:"view"},emt={class:"container"},tmt=X({__name:"PrivacyPolicyView",setup(e){const t=De();return Je(()=>{t.dispatch(te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)}),(n,a)=>(h(),v("div",Jpt,[p("div",emt,[w(JO)]),a[0]||(a[0]=p("div",{id:"bottom"},null,-1))]))}}),nmt={class:"chart-menu"},amt=["disabled","aria-label"],smt={class:"time-frames custom-checkboxes-group"},omt={class:"time-frames-checkboxes custom-checkboxes"},imt=["id","name","checked","onInput","disabled"],rmt=["id","tabindex","onKeydown"],umt=["disabled","aria-label"],lmt={class:"stats-type"},cmt={class:"stats-type-radio"},dmt=["checked","disabled"],Emt=["checked","disabled"],pmt=X({__name:"StatsMenu",props:{isDisabled:{type:Boolean}},emits:["arrowClick","statsTypeUpdate","timeFrameUpdate"],setup(e,{emit:t}){const n=e,{isDisabled:a}=_e(n),s=t,o=["week","month","year"],i=Ie("month"),r=Ie("total");function u(d){i.value=d,s("timeFrameUpdate",d)}function l(d){r.value=d.target.value,s("statsTypeUpdate",r.value)}return(d,E)=>(h(),v(re,null,[p("div",nmt,[p("button",{class:"chart-arrow transparent",onClick:E[0]||(E[0]=c=>s("arrowClick",!0)),onKeydown:E[1]||(E[1]=Ye(c=>s("arrowClick",!0),["enter"])),disabled:T(a),"aria-label":d.$t("common.PREVIOUS")},E[4]||(E[4]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),40,amt),p("div",smt,[p("div",omt,[(h(),v(re,null,be(o,c=>p("div",{class:"time-frame custom-checkbox",key:c},[p("label",null,[p("input",{type:"radio",id:c,name:c,checked:i.value===c,onInput:m=>u(c),disabled:T(a)},null,40,imt),p("span",{id:`frame-${c}`,tabindex:T(a)?-1:0,role:"button",onKeydown:Ye(m=>u(c),["enter"])},A(d.$t(`statistics.TIME_FRAMES.${c}`)),41,rmt)])])),64))])]),p("button",{class:"chart-arrow transparent",onClick:E[2]||(E[2]=c=>s("arrowClick",!1)),onKeydown:E[3]||(E[3]=Ye(c=>s("arrowClick",!1),["enter"])),disabled:T(a),"aria-label":d.$t("common.NEXT")},E[5]||(E[5]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),40,umt)]),p("div",lmt,[p("div",cmt,[p("label",null,[p("input",{type:"radio",name:"stats_type",value:"total",checked:r.value==="total",disabled:T(a),onClick:l},null,8,dmt),x(" "+A(d.$t("common.TOTAL")),1)]),p("label",null,[p("input",{type:"radio",name:"stats_type",value:"average",checked:r.value==="average",disabled:T(a),onClick:l},null,8,Emt),x(" "+A(d.$t("statistics.AVERAGE")),1)])])])],64))}}),mmt=ae(pmt,[["__scopeId","data-v-dacfdeb2"]]),Tmt={class:"sports-menu"},_mt=["id","name","checked","onInput","onKeyup"],fmt={class:"sport-label"},hmt=X({__name:"StatsSportsMenu",props:{userSports:{},selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:t}){const n=e,{selectedSportIds:a,userSports:s}=_e(n),o=t,{t:i}=$t(),{sportColors:r}=nn(),u=F(()=>ia(s.value,i));function l(d){o("selectedSportIdsUpdate",d)}return(d,E)=>{const c=q("SportImage");return h(),v("div",Tmt,[(h(!0),v(re,null,be(u.value,m=>(h(),v("label",{type:"checkbox",key:m.id,style:za({color:m.color?m.color:T(r)[m.label]})},[p("input",{type:"checkbox",id:`${m.id}`,name:m.label,checked:T(a).includes(m.id),onInput:_=>l(m.id),onKeyup:Ye(ve(_=>l(m.id),["prevent"]),["space"])},null,40,_mt),w(c,{"sport-label":m.label,color:m.color},null,8,["sport-label","color"]),p("span",fmt,A(m.translatedLabel),1)],4))),128))])}}}),Smt={key:0,id:"user-statistics"},Amt=X({__name:"index",props:{sports:{},user:{},isDisabled:{type:Boolean}},setup(e){const t=e,{sports:n,user:a}=_e(t),{t:s}=$t(),o=Ie("month"),i=Ie("total"),r=Ie(c(o.value,i.value)),u=Ie(_(n.value)),l=F(()=>ia(t.sports,s));function d(O){o.value=O,r.value=c(O,i.value)}function E(O){i.value=O,r.value=c(o.value,O)}function c(O,S){return Hdt(new Date,O,t.user.weekm,S)}function m(O){r.value=Kdt(r.value,O,t.user.weekm)}function _(O){return O.map(S=>S.id)}function f(O){u.value.includes(O)?u.value=u.value.filter(S=>S!==O):u.value.push(O)}return Ce(()=>t.sports,O=>{u.value=_(O)}),(O,S)=>l.value?(h(),v("div",Smt,[w(mmt,{onStatsTypeUpdate:E,onTimeFrameUpdate:d,onArrowClick:m,isDisabled:O.isDisabled},null,8,["isDisabled"]),w(dI,{sports:T(n),user:T(a),chartParams:r.value,"displayed-sport-ids":u.value,fullStats:!0,isDisabled:O.isDisabled,selectedTimeFrame:o.value},null,8,["sports","user","chartParams","displayed-sport-ids","isDisabled","selectedTimeFrame"]),w(hmt,{"selected-sport-ids":u.value,"user-sports":T(n),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):L("",!0)}}),Omt=ae(Amt,[["__scopeId","data-v-f9158924"]]),Imt={class:"sport-stat-card"},gmt={class:"stat-content"},Rmt={class:"stat-icon"},Nmt={class:"stat-details"},vmt={class:"stat-label"},bmt={class:"stat-values"},Cmt={key:0,class:"fa fa-refresh fa-spin fa-fw"},Pmt={key:1,class:"stat-huge"},Dmt={key:2,class:"stat"},Lmt={key:0,class:"stat-average"},ymt={key:0},to=X({__name:"SportStatCard",props:{icon:{},text:{default:""},totalValue:{},label:{},loading:{type:Boolean}},setup(e){const t=e,{icon:n,loading:a,text:s,totalValue:o}=_e(t);return(i,r)=>(h(),v("div",Imt,[p("div",gmt,[p("div",Rmt,[p("i",{class:Oe(["fa",`fa-${T(n)}`])},null,2)]),p("div",Nmt,[p("div",vmt,A(i.label),1),p("div",bmt,[T(a)?(h(),v("i",Cmt)):(h(),v("span",Pmt,A(T(o)?T(o):""),1)),T(s)?(h(),v("span",Dmt,A(T(s)),1)):L("",!0)]),["calendar","tachometer"].includes(T(n))?L("",!0):(h(),v("div",Lmt,[T(a)?(h(),v("div",ymt,r[0]||(r[0]=[p("i",{class:"fa fa-refresh fa-spin fa-fw"},null,-1)]))):Pt(i.$slots,"average",{key:1})]))])])]))}}),$mt={id:"sport-statistics"},Umt={for:"sport"},kmt=["value"],wmt={key:0,class:"sport-statistics"},Mmt={class:"sport-img-label"},Wmt={class:"sport-label"},Fmt={class:"label"},zmt={class:"statistics"},xmt={key:0,class:"statistics-workouts-count"},Bmt={key:1,class:"statistics-workouts-count"},Gmt={class:"statistics"},Vmt={class:"records"},Hmt={class:"label"},Kmt=X({__name:"SportStatistics",props:{sports:{},authUser:{}},setup(e){const t=e,{authUser:n,sports:a}=_e(t),s=rt(),o=gn(),i=De(),{t:r}=$t(),u=F(()=>ia(a.value,r,"all")),l=F(()=>u.value.map(C=>C.id)),d=F(()=>s.query.sport_id&&l.value.includes(+s.query.sport_id)?+s.query.sport_id:l.value[0]),E=F(()=>mI(n.value.records,u.value,n.value.timezone,n.value.imperial_units,n.value.display_ascent,n.value.date_format,d.value)),c=F(()=>u.value.find(C=>C.id===d.value)),m=F(()=>i.getters.USER_SPORT_STATS[d.value]),_=F(()=>i.getters.TOTAL_WORKOUTS),f=F(()=>n.value.imperial_units?vn.km.defaultTarget:"km"),O=F(()=>n.value.imperial_units?vn.m.defaultTarget:"m"),S=F(()=>i.getters.STATS_LOADING),R=F(()=>m.value?Xp(m.value.total_duration,r):{days:"",duration:""});function I(C,y){if(C===void 0)return"";const D=n.value.imperial_units?vn[y].defaultTarget:y;return n.value.imperial_units?Yt(C,y,D,2):C}function g(){i.dispatch(Mt.ACTIONS.GET_USER_SPORT_STATS,{username:n.value.username,sportId:d.value})}function N(C){var D,M;const y=[];return(D=c.value)!=null&&D.translatedLabel&&C[(M=c.value)==null?void 0:M.translatedLabel].records.map(P=>{y.push({...P,label:r(`workouts.RECORD_${P.record_type}`)})}),y.sort(pI)}function b(C){o.push({path:"/statistics",query:{chart:"by_sport",sport_id:C.target.value}})}return Ce(()=>s.query,()=>{g()}),Je(()=>g()),(C,y)=>{var P,W,Q,Se,J,Ee;const D=q("SportImage"),M=q("Distance");return h(),v("div",$mt,[p("label",Umt,A(C.$t("workouts.SPORT",1))+": ",1),We(p("select",{id:"sport","onUpdate:modelValue":y[0]||(y[0]=fe=>d.value=fe),onChange:b},[(h(!0),v(re,null,be(u.value,fe=>(h(),v("option",{value:fe.id,key:fe.id},A(fe.translatedLabel),9,kmt))),128))],544),[[Jt,d.value]]),c.value?(h(),v("div",wmt,[p("div",Mmt,[w(D,{"sport-label":c.value.label,color:c.value.color},null,8,["sport-label","color"]),p("div",Wmt,A(c.value.translatedLabel),1)]),p("div",null,[p("div",Fmt,[y[1]||(y[1]=p("i",{class:"fa fa-line-chart custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+A(C.$t("statistics.STATISTICS",0)),1)]),p("div",zmt,[w(to,{icon:"calendar",loading:S.value,"total-value":_.value,label:C.$t("workouts.WORKOUT",0)},null,8,["loading","total-value","label"])]),m.value&&m.value.total_workouts<_.value?(h(),v("div",xmt,A(C.$t("statistics.STATISTICS_ON_LAST_WORKOUTS",{count:m.value.total_workouts})),1)):(h(),v("div",Bmt,A(C.$t("statistics.STATISTICS_ON_ALL_WORKOUTS")),1)),p("div",Gmt,[w(to,{icon:"road",loading:S.value,"total-value":I((P=m.value)==null?void 0:P.total_distance,"km"),text:f.value,label:C.$t("workouts.DISTANCE")},{average:Y(()=>[p("div",null,A(C.$t("statistics.AVERAGE"))+":",1),m.value?(h(),B(M,{key:0,distance:m.value.average_distance,unitFrom:"km",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"]),w(to,{icon:"clock-o",loading:S.value,"total-value":R.value.days,text:R.value.duration,label:C.$t("workouts.DURATION")},{average:Y(()=>[p("div",null,A(C.$t("statistics.AVERAGE"))+":",1),p("span",null,A(m.value?T(OE)(m.value.average_duration,C.$t):""),1)]),_:1},8,["loading","total-value","text","label"]),w(to,{icon:"tachometer",loading:S.value,"total-value":I((W=m.value)==null?void 0:W.average_speed,"km"),text:`${f.value}/h`,label:C.$t("workouts.AVE_SPEED")},null,8,["loading","total-value","text","label"]),((Q=m.value)==null?void 0:Q.total_ascent)!==null?(h(),B(to,{key:0,icon:"location-arrow",loading:S.value,"total-value":I((Se=m.value)==null?void 0:Se.total_ascent,"m"),text:O.value,label:C.$t("workouts.ASCENT")},{average:Y(()=>[p("div",null,A(C.$t("statistics.AVERAGE"))+":",1),m.value?(h(),B(M,{key:0,distance:m.value.average_ascent,unitFrom:"m",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"])):L("",!0),((J=m.value)==null?void 0:J.total_descent)!==null?(h(),B(to,{key:1,icon:"location-arrow fa-rotate-90",loading:S.value,"total-value":I((Ee=m.value)==null?void 0:Ee.total_descent,"m"),text:O.value,label:C.$t("workouts.DESCENT")},{average:Y(()=>[p("div",null,A(C.$t("statistics.AVERAGE"))+":",1),m.value?(h(),B(M,{key:0,distance:m.value.average_descent,unitFrom:"m",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"])):L("",!0)])]),p("div",Vmt,[p("div",Hmt,[y[2]||(y[2]=p("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+A(C.$t("workouts.RECORD",0)),1)]),p("div",null,[(h(!0),v(re,null,be(N(E.value),fe=>(h(),B(EI,{record:fe,key:fe.id},null,8,["record"]))),128))])])])):L("",!0)])}}}),qmt=ae(Kmt,[["__scopeId","data-v-dad31bfb"]]),jmt={id:"statistics",class:"view"},Ymt={key:0,class:"container"},Xmt=["value"],Qmt=X({__name:"StatisticsView",setup(e){const t=rt(),n=gn(),{authUser:a}=qe(),{sports:s}=nn(),o=["by_time","by_sport"],i=Ie("by_time"),r=F(()=>s.value.filter(d=>a.value.sports_list.includes(d.id))),u=F(()=>a.value.nb_workouts===0);function l(d){n.push({path:"/statistics",query:{chart:d.target.value}})}return Je(()=>{i.value=t.query.chart&&o.includes(t.query.chart)?t.query.chart:"by_time"}),mt(()=>{if(!u.value){const d=document.getElementById("stats-type");d==null||d.focus()}}),(d,E)=>{const c=q("Card");return h(),v("div",jmt,[T(a).username?(h(),v("div",Ymt,[w(c,null,{title:Y(()=>[x(A(d.$t("statistics.STATISTICS"))+" ",1),r.value.length>0?We((h(),v("select",{key:0,class:"stats-types",name:"stats-type",id:"stats-type","onUpdate:modelValue":E[0]||(E[0]=m=>i.value=m),onChange:l},[(h(),v(re,null,be(o,m=>p("option",{value:m,key:m},A(d.$t(`statistics.STATISTICS_TYPES.${m}`)),9,Xmt)),64))],544)),[[Jt,i.value]]):L("",!0)]),content:Y(()=>[d.$route.query.chart!=="by_sport"?(h(),B(Omt,{key:0,class:Oe({"stats-disabled":u.value}),user:T(a),sports:r.value,isDisabled:u.value},null,8,["class","user","sports","isDisabled"])):r.value.length>0?(h(),B(qmt,{key:1,sports:r.value,authUser:T(a)},null,8,["sports","authUser"])):L("",!0)]),_:1}),T(a).nb_workouts===0?(h(),B(Jp,{key:0})):L("",!0)])):L("",!0)])}}}),Zmt=ae(Qmt,[["__scopeId","data-v-94133818"]]),Jmt={name:"EmailSent"},eTt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 345.834 345.834",style:{"enable-background":"new 0 0 345.834 345.834"},"xml:space":"preserve"};function tTt(e,t,n,a,s,o){return h(),v("svg",eTt,t[0]||(t[0]=[p("g",null,[p("path",{d:`M339.798,260.429c0.13-0.026,0.257-0.061,0.385-0.094c0.109-0.028,0.219-0.051,0.326-0.084 + c0.125-0.038,0.247-0.085,0.369-0.129c0.108-0.039,0.217-0.074,0.324-0.119c0.115-0.048,0.226-0.104,0.338-0.157 + c0.109-0.052,0.22-0.1,0.327-0.158c0.107-0.057,0.208-0.122,0.312-0.184c0.107-0.064,0.215-0.124,0.319-0.194 + c0.111-0.074,0.214-0.156,0.321-0.236c0.09-0.067,0.182-0.13,0.27-0.202c0.162-0.133,0.316-0.275,0.466-0.421 + c0.027-0.026,0.056-0.048,0.083-0.075c0.028-0.028,0.052-0.059,0.079-0.088c0.144-0.148,0.284-0.3,0.416-0.46 + c0.077-0.094,0.144-0.192,0.216-0.289c0.074-0.1,0.152-0.197,0.221-0.301c0.074-0.111,0.139-0.226,0.207-0.34 + c0.057-0.096,0.118-0.19,0.171-0.289c0.062-0.115,0.114-0.234,0.169-0.351c0.049-0.104,0.101-0.207,0.146-0.314 + c0.048-0.115,0.086-0.232,0.128-0.349c0.041-0.114,0.085-0.227,0.12-0.343c0.036-0.118,0.062-0.238,0.092-0.358 + c0.029-0.118,0.063-0.234,0.086-0.353c0.028-0.141,0.045-0.283,0.065-0.425c0.014-0.1,0.033-0.199,0.043-0.3 + c0.025-0.249,0.038-0.498,0.038-0.748V92.76c0-4.143-3.357-7.5-7.5-7.5h-236.25c-0.066,0-0.13,0.008-0.196,0.01 + c-0.143,0.004-0.285,0.01-0.427,0.022c-0.113,0.009-0.225,0.022-0.337,0.037c-0.128,0.016-0.255,0.035-0.382,0.058 + c-0.119,0.021-0.237,0.046-0.354,0.073c-0.119,0.028-0.238,0.058-0.356,0.092c-0.117,0.033-0.232,0.069-0.346,0.107 + c-0.117,0.04-0.234,0.082-0.349,0.128c-0.109,0.043-0.216,0.087-0.322,0.135c-0.118,0.053-0.235,0.11-0.351,0.169 + c-0.099,0.051-0.196,0.103-0.292,0.158c-0.116,0.066-0.23,0.136-0.343,0.208c-0.093,0.06-0.184,0.122-0.274,0.185 + c-0.106,0.075-0.211,0.153-0.314,0.235c-0.094,0.075-0.186,0.152-0.277,0.231c-0.09,0.079-0.179,0.158-0.266,0.242 + c-0.099,0.095-0.194,0.194-0.288,0.294c-0.047,0.05-0.097,0.094-0.142,0.145c-0.027,0.03-0.048,0.063-0.074,0.093 + c-0.094,0.109-0.182,0.223-0.27,0.338c-0.064,0.084-0.13,0.168-0.19,0.254c-0.078,0.112-0.15,0.227-0.222,0.343 + c-0.059,0.095-0.12,0.189-0.174,0.286c-0.063,0.112-0.118,0.227-0.175,0.342c-0.052,0.105-0.106,0.21-0.153,0.317 + c-0.049,0.113-0.092,0.23-0.135,0.345c-0.043,0.113-0.087,0.225-0.124,0.339c-0.037,0.115-0.067,0.232-0.099,0.349 + c-0.032,0.12-0.066,0.239-0.093,0.36c-0.025,0.113-0.042,0.228-0.062,0.342c-0.022,0.13-0.044,0.26-0.06,0.39 + c-0.013,0.108-0.019,0.218-0.027,0.328c-0.01,0.14-0.019,0.28-0.021,0.421c-0.001,0.041-0.006,0.081-0.006,0.122v46.252 + c0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-29.595l66.681,59.037c-0.348,0.245-0.683,0.516-0.995,0.827l-65.687,65.687v-49.288 + c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v9.164h-38.75c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h38.75v43.231 + c0,4.143,3.357,7.5,7.5,7.5h236.25c0.247,0,0.494-0.013,0.74-0.037c0.115-0.011,0.226-0.033,0.339-0.049 + C339.542,260.469,339.67,260.454,339.798,260.429z M330.834,234.967l-65.688-65.687c-0.042-0.042-0.087-0.077-0.13-0.117 + l49.383-41.897c3.158-2.68,3.546-7.412,0.866-10.571c-2.678-3.157-7.41-3.547-10.571-0.866l-84.381,71.59l-98.444-87.158h208.965 + V234.967z M185.878,179.888c0.535-0.535,0.969-1.131,1.308-1.765l28.051,24.835c1.418,1.255,3.194,1.885,4.972,1.885 + c1.726,0,3.451-0.593,4.853-1.781l28.587-24.254c0.26,0.38,0.553,0.743,0.89,1.08l65.687,65.687H120.191L185.878,179.888z`}),p("path",{d:`M7.5,170.676h126.667c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H7.5c-4.143,0-7.5,3.357-7.5,7.5 + S3.357,170.676,7.5,170.676z`}),p("path",{d:`M20.625,129.345H77.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H20.625c-4.143,0-7.5,3.357-7.5,7.5 + S16.482,129.345,20.625,129.345z`}),p("path",{d:"M62.5,226.51h-55c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h55c4.143,0,7.5-3.357,7.5-7.5S66.643,226.51,62.5,226.51z"})],-1)]))}const TI=ae(Jmt,[["render",tTt]]),nTt={id:"user-form"},aTt={key:2,class:"info-box success-message"},sTt={class:"form-items"},oTt={key:0,for:"username"},iTt=["disabled"],rTt={key:2,class:"form-info"},uTt={key:3,for:"email"},lTt=["disabled"],cTt={key:5,class:"form-info"},dTt={key:6,for:"password"},ETt={key:8,for:"accepted_policy",class:"accepted_policy"},pTt=["disabled"],mTt=["disabled"],TTt={key:3},_Tt={key:0},fTt={key:4},hTt={class:"account"},STt={key:5},ATt=X({__name:"UserAuthForm",props:{action:{},token:{default:""}},setup(e){const t=e,{action:n,token:a}=_e(t),s=rt(),o=De(),{appConfig:i,appLanguage:r,errorMessages:u}=Be(),{authUserSuccess:l}=qe(),d=yt({username:"",email:"",password:"",accepted_policy:!1}),E=Ie(!1),c=F(()=>O(t.action)),m=F(()=>o.getters[K.GETTERS.IS_REGISTRATION_SUCCESS]),_=F(()=>t.action==="register"&&!i.value.is_registration_enabled),f=F(()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!i.value.is_email_sending_enabled);function O(N){switch(N){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function S(){E.value=!0}function R(N){d.password=N}function I(N){switch(N){case"reset":return a.value?o.dispatch(K.ACTIONS.RESET_USER_PASSWORD,{password:d.password,token:String(a.value)}):o.commit(te.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return o.dispatch(K.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:d.email});case"account-confirmation-resend":return o.dispatch(K.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:d.email});default:d.language=r.value,o.dispatch(K.ACTIONS.LOGIN_OR_REGISTER,{actionType:N,formData:d,redirectUrl:s.query.from})}}function g(){d.username="",d.email="",d.password="",d.accepted_policy=!1}return Ce(()=>s.path,async()=>{o.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),o.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),o.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),E.value=!1,g()}),(N,b)=>{const C=q("AlertMessage"),y=q("router-link"),D=q("i18n-t"),M=q("ErrorMessage");return h(),v("div",{id:"user-auth-form",class:Oe(`${["reset","reset-request"].includes(T(n))?T(n):"user-form"}`)},[p("div",nTt,[p("div",{class:Oe(["form-box",{disabled:_.value}])},[_.value?(h(),B(C,{key:0,message:"user.REGISTER_DISABLED"})):L("",!0),f.value?(h(),B(C,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):L("",!0),T(l)||m.value?(h(),v("div",aTt,A(N.$t(`user.PROFILE.SUCCESSFUL_${m.value?`REGISTRATION${T(i).is_email_sending_enabled?"_WITH_EMAIL":""}`:"UPDATE"}`)),1)):L("",!0),p("form",{class:Oe({errors:E.value}),onSubmit:b[3]||(b[3]=ve(P=>I(T(n)),["prevent"]))},[p("div",sTt,[T(n)==="register"?(h(),v("label",oTt,A(N.$t("user.USERNAME",0)),1)):L("",!0),T(n)==="register"?We((h(),v("input",{key:1,id:"username",disabled:_.value,required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:S,"onUpdate:modelValue":b[0]||(b[0]=P=>d.username=P),autocomplete:"username"},null,40,iTt)),[[it,d.username]]):L("",!0),T(n)==="register"?(h(),v("div",rTt,[b[4]||(b[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(N.$t("user.USERNAME_INFO")),1)])):L("",!0),T(n)!=="reset"?(h(),v("label",uTt,A(N.$t("user.EMAIL",0)),1)):L("",!0),T(n)!=="reset"?We((h(),v("input",{key:4,id:"email",disabled:_.value||f.value,required:"",onInvalid:S,type:"email","onUpdate:modelValue":b[1]||(b[1]=P=>d.email=P),autocomplete:"email"},null,40,lTt)),[[it,d.email]]):L("",!0),["reset-request","register","account-confirmation-resend"].includes(T(n))?(h(),v("div",cTt,[b[5]||(b[5]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(N.$t("user.EMAIL_INFO")),1)])):L("",!0),["account-confirmation-resend","reset-request"].includes(T(n))?L("",!0):(h(),v("label",dTt,A(N.$t(`user.${T(n)==="reset"?"ENTER_PASSWORD":"PASSWORD"}`)),1)),["account-confirmation-resend","reset-request"].includes(T(n))?L("",!0):(h(),B(AE,{key:7,id:"password",disabled:_.value,required:!0,password:d.password,checkStrength:["reset","register"].includes(T(n)),onUpdatePassword:R,onPasswordError:S,autocomplete:"current-password"},null,8,["disabled","password","checkStrength"])),T(n)==="register"?(h(),v("label",ETt,[We(p("input",{type:"checkbox",id:"accepted_policy",disabled:_.value,required:"",onInvalid:S,"onUpdate:modelValue":b[2]||(b[2]=P=>d.accepted_policy=P)},null,40,pTt),[[El,d.accepted_policy]]),p("span",null,[w(D,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:Y(()=>[w(y,{to:"/privacy-policy",target:"_blank"},{default:Y(()=>[x(A(N.$t("privacy_policy.TITLE")),1)]),_:1})]),_:1})])])):L("",!0)]),p("button",{type:"submit",disabled:_.value||f.value},A(N.$t(c.value)),9,mTt)],34),T(n)==="login"?(h(),v("div",TTt,[w(y,{class:"links",to:"/register"},{default:Y(()=>[x(A(N.$t("user.REGISTER")),1)]),_:1}),T(i).is_email_sending_enabled?(h(),v("span",_Tt,"-")):L("",!0),T(i).is_email_sending_enabled?(h(),B(y,{key:1,class:"links",to:"/password-reset/request"},{default:Y(()=>[x(A(N.$t("user.PASSWORD_FORGOTTEN")),1)]),_:1})):L("",!0)])):L("",!0),T(n)==="register"?(h(),v("div",fTt,[p("span",hTt,A(N.$t("user.ALREADY_HAVE_ACCOUNT")),1),w(y,{class:"links",to:"/login"},{default:Y(()=>[x(A(N.$t("user.LOGIN")),1)]),_:1})])):L("",!0),["login","register"].includes(T(n))&&T(i).is_email_sending_enabled?(h(),v("div",STt,[w(y,{class:"links",to:"/account-confirmation/resend"},{default:Y(()=>[x(A(N.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)]),_:1})])):L("",!0),T(u)?(h(),B(M,{key:6,message:T(u)},null,8,["message"])):L("",!0)],2)])],2)}}}),em=ae(ATt,[["__scopeId","data-v-8a25f980"]]),OTt={id:"account-confirmation-email",class:"center-card with-margin"},ITt={key:0,class:"email-sent"},gTt={class:"email-sent-message"},RTt={key:1},NTt=X({__name:"AccountConfirmationEmail",props:{action:{}},setup(e){const t=e,{action:n}=_e(t);return(a,s)=>{const o=q("Card");return h(),v("div",OTt,[T(n)==="email-sent"?(h(),v("div",ITt,[w(TI),p("div",gTt,A(a.$t("user.ACCOUNT_CONFIRMATION_SENT")),1)])):(h(),v("div",RTt,[w(o,null,{title:Y(()=>[x(A(a.$t("user.RESENT_ACCOUNT_CONFIRMATION")),1)]),content:Y(()=>[w(em,{action:T(n)},null,8,["action"])]),_:1})]))])}}}),vTt=ae(NTt,[["__scopeId","data-v-08a26b50"]]),bTt={id:"account-confirmation",class:"view"},CTt={class:"container"},PTt=X({__name:"AccountConfirmationResendView",props:{action:{}},setup(e){const t=e,{action:n}=_e(t);return(a,s)=>(h(),v("div",bTt,[p("div",CTt,[w(vTt,{action:T(n)},null,8,["action"])])]))}}),Yh=ae(PTt,[["__scopeId","data-v-9a9c1644"]]),DTt={key:0,id:"account-confirmation",class:"center-card with-margin"},LTt={class:"error-message"},yTt=X({__name:"AccountConfirmationView",setup(e){const t=gn(),n=De(),{errorMessages:a}=Be(),{token:s}=qe();function o(){s.value?n.dispatch(K.ACTIONS.CONFIRM_ACCOUNT,{token:s.value}):t.push("/")}return Je(()=>o()),(i,r)=>{const u=q("router-link");return T(a)?(h(),v("div",DTt,[w(mp),p("p",LTt,[p("span",null,A(i.$t("error.SOMETHING_WRONG"))+".",1),w(u,{class:"links",to:"/account-confirmation/resend"},{default:Y(()=>[x(A(i.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)]),_:1})])])):L("",!0)}}}),$Tt=ae(yTt,[["__scopeId","data-v-576433a9"]]),UTt={key:0,id:"email-update",class:"center-card with-margin"},kTt={class:"error-message"},wTt=X({__name:"EmailUpdateView",setup(e){const t=gn(),n=De(),{errorMessages:a}=Be(),{authUser:s,isAuthenticated:o,token:i}=qe();function r(){i.value?n.dispatch(K.ACTIONS.CONFIRM_EMAIL,{token:i.value,refreshUser:o.value}):t.push("/")}return Ce(()=>a.value,u=>{s.value.username&&u&&t.push("/")}),Je(()=>r()),(u,l)=>{const d=q("router-link"),E=q("i18n-t");return T(a)&&!T(s).username?(h(),v("div",UTt,[w(mp),p("p",kTt,[p("span",null,A(u.$t("error.SOMETHING_WRONG"))+".",1),p("span",null,[w(E,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:Y(()=>[w(d,{to:"/login"},{default:Y(()=>[x(A(u.$t("user.LOG_IN")),1)]),_:1})]),_:1})])])])):L("",!0)}}}),MTt=ae(wTt,[["__scopeId","data-v-8710c2be"]]),WTt={id:"loginOrRegister",class:"view"},FTt={class:"container"},zTt={class:"container-sub"},xTt={class:"container-sub"},BTt=X({__name:"LoginOrRegister",props:{action:{}},setup(e){const t=e,{action:n}=_e(t);return(a,s)=>(h(),v("div",WTt,[p("div",FTt,[p("div",zTt,[w(sI)]),p("div",xTt,[w(em,{action:T(n)},null,8,["action"])])])]))}}),Xh=ae(BTt,[["__scopeId","data-v-7344db74"]]),GTt={name:"Password"},VTt={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512.001 512.001",style:{"enable-background":"new 0 0 512.001 512.001"},"xml:space":"preserve"};function HTt(e,t,n,a,s,o){return h(),v("svg",VTt,t[0]||(t[0]=[Pn(``,7)]))}const KTt=ae(GTt,[["render",HTt]]),qTt={id:"password-action-done",class:"center-card with-margin"},jTt={class:"password-message"},YTt={key:0},XTt=X({__name:"PasswordActionDone",props:{action:{}},setup(e){const t=e,{action:n}=_e(t);return(a,s)=>{const o=q("router-link"),i=q("i18n-t");return h(),v("div",qTt,[T(n)==="request-sent"?(h(),B(TI,{key:0})):(h(),B(KTt,{key:1})),p("div",jTt,[T(n)==="request-sent"?(h(),v("span",YTt,A(a.$t("user.PASSWORD_SENT_EMAIL_TEXT")),1)):(h(),B(i,{key:1,keypath:"user.PASSWORD_UPDATED"},{default:Y(()=>[w(o,{to:"/login"},{default:Y(()=>[x(A(a.$t("common.HERE")),1)]),_:1})]),_:1}))])])}}}),QTt=ae(XTt,[["__scopeId","data-v-4f0a2bcc"]]),ZTt={id:"password-reset-request",class:"center-card with-margin"},JTt=X({__name:"PasswordResetForm",props:{action:{},token:{default:""}},setup(e){const t=e,{action:n,token:a}=_e(t);return(s,o)=>{const i=q("Card");return h(),v("div",ZTt,[w(i,null,{title:Y(()=>[x(A(s.$t("user.RESET_PASSWORD")),1)]),content:Y(()=>[w(em,{action:T(n),token:T(a)},null,8,["action","token"])]),_:1})])}}}),e_t=ae(JTt,[["__scopeId","data-v-25ace80f"]]),t_t={id:"password-reset",class:"view"},n_t={class:"container"},a_t=X({__name:"PasswordResetView",props:{action:{}},setup(e){const t=e,{action:n}=_e(t),a=gn(),{token:s}=qe();return Je(()=>{t.action==="reset"&&!s.value&&a.push("/")}),(o,i)=>(h(),v("div",t_t,[p("div",n_t,[T(n).startsWith("reset")?(h(),B(e_t,{key:0,action:T(n),token:T(s)},null,8,["action","token"])):(h(),B(QTt,{key:1,action:T(n)},null,8,["action"]))])]))}}),Wr=ae(a_t,[["__scopeId","data-v-f7d7dbd1"]]),s_t={key:0,id:"profile",class:"view"},o_t=X({__name:"ProfileView",setup(e){const{authUser:t}=qe();return(n,a)=>{const s=q("router-view");return T(t).username?(h(),v("div",s_t,[w(s,{user:T(t)},null,8,["user"]),a[0]||(a[0]=p("div",{id:"bottom"},null,-1))])):L("",!0)}}}),i_t=ae(o_t,[["__scopeId","data-v-10b39629"]]),r_t={id:"user-workouts"},u_t={key:0},l_t={class:"section-title"},c_t=X({__name:"UserWorkoutsList",props:{user:{}},setup(e){const t=e,{user:n}=_e(t),{dateFormat:a,imperialUnits:s,timezone:o}=qe(),{sports:i}=nn(),r=De(),u=F(()=>r.getters[ue.GETTERS.USER_WORKOUTS]),l=F(()=>r.getters[ue.GETTERS.USER_WORKOUTS_LOADING]);function d(E){r.dispatch(ue.ACTIONS.GET_USER_WORKOUTS,E)}return Ce(()=>n.value,E=>{d(E.username)}),Je(()=>{d(n.value.username),i.value.length===0&&n.value.nb_workouts>0&&r.dispatch(Ht.ACTIONS.GET_SPORTS)}),ct(()=>r.commit(ue.MUTATIONS.UPDATE_USER_WORKOUTS,[])),(E,c)=>{const m=q("Loader");return h(),v("div",r_t,[l.value?(h(),B(m,{key:0})):(h(),v(re,{key:1},[u.value.length>0?(h(),v("div",u_t,[p("div",l_t,A(E.$t("workouts.LATEST_WORKOUTS")),1),(h(!0),v(re,null,be(u.value,_=>(h(),B(Hi,{workout:_,sport:T(i).filter(f=>f.id===_.sport_id)[0],user:_.user,useImperialUnits:T(s),dateFormat:T(a),timezone:T(o),key:_.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]))),128))])):L("",!0)],64))])}}}),d_t=ae(c_t,[["__scopeId","data-v-15c91b33"]]),E_t={id:"user",class:"view"},p_t={class:"box"},m_t={key:1},T_t=X({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:n}=_e(t),a=rt(),s=De(),{authUser:o}=qe(),i=F(()=>s.getters[ue.GETTERS.USER]);function r(u){u.username&&typeof u.username=="string"&&(s.dispatch(ue.ACTIONS.GET_USER,u.username),s.dispatch(ue.ACTIONS.EMPTY_RELATIONSHIPS))}return Ce(()=>a.params,u=>{r(u)}),Je(()=>{r(a.params)}),Qi(()=>{s.dispatch(ue.ACTIONS.EMPTY_USER),s.dispatch(ue.ACTIONS.EMPTY_RELATIONSHIPS)}),(u,l)=>{const d=q("router-view");return h(),v("div",E_t,[i.value.username?(h(),v(re,{key:0},[w(UO,{user:i.value},null,8,["user"]),p("div",p_t,[u.$route.path.includes("follow")?(h(),B(d,{key:0,authUser:T(o),user:i.value},null,8,["authUser","user"])):(h(),B(wO,{key:1,authUser:T(o),user:i.value,"from-admin":T(n)},null,8,["authUser","user","from-admin"]))]),i.value.nb_workouts>0?(h(),B(d_t,{key:0,user:i.value},null,8,["user"])):L("",!0)],64)):(h(),v("div",m_t,[w(wo,{target:"USER"})]))])}}}),Qh=ae(T_t,[["__scopeId","data-v-f352961e"]]),__t={class:"users-list"},f_t={key:0,class:"container users-container"},h_t={key:1,class:"no-users"},S_t="created_at",A_t=X({__name:"UsersList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=_e(t),a=De(),s=rt(),o=gn(),{isAuthUserSuspended:i}=qe(),{errorMessages:r}=Be(),u=["created_at","username","workouts_count"];let l=yt(O(s.query));const d=Ie(null),E=F(()=>a.getters[ue.GETTERS.USERS]),c=F(()=>a.getters[ue.GETTERS.USERS_PAGINATION]);function m(S){i.value||(S.per_page=9,a.dispatch(ue.ACTIONS.GET_USERS,S))}function _(S){d.value=S}function f(S){if(S.value!=="")l=O({q:S.value});else{const R=Object.assign({},s.query);l=O(R)}o.push({path:"/users",query:l})}function O(S){const R=Co(S,u,S_t);return S.q&&(R.q=S.q),R}return Ce(()=>s.query,S=>{l=O(S),m(l)}),Je(()=>m(l)),ct(()=>{a.dispatch(ue.ACTIONS.EMPTY_USERS)}),(S,R)=>{const I=q("ErrorMessage");return h(),v("div",__t,[w($O,{onFilterOnUsername:f}),E.value.length>0?(h(),v("div",f_t,[(h(!0),v(re,null,be(E.value,g=>(h(),v("div",{key:g.username,class:"user-box"},[w(Wl,{authUser:T(n),user:g,updatedUser:d.value,onUpdatedUserRelationship:_},null,8,["authUser","user","updatedUser"])]))),128))])):(h(),v("div",h_t,A(S.$t("user.NO_USERS_FOUND")),1)),c.value.page?(h(),B(Qn,{key:2,path:"/users",pagination:c.value,query:T(l)},null,8,["pagination","query"])):L("",!0),T(r)?(h(),B(I,{key:3,message:T(r)},null,8,["message"])):L("",!0)])}}}),O_t=ae(A_t,[["__scopeId","data-v-5c13e2ba"]]),I_t={key:0,id:"users",class:"view"},g_t={class:"container"},R_t=X({__name:"UsersView",setup(e){const{authUser:t}=qe();return(n,a)=>T(t).username?(h(),v("div",I_t,[p("div",g_t,[w(O_t,{authUser:T(t)},null,8,["authUser"])])])):L("",!0)}}),N_t={id:"workout-form"},v_t={class:"form-items"},b_t={key:0,class:"form-item-radio"},C_t=["checked","disabled"],P_t={for:"withGpx"},D_t=["checked","disabled"],L_t={for:"withoutGpx"},y_t={class:"form-item"},$_t={for:"sport"},U_t=["disabled"],k_t=["value"],w_t={key:1,class:"form-item"},M_t={for:"gpxFile"},W_t=["disabled"],F_t={class:"files-help info-box"},z_t={class:"form-item"},x_t={for:"title"},B_t=["required","disabled"],G_t={key:0,class:"field-help"},V_t={class:"info-box"},H_t={key:2},K_t={class:"workout-date-duration"},q_t={class:"form-item"},j_t={class:"workout-date-time"},Y_t=["disabled"],X_t=["disabled"],Q_t={class:"form-item"},Z_t={for:"workout-duration-hour",class:"visually-hidden"},J_t=["disabled"],eft={for:"workout-duration-minutes",class:"visually-hidden"},tft=["disabled"],nft={for:"workout-duration-seconds",class:"visually-hidden"},aft=["disabled"],sft={class:"workout-data"},oft={class:"form-item"},ift=["disabled"],rft={class:"form-item"},uft=["disabled"],lft={class:"form-item"},cft=["disabled"],dft={key:3,class:"form-item"},Eft={for:"workout-equipment"},pft=["disabled"],mft={value:""},Tft=["value"],_ft={class:"form-item"},fft={for:"workout_visibility"},hft=["disabled"],Sft=["value"],Aft={key:4,class:"form-item"},Oft={for:"analysis_visibility"},Ift=["disabled"],gft=["value"],Rft={key:5,class:"form-item"},Nft={for:"map_visibility"},vft=["disabled"],bft=["value"],Cft={key:6,class:"form-item"},Pft={for:"description"},Dft={key:0,class:"field-help"},Lft={class:"info-box"},yft={key:7,class:"form-item"},$ft={for:"notes"},Uft={key:0,class:"field-help"},kft={class:"info-box"},wft={key:1},Mft={key:2,class:"form-buttons"},Wft=["disabled"],Fft=X({__name:"WorkoutEdition",props:{authUser:{},sports:{},isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},workout:{default:()=>({})}},setup(e){const t=e,{authUser:n,workout:a,isCreation:s,loading:o}=_e(t),i=gn(),r=De(),{t:u}=$t(),{appConfig:l,errorMessages:d}=Be();let E=null;const c=yt({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:"",workoutAscent:"",workoutDescent:"",equipment_id:"",description:"",mapVisibility:n.value.map_visibility,analysisVisibility:n.value.analysis_visibility,workoutVisibility:n.value.workouts_visibility}),m=Ie(a.value.id&&a.value.with_gpx?!0:s.value),_=Ie(!1),f=Ie([]),O=F(()=>ia(t.sports,u,"is_active_for_user",a.value.id?[a.value.sport_id]:[])),S=F(()=>l.value.max_single_file_size?Zu(l.value.max_single_file_size):""),R=F(()=>l.value.gpx_limit_import),I=F(()=>l.value.max_zip_file_size?Zu(l.value.max_zip_file_size):""),g=F(()=>r.getters[xe.GETTERS.EQUIPMENTS]),N=F(()=>c.sport_id?O.value.filter(se=>se.id===+c.sport_id)[0]:null),b=F(()=>g.value?DO(g.value,u,s.value?"is_active":"withIncludedIds",N.value,s.value?[]:a.value.equipments.map(se=>se.id)):[]),C=F(()=>RO()),y=F(()=>Qu(c.workoutVisibility)),D=F(()=>Qu(c.analysisVisibility));function M(se){c.notes=se.value}function P(se){c.description=se.value}function W(){m.value=!m.value,_.value=!1}function Q(se){se.target.files&&(E=se.target.files[0])}function Se(se){if(c.sport_id=`${se.sport_id}`,c.title=se.title,c.description=se.description,c.notes=se.notes,c.equipment_id=se.equipments.length>0?`${se.equipments[0].id}`:"",c.workoutVisibility=se.workout_visibility?se.workout_visibility:"private",c.analysisVisibility=se.analysis_visibility?se.analysis_visibility:"private",c.mapVisibility=se.map_visibility?se.map_visibility:"private",!se.with_gpx){const ke=V1(bl(se.workout_date,t.authUser.timezone),"yyyy-MM-dd");if(se.duration){const pt=se.duration.split(":");c.workoutDurationHour=pt[0],c.workoutDurationMinutes=pt[1],c.workoutDurationSeconds=pt[2]}se.distance&&(c.workoutDistance=`${n.value.imperial_units?Yt(se.distance,"km","mi",3):parseFloat(se.distance.toFixed(3))}`),c.workoutDate=ke.workout_date,c.workoutTime=ke.workout_time,c.workoutAscent=se.ascent===null?"":`${n.value.imperial_units?Yt(se.ascent,"m","ft",2):parseFloat(se.ascent.toFixed(2))}`,c.workoutDescent=se.descent===null?"":`${n.value.imperial_units?Yt(se.descent,"m","ft",2):parseFloat(se.descent.toFixed(2))}`}}function J(){return f.value.includes("workouts.INVALID_DISTANCE")}function Ee(){return f.value.includes("workouts.INVALID_DURATION")}function fe(){return f.value.includes("workouts.INVALID_ASCENT_OR_DESCENT")}function Pe(se){f.value=[],se.duration=+c.workoutDurationHour*3600+ +c.workoutDurationMinutes*60+ +c.workoutDurationSeconds,se.duration<=0&&f.value.push("workouts.INVALID_DURATION"),se.distance=n.value.imperial_units?Yt(+c.workoutDistance,"mi","km",3):+c.workoutDistance,se.distance<=0&&f.value.push("workouts.INVALID_DISTANCE"),se.workout_date=`${c.workoutDate} ${c.workoutTime}`,se.ascent=c.workoutAscent===""?null:n.value.imperial_units?Yt(+c.workoutAscent,"ft","m",3):+c.workoutAscent,se.descent=c.workoutDescent===""?null:n.value.imperial_units?Yt(+c.workoutDescent,"ft","m",3):+c.workoutDescent,(se.ascent!==null&&se.descent===null||se.ascent===null&&se.descent!==null)&&f.value.push("workouts.INVALID_ASCENT_OR_DESCENT"),se.workout_visibility=c.workoutVisibility}function Ke(){const se={sport_id:+c.sport_id,description:c.description,notes:c.notes,equipment_ids:c.equipment_id&&b.value.find(ke=>ke.id===c.equipment_id)?[c.equipment_id]:[],title:c.title,workout_visibility:c.workoutVisibility};if(t.workout.id)t.workout.with_gpx?(se.analysis_visibility=c.analysisVisibility,se.map_visibility=c.mapVisibility):Pe(se),f.value.length>0?r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,f.value):r.dispatch(ee.ACTIONS.EDIT_WORKOUT,{workoutId:t.workout.id,data:se});else if(m.value){if(!E){r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,"workouts.NO_FILE_PROVIDED");return}se.file=E,se.analysis_visibility=c.analysisVisibility,se.map_visibility=c.mapVisibility,r.dispatch(ee.ACTIONS.ADD_WORKOUT,se)}else Pe(se),f.value.length>0?r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,f.value):r.dispatch(ee.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,se)}function et(){t.workout.id?i.push({name:"Workout",params:{workoutId:t.workout.id}}):i.go(-1)}function He(){_.value=!0}function _t(){c.analysisVisibility=Xu(c.analysisVisibility,c.workoutVisibility),we()}function we(){c.mapVisibility=Xu(c.mapVisibility,c.analysisVisibility)}return Ce(()=>t.workout,async(se,ke)=>{se!==ke&&se&&se.id&&Se(se)}),Ce(()=>N.value,se=>{s.value&&(c.equipment_id=se!=null&&se.default_equipments&&(se==null?void 0:se.default_equipments.length)>0?`${se.default_equipments[0].id}`:"")}),Ce(()=>n.value,se=>{se&&s&&(c.workoutVisibility=se.workouts_visibility,c.analysisVisibility=se.analysis_visibility,c.mapVisibility=se.map_visibility)}),mt(()=>{let se;t.workout.id?(Se(t.workout),se=document.getElementById("sport")):se=document.getElementById("withGpx"),se&&se.focus()}),(se,ke)=>{const pt=q("CustomTextArea"),me=q("ErrorMessage"),Z=q("Loader"),Ae=q("Card");return h(),v("div",{id:"workout-edition",class:Oe(["center-card",{"center-form":T(a)&&T(a).with_gpx,"with-margin":!T(s)}])},[w(Ae,null,{title:Y(()=>[x(A(se.$t(`workouts.${T(s)?"ADD":"EDIT"}_WORKOUT`)),1)]),content:Y(()=>[p("div",N_t,[p("form",{class:Oe({errors:_.value}),onSubmit:ve(Ke,["prevent"])},[p("div",v_t,[T(s)?(h(),v("div",b_t,[p("div",null,[p("input",{id:"withGpx",type:"radio",checked:m.value,disabled:T(o),onClick:W},null,8,C_t),p("label",P_t,A(se.$t("workouts.WITH_GPX")),1)]),p("div",null,[p("input",{id:"withoutGpx",type:"radio",checked:!m.value,disabled:T(o),onClick:W},null,8,D_t),p("label",L_t,A(se.$t("workouts.WITHOUT_GPX")),1)])])):L("",!0),p("div",y_t,[p("label",$_t,A(se.$t("workouts.SPORT",1))+"*: ",1),We(p("select",{id:"sport",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[0]||(ke[0]=Te=>c.sport_id=Te)},[(h(!0),v(re,null,be(O.value,Te=>(h(),v("option",{value:Te.id,key:Te.id},A(Te.translatedLabel),9,k_t))),128))],40,U_t),[[Jt,c.sport_id]])]),T(s)&&m.value?(h(),v("div",w_t,[p("label",M_t,A(se.$t("workouts.GPX_FILE"))+" "+A(se.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+"*: ",1),p("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:T(o),required:"",onInvalid:He,onInput:Q},null,40,W_t),p("div",F_t,[p("div",null,[p("strong",null,A(se.$t("workouts.GPX_FILE"))+":",1),p("ul",null,[p("li",null,A(se.$t("workouts.MAX_SIZE"))+": "+A(S.value),1)])]),p("div",null,[p("strong",null,A(se.$t("workouts.ZIP_ARCHIVE"))+":",1),p("ul",null,[p("li",null,A(se.$t("workouts.NO_FOLDER")),1),p("li",null,A(se.$t("workouts.MAX_FILES"))+": "+A(R.value),1),p("li",null,A(se.$t("workouts.MAX_SIZE"))+": "+A(I.value),1)])])])])):L("",!0),p("div",z_t,[p("label",x_t,A(se.$t("workouts.TITLE"))+A(T(s)?"":"*")+": ",1),We(p("input",{id:"title",name:"title",type:"text",required:!T(s),onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[1]||(ke[1]=Te=>c.title=Te),maxlength:"255"},null,40,B_t),[[it,c.title]]),m.value&&T(s)?(h(),v("div",G_t,[p("span",V_t,[ke[14]||(ke[14]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(se.$t("workouts.TITLE_FIELD_HELP")),1)])])):L("",!0)]),m.value?L("",!0):(h(),v("div",H_t,[p("div",K_t,[p("div",q_t,[p("label",null,A(se.$t("workouts.WORKOUT_DATE"))+"*:",1),p("div",j_t,[We(p("input",{id:"workout-date",name:"workout-date",type:"date",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[2]||(ke[2]=Te=>c.workoutDate=Te)},null,40,Y_t),[[it,c.workoutDate]]),We(p("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[3]||(ke[3]=Te=>c.workoutTime=Te)},null,40,X_t),[[it,c.workoutTime]])])]),p("div",Q_t,[p("label",null,A(se.$t("workouts.DURATION"))+"*:",1),p("div",null,[p("label",Z_t,A(se.$t("common.HOURS",0)),1),We(p("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:Oe(["workout-duration",{errored:Ee()}]),type:"text",placeholder:"HH",minlength:"1",maxlength:"2",pattern:"^([0-1]?[0-9]|2[0-3])$",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[4]||(ke[4]=Te=>c.workoutDurationHour=Te)},null,42,J_t),[[it,c.workoutDurationHour]]),ke[15]||(ke[15]=x(" : ")),p("label",eft,A(se.$t("common.MINUTES",0)),1),We(p("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:Oe(["workout-duration",{errored:Ee()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"MM",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[5]||(ke[5]=Te=>c.workoutDurationMinutes=Te)},null,42,tft),[[it,c.workoutDurationMinutes]]),ke[16]||(ke[16]=x(" : ")),p("label",nft,A(se.$t("common.SECONDS",0)),1),We(p("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:Oe(["workout-duration",{errored:Ee()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"SS",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[6]||(ke[6]=Te=>c.workoutDurationSeconds=Te)},null,42,aft),[[it,c.workoutDurationSeconds]])])])]),p("div",sft,[p("div",oft,[p("label",null,A(se.$t("workouts.DISTANCE"))+" ("+A(T(n).imperial_units?"mi":"km")+")*: ",1),We(p("input",{class:Oe({errored:J()}),name:"workout-distance",type:"number",min:"0",step:"0.001",required:"",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[7]||(ke[7]=Te=>c.workoutDistance=Te)},null,42,ift),[[it,c.workoutDistance]])]),p("div",rft,[p("label",null,A(se.$t("workouts.ASCENT"))+" ("+A(T(n).imperial_units?"ft":"m")+"): ",1),We(p("input",{class:Oe({errored:fe()}),name:"workout-ascent",type:"number",min:"0",step:"0.01",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[8]||(ke[8]=Te=>c.workoutAscent=Te)},null,42,uft),[[it,c.workoutAscent]])]),p("div",lft,[p("label",null,A(se.$t("workouts.DESCENT"))+" ("+A(T(n).imperial_units?"ft":"m")+"): ",1),We(p("input",{class:Oe({errored:fe()}),name:"workout-descent",type:"number",min:"0",step:"0.01",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[9]||(ke[9]=Te=>c.workoutDescent=Te)},null,42,cft),[[it,c.workoutDescent]])])])])),g.value?(h(),v("div",dft,[p("label",Eft,A(se.$t("equipments.EQUIPMENT",1))+": ",1),We(p("select",{id:"workout-equipment",onInvalid:He,disabled:T(o),"onUpdate:modelValue":ke[10]||(ke[10]=Te=>c.equipment_id=Te)},[p("option",mft,A(se.$t("equipments.NO_EQUIPMENTS")),1),(h(!0),v(re,null,be(b.value,Te=>(h(),v("option",{value:Te.id,key:Te.id},A(Te.label),9,Tft))),128))],40,pft),[[Jt,c.equipment_id]])])):L("",!0),p("div",_ft,[p("label",fft,A(se.$t("visibility_levels.WORKOUT_VISIBILITY"))+": ",1),We(p("select",{id:"workout_visibility","onUpdate:modelValue":ke[11]||(ke[11]=Te=>c.workoutVisibility=Te),disabled:T(o),onChange:_t},[(h(!0),v(re,null,be(C.value,Te=>(h(),v("option",{value:Te,key:Te},A(se.$t(`visibility_levels.LEVELS.${Te}`)),9,Sft))),128))],40,hft),[[Jt,c.workoutVisibility]])]),m.value?(h(),v("div",Aft,[p("label",Oft,A(se.$t("visibility_levels.ANALYSIS_VISIBILITY"))+": ",1),We(p("select",{id:"analysis_visibility","onUpdate:modelValue":ke[12]||(ke[12]=Te=>c.analysisVisibility=Te),onChange:we,disabled:T(o)},[(h(!0),v(re,null,be(y.value,Te=>(h(),v("option",{value:Te,key:Te},A(se.$t(`visibility_levels.LEVELS.${Te}`)),9,gft))),128))],40,Ift),[[Jt,c.analysisVisibility]])])):L("",!0),m.value?(h(),v("div",Rft,[p("label",Nft,A(se.$t("visibility_levels.MAP_VISIBILITY"))+": ",1),We(p("select",{id:"map_visibility","onUpdate:modelValue":ke[13]||(ke[13]=Te=>c.mapVisibility=Te),disabled:T(o)},[(h(!0),v(re,null,be(D.value,Te=>(h(),v("option",{value:Te,key:Te},A(se.$t(`visibility_levels.LEVELS.${Te}`)),9,bft))),128))],8,vft),[[Jt,c.mapVisibility]])])):L("",!0),T(s)?(h(),v("div",Cft,[p("label",Pft,A(se.$t("workouts.DESCRIPTION"))+": ",1),w(pt,{name:"description",input:c.description,disabled:T(o),charLimit:1e4,rows:5,onUpdateValue:P},null,8,["input","disabled"]),m.value&&T(s)?(h(),v("div",Dft,[p("span",Lft,[ke[17]||(ke[17]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(se.$t("workouts.DESCRIPTION_FIELD_HELP")),1)])])):L("",!0)])):L("",!0),T(s)?(h(),v("div",yft,[p("label",$ft,A(se.$t("workouts.PRIVATE_NOTES"))+": ",1),w(pt,{name:"notes",input:c.notes,disabled:T(o),onUpdateValue:M},null,8,["input","disabled"]),T(s)?(h(),v("div",Uft,[p("span",kft,[ke[18]||(ke[18]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(se.$t("workouts.PRIVATE_NOTES_FIELD_HELP")),1)])])):L("",!0)])):L("",!0)]),T(d)?(h(),B(me,{key:0,message:T(d)},null,8,["message"])):L("",!0),T(o)?(h(),v("div",wft,[w(Z)])):(h(),v("div",Mft,[p("button",{class:"confirm",type:"submit",disabled:T(o)},A(se.$t("buttons.SUBMIT")),9,Wft),p("button",{class:"cancel",onClick:ve(et,["prevent"])},A(se.$t("buttons.CANCEL")),1)]))],34)])]),_:1})],2)}}}),_I=ae(Fft,[["__scopeId","data-v-24e1fdb7"]]),zft={id:"add-workout",class:"view"},xft={class:"container"},Bft=X({__name:"AddWorkout",setup(e){const t=De(),{authUser:n}=qe(),{sports:a}=nn(),s=F(()=>t.getters[ee.GETTERS.WORKOUT_DATA]);return(o,i)=>(h(),v("div",zft,[p("div",xft,[w(_I,{authUser:T(n),sports:T(a),isCreation:!0,loading:s.value.loading},null,8,["authUser","sports","loading"])])]))}}),Gft={class:"workout-comments"},Vft={key:0,class:"no-comments"},Hft={key:1,class:"add-comment"},Kft={key:2,class:"add-comment-button"},qft=X({__name:"Comments",props:{workoutData:{},authUser:{}},setup(e){const t=e,{workoutData:n}=_e(t),a=rt(),s=De(),o=Ie(),i=F(()=>n.value.comments),r=F(()=>n.value.currentCommentEdition.type==="delete"),u=F(()=>n.value.currentCommentEdition.type==="new"),l=F(()=>n.value.commentsLoading==="all"),d=F(()=>n.value.commentsLoading==="delete"),E=F(()=>a.params.commentId);function c(){const O=n.value.currentCommentEdition.comment;O&&s.dispatch(ee.ACTIONS.DELETE_WORKOUT_COMMENT,{workoutId:O.workout_id,commentId:O.id})}function m(){s.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}function _(){s.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"new"}),o.value=setTimeout(()=>{const O=document.getElementById("text");O&&(O.focus(),O.scrollIntoView({behavior:"smooth"}))},100)}function f(O){o.value=setTimeout(()=>{const S=document.getElementById(O);S&&S.scrollIntoView({behavior:"smooth"})},500)}return Ce(()=>n.value.comments,()=>{s.commit(ee.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}),mt(()=>{ln(()=>{E.value&&f(E.value)})}),ct(()=>{o.value&&clearTimeout(o.value)}),(O,S)=>{const R=q("Modal"),I=q("Loader"),g=q("Comment"),N=q("Card");return h(),v("div",Gft,[r.value?(h(),B(R,{key:0,title:O.$t("common.CONFIRMATION"),message:O.$t("workouts.COMMENTS.DELETION_CONFIRMATION"),loading:d.value,onConfirmAction:c,onCancelAction:m},null,8,["title","message","loading"])):L("",!0),w(N,null,_o({title:Y(()=>[x(A(Fe(O.$t("workouts.COMMENTS.LABEL",0))),1)]),_:2},[l.value?{name:"content",fn:Y(()=>[w(I)]),key:"0"}:{name:"content",fn:Y(()=>[(h(!0),v(re,null,be(i.value,b=>(h(),B(g,{key:b.id,comment:b,workout:T(n).workout,"current-comment-edition":T(n).currentCommentEdition,authUser:O.authUser,"comments-loading":"workoutData.commentsLoading",action:b.suspension},null,8,["comment","workout","current-comment-edition","authUser","action"]))),128)),T(n).comments.length===0?(h(),v("div",Vft,A(O.$t("workouts.COMMENTS.NO_COMMENTS")),1)):L("",!0),u.value?(h(),v("div",Hft,[O.authUser.username?(h(),B(NO,{key:0,workout:T(n).workout,"comments-loading":"workoutData.commentsLoading","auth-user":O.authUser},null,8,["workout","auth-user"])):L("",!0)])):O.authUser.username&&T(n).workout.id?(h(),v("div",Kft,[p("button",{onClick:ve(_,["prevent"])},A(O.$t("workouts.COMMENTS.ADD")),1)])):L("",!0)]),key:"1"}]),1024)])}}}),fI=ae(qft,[["__scopeId","data-v-dbdc1cf2"]]),jft={id:"comments",class:"view"},Yft={class:"container"},Xft={class:"comments-container"},Qft={key:0},Zft={class:"box no-workout"},Jft={key:1},eht=X({__name:"CommentView",setup(e){const t=rt(),n=De(),{authUser:a}=qe(),s=F(()=>n.getters[ee.GETTERS.WORKOUT_DATA]);return Ce(()=>t.params.commentId,async o=>{o&&n.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENT,o)}),Je(()=>{n.dispatch(ee.ACTIONS.GET_WORKOUT_COMMENT,t.params.commentId)}),ct(()=>{n.commit(ee.MUTATIONS.EMPTY_WORKOUT)}),(o,i)=>(h(),v("div",jft,[p("div",Yft,[p("div",Xft,[s.value.comments.length>0?(h(),v("div",Qft,[p("div",Zft,A(o.$t("workouts.NO_WORKOUT_AVAILABLE")),1),w(fI,{workoutData:s.value,"auth-user":T(a),"with-parent":!0},null,8,["workoutData","auth-user"]),i[0]||(i[0]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",Jft,[s.value.commentsLoading?L("",!0):(h(),B(wo,{key:0,target:"COMMENT"}))]))])])]))}}),tht=ae(eht,[["__scopeId","data-v-da00ce02"]]),nht={id:"edit-workout",class:"view"},aht={class:"container"},sht=X({__name:"EditWorkout",setup(e){const t=rt(),n=De(),{authUser:a}=qe(),{sports:s}=nn(),o=F(()=>n.getters[ee.GETTERS.WORKOUT_DATA]);return Ce(()=>t.params.workoutId,async i=>{i||n.commit(ee.MUTATIONS.EMPTY_WORKOUT)}),Je(()=>{n.dispatch(ee.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.params.workoutId})}),(i,r)=>(h(),v("div",nht,[p("div",aht,[o.value.workout.id?(h(),B(_I,{key:0,authUser:T(a),sports:T(s),workout:o.value.workout,loading:o.value.loading},null,8,["authUser","sports","workout","loading"])):L("",!0)])]))}}),oht={id:"likes",class:"view"},iht={class:"center-card"},rht={key:0},uht={class:"users"},lht={key:1,class:"no-likes"},cht=X({__name:"Likes",props:{objectType:{}},setup(e){const t=e,{objectType:n}=_e(t),a=De(),s=rt(),{authUser:o}=qe(),{errorMessages:i}=Be(),r=Ie(null),u=F(()=>a.getters[ue.GETTERS.USERS]),l=F(()=>a.getters[ue.GETTERS.USERS_PAGINATION]),d=F(()=>n.value==="workout"?s.params.workoutId:s.params.commentId),E=F(()=>s.params.workoutId?s.params.workoutId:null),c=yt(f(s.query)),m=F(()=>({objectType:n.value,objectId:d.value,page:1}));function _(S){r.value=S}function f(S){const R={};return R.page=bo(S.page,cr),R}function O(S){a.dispatch(ee.ACTIONS.GET_LIKES,S)}return Ce(()=>s.query,(S,R)=>{S.page!==R.page&&(c.page=f(S).page,m.value.page=S.page?+S.page:1,O(m.value))}),Je(()=>O(m.value)),ct(()=>{a.dispatch(ue.ACTIONS.EMPTY_USERS)}),(S,R)=>{const I=q("ErrorMessage");return h(),v("div",oht,[p("div",iht,[w(xp,null,{title:Y(()=>[x(A(Fe(S.$t("workouts.LIKES",0))),1)]),content:Y(()=>[u.value.length>0?(h(),v("div",rht,[p("div",uht,[(h(!0),v(re,null,be(u.value,g=>(h(),B(Wl,{key:g.username,authUser:T(o),user:g,updatedUser:r.value,onUpdatedUserRelationship:_},null,8,["authUser","user","updatedUser"]))),128))]),w(Qn,{path:`/${T(n)}s/${d.value}/likes`,pagination:l.value,query:c},null,8,["path","pagination","query"])])):(h(),v("div",lht,A(S.$t("workouts.NO_LIKES")),1)),T(i)?(h(),B(I,{key:2,message:T(i),"no-margin":!0},null,8,["message"])):L("",!0),p("div",null,[p("button",{onClick:R[0]||(R[0]=g=>S.$router.push(E.value?`/workouts/${E.value}/comments/${d.value}`:`/${T(n)}s/${d.value}`))},A(S.$t(`workouts.BACK_TO_${T(n).toUpperCase()}`)),1)])]),_:1})])])}}}),Td=ae(cht,[["__scopeId","data-v-5b0820f6"]]),dht={id:"workout-card-title"},Eht=["disabled","title"],pht={class:"workout-card-title"},mht={key:0,class:"workout-title-date"},Tht={key:0,class:"workout-title"},_ht={key:0},fht=["aria-label"],hht=["aria-label"],Sht=["aria-label"],Aht=["aria-label"],Oht=["title"],Iht=["title"],ght={key:1,class:"workout-title"},Rht={class:"workout-segment"},Nht={class:"workout-date"},vht=["datetime"],bht={class:"workout-link"},Cht=["disabled","title"],Pht=X({__name:"WorkoutCardTitle",props:{sport:{},workoutObject:{},isWorkoutOwner:{type:Boolean}},emits:["displayModal"],setup(e,{emit:t}){const n=e,{isWorkoutOwner:a,sport:s,workoutObject:o}=_e(n),i=t,r=De(),{isAuthenticated:u}=qe(),l=F(()=>r.getters[ee.GETTERS.CURRENT_REPORTING]),d=F(()=>r.getters[Le.GETTERS.REPORT_STATUS]);async function E(f){await Ne.get(`workouts/${f}/gpx/download`,{responseType:"blob"}).then(O=>{const S=window.URL.createObjectURL(new Blob([O.data],{type:"application/gpx+xml"})),R=document.createElement("a");R.href=S,R.setAttribute("download",`${f}.gpx`),document.body.appendChild(R),R.click()})}function c(){i("displayModal",!0)}function m(f){r.dispatch(f.liked?ee.ACTIONS.UNDO_LIKE_WORKOUT:ee.ACTIONS.LIKE_WORKOUT,f.workoutId)}function _(){r.commit(ee.MUTATIONS.SET_CURRENT_REPORTING,!0)}return(f,O)=>{const S=q("SportImage"),R=q("router-link");return h(),v("div",dht,[T(a)?(h(),v("button",{key:0,class:Oe(["workout-previous workout-arrow transparent",{inactive:!T(o).previousUrl}]),disabled:!T(o).previousUrl,title:T(o).previousUrl?f.$t(`workouts.PREVIOUS_${T(o).type}`):f.$t(`workouts.NO_PREVIOUS_${T(o).type}`),onClick:O[0]||(O[0]=I=>T(o).previousUrl?f.$router.push(T(o).previousUrl):null)},O[5]||(O[5]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),10,Eht)):L("",!0),p("div",pht,[w(S,{"sport-label":T(s).label,color:T(s).color},null,8,["sport-label","color"]),T(a)||!T(o).suspended?(h(),v("div",mht,[T(o).type==="WORKOUT"?(h(),v("div",Tht,[p("span",null,A(T(o).title),1),T(u)?(h(),v("div",_ht,[p("button",{class:"transparent icon-button likes",onClick:O[1]||(O[1]=I=>m(T(o))),"aria-label":`${f.$t(`workouts.${T(o).liked?"REMOVE_LIKE":"LIKE_WORKOUT"}`)} (${T(o).likes_count} ${f.$t("workouts.LIKES",T(o).likes_count)})`},[p("i",{class:Oe(["fa",{"fa-heart":T(o).likes_count>0,"fa-heart-o":T(o).likes_count===0,liked:T(o).liked}]),"aria-hidden":"true"},null,2)],8,fht),T(o).likes_count>0?(h(),B(R,{key:0,to:`/workouts/${T(o).workoutId}/likes`,class:"likes-count"},{default:Y(()=>[x(A(T(o).likes_count),1)]),_:1},8,["to"])):L("",!0),T(a)?(h(),v("button",{key:1,class:"transparent icon-button",onClick:O[2]||(O[2]=I=>f.$router.push({name:"EditWorkout",params:{workoutId:T(o).workoutId}})),"aria-label":f.$t("workouts.EDIT_WORKOUT")},O[6]||(O[6]=[p("i",{class:"fa fa-edit","aria-hidden":"true"},null,-1)]),8,hht)):L("",!0),T(o).with_gpx&&T(a)?(h(),v("button",{key:2,class:"transparent icon-button",onClick:O[3]||(O[3]=ve(I=>E(T(o).workoutId),["prevent"])),"aria-label":f.$t("workouts.DOWNLOAD_WORKOUT")},O[7]||(O[7]=[p("i",{class:"fa fa-download","aria-hidden":"true"},null,-1)]),8,Sht)):L("",!0),T(a)?(h(),v("button",{key:3,id:"delete-workout-button",class:"transparent icon-button",onClick:ve(c,["prevent"]),"aria-label":f.$t("workouts.DELETE_WORKOUT")},O[8]||(O[8]=[p("i",{class:"fa fa-trash","aria-hidden":"true"},null,-1)]),8,Aht)):L("",!0),!T(a)&&!l.value&&d.value!==`workout-${T(o).workoutId}-created`?(h(),v("button",{key:4,class:"transparent icon-button",onClick:ve(_,["prevent"]),title:f.$t("workouts.REPORT_WORKOUT")},O[9]||(O[9]=[p("i",{class:"fa fa-flag","aria-hidden":"true"},null,-1)]),8,Oht)):L("",!0)])):(h(),v("div",{key:1,title:`${T(o).likes_count} ${f.$t("workouts.LIKES",T(o).likes_count)}`},[p("i",{class:Oe(["fa",{"fa-heart":T(o).likes_count>0,"fa-heart-o":T(o).likes_count===0,liked:T(o).liked}])},null,2),T(o).likes_count>0?(h(),B(R,{key:0,to:`/workouts/${T(o).workoutId}/likes`,class:"likes-count"},{default:Y(()=>[x(A(T(o).likes_count),1)]),_:1},8,["to"])):L("",!0)],8,Iht))])):T(o).segmentId!==null?(h(),v("div",ght,[x(A(T(o).title)+" ",1),p("span",Rht,[O[10]||(O[10]=x(" — ")),O[11]||(O[11]=p("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1)),x(" "+A(f.$t("workouts.SEGMENT"))+" "+A(T(o).segmentId+1),1)])])):L("",!0),p("div",Nht,[p("time",{datetime:T(o).workoutFullDate},A(T(o).workoutDate)+" - "+A(T(o).workoutTime),9,vht),p("span",bht,[T(o).type==="SEGMENT"?(h(),B(R,{key:0,to:{name:"Workout",params:{workoutId:T(o).workoutId}}},{default:Y(()=>[x(" > "+A(f.$t("workouts.BACK_TO_WORKOUT")),1)]),_:1},8,["to"])):L("",!0)])])])):L("",!0)]),T(a)?(h(),v("button",{key:1,class:Oe(["workout-next workout-arrow transparent",{inactive:!T(o).nextUrl}]),disabled:!T(o).nextUrl,title:T(o).nextUrl?f.$t(`workouts.NEXT_${T(o).type}`):f.$t(`workouts.NO_NEXT_${T(o).type}`),onClick:O[4]||(O[4]=I=>T(o).nextUrl?f.$router.push(T(o).nextUrl):null)},O[12]||(O[12]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),10,Cht)):L("",!0)])}}}),Dht=ae(Pht,[["__scopeId","data-v-0e06726e"]]),Lht={key:0,class:"workout-record"},yht=X({__name:"WorkoutRecord",props:{recordType:{},workoutObject:{}},setup(e){const t=e,{recordType:n,workoutObject:a}=_e(t);return(s,o)=>T(a).records&&T(a).records.find(i=>i.record_type===T(n))?(h(),v("span",Lht,o[0]||(o[0]=[p("sup",null,[p("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1)]))):L("",!0)}}),si=ae(yht,[["__scopeId","data-v-0c5d556a"]]),$ht="/img/weather/temperature.svg",Uht="/img/weather/pour-rain.svg",kht="/img/weather/breeze.svg",wht=["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"],Mht=e=>{const t=Math.floor(e/22.5+.5);return wht[t%16]},Wht={class:"wind"},Fht={class:"wind-bearing"},zht=["title"],xht=X({__name:"WeatherWind",props:{weather:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{useImperialUnits:n,weather:a}=_e(t),{t:s}=$t();function o(i){return s(`workouts.WEATHER.WIND_DIRECTIONS.${Mht(i)}`)}return(i,r)=>(h(),v("div",Wht,[x(A(T(dKe)(T(a).wind,T(n)))+" ",1),p("div",Fht,[T(a).windBearing?(h(),v("i",{key:0,class:"fa fa-long-arrow-down",style:za({transform:`rotate(${T(a).windBearing}deg)`}),"aria-hidden":"true",title:o(T(a).windBearing)},null,12,zht)):L("",!0)])]))}}),Zh=ae(xht,[["__scopeId","data-v-e1f7f9cc"]]),Bht={key:0,id:"workout-weather"},Ght={class:"weather-table"},Vht={class:"weather-th"},Hht=["src","alt","title"],Kht={class:"weather-th"},qht=["src","alt","title"],jht=["alt","title"],Yht=["alt","title"],Xht=["alt","title"],Qht=X({__name:"WorkoutWeather",props:{workoutObject:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{useImperialUnits:n,workoutObject:a}=_e(t);return(s,o)=>T(a).weatherStart&&T(a).weatherEnd?(h(),v("div",Bht,[p("table",Ght,[p("thead",null,[p("tr",null,[o[0]||(o[0]=p("th",null,null,-1)),p("th",null,[p("div",Vht,[x(A(s.$t("workouts.START"))+" ",1),p("img",{class:"weather-img",src:`/img/weather/${T(a).weatherStart.icon}.svg`,alt:s.$t(`workouts.WEATHER.DARK_SKY.${T(a).weatherStart.icon}`),title:s.$t(`workouts.WEATHER.DARK_SKY.${T(a).weatherStart.icon}`)},null,8,Hht)])]),p("th",null,[p("div",Kht,[x(A(s.$t("workouts.END"))+" ",1),p("img",{class:"weather-img",src:`/img/weather/${T(a).weatherEnd.icon}.svg`,alt:s.$t(`workouts.WEATHER.DARK_SKY.${T(a).weatherEnd.icon}`),title:s.$t(`workouts.WEATHER.DARK_SKY.${T(a).weatherEnd.icon}`)},null,8,qht)])])])]),p("tbody",null,[p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:$ht,alt:s.$t("workouts.WEATHER.TEMPERATURE"),title:s.$t("workouts.WEATHER.TEMPERATURE")},null,8,jht)]),p("td",null,A(T(ph)(T(a).weatherStart.temperature,T(n))),1),p("td",null,A(T(ph)(T(a).weatherEnd.temperature,T(n))),1)]),p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:Uht,alt:s.$t("workouts.WEATHER.HUMIDITY"),title:s.$t("workouts.WEATHER.HUMIDITY")},null,8,Yht)]),p("td",null,A(Number(T(a).weatherStart.humidity*100).toFixed(1))+"% ",1),p("td",null,A(Number(T(a).weatherEnd.humidity*100).toFixed(1))+"% ",1)]),p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:kht,alt:s.$t("workouts.WEATHER.WIND"),title:s.$t("workouts.WEATHER.WIND")},null,8,Xht)]),p("td",null,[w(Zh,{weather:T(a).weatherStart,useImperialUnits:T(n)},null,8,["weather","useImperialUnits"])]),p("td",null,[w(Zh,{weather:T(a).weatherEnd,useImperialUnits:T(n)},null,8,["weather","useImperialUnits"])])])])])])):L("",!0)}}),Zht=ae(Qht,[["__scopeId","data-v-d507bd79"]]),Jht={id:"workout-info"},e0t={class:"workout-data"},t0t={class:"label"},n0t={class:"value"},a0t={key:0},s0t={class:"value"},o0t={class:"value"},i0t={key:0,class:"workout-data"},r0t={class:"label"},u0t={key:1,class:"workout-data"},l0t={class:"label"},c0t={class:"label"},d0t={key:2,class:"workout-data"},E0t=["alt"],p0t={class:"label"},m0t={class:"label"},T0t={key:3,class:"workout-data"},_0t={class:"label"},f0t={class:"label"},h0t=X({__name:"WorkoutData",props:{workoutObject:{},useImperialUnits:{type:Boolean},displayHARecord:{type:Boolean}},setup(e){const t=e,{displayHARecord:n,workoutObject:a,useImperialUnits:s}=_e(t),o=F(()=>a.value.pauses!=="0:00:00"&&a.value.pauses!==null);return(i,r)=>{const u=q("Distance");return h(),v("div",Jht,[p("div",e0t,[r[0]||(r[0]=p("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)),p("span",t0t,A(i.$t("workouts.DURATION")),1),r[1]||(r[1]=x(": ")),p("span",n0t,A(T(a).moving),1),w(si,{workoutObject:T(a),recordType:"LD"},null,8,["workoutObject"]),o.value?(h(),v("div",a0t,[x(" ("+A(i.$t("workouts.PAUSES"))+": ",1),p("span",s0t,A(T(a).pauses),1),x(" - "+A(i.$t("workouts.TOTAL_DURATION"))+": ",1),p("span",o0t,A(T(a).duration)+")",1)])):L("",!0)]),T(a).distance!==null?(h(),v("div",i0t,[r[2]||(r[2]=p("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)),p("span",r0t,A(i.$t("workouts.DISTANCE")),1),r[3]||(r[3]=x(": ")),w(u,{distance:T(a).distance,digits:3,unitFrom:"km",strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"]),w(si,{workoutObject:T(a),recordType:"FD"},null,8,["workoutObject"])])):L("",!0),T(a).aveSpeed!==null&&T(a).maxSpeed!==null?(h(),v("div",u0t,[r[4]||(r[4]=p("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1)),p("span",l0t,A(i.$t("workouts.AVERAGE_SPEED")),1),r[5]||(r[5]=x(": ")),w(u,{distance:T(a).aveSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"]),w(si,{workoutObject:T(a),recordType:"AS"},null,8,["workoutObject"]),r[6]||(r[6]=p("br",null,null,-1)),p("span",c0t,A(i.$t("workouts.MAX_SPEED")),1),r[7]||(r[7]=x(": ")),w(u,{distance:T(a).maxSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"]),w(si,{workoutObject:T(a),recordType:"MS"},null,8,["workoutObject"])])):L("",!0),T(a).maxAlt!==null&&T(a).minAlt!==null?(h(),v("div",d0t,[p("img",{class:"mountains",src:LO,alt:i.$t("workouts.ELEVATION")},null,8,E0t),p("span",p0t,A(i.$t("workouts.MIN_ALTITUDE")),1),r[8]||(r[8]=x(": ")),w(u,{distance:T(a).minAlt,unitFrom:"m",strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"]),r[9]||(r[9]=p("br",null,null,-1)),p("span",m0t,A(i.$t("workouts.MAX_ALTITUDE")),1),r[10]||(r[10]=x(": ")),w(u,{distance:T(a).maxAlt,unitFrom:"m",strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"])])):L("",!0),T(a).ascent!==null&&T(a).descent!==null?(h(),v("div",T0t,[r[11]||(r[11]=p("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)),p("span",_0t,A(i.$t("workouts.ASCENT")),1),r[12]||(r[12]=x(": ")),w(u,{distance:T(a).ascent,unitFrom:"m",strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"]),T(n)?(h(),B(si,{key:0,workoutObject:T(a),recordType:"HA"},null,8,["workoutObject"])):L("",!0),r[13]||(r[13]=p("br",null,null,-1)),p("span",f0t,A(i.$t("workouts.DESCENT")),1),r[14]||(r[14]=x(": ")),w(u,{distance:T(a).descent,unitFrom:"m",strong:!0,useImperialUnits:T(s)},null,8,["distance","useImperialUnits"])])):L("",!0),w(Zht,{workoutObject:T(a),useImperialUnits:T(s)},null,8,["workoutObject","useImperialUnits"])])}}}),S0t=ae(h0t,[["__scopeId","data-v-299a57f0"]]);function To(e,t){return Array.from(e.getElementsByTagName(t))}function Mo(e){return e==null||e.normalize(),(e==null?void 0:e.textContent)||""}function Bs(e,t,n){const a=e.getElementsByTagName(t);return a.length?a[0]:null}function A0t(e,t,n){const a={};if(!e)return a;const s=e.getElementsByTagName(t),o=s.length?s[0]:null;return o&&n?n(o,a):a}function hI(e,t,n){const a=Mo(Bs(e,t));return a&&n?n(a)||{}:{}}function Jh(e,t,n){const a=Number.parseFloat(Mo(Bs(e,t)));if(!Number.isNaN(a))return a&&n?n(a)||{}:{}}function O0t(e,t,n){const a=Number.parseFloat(Mo(Bs(e,t)));if(!Number.isNaN(a))return n(a),a}function gE(e,t){const n={};for(const a of t)hI(e,a,s=>{n[a]=s});return n}function I0t(e){return(e==null?void 0:e.nodeType)===1}function SI(e){let t=[];if(e===null)return t;for(const n of Array.from(e.childNodes)){if(!I0t(n))continue;const a=g0t(n.nodeName);if(a==="gpxtpx:TrackPointExtension")t=t.concat(SI(n));else{const s=Mo(n);t.push([a,R0t(s)])}}return t}function g0t(e){return["heart","gpxtpx:hr","hr"].includes(e)?"heart":e}function R0t(e){const t=Number.parseFloat(e);return Number.isNaN(t)?e:t}function AI(e){const t=[Number.parseFloat(e.getAttribute("lon")||""),Number.parseFloat(e.getAttribute("lat")||"")];if(Number.isNaN(t[0])||Number.isNaN(t[1]))return null;O0t(e,"ele",a=>{t.push(a)});const n=Bs(e,"time");return{coordinates:t,time:n?Mo(n):null,extendedValues:SI(Bs(e,"extensions"))}}function OI(e){return A0t(e,"line",t=>Object.assign({},hI(t,"color",a=>({stroke:`#${a}`})),Jh(t,"opacity",a=>({"stroke-opacity":a})),Jh(t,"width",a=>({"stroke-width":a*96/25.4}))))}function tm(e,t){var s;const n=gE(t,["name","cmt","desc","type","time","keywords"]);for(const[o,i]of e)for(const r of Array.from(t.getElementsByTagNameNS(i,"*")))n[r.tagName.replace(":","_")]=(s=Mo(r))==null?void 0:s.trim();const a=To(t,"link");return a.length&&(n.links=a.map(o=>Object.assign({href:o.getAttribute("href")},gE(o,["text","type"])))),n}function II(e,t){const n=To(e,t),a=[],s=[],o={};for(let i=0;i1,r=Object.assign({_gpxType:"trk"},tm(e,t),OI(Bs(t,"extensions")),s.length?{coordinateProperties:{times:i?s:s[0]}}:{});for(const l of o){a.push(l.line),r.coordinateProperties||(r.coordinateProperties={});const d=r.coordinateProperties,E=Object.entries(l.extendedValues);for(let c=0;cnew Array(f.line.length).fill(null))),d[m][c]=_):d[m]=_}}return{type:"Feature",properties:r,geometry:i?{type:"MultiLineString",coordinates:a}:{type:"LineString",coordinates:a[0]}}}function b0t(e,t){const n=Object.assign(tm(e,t),gE(t,["sym"])),a=AI(t);return a?{type:"Feature",properties:n,geometry:{type:"Point",coordinates:a.coordinates}}:null}function*C0t(e){var o,i;const t="gpxx",n="http://www.garmin.com/xmlschemas/GpxExtensions/v3",a=[[t,n]],s=(o=e.getElementsByTagName("gpx")[0])==null?void 0:o.attributes;if(s)for(const r of Array.from(s))(i=r.name)!=null&&i.startsWith("xmlns:")&&r.value!==n&&a.push([r.name,r.value]);for(const r of To(e,"trk")){const u=v0t(a,r);u&&(yield u)}for(const r of To(e,"rte")){const u=N0t(a,r);u&&(yield u)}for(const r of To(e,"wpt")){const u=b0t(a,r);u&&(yield u)}}function P0t(e){return{type:"FeatureCollection",features:Array.from(C0t(e))}}const e0=(e,t)=>{for(const n of Object.keys(t))e.on(n,t[n])},gI=e=>{for(const t of Object.keys(e)){const n=e[t];n&&ss(n.cancel)&&n.cancel()}},D0t=e=>!e||typeof e.charAt!="function"?e:e.charAt(0).toUpperCase()+e.slice(1),ss=e=>typeof e=="function",Ga=(e,t,n)=>{for(const a in n){const s="set"+D0t(a);e[s]?Ce(()=>n[a],(o,i)=>{e[s](o,i)}):t[s]&&Ce(()=>n[a],o=>{t[s](o)})}},Ia=(e,t,n={})=>{const a={...n};for(const s in e){const o=t[s],i=e[s];o&&(o&&o.custom===!0||i!==void 0&&(a[s]=i))}return a},js=e=>{const t={},n={};for(const a in e)if(a.startsWith("on")&&!a.startsWith("onUpdate")&&a!=="onReady"){const s=a.slice(2).toLocaleLowerCase();t[s]=e[a]}else n[a]=e[a];return{listeners:t,attrs:n}},L0t=async e=>{const t=await Promise.all([xt(()=>import("./maps-DkiRMund.js").then(n=>n.m),__vite__mapDeps([0,1])),xt(()=>import("./maps-DkiRMund.js").then(n=>n.b),__vite__mapDeps([0,1])),xt(()=>import("./maps-DkiRMund.js").then(n=>n.c),__vite__mapDeps([0,1]))]);delete e.Default.prototype._getIconUrl,e.Default.mergeOptions({iconRetinaUrl:t[0].default,iconUrl:t[1].default,shadowUrl:t[2].default})},Fr=e=>{const t=Ie((...a)=>console.warn(`Method ${e} has been invoked without being replaced`)),n=(...a)=>t.value(...a);return n.wrapped=t,Sn(e,n),n},zr=(e,t)=>e.wrapped.value=t,na=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||globalThis,Yn=e=>{const t=kt(e);if(t===void 0)throw new Error(`Attempt to inject ${e.description} before it was provided.`);return t},Va=Symbol("useGlobalLeaflet"),hs=Symbol("addLayer"),nm=Symbol("removeLayer"),RI=Symbol("registerControl"),NI=Symbol("registerLayerControl"),vI=Symbol("canSetParentHtml"),bI=Symbol("setParentHtml"),CI=Symbol("setIcon"),y0t=Symbol("bindPopup"),$0t=Symbol("bindTooltip"),U0t=Symbol("unbindPopup"),k0t=Symbol("unbindTooltip"),dr={options:{type:Object,default:()=>({}),custom:!0}},zl=e=>({options:e.options,methods:{}}),Wo={...dr,pane:{type:String},attribution:{type:String},name:{type:String,custom:!0},layerType:{type:String,custom:!0},visible:{type:Boolean,custom:!0,default:!0}},am=(e,t,n)=>{const a=Yn(hs),s=Yn(nm),{options:o,methods:i}=zl(e),r=Ia(e,Wo,o),u=()=>a({leafletObject:t.value}),l=()=>s({leafletObject:t.value}),d={...i,setAttribution(E){l(),t.value.options.attribution=E,e.visible&&u()},setName(){l(),e.visible&&u()},setLayerType(){l(),e.visible&&u()},setVisible(E){t.value&&(E?u():l())},bindPopup(E){if(!t.value||!ss(t.value.bindPopup)){console.warn("Attempt to bind popup before bindPopup method available on layer.");return}t.value.bindPopup(E)},bindTooltip(E){if(!t.value||!ss(t.value.bindTooltip)){console.warn("Attempt to bind tooltip before bindTooltip method available on layer.");return}t.value.bindTooltip(E)},unbindTooltip(){t.value&&(ss(t.value.closeTooltip)&&t.value.closeTooltip(),ss(t.value.unbindTooltip)&&t.value.unbindTooltip())},unbindPopup(){t.value&&(ss(t.value.closePopup)&&t.value.closePopup(),ss(t.value.unbindPopup)&&t.value.unbindPopup())},updateVisibleProp(E){n.emit("update:visible",E)}};return Sn(y0t,d.bindPopup),Sn($0t,d.bindTooltip),Sn(U0t,d.unbindPopup),Sn(k0t,d.unbindTooltip),ct(()=>{d.unbindPopup(),d.unbindTooltip(),l()}),{options:r,methods:d}},sm=(e,t)=>{if(e&&t.default)return bn("div",{style:{display:"none"}},t.default())},w0t={...Wo,interactive:{type:Boolean,default:void 0},bubblingMouseEvents:{type:Boolean,default:void 0}},PI={...w0t,stroke:{type:Boolean,default:void 0},color:{type:String},weight:{type:Number},opacity:{type:Number},lineCap:{type:String},lineJoin:{type:String},dashArray:{type:String},dashOffset:{type:String},fill:{type:Boolean,default:void 0},fillColor:{type:String},fillOpacity:{type:Number},fillRule:{type:String},className:{type:String}},M0t={...PI,radius:{type:Number},latLng:{type:[Object,Array],required:!0,custom:!0}};({...M0t});const Fo={...dr,position:{type:String}},DI=(e,t)=>{const{options:n,methods:a}=zl(e),s=Ia(e,Fo,n),o={...a,setPosition(i){t.value&&t.value.setPosition(i)}};return ct(()=>{t.value&&t.value.remove()}),{options:s,methods:o}},W0t=e=>e.default?bn("div",{ref:"root"},e.default()):null,t0=X({name:"LControl",props:{...Fo,disableClickPropagation:{type:Boolean,custom:!0,default:!0},disableScrollPropagation:{type:Boolean,custom:!0,default:!1}},setup(e,t){const n=Ie(),a=Ie(),s=kt(Va),o=Yn(RI),{options:i,methods:r}=DI(e,n);return mt(async()=>{const{Control:u,DomEvent:l}=s?na.L:await xt(()=>import("./maps-DkiRMund.js").then(E=>E.d),__vite__mapDeps([0,1])),d=u.extend({onAdd(){return a.value}});n.value=xa(new d(i)),Ga(r,n.value,e),o({leafletObject:n.value}),e.disableClickPropagation&&a.value&&l.disableClickPropagation(a.value),e.disableScrollPropagation&&a.value&&l.disableScrollPropagation(a.value),ln(()=>t.emit("ready",n.value))}),{root:a,leafletObject:n}},render(){return W0t(this.$slots)}});({...Fo});const LI={...Fo,collapsed:{type:Boolean,default:void 0},autoZIndex:{type:Boolean,default:void 0},hideSingleBase:{type:Boolean,default:void 0},sortLayers:{type:Boolean,default:void 0},sortFunction:{type:Function}},F0t=(e,t)=>{const{options:n}=DI(e,t);return{options:Ia(e,LI,n),methods:{addLayer(a){a.layerType==="base"?t.value.addBaseLayer(a.leafletObject,a.name):a.layerType==="overlay"&&t.value.addOverlay(a.leafletObject,a.name)},removeLayer(a){t.value.removeLayer(a.leafletObject)}}}},z0t=X({name:"LControlLayers",props:LI,setup(e,t){const n=Ie(),a=kt(Va),s=Yn(NI),{options:o,methods:i}=F0t(e,n);return mt(async()=>{const{control:r}=a?na.L:await xt(()=>import("./maps-DkiRMund.js").then(u=>u.d),__vite__mapDeps([0,1]));n.value=xa(r.layers(void 0,void 0,o)),Ga(i,n.value,e),s({...e,...i,leafletObject:n.value}),ln(()=>t.emit("ready",n.value))}),{leafletObject:n}},render(){return null}});({...Fo});({...Fo});const xl={...Wo},yI=(e,t,n)=>{const{options:a,methods:s}=am(e,t,n),o=Ia(e,xl,a),i={...s,addLayer(r){t.value.addLayer(r.leafletObject)},removeLayer(r){t.value.removeLayer(r.leafletObject)}};return Sn(hs,i.addLayer),Sn(nm,i.removeLayer),{options:o,methods:i}};({...xl});const $I={...xl,geojson:{type:[Object,Array],custom:!0},optionsStyle:{type:Function,custom:!0}},x0t=(e,t,n)=>{const{options:a,methods:s}=yI(e,t,n),o=Ia(e,$I,a);Object.prototype.hasOwnProperty.call(e,"optionsStyle")&&(o.style=e.optionsStyle);const i={...s,setGeojson(r){t.value.clearLayers(),t.value.addData(r)},setOptionsStyle(r){t.value.setStyle(r)},getGeoJSONData(){return t.value.toGeoJSON()},getBounds(){return t.value.getBounds()}};return{options:o,methods:i}},B0t=X({props:$I,setup(e,t){const n=Ie(),a=Ie(!1),s=kt(Va),o=Yn(hs),{methods:i,options:r}=x0t(e,n,t);return mt(async()=>{const{geoJSON:u}=s?na.L:await xt(()=>import("./maps-DkiRMund.js").then(d=>d.d),__vite__mapDeps([0,1]));n.value=xa(u(e.geojson,r));const{listeners:l}=js(t.attrs);n.value.on(l),Ga(i,n.value,e),o({...e,...i,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),{ready:a,leafletObject:n}},render(){return sm(this.ready,this.$slots)}}),om={...Wo,opacity:{type:Number},zIndex:{type:Number},tileSize:{type:[Number,Array,Object]},noWrap:{type:Boolean,default:void 0},minZoom:{type:Number},maxZoom:{type:Number},className:{type:String}},UI=(e,t,n)=>{const{options:a,methods:s}=am(e,t,n),o=Ia(e,om,a),i={...s,setTileComponent(){var r;(r=t.value)==null||r.redraw()}};return ct(()=>{t.value.off()}),{options:o,methods:i}},G0t=(e,t,n,a)=>e.extend({initialize(s){this.tileComponents={},this.on("tileunload",this._unloadTile),n.setOptions(this,s)},createTile(s){const o=this._tileCoordsToKey(s);this.tileComponents[o]=t.create("div");const i=bn({setup:a,props:["coords"]},{coords:s});return gN(i,this.tileComponents[o]),this.tileComponents[o]},_unloadTile(s){const o=this._tileCoordsToKey(s.coords);this.tileComponents[o]&&(this.tileComponents[o].innerHTML="",this.tileComponents[o]=void 0)}});({...om});const n0={iconUrl:{type:String},iconRetinaUrl:{type:String},iconSize:{type:[Object,Array]},iconAnchor:{type:[Object,Array]},popupAnchor:{type:[Object,Array]},tooltipAnchor:{type:[Object,Array]},shadowUrl:{type:String},shadowRetinaUrl:{type:String},shadowSize:{type:[Object,Array]},shadowAnchor:{type:[Object,Array]},bgPos:{type:[Object,Array]},className:{type:String}},V0t=X({name:"LIcon",props:{...n0,...dr},setup(e,t){const n=Ie(),a=kt(Va),s=Yn(vI),o=Yn(bI),i=Yn(CI);let r,u,l,d,E;const c=(O,S,R)=>{const I=O&&O.innerHTML;if(!S){R&&E&&s()&&o(I);return}const{listeners:g}=js(t.attrs);E&&u(E,g);const{options:N}=zl(e),b=Ia(e,n0,N);I&&(b.html=I),E=b.html?l(b):d(b),r(E,g),i(E)},m=()=>{ln(()=>c(n.value,!0,!1))},_=()=>{ln(()=>c(n.value,!1,!0))},f={setIconUrl:m,setIconRetinaUrl:m,setIconSize:m,setIconAnchor:m,setPopupAnchor:m,setTooltipAnchor:m,setShadowUrl:m,setShadowRetinaUrl:m,setShadowAnchor:m,setBgPos:m,setClassName:m,setHtml:m};return mt(async()=>{const{DomEvent:O,divIcon:S,icon:R}=a?na.L:await xt(()=>import("./maps-DkiRMund.js").then(I=>I.d),__vite__mapDeps([0,1]));r=O.on,u=O.off,l=S,d=R,Ga(f,{},e),new MutationObserver(_).observe(n.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),m()}),{root:n}},render(){const e=this.$slots.default?this.$slots.default():void 0;return bn("div",{ref:"root"},e)}});({...Wo});const H0t=X({props:xl,setup(e,t){const n=Ie(),a=Ie(!1),s=kt(Va),o=Yn(hs),{methods:i}=yI(e,n,t);return mt(async()=>{const{layerGroup:r}=s?na.L:await xt(()=>import("./maps-DkiRMund.js").then(l=>l.d),__vite__mapDeps([0,1]));n.value=xa(r(void 0,e.options));const{listeners:u}=js(t.attrs);n.value.on(u),Ga(i,n.value,e),o({...e,...i,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),{ready:a,leafletObject:n}},render(){return sm(this.ready,this.$slots)}});function kI(e,t,n){var a,s,o;t===void 0&&(t=50),n===void 0&&(n={});var i=(a=n.isImmediate)!=null&&a,r=(s=n.callback)!=null&&s,u=n.maxWait,l=Date.now(),d=[];function E(){if(u!==void 0){var m=Date.now()-l;if(m+t>=u)return u-m}return t}var c=function(){var m=[].slice.call(arguments),_=this;return new Promise(function(f,O){var S=i&&o===void 0;if(o!==void 0&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,l=Date.now(),!i){var I=e.apply(_,m);r&&r(I),d.forEach(function(g){return(0,g.resolve)(I)}),d=[]}},E()),S){var R=e.apply(_,m);return r&&r(R),f(R)}d.push({resolve:f,reject:O})})};return c.cancel=function(m){o!==void 0&&clearTimeout(o),d.forEach(function(_){return(0,_.reject)(m)}),d=[]},c}const a0={...dr,center:{type:[Object,Array]},bounds:{type:[Array,Object]},maxBounds:{type:[Array,Object]},zoom:{type:Number},minZoom:{type:Number},maxZoom:{type:Number},paddingBottomRight:{type:[Object,Array]},paddingTopLeft:{type:Object},padding:{type:Object},worldCopyJump:{type:Boolean,default:void 0},crs:{type:[String,Object]},maxBoundsViscosity:{type:Number},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number},inertiaMaxSpeed:{type:Number},easeLinearity:{type:Number},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:void 0},useGlobalLeaflet:{type:Boolean,default:!0,custom:!0}},K0t=X({inheritAttrs:!1,emits:["ready","update:zoom","update:center","update:bounds"],props:a0,setup(e,t){const n=Ie(),a=yt({ready:!1,layersToAdd:[],layersInControl:[]}),{options:s}=zl(e),o=Ia(e,a0,s),{listeners:i,attrs:r}=js(t.attrs),u=Fr(hs),l=Fr(nm),d=Fr(RI),E=Fr(NI);Sn(Va,e.useGlobalLeaflet);const c=F(()=>{const S={};return e.noBlockingAnimations&&(S.animate=!1),S}),m=F(()=>{const S=c.value;return e.padding&&(S.padding=e.padding),e.paddingTopLeft&&(S.paddingTopLeft=e.paddingTopLeft),e.paddingBottomRight&&(S.paddingBottomRight=e.paddingBottomRight),S}),_={moveend:kI(S=>{a.leafletRef&&(t.emit("update:zoom",a.leafletRef.getZoom()),t.emit("update:center",a.leafletRef.getCenter()),t.emit("update:bounds",a.leafletRef.getBounds()))}),overlayadd(S){const R=a.layersInControl.find(I=>I.name===S.name);R&&R.updateVisibleProp(!0)},overlayremove(S){const R=a.layersInControl.find(I=>I.name===S.name);R&&R.updateVisibleProp(!1)}};mt(async()=>{e.useGlobalLeaflet&&(na.L=na.L||await xt(()=>import("./maps-DkiRMund.js").then(D=>D.l),__vite__mapDeps([0,1])));const{map:S,CRS:R,Icon:I,latLngBounds:g,latLng:N,stamp:b}=e.useGlobalLeaflet?na.L:await xt(()=>import("./maps-DkiRMund.js").then(D=>D.d),__vite__mapDeps([0,1]));try{o.beforeMapMount&&await o.beforeMapMount()}catch(D){console.error(`The following error occurred running the provided beforeMapMount hook ${D.message}`)}await L0t(I);const C=typeof o.crs=="string"?R[o.crs]:o.crs;o.crs=C||R.EPSG3857;const y={addLayer(D){D.layerType!==void 0&&(a.layerControl===void 0?a.layersToAdd.push(D):a.layersInControl.find(M=>b(M.leafletObject)===b(D.leafletObject))||(a.layerControl.addLayer(D),a.layersInControl.push(D))),D.visible!==!1&&a.leafletRef.addLayer(D.leafletObject)},removeLayer(D){D.layerType!==void 0&&(a.layerControl===void 0?a.layersToAdd=a.layersToAdd.filter(M=>M.name!==D.name):(a.layerControl.removeLayer(D.leafletObject),a.layersInControl=a.layersInControl.filter(M=>b(M.leafletObject)!==b(D.leafletObject)))),a.leafletRef.removeLayer(D.leafletObject)},registerLayerControl(D){a.layerControl=D,a.layersToAdd.forEach(M=>{a.layerControl.addLayer(M)}),a.layersToAdd=[],d(D)},registerControl(D){a.leafletRef.addControl(D.leafletObject)},setZoom(D){const M=a.leafletRef.getZoom();D!==M&&a.leafletRef.setZoom(D,c.value)},setCrs(D){const M=a.leafletRef.getBounds();a.leafletRef.options.crs=D,a.leafletRef.fitBounds(M,{animate:!1,padding:[0,0]})},fitBounds(D){a.leafletRef.fitBounds(D,m.value)},setBounds(D){if(!D)return;const M=g(D);M.isValid()&&!(a.lastSetBounds||a.leafletRef.getBounds()).equals(M,0)&&(a.lastSetBounds=M,a.leafletRef.fitBounds(M))},setCenter(D){if(D==null)return;const M=N(D),P=a.lastSetCenter||a.leafletRef.getCenter();(P.lat!==M.lat||P.lng!==M.lng)&&(a.lastSetCenter=M,a.leafletRef.panTo(M,c.value))}};zr(u,y.addLayer),zr(l,y.removeLayer),zr(d,y.registerControl),zr(E,y.registerLayerControl),a.leafletRef=xa(S(n.value,o)),Ga(y,a.leafletRef,e),e0(a.leafletRef,_),e0(a.leafletRef,i),a.ready=!0,ln(()=>t.emit("ready",a.leafletRef))}),Qi(()=>{gI(_),a.leafletRef&&(a.leafletRef.off(),a.leafletRef.remove())});const f=F(()=>a.leafletRef),O=F(()=>a.ready);return{root:n,ready:O,leafletObject:f,attrs:r}},render({attrs:e}){return e.style||(e.style={}),e.style.width||(e.style.width="100%"),e.style.height||(e.style.height="100%"),bn("div",{...e,ref:"root"},this.ready&&this.$slots.default?this.$slots.default():{})}}),q0t=["Symbol(Comment)","Symbol(Text)"],j0t=["LTooltip","LPopup"],wI={...Wo,draggable:{type:Boolean,default:void 0},icon:{type:[Object]},zIndexOffset:{type:Number},latLng:{type:[Object,Array],custom:!0,required:!0}},Y0t=(e,t,n)=>{const{options:a,methods:s}=am(e,t,n),o=Ia(e,wI,a),i={...s,setDraggable(r){t.value.dragging&&(r?t.value.dragging.enable():t.value.dragging.disable())},latLngSync(r){n.emit("update:latLng",r.latlng),n.emit("update:lat-lng",r.latlng)},setLatLng(r){if(r!=null&&t.value){const u=t.value.getLatLng();(!u||!u.equals(r))&&t.value.setLatLng(r)}}};return{options:o,methods:i}},X0t=(e,t)=>{const n=t.slots.default&&t.slots.default();return n&&n.length&&n.some(Q0t)};function Q0t(e){return!(q0t.includes(e.type.toString())||j0t.includes(e.type.name))}const MI=X({name:"LMarker",props:wI,setup(e,t){const n=Ie(),a=Ie(!1),s=kt(Va),o=Yn(hs);Sn(vI,()=>{var l;return!!((l=n.value)!=null&&l.getElement())}),Sn(bI,l=>{var d,E;const c=ss((d=n.value)==null?void 0:d.getElement)&&((E=n.value)==null?void 0:E.getElement());c&&(c.innerHTML=l)}),Sn(CI,l=>{var d;return((d=n.value)==null?void 0:d.setIcon)&&n.value.setIcon(l)});const{options:i,methods:r}=Y0t(e,n,t),u={moveHandler:kI(r.latLngSync)};return mt(async()=>{const{marker:l,divIcon:d}=s?na.L:await xt(()=>import("./maps-DkiRMund.js").then(c=>c.d),__vite__mapDeps([0,1]));X0t(i,t)&&(i.icon=d({className:""})),n.value=xa(l(e.latLng,i));const{listeners:E}=js(t.attrs);n.value.on(E),n.value.on("move",u.moveHandler),Ga(r,n.value,e),o({...e,...r,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),Qi(()=>gI(u)),{ready:a,leafletObject:n}},render(){return sm(this.ready,this.$slots)}}),Z0t={...PI,smoothFactor:{type:Number},noClip:{type:Boolean,default:void 0},latLngs:{type:Array,required:!0,custom:!0}},s0={...Z0t},WI={...dr,content:{type:String,default:null}};({...WI});({...s0,latLngs:{...s0.latLngs}});const im={...om,tms:{type:Boolean,default:void 0},subdomains:{type:[String,Array],validator:e=>typeof e=="string"?!0:Array.isArray(e)?e.every(t=>typeof t=="string"):!1},detectRetina:{type:Boolean,default:void 0},url:{type:String,required:!0,custom:!0}},J0t=(e,t,n)=>{const{options:a,methods:s}=UI(e,t,n),o=Ia(e,im,a),i={...s};return{options:o,methods:i}},eSt=X({props:im,setup(e,t){const n=Ie(),a=kt(Va),s=Yn(hs),{options:o,methods:i}=J0t(e,n,t);return mt(async()=>{const{tileLayer:r}=a?na.L:await xt(()=>import("./maps-DkiRMund.js").then(l=>l.d),__vite__mapDeps([0,1]));n.value=xa(r(e.url,o));const{listeners:u}=js(t.attrs);n.value.on(u),Ga(i,n.value,e),s({...e,...i,leafletObject:n.value}),ln(()=>t.emit("ready",n.value))}),{leafletObject:n}},render(){return null}});({...WI});({...im});const o0=X({__name:"CustomMarker",props:{markerCoordinates:{},isStart:{type:Boolean}},setup(e){const t=e,{isStart:n,markerCoordinates:a}=_e(t);return(s,o)=>T(a).latitude?(h(),B(T(MI),{key:0,"lat-lng":[T(a).latitude,T(a).longitude]},{default:Y(()=>[w(T(V0t),{"icon-url":`/img/workouts/${T(n)?"start":"finish"}.svg`,iconSize:[15,15]},null,8,["icon-url"])]),_:1},8,["lat-lng"])):L("",!0)}}),tSt={id:"workout-map"},nSt={key:0,class:"leaflet-container"},aSt={key:1},sSt={key:1,class:"no-map"},oSt=X({__name:"index",props:{workoutData:{},markerCoordinates:{default:()=>({})}},setup(e){const t=e,{workoutData:n,markerCoordinates:a}=_e(t),{appConfig:s}=Be(),o=Ie(!1),i=Ie(null),r=F(()=>O()),u=F(()=>_(r)),l=F(()=>n.value&&n.value.gpx?c(n.value.gpx):{}),d=F(()=>m("first")),E=F(()=>m("last"));function c(I){if(!I||I!=="")try{return{jsonData:P0t(new DOMParser().parseFromString(I,"text/xml"))}}catch{return console.error("Invalid gpx content"),{}}return{}}function m(I){const g=I==="first"?0:n.value.chartData.length-1;return n.value&&n.value.chartData.length>0?{latitude:n.value.chartData[g].latitude,longitude:n.value.chartData[g].longitude}:{latitude:null,longitude:null}}function _(I){return[(I.value[0][0]+I.value[1][0])/2,(I.value[0][1]+I.value[1][1])/2]}function f(I){var g,N;(g=i.value)!=null&&g.leafletObject&&((N=i.value)==null||N.leafletObject.fitBounds(I))}function O(){return n.value?[[n.value.workout.bounds[0],n.value.workout.bounds[1]],[n.value.workout.bounds[2],n.value.workout.bounds[3]]]:[]}function S(){var I;(I=i.value)==null||I.leafletObject.fitBounds(O())}function R(){o.value=!o.value,o.value||setTimeout(()=>{S()},100)}return(I,g)=>{const N=q("VFullscreen");return h(),v("div",tSt,[T(n).loading?(h(),v("div",nSt)):(h(),v("div",aSt,[T(n).workout.with_gpx?(h(),B(N,{key:0,modelValue:o.value,"onUpdate:modelValue":g[1]||(g[1]=b=>o.value=b)},{default:Y(()=>[p("div",{class:Oe(["leaflet-container",{"fullscreen-map":o.value}])},[l.value.jsonData&&u.value&&r.value.length===2?(h(),B(T(K0t),{key:0,zoom:13,maxZoom:19,center:u.value,bounds:r.value,zoomAnimation:!1,ref_key:"workoutMap",ref:i,onReady:g[0]||(g[0]=b=>f(r.value)),"use-global-leaflet":!1,class:"map","aria-label":I.$t("workouts.WORKOUT_MAP")},{default:Y(()=>[w(T(z0t)),w(T(t0),{position:"topleft",class:"map-control",tabindex:"0",role:"button","aria-label":I.$t("workouts.RESET_ZOOM"),onClick:S},{default:Y(()=>g[2]||(g[2]=[p("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1)])),_:1},8,["aria-label"]),w(T(t0),{position:"topleft",class:"map-control",tabindex:"0",role:"button","aria-label":I.$t(`workouts.${o.value?"EXIT":"VIEW"}_FULLSCREEN`),onClick:R},{default:Y(()=>[p("i",{class:Oe(`fa fa-${o.value?"compress":"arrows-alt"}`),"aria-hidden":"true"},null,2)]),_:1},8,["aria-label"]),w(T(eSt),{url:`${T(nr)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,attribution:T(s).map_attribution,bounds:r.value},null,8,["url","attribution","bounds"]),w(T(B0t),{geojson:l.value.jsonData},null,8,["geojson"]),T(a).latitude?(h(),B(T(MI),{key:0,"lat-lng":[T(a).latitude,T(a).longitude]},null,8,["lat-lng"])):L("",!0),w(T(H0t),{name:I.$t("workouts.START_AND_FINISH"),"layer-type":"overlay"},{default:Y(()=>[d.value.latitude?(h(),B(o0,{key:0,markerCoordinates:d.value,isStart:!0},null,8,["markerCoordinates"])):L("",!0),E.value.latitude?(h(),B(o0,{key:1,markerCoordinates:E.value,isStart:!1},null,8,["markerCoordinates"])):L("",!0)]),_:1},8,["name"])]),_:1},8,["center","bounds","aria-label"])):L("",!0)],2)]),_:1},8,["modelValue"])):(h(),v("div",sSt,A(I.$t("workouts.NO_MAP")),1))]))])}}}),iSt=ae(oSt,[["__scopeId","data-v-6abbf12a"]]),rSt={key:0,class:"workout-visibility-levels"},uSt={class:"visibility"},lSt={key:0,class:"workout-visibility"},cSt=["title"],dSt={class:"visibility-label"},ESt={key:0,class:"visibility"},pSt={key:0,class:"workout-visibility"},mSt=["title"],TSt={class:"visibility-label"},_St={key:1,class:"visibility"},fSt=["title"],hSt={class:"visibility-label"},SSt=X({__name:"WorkoutVisibility",props:{workoutObject:{}},setup(e){const t=e,{workoutObject:n}=_e(t);function a(s){switch(s){case"public":return"globe";case"followers_only":return"users";default:case"private":return"lock"}}return(s,o)=>T(n).workoutVisibility?(h(),v("div",rSt,[x(A(s.$t("visibility_levels.VISIBILITY"))+": ",1),p("div",uSt,[T(n).with_analysis?(h(),v("span",lSt,A(s.$t("workouts.WORKOUT")),1)):L("",!0),p("i",{class:Oe(`fa fa-${a(T(n).workoutVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${T(n).workoutVisibility}`)},null,10,cSt),p("span",dSt," ("+A(s.$t(`visibility_levels.LEVELS.${T(n).workoutVisibility}`))+") ",1)]),T(n).with_analysis?(h(),v("div",ESt,[T(n).with_analysis?(h(),v("span",pSt,A(s.$t("workouts.ANALYSIS")),1)):L("",!0),p("i",{class:Oe(`fa fa-${a(T(n).analysisVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${T(n).analysisVisibility}`)},null,10,mSt),p("span",TSt," ("+A(s.$t(`visibility_levels.LEVELS.${T(n).analysisVisibility}`))+") ",1)])):L("",!0),T(n).with_gpx?(h(),v("div",_St,[x(A(s.$t("workouts.MAP"))+" ",1),p("i",{class:Oe(`fa fa-${a(T(n).mapVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${T(n).mapVisibility}`)},null,10,fSt),p("span",hSt," ("+A(s.$t(`visibility_levels.LEVELS.${T(n).mapVisibility}`))+") ",1)])):L("",!0)])):L("",!0)}}),ASt=ae(SSt,[["__scopeId","data-v-a634386f"]]),OSt={class:"workout-detail"},ISt={key:2,class:"report-submitted"},gSt={class:"info-box"},RSt={key:1,class:"workout-map-data"},NSt={key:3,class:"workout-equipments"},vSt=X({__name:"index",props:{authUser:{},displaySegment:{type:Boolean},sports:{},workoutData:{},markerCoordinates:{default:()=>({})},isWorkoutOwner:{type:Boolean}},setup(e){const t=e,n=rt(),a=De(),{getWorkoutSport:s}=nn(),{isWorkoutOwner:o,markerCoordinates:i,workoutData:r}=_e(t),u=F(()=>t.workoutData.workout),l=Ie(n.params.workoutId?+n.params.segmentId:null),d=F(()=>u.value.segments.length>0&&l.value?u.value.segments[+l.value-1]:null),E=Ie(!1),c=F(()=>s(u.value)),m=F(()=>a.getters[te.GETTERS.DISPLAY_OPTIONS]),_=F(()=>a.getters[Le.GETTERS.REPORT_STATUS]),f=F(()=>I(u.value,d.value)),O=F(()=>u.value.suspended_at!==null&&o.value),S=F(()=>a.getters[ee.GETTERS.SUCCESS]);function R(D,M,P){const W=M&&P&&P!==1?`/workouts/${D.id}/segment/${P-1}`:!M&&D.previous_workout?`/workouts/${D.previous_workout}`:null,Q=M&&P&&Py()),Ce(()=>n.params.segmentId,async D=>{l.value=D?+D:null,C()}),Ce(()=>n.params.workoutId,async D=>{D&&(E.value=!1,C()),y()}),(D,M)=>{const P=q("Modal"),W=q("Card");return h(),v("div",OSt,[E.value?(h(),B(P,{key:0,title:D.$t("common.CONFIRMATION"),message:D.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:M[0]||(M[0]=Q=>b(f.value.workoutId)),onCancelAction:N,onKeydown:Ye(N,["esc"])},null,8,["title","message"])):L("",!0),w(W,null,{title:Y(()=>[c.value?(h(),B(Dht,{key:0,authUser:D.authUser,sport:c.value,workoutObject:f.value,isWorkoutOwner:T(o),onDisplayModal:M[1]||(M[1]=Q=>g(!0))},null,8,["authUser","sport","workoutObject","isWorkoutOwner"])):L("",!0),T(r).currentReporting?(h(),B(Fp,{key:1,"object-id":f.value.workoutId,"object-type":"workout"},null,8,["object-id"])):L("",!0),_.value===`workout-${f.value.workoutId}-created`?(h(),v("div",ISt,[p("div",gSt,[p("span",null,[M[2]||(M[2]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(D.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0)]),content:Y(()=>[O.value&&f.value.suspended&&u.value.suspension?(h(),B(nI,{key:0,"display-suspension-message":"",action:u.value.suspension,workout:u.value},null,8,["action","workout"])):L("",!0),T(o)||!f.value.suspended?(h(),v("div",RSt,[w(iSt,{workoutData:T(r),markerCoordinates:T(i)},null,8,["workoutData","markerCoordinates"]),w(S0t,{workoutObject:f.value,useImperialUnits:m.value.useImperialUnits,displayHARecord:m.value.displayAscent},null,8,["workoutObject","useImperialUnits","displayHARecord"])])):L("",!0),f.value.workoutVisibility?(h(),B(ASt,{key:2,workoutObject:f.value,useImperialUnits:m.value.useImperialUnits,displayHARecord:m.value.displayAscent},null,8,["workoutObject","useImperialUnits","displayHARecord"])):L("",!0),f.value.equipments?(h(),v("div",NSt,[(h(!0),v(re,null,be(f.value.equipments,Q=>(h(),B(aI,{equipment:Q,"workout-id":f.value.workoutId,key:Q.label},null,8,["equipment","workout-id"]))),128))])):L("",!0)]),_:1})])}}}),bSt=ae(vSt,[["__scopeId","data-v-58f8e3a3"]]),CSt=e=>{const t=document.getElementById(e);if(t){let n=t.querySelector("ul");return n||(n=document.createElement("ul"),t.appendChild(n)),n}throw new Error("No legend container")},PSt={id:"htmlLegend",afterUpdate(e,t,n){var o,i,r,u,l,d;const a=CSt(n.containerID);for(;a.firstChild;)a.firstChild.remove();((r=(i=(o=e.options.plugins)==null?void 0:o.legend)==null?void 0:i.labels)!=null&&r.generateLabels?(d=(l=(u=e.options.plugins)==null?void 0:u.legend)==null?void 0:l.labels)==null?void 0:d.generateLabels(e):[]).forEach(E=>{var S,R,I;if(!((I=(R=(S=e.config.options)==null?void 0:S.scales)==null?void 0:R.yElevation)!=null&&I.display)&&E.datasetIndex===1)return;const c=document.createElement("li");c.onclick=g=>{g.preventDefault(),E.datasetIndex!==void 0&&(e.setDatasetVisibility(E.datasetIndex,!e.isDatasetVisible(E.datasetIndex)),e.update())};const m=document.createElement("input");m&&(m.type="checkbox",m.id=E.text,m.checked=!E.hidden);const _=document.createElement("label");_.htmlFor=m.id;const f=document.createTextNode(E.text);_.appendChild(f);const O=document.createElement("span");O&&(O.style.background=String(E.fillStyle),O.style.borderColor=String(E.strokeStyle)),_.appendChild(O),c.appendChild(m),c.appendChild(_),a.appendChild(c)})}},DSt={id:"workout-chart"},LSt={class:"chart-radio"},ySt=["checked"],$St=["checked"],USt={class:"line-chart"},kSt={class:"chart-info"},wSt={class:"no-data-cleaning"},MSt={key:0,class:"elevation-start"},WSt=["checked"],FSt=X({__name:"index",props:{authUser:{},workoutData:{}},emits:["getCoordinates"],setup(e,{emit:t}){const n=e,{authUser:a,workoutData:s}=_e(n),o=t,{t:i}=$t(),{darkTheme:r}=Be(),u=Ie(!0),l=[PSt],d=y("km"),E=y("m"),c=F(()=>a.value.start_elevation_at_zero),m=F(()=>_.value&&_.value.datasets.elevation.data.length>0),_=F(()=>Bct(s.value.chartData,i,a.value.imperial_units,r.value)),f=F(()=>({labels:u.value?_.value.distance_labels:_.value.duration_labels,datasets:JSON.parse(JSON.stringify([_.value.datasets.speed,_.value.datasets.elevation]))})),O=F(()=>_.value.coordinates),S=F(()=>({color:r.value?is.darkMode.line:is.ligthMode.line})),R=F(()=>({color:r.value?is.darkMode.text:is.ligthMode.text})),I=F(()=>({responsive:!0,maintainAspectRatio:!1,animation:!1,layout:{padding:{top:22}},scales:{x:{grid:{drawOnChartArea:!1,...S.value},border:{...S.value},ticks:{count:10,callback:function(D){return u.value?Number(D).toFixed(2):N(D)},...R.value},type:"linear",bounds:"data",title:{display:!0,text:u.value?i("workouts.DISTANCE")+` (${d})`:i("workouts.DURATION"),...R.value}},ySpeed:{grid:{drawOnChartArea:!1,...S.value},border:{...S.value},position:"left",title:{display:!0,text:i("workouts.SPEED")+` (${d}/h)`,...R.value},ticks:{...R.value}},yElevation:{beginAtZero:c.value,display:m.value,grid:{drawOnChartArea:!1,...S.value},border:{...S.value},position:"right",title:{display:!0,text:i("workouts.ELEVATION")+` (${E})`,...R.value},ticks:{...R.value}}},elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(D){const M=` ${D.dataset.label}: ${D.formattedValue}`;return D.dataset.yAxisID==="yElevation"?M+` ${E}`:M+` ${d}/h`},title:function(D){return D.length>0&&b(O.value[D[0].dataIndex]),D.length===0?"":u.value?`${i("workouts.DISTANCE")}: ${D[0].label} ${d}`:`${i("workouts.DURATION")}: ${N(D[0].label.replace(",",""))}`}}},legend:{display:!1},htmlLegend:{containerID:"chart-legend",displayElevation:m.value}}}));function g(){u.value=!u.value}function N(D){return new Date(+D*1e3).toISOString().substr(11,8)}function b(D){o("getCoordinates",D)}function C(){b({latitude:null,longitude:null})}function y(D){return n.authUser.imperial_units?vn[D].defaultTarget:D}return(D,M)=>{const P=q("Card");return h(),v("div",DSt,[w(P,null,{title:Y(()=>[x(A(D.$t("workouts.ANALYSIS")),1)]),content:Y(()=>[p("div",LSt,[p("label",null,[p("input",{type:"radio",name:"distance",checked:u.value,onClick:g},null,8,ySt),x(" "+A(D.$t("workouts.DISTANCE")),1)]),p("label",null,[p("input",{type:"radio",name:"duration",checked:!u.value,onClick:g},null,8,$St),x(" "+A(D.$t("workouts.DURATION")),1)])]),M[1]||(M[1]=p("div",{id:"chart-legend"},null,-1)),p("div",USt,[w(T(Mdt),{data:f.value,options:I.value,plugins:l,onMouseleave:C,"aria-label":D.$t("workouts.WORKOUT_CHART")},null,8,["data","options","aria-label"])]),p("div",kSt,[p("div",wSt,A(D.$t("workouts.NO_DATA_CLEANING")),1),m.value?(h(),v("div",MSt,[p("label",null,[p("input",{type:"checkbox",checked:c.value,onClick:M[0]||(M[0]=W=>c.value=!c.value)},null,8,WSt),x(" "+A(D.$t("workouts.START_ELEVATION_AT_ZERO")),1)])])):L("",!0)])]),_:1})])}}}),zSt=ae(FSt,[["__scopeId","data-v-a8515886"]]),xSt={id:"workout-content"},BSt=["aria-label"],GSt={key:0,class:"fa fa-edit","aria-hidden":"true"},VSt=["for"],HSt={class:"markdown-hints info-box"},KSt={class:"form-buttons"},qSt=["disabled"],jSt={key:0,class:"edition-loading"},YSt=["innerHTML"],_d=1e3,XSt=X({__name:"WorkoutContent",props:{content:{default:()=>""},contentType:{},workoutId:{},allowEdition:{type:Boolean,default:!0}},setup(e){const t=e,n=De(),{content:a,contentType:s,workoutId:o}=_e(t),i=F(()=>a.value!==null&&a.value.length>_d),r=F(()=>n.getters[ee.GETTERS.WORKOUT_CONTENT_EDITION]),u=F(()=>r.value.loading&&r.value.contentType===s.value),l=Ie(!1),d=F(()=>l.value?a.value:_(a.value)),E=Ie(!1),c=Ie(""),m=F(()=>r.value.contentType===s.value?n.getters[te.GETTERS.ERROR_MESSAGES]:null);function _(I){return I===null||I.length<=_d?I:I.slice(0,_d-10)+"…"}function f(){n.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),E.value=!0,c.value=a.value?a.value:""}function O(I){c.value=I.value}function S(){E.value=!1,c.value=a.value?a.value:""}function R(){n.dispatch(ee.ACTIONS.EDIT_WORKOUT_CONTENT,{workoutId:o.value,content:c.value,contentType:s.value})}return Ce(()=>u.value,I=>{I||(E.value=!1)}),(I,g)=>{const N=q("CustomTextArea"),b=q("ErrorMessage"),C=q("Card");return h(),v("div",xSt,[w(C,null,{title:Y(()=>[x(A(Fe(I.$t(`workouts.${T(s)==="NOTES"?"PRIVATE_NOTES":T(s)}`)))+" ",1),I.allowEdition?(h(),v("button",{key:0,class:"transparent icon-button","aria-label":I.$t("buttons.EDIT"),onClick:f},[E.value?L("",!0):(h(),v("i",GSt))],8,BSt)):L("",!0)]),content:Y(()=>[E.value?(h(),v("form",{key:0,onSubmit:ve(R,["prevent"])},[p("label",{for:T(s).toLowerCase(),class:"visually-hidden"},A(I.$t(`workouts.${T(s)}`)),9,VSt),w(N,{name:T(s).toLowerCase(),input:T(a),disabled:u.value,charLimit:T(s)==="NOTES"?500:1e4,rows:T(s)==="NOTES"?2:5,onUpdateValue:O},null,8,["name","input","disabled","charLimit","rows"]),p("div",HSt,[g[1]||(g[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+A(I.$t("workouts.MARKDOWN_SYNTAX")),1)]),p("div",KSt,[p("button",{class:"confirm",type:"submit",disabled:u.value},A(I.$t("buttons.SUBMIT")),9,qSt),p("button",{class:"cancel",onClick:ve(S,["prevent"])},A(I.$t("buttons.CANCEL")),1),u.value?(h(),v("div",jSt,g[2]||(g[2]=[p("div",null,[p("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"})],-1)]))):L("",!0)])],32)):(h(),v(re,{key:1},[p("span",{class:Oe(["workout-content",{notes:T(s)==="NOTES"||!T(a)}]),innerHTML:d.value&&d.value!==""?T(gO)(d.value):I.$t(`common.NO_${T(s)}`)},null,10,YSt),i.value?(h(),v("button",{key:0,class:"read-more transparent",onClick:g[0]||(g[0]=y=>l.value=!l.value)},[p("i",{class:Oe(`fa fa-caret-${l.value?"up":"down"}`),"aria-hidden":"true"},null,2),x(" "+A(I.$t(`buttons.${l.value?"HIDE":"READ_MORE"}`)),1)])):L("",!0)],64)),m.value?(h(),B(b,{key:2,message:m.value,"no-margin":!0},null,8,["message"])):L("",!0)]),_:1})])}}}),i0=ae(XSt,[["__scopeId","data-v-0f0b6b42"]]),QSt={id:"workout-segments"},ZSt=X({__name:"WorkoutSegments",props:{segments:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{segments:n,useImperialUnits:a}=_e(t);return(s,o)=>{const i=q("router-link"),r=q("Distance"),u=q("Card");return h(),v("div",QSt,[w(u,null,{title:Y(()=>[x(A(s.$t("workouts.SEGMENT",2)),1)]),content:Y(()=>[p("ul",null,[(h(!0),v(re,null,be(T(n),(l,d)=>(h(),v("li",{key:l.segment_id},[w(i,{to:{name:"WorkoutSegment",params:{workoutId:l.workout_id,segmentId:d+1}}},{default:Y(()=>[x(A(s.$t("workouts.SEGMENT",1))+" "+A(d+1),1)]),_:2},1032,["to"]),x(" ("+A(s.$t("workouts.DISTANCE"))+": ",1),w(r,{distance:l.distance,unitFrom:"km",useImperialUnits:T(a)},null,8,["distance","useImperialUnits"]),x(", "+A(s.$t("workouts.DURATION"))+": "+A(l.duration)+") ",1)]))),128))])]),_:1})])}}}),JSt=ae(ZSt,[["__scopeId","data-v-eaec7ac1"]]),eAt={class:"box workout-user"},tAt={class:"user-img-name"},nAt=X({__name:"WorkoutUser",props:{user:{}},setup(e){const t=e,{user:n}=_e(t);return(a,s)=>{const o=q("router-link");return h(),v("div",eAt,[p("div",tAt,[w(Qt,{user:T(n)},null,8,["user"]),w(o,{class:"user-name",to:`/users/${T(n).username}?from=users`},{default:Y(()=>[x(A(T(n).username),1)]),_:1},8,["to"])]),w(Kp,{user:T(n)},null,8,["user"])])}}}),aAt=ae(nAt,[["__scopeId","data-v-942d8f8a"]]),sAt={id:"workout",class:"view"},oAt={class:"container"},iAt={key:0,class:"workout-container"},rAt={key:0},uAt={key:0,class:"box suspended"},lAt={key:1},cAt=X({__name:"Workout",props:{displaySegment:{type:Boolean}},setup(e){const t=e,{displaySegment:n}=_e(t),a=rt(),s=De(),{authUser:o}=qe(),{sports:i}=nn(),r=Ie({latitude:null,longitude:null}),u=F(()=>s.getters[ee.GETTERS.WORKOUT_DATA]),l=F(()=>o.value.username===u.value.workout.user.username);function d(E){r.value={latitude:E.latitude,longitude:E.longitude}}return Ce(()=>a.params.workoutId,async E=>{E&&s.dispatch(ee.ACTIONS.GET_WORKOUT_DATA,{workoutId:E})}),Ce(()=>a.params.segmentId,async E=>{if(a.params.workoutId){const c={workoutId:a.params.workoutId};E&&(c.segmentId=E),s.dispatch(ee.ACTIONS.GET_WORKOUT_DATA,c)}}),Je(()=>{const E={workoutId:a.params.workoutId};t.displaySegment&&(E.segmentId=a.params.segmentId),s.dispatch(ee.ACTIONS.GET_WORKOUT_DATA,E),i.value.length===0&&s.dispatch(Ht.ACTIONS.GET_SPORTS)}),ct(()=>{s.commit(ee.MUTATIONS.EMPTY_WORKOUT)}),(E,c)=>(h(),v("div",sAt,[p("div",oAt,[T(i).length>0?(h(),v("div",iAt,[u.value.workout.id?(h(),v("div",rAt,[w(aAt,{user:u.value.workout.user},null,8,["user"]),u.value.workout.suspended&&!l.value?(h(),v("div",uAt,A(E.$t("workouts.SUSPENDED_BY_ADMIN")),1)):(h(),B(bSt,{key:1,workoutData:u.value,sports:T(i),authUser:T(o),markerCoordinates:r.value,displaySegment:T(n),isWorkoutOwner:l.value},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment","isWorkoutOwner"])),u.value.workout.with_analysis&&u.value.chartData.length>0?(h(),B(zSt,{key:2,workoutData:u.value,authUser:T(o),displaySegment:T(n),onGetCoordinates:d},null,8,["workoutData","authUser","displaySegment"])):L("",!0),T(n)?L("",!0):(h(),B(i0,{key:3,"workout-id":u.value.workout.id,"content-type":"DESCRIPTION",content:u.value.workout.description,loading:u.value.loading,"allow-edition":l.value},null,8,["workout-id","content","loading","allow-edition"])),!T(n)&&u.value.workout.segments.length>1?(h(),B(JSt,{key:4,segments:u.value.workout.segments,useImperialUnits:T(o)?T(o).imperial_units:!1},null,8,["segments","useImperialUnits"])):L("",!0),l.value&&!T(n)?(h(),B(i0,{key:5,"workout-id":u.value.workout.id,"content-type":"NOTES",content:u.value.workout.notes,loading:u.value.loading},null,8,["workout-id","content","loading"])):L("",!0),T(n)?L("",!0):(h(),B(fI,{key:6,workoutData:u.value,"auth-user":T(o)},null,8,["workoutData","auth-user"])),c[0]||(c[0]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",lAt,[u.value.loading?L("",!0):(h(),B(wo,{key:0,target:T(n)?"SEGMENT":"WORKOUT"},null,8,["target"]))]))])):L("",!0)])]))}}),fd=ae(cAt,[["__scopeId","data-v-ea73edb8"]]),dAt={class:"workouts-filters"},EAt={class:"box"},pAt={class:"form-all-items"},mAt={class:"form-items-group"},TAt={class:"form-item"},_At={for:"from"},fAt=["value"],hAt={class:"form-item"},SAt={for:"to"},AAt=["value"],OAt={class:"form-item"},IAt={for:"sport_id"},gAt=["value"],RAt=["value"],NAt={class:"form-item form-item-equipment"},vAt=["value"],bAt={key:0,value:"",disabled:"",selected:""},CAt={value:"none"},PAt=["label"],DAt=["value"],LAt={class:"form-items-group"},yAt={class:"form-item form-item-text"},$At={for:"title"},UAt={class:"form-inputs-group"},kAt=["value"],wAt={class:"form-item form-item-text"},MAt={for:"notes"},WAt={class:"form-inputs-group"},FAt=["value"],zAt={class:"form-item form-item-text"},xAt={for:"notes"},BAt={class:"form-inputs-group"},GAt=["value"],VAt={class:"form-items-group"},HAt={class:"form-item"},KAt={class:"form-inputs-group"},qAt=["value"],jAt=["value"],YAt={class:"form-item"},XAt={class:"form-inputs-group"},QAt=["value"],ZAt=["value"],JAt={class:"form-items-group"},e1t={class:"form-item"},t1t={class:"form-inputs-group"},n1t=["value"],a1t=["value"],s1t={class:"form-item"},o1t={class:"form-inputs-group"},i1t=["value"],r1t=["value"],u1t={class:"form-button"},l1t=X({__name:"WorkoutsFilters",props:{authUser:{},translatedSports:{}},emits:["filter"],setup(e,{emit:t}){const n=e,{authUser:a}=_e(n),s=t,o=rt(),i=gn(),r=YA(),{t:u}=$t();let l=Object.assign({},o.query);const d=F(()=>a.value.imperial_units?vn.km.defaultTarget:"km"),E=F(()=>f(r.getters[xe.GETTERS.EQUIPMENTS]));function c(O){const S=O.target.name,R=O.target.value;R===""?delete l[S]:l[S]=R}function m(){s("filter"),"page"in l&&(l.page="1"),i.push({path:"/workouts",query:l})}function _(){s("filter"),i.push({path:"/workouts",query:{}})}function f(O){const S={};return O.filter(R=>R.workouts_count>0).map(R=>{const I=u(`equipment_types.${R.equipment_type.label}.LABEL`);I in S?S[I].push(R):S[I]=[R]}),S}return Ce(()=>o.query,O=>{l=Object.assign({},O)}),mt(()=>{const O=document.getElementById("from");O&&O.focus()}),(O,S)=>(h(),v("div",dAt,[p("div",EAt,[p("form",{onSubmit:S[0]||(S[0]=ve(()=>{},["prevent"])),class:"form"},[p("div",pAt,[p("div",mAt,[p("div",TAt,[p("label",_At,A(O.$t("workouts.FROM"))+": ",1),p("input",{id:"from",name:"from",type:"date",value:O.$route.query.from,onChange:c},null,40,fAt)]),p("div",hAt,[p("label",SAt,A(O.$t("workouts.TO"))+": ",1),p("input",{id:"to",name:"to",type:"date",value:O.$route.query.to,onChange:c},null,40,AAt)]),p("div",OAt,[p("label",IAt,A(O.$t("workouts.SPORT",1))+":",1),p("select",{id:"sport_id",name:"sport_id",value:O.$route.query.sport_id,onChange:c,onKeyup:Ye(m,["enter"])},[S[1]||(S[1]=p("option",{value:""},null,-1)),(h(!0),v(re,null,be(O.translatedSports.filter(R=>T(a).sports_list.includes(R.id)),R=>(h(),v("option",{value:R.id,key:R.id},A(R.translatedLabel),9,RAt))),128))],40,gAt)]),p("div",NAt,[p("label",null,A(O.$t("equipments.EQUIPMENT",1))+":",1),p("select",{name:"equipment_id",value:O.$route.query.equipment_id,onChange:c,onKeyup:Ye(m,["enter"])},[S[3]||(S[3]=p("option",{value:""},null,-1)),Object.keys(E.value).length==0?(h(),v("option",bAt,A(O.$t("equipments.NO_EQUIPMENTS")),1)):L("",!0),Object.keys(E.value).length>0?(h(),v(re,{key:1},[p("option",CAt,A(O.$t("equipments.WITHOUT_EQUIPMENTS")),1),S[2]||(S[2]=p("option",{disabled:""},"---",-1))],64)):L("",!0),(h(!0),v(re,null,be(Object.keys(E.value).sort(),R=>(h(),v("optgroup",{label:R,key:R},[(h(!0),v(re,null,be(E.value[R].sort(T(Hp)),I=>(h(),v("option",{value:I.id,key:I.id},A(I.label),9,DAt))),128))],8,PAt))),128))],40,vAt)])]),p("div",LAt,[p("div",yAt,[p("label",$At,A(O.$t("workouts.TITLE",1))+":",1),p("div",UAt,[p("input",{id:"title",class:"text",name:"title",value:O.$route.query.title,onChange:c,placeholder:"",type:"text",onKeyup:Ye(m,["enter"])},null,40,kAt)])]),p("div",wAt,[p("label",MAt,A(O.$t("workouts.DESCRIPTION"))+":",1),p("div",WAt,[p("input",{id:"description",class:"text",name:"description",value:O.$route.query.description,onChange:c,placeholder:"",type:"text",onKeyup:Ye(m,["enter"])},null,40,FAt)])]),p("div",zAt,[p("label",xAt,A(O.$t("workouts.NOTES"))+":",1),p("div",BAt,[p("input",{id:"notes",class:"text",name:"notes",value:O.$route.query.notes,onChange:c,placeholder:"",type:"text",onKeyup:Ye(m,["enter"])},null,40,GAt)])])]),p("div",VAt,[p("div",HAt,[p("label",null,A(O.$t("workouts.DISTANCE"))+" ("+A(d.value)+"): ",1),p("div",KAt,[p("input",{name:"distance_from",type:"number",min:"0",step:"0.1",value:O.$route.query.distance_from,onChange:c,onKeyup:Ye(m,["enter"])},null,40,qAt),p("span",null,A(O.$t("workouts.TO")),1),p("input",{name:"distance_to",type:"number",min:"0",step:"0.1",value:O.$route.query.distance_to,onChange:c,onKeyup:Ye(m,["enter"])},null,40,jAt)])]),p("div",YAt,[p("label",null,A(O.$t("workouts.DURATION"))+": ",1),p("div",XAt,[p("input",{name:"duration_from",value:O.$route.query.duration_from,onChange:c,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text",onKeyup:Ye(m,["enter"])},null,40,QAt),p("span",null,A(O.$t("workouts.TO")),1),p("input",{name:"duration_to",value:O.$route.query.duration_to,onChange:c,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text",onKeyup:Ye(m,["enter"])},null,40,ZAt)])])]),p("div",JAt,[p("div",e1t,[p("label",null,A(O.$t("workouts.AVE_SPEED"))+" ("+A(d.value)+"/h): ",1),p("div",t1t,[p("input",{min:"0",name:"ave_speed_from",value:O.$route.query.ave_speed_from,onChange:c,step:"0.1",type:"number",onKeyup:Ye(m,["enter"])},null,40,n1t),p("span",null,A(O.$t("workouts.TO")),1),p("input",{min:"0",name:"ave_speed_to",value:O.$route.query.ave_speed_to,onChange:c,step:"0.1",type:"number",onKeyup:Ye(m,["enter"])},null,40,a1t)])]),p("div",s1t,[p("label",null,A(O.$t("workouts.MAX_SPEED"))+" ("+A(d.value)+"/h): ",1),p("div",o1t,[p("input",{min:"0",name:"max_speed_from",value:O.$route.query.max_speed_from,onChange:c,step:"0.1",type:"number",onKeyup:Ye(m,["enter"])},null,40,i1t),p("span",null,A(O.$t("workouts.TO")),1),p("input",{min:"0",name:"max_speed_to",value:O.$route.query.max_speed_to,onChange:c,step:"0.1",type:"number",onKeyup:Ye(m,["enter"])},null,40,r1t)])])])]),p("div",u1t,[p("button",{type:"submit",class:"confirm",onClick:m},A(O.$t("buttons.FILTER")),1),p("button",{class:"confirm",onClick:_},A(O.$t("buttons.CLEAR_FILTER")),1)])],32)])]))}}),c1t=ae(l1t,[["__scopeId","data-v-3341c41a"]]),d1t={class:"workouts-list"},E1t={class:"total"},p1t={class:"total-label"},m1t={key:0},T1t={key:0,class:"workouts-table responsive-table"},_1t={class:"sport-col"},f1t={class:"cell-heading"},h1t=["onMouseover"],S1t={class:"cell-heading"},A1t={key:0,class:"fa fa-map-o","aria-hidden":"true"},O1t={class:"title"},I1t={class:"workout-date"},g1t={class:"cell-heading"},R1t={class:"text-right"},N1t={class:"cell-heading"},v1t={class:"text-right"},b1t={class:"cell-heading"},C1t={class:"text-right"},P1t={class:"cell-heading"},D1t={class:"text-right"},L1t={class:"cell-heading"},y1t={class:"text-right"},$1t={class:"cell-heading"},U1t={class:"text-right"},k1t={class:"cell-heading"},w1t=X({__name:"WorkoutsList",props:{user:{},translatedSports:{}},setup(e){const t=e,{user:n,translatedSports:a}=_e(t),s=rt(),o=gn(),i=De(),r=["ave_speed","distance","duration","workout_date"],{appLanguage:u}=Be(),{isAuthUserSuspended:l}=qe();let d=O(s.query);const E=Ie(null),c=F(()=>i.getters[ee.GETTERS.AUTH_USER_WORKOUTS]),m=F(()=>i.getters[ee.GETTERS.WORKOUTS_PAGINATION]);function _(I){l.value||i.dispatch(ee.ACTIONS.GET_AUTH_USER_WORKOUTS,n.value.imperial_units?S(I):I)}function f(I,g){const N=Object.assign({},s.query);N[I]=g,I==="per_page"&&(N.page="1"),d=O(N),o.push({path:"/workouts",query:d})}function O(I){const g=Co(I,r,qi.order_by,{defaultSort:qi.order});return Object.keys(I).filter(N=>XQe.includes(N)).map(N=>{typeof I[N]=="string"&&(g[N]=I[N])}),g}function S(I){const g={...I};return Object.entries(g).map(N=>{N[0].match("speed|distance")&&N[1]&&(g[N[0]]=Yt(+N[1],"mi","km"))}),g}function R(I){E.value=I}return Ce(()=>s.query,async I=>{d=O(I),_(d)}),Je(()=>{_(d),i.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(I,g)=>{const N=q("SportImage"),b=q("VisibilityIcon"),C=q("router-link"),y=q("Distance");return h(),v("div",d1t,[p("div",{class:Oe(["box",{"empty-table":c.value.length===0}])},[p("div",E1t,[p("span",p1t,A(I.$t("common.TOTAL").toLowerCase())+": ",1),m.value.total?(h(),v("span",m1t,A(m.value.total)+" "+A(I.$t("workouts.WORKOUT",m.value.total)),1)):L("",!0)]),w(qp,{sort:T(Fl),order_by:r,query:T(d),message:"workouts",onUpdateSelect:f},null,8,["sort","query"]),c.value.length>0?(h(),v("div",T1t,[w(Qn,{class:"top-pagination",pagination:m.value,path:"/workouts",query:T(d)},null,8,["pagination","query"]),p("table",null,[p("thead",{class:Oe({smaller:T(u)==="de"})},[p("tr",null,[g[1]||(g[1]=p("th",{class:"sport-col"},null,-1)),p("th",null,A(Fe(I.$t("workouts.WORKOUT",1))),1),p("th",null,A(Fe(I.$t("workouts.DATE"))),1),p("th",null,A(Fe(I.$t("workouts.DISTANCE"))),1),p("th",null,A(Fe(I.$t("workouts.DURATION"))),1),p("th",null,A(Fe(I.$t("workouts.AVE_SPEED"))),1),p("th",null,A(Fe(I.$t("workouts.MAX_SPEED"))),1),p("th",null,A(Fe(I.$t("workouts.ASCENT"))),1),p("th",null,A(Fe(I.$t("workouts.DESCENT"))),1)])],2),p("tbody",null,[(h(!0),v(re,null,be(c.value,D=>(h(),v("tr",{key:D.id},[p("td",_1t,[p("span",f1t,A(I.$t("workouts.SPORT",1)),1),T(a).length>0?(h(),B(N,{key:0,title:T(a).filter(M=>M.id===D.sport_id)[0].translatedLabel,"sport-label":T(Gp)(D,T(a)),color:T(Vp)(D,T(a))},null,8,["title","sport-label","color"])):L("",!0)]),p("td",{class:"workout-title",onMouseover:M=>R(D.id),onMouseleave:g[0]||(g[0]=M=>R(null))},[p("span",S1t,A(Fe(I.$t("workouts.WORKOUT",1))),1),w(C,{class:"nav-item",to:{name:"Workout",params:{workoutId:D.id}}},{default:Y(()=>[D.with_gpx?(h(),v("i",A1t)):L("",!0),p("span",O1t,A(D.title),1),w(b,{visibility:D.workout_visibility},null,8,["visibility"])]),_:2},1032,["to"]),D.with_gpx&&E.value===D.id?(h(),B(yO,{key:0,workout:D,"display-hover":!0},null,8,["workout"])):L("",!0)],40,h1t),p("td",I1t,[p("span",g1t,A(I.$t("workouts.DATE")),1),p("time",null,A(T(Ut)(D.workout_date,T(n).timezone,T(n).date_format)),1)]),p("td",R1t,[p("span",N1t,A(I.$t("workouts.DISTANCE")),1),D.distance!==null?(h(),B(y,{key:0,distance:D.distance,unitFrom:"km",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",v1t,[p("span",b1t,A(I.$t("workouts.DURATION")),1),x(" "+A(D.moving),1)]),p("td",C1t,[p("span",P1t,A(I.$t("workouts.AVE_SPEED")),1),D.ave_speed!==null?(h(),B(y,{key:0,distance:D.ave_speed,unitFrom:"km",speed:!0,useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",D1t,[p("span",L1t,A(I.$t("workouts.MAX_SPEED")),1),D.max_speed!==null?(h(),B(y,{key:0,distance:D.max_speed,unitFrom:"km",speed:!0,useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",y1t,[p("span",$1t,A(I.$t("workouts.ASCENT")),1),D.ascent!==null?(h(),B(y,{key:0,distance:D.ascent,unitFrom:"m",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",U1t,[p("span",k1t,A(I.$t("workouts.DESCENT")),1),D.descent!==null?(h(),B(y,{key:0,distance:D.descent,unitFrom:"m",useImperialUnits:T(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)])]))),128))])]),w(Qn,{pagination:m.value,path:"/workouts",query:T(d)},null,8,["pagination","query"])])):L("",!0)],2),c.value.length===0?(h(),B(Jp,{key:0})):L("",!0),g[2]||(g[2]=p("div",{id:"bottom"},null,-1))])}}}),M1t=ae(w1t,[["__scopeId","data-v-b3a10603"]]),W1t={key:0,id:"workouts",class:"view items-list-view"},F1t={class:"container items-list-container"},z1t={class:"display-filters"},x1t={class:"list-container"},B1t=X({__name:"WorkoutsView",setup(e){const{t}=$t(),n=De(),a=F(()=>n.getters[K.GETTERS.AUTH_USER_PROFILE]),s=F(()=>n.getters[Ht.GETTERS.SPORTS]),o=F(()=>ia(s.value,t)),i=Ie(!0);function r(){i.value=!i.value}return(u,l)=>a.value.username?(h(),v("div",W1t,[p("div",F1t,[p("div",{class:Oe(["filters-container",{hidden:i.value}])},[w(c1t,{translatedSports:o.value,authUser:a.value,onFilter:r},null,8,["translatedSports","authUser"])],2),p("div",z1t,[p("div",{onClick:r},[p("i",{class:Oe(`fa fa-caret-${i.value?"down":"up"}`),"aria-hidden":"true"},null,2),p("span",null,A(u.$t(`workouts.${i.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),p("div",x1t,[w(M1t,{user:a.value,translatedSports:o.value},null,8,["user","translatedSports"])])])])):L("",!0)}}),{t:r0}=ko.global,u0=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return n===""?"PROFILE":n.split("/")[0].toUpperCase()},G1t=[{path:"/",name:"Dashboard",component:jEt,meta:{title:"dashboard.DASHBOARD",allowedToSuspendedUser:!1}},{path:"/login",name:"Login",component:Xh,props:{action:"login"},meta:{title:"user.LOGIN",withoutAuth:!0}},{path:"/register",name:"Register",component:Xh,props:{action:"register"},meta:{title:"user.REGISTER",withoutAuth:!0}},{path:"/account-confirmation",name:"AccountConfirmation",component:$Tt,meta:{title:"user.ACCOUNT_CONFIRMATION",withoutAuth:!0}},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:Yh,props:{action:"account-confirmation-resend"},meta:{title:"buttons.ACCOUNT-CONFIRMATION-RESEND",withoutAuth:!0}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:Yh,props:{action:"email-sent"},meta:{title:"buttons.ACCOUNT-CONFIRMATION-RESEND",withoutAuth:!0}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:Wr,props:{action:"request-sent"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset/request",name:"PasswordResetRequest",component:Wr,props:{action:"reset-request"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:Wr,props:{action:"password-updated"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset",name:"PasswordReset",component:Wr,props:{action:"reset"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/email-update",name:"EmailUpdate",component:MTt,meta:{title:"user.EMAIL_UPDATE",withoutChecks:!0}},{path:"/profile",name:"Profile",component:i_t,children:[{path:"",name:"UserProfile",component:kJe,props:e=>({tab:u0(e.path)}),children:[{path:"",name:"UserInfos",component:wO,meta:{title:"user.PROFILE.TABS.PROFILE"}},{path:"preferences",name:"UserPreferences",component:Cet,meta:{title:"user.PROFILE.TABS.PREFERENCES"}},{path:"notifications",name:"UserNotifications",component:Aet,meta:{title:"user.PROFILE.TABS.NOTIFICATIONS"}},{path:"sports",name:"UserSports",component:zh,props:{isEdition:!1},meta:{title:"user.PROFILE.TABS.SPORTS"},children:[{path:"",name:"UserSportPreferences",component:xh,meta:{title:"user.PROFILE.TABS.SPORTS"}},{path:":id",name:"UserSport",component:Tlt,meta:{title:"user.PROFILE.TABS.SPORTS"}}]},{path:"apps",name:"UserApps",component:Uit,children:[{path:"",name:"UserAppsList",component:ert,meta:{title:"user.PROFILE.TABS.APPS"}},{path:":id",name:"UserApp",component:kh,meta:{title:"user.PROFILE.TABS.APPS"}},{path:":id/created",name:"CreatedUserApp",component:kh,props:{afterCreation:!0},meta:{title:"user.PROFILE.TABS.APPS"}},{path:"new",name:"AddUserApp",component:Oit,meta:{title:"user.PROFILE.TABS.APPS"}},{path:"authorize",name:"AuthorizeUserApp",component:yit,meta:{title:"user.PROFILE.TABS.APPS"}}]},{path:"equipments",name:"UserEquipments",component:Wh,props:{isEdition:!1},children:[{path:"",name:"UserEquipmentsList",component:Fh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:"new",name:"AddEquipment",component:Mh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:":id",name:"Equipment",component:out,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}}]},{path:"follow-requests",name:"FollowRequests",component:Sh,props:{itemType:"follow-requests"},meta:{title:"user.PROFILE.TABS.FOLLOW-REQUESTS"}},{path:"blocked-users",name:"BlockedUsers",component:Sh,props:{itemType:"blocked-users"},meta:{title:"user.PROFILE.TABS.BLOCKED-USERS"}},{path:"followers",name:"AuthUserFollowers",component:wr,props:{relationship:"followers"},meta:{title:"user.RELATIONSHIPS.FOLLOWER",count:0}},{path:"following",name:"AuthUserFollowing",component:wr,props:{relationship:"following"},meta:{title:"user.RELATIONSHIPS.FOLLOWING",count:0}},{path:"suspension",name:"AuthUserAccountSuspension",component:Zot},{path:"moderation",name:"Moderation",component:Put,meta:{title:"user.PROFILE.TABS.MODERATION"},children:[{path:"",name:"UserSanctionList",component:Zut},{path:"sanctions/:action_id",name:"UserSanctionDetail",component:Vut}]}]},{path:"edit",name:"UserProfileEdition",component:Bet,props:e=>({tab:u0(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Qat,meta:{title:"user.PROFILE.EDIT"}},{path:"account",name:"UserAccountEdition",component:kat,meta:{title:"user.PROFILE.ACCOUNT_EDITION"}},{path:"picture",name:"UserPictureEdition",component:fst,meta:{title:"user.PROFILE.PICTURE_EDITION"}},{path:"preferences",name:"UserPreferencesEdition",component:$ot,meta:{title:"user.PROFILE.EDIT_PREFERENCES"}},{path:"notifications",name:"UserNotificationsEdition",component:lst,meta:{title:"user.PROFILE.EDIT_NOTIFICATIONS"}},{path:"sports",name:"UserSportsEdition",component:zh,props:{isEdition:!0},meta:{title:"user.PROFILE.EDIT_SPORTS_PREFERENCES"},children:[{path:"",name:"UserSportPreferencesEdition",component:xh,meta:{title:"user.PROFILE.TABS.SPORTS"}},{path:":id",name:"UserSportEdition",component:Wlt,meta:{title:"user.PROFILE.TABS.SPORTS"}}]},{path:"equipments",name:"UserEquipmentsEdition",component:Wh,props:{isEdition:!0},children:[{path:"",name:"UserEquipmentsListEdition",component:Fh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:":id",name:"EquipmentEdition",component:Mh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}}]},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Kot,meta:{title:"user.PROFILE.PRIVACY-POLICY_EDITION"}}]}]},{path:"/notifications",name:"Notifications",component:Zpt,meta:{allowedToSuspendedUser:!1}},{path:"/statistics",name:"Statistics",component:Zmt,meta:{title:"statistics.STATISTICS",allowedToSuspendedUser:!1}},{path:"/users",name:"Users",component:R_t,meta:{allowedToSuspendedUser:!1}},{path:"/users/:username",name:"User",props:{fromAdmin:!1},component:Qh,meta:{title:"user.USER",withoutChecks:!0,allowedToSuspendedUser:!1},children:[{path:"followers",name:"UserFollowers",component:wr,props:{relationship:"followers"},meta:{withoutAuth:!1,withoutChecks:!1}},{path:"following",name:"UserFollowing",component:wr,props:{relationship:"following"},meta:{withoutAuth:!1,withoutChecks:!1}}]},{path:"/workouts",name:"Workouts",component:B1t,meta:{title:"workouts.WORKOUT",count:0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId",name:"Workout",component:fd,props:{displaySegment:!1},meta:{title:"workouts.WORKOUT",withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/likes",name:"WorkoutLikes",component:Td,props:{objectType:"workout"},meta:{title:"workouts.LIKES",withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:sht,meta:{title:"workouts.EDIT_WORKOUT",allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:fd,props:{displaySegment:!0},meta:{title:"workouts.SEGMENT",count:0,withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/comments/:commentId",name:"WorkoutComment",component:fd,props:{displaySegment:!1},meta:{allowedToSuspendedUser:!1,withoutChecks:!0}},{path:"/workouts/:workoutId/comments/:commentId/likes",name:"WorkoutCommentLikes",component:Td,props:{objectType:"comment"},meta:{title:"workouts.LIKES",withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/comments/:commentId",name:"Comment",component:tht,meta:{allowedToSuspendedUser:!1,withoutChecks:!0}},{path:"/comments/:commentId/likes",name:"CommentLikes",component:Td,props:{objectType:"comment"},meta:{title:"workouts.LIKES",withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/add",name:"AddWorkout",component:Bft,meta:{title:"workouts.ADD_WORKOUT",allowedToSuspendedUser:!1}},{path:"/admin",name:"Administration",component:Wct,meta:{allowedToSuspendedUser:!1,minimumRole:"moderator"},children:[{path:"",name:"AdministrationMenu",component:VYe,meta:{title:"admin.ADMINISTRATION"}},{path:"application",name:"ApplicationAdministration",component:mh,meta:{title:"admin.APP_CONFIG.TITLE",minimumRole:"admin"}},{path:"application/edit",name:"ApplicationAdministrationEdition",component:mh,props:{edition:!0},meta:{title:"admin.APPLICATION",minimumRole:"admin"}},{path:"equipment-types",name:"EquipmentTypeAdministration",component:CYe,meta:{title:"admin.EQUIPMENT_TYPES.TITLE",minimumRole:"admin"}},{path:"sports",name:"SportsAdministration",component:KZe,meta:{title:"admin.SPORTS.TITLE",minimumRole:"admin"}},{path:"reports",name:"ReportsAdministration",component:PZe,meta:{title:"admin.APP_MODERATION.TITLE"}},{path:"reports/:reportId",name:"ReportAdministration",component:xQe,meta:{title:"admin.APP_MODERATION.REPORT"}},{path:"users/:username",name:"UserFromAdmin",component:Qh,props:{fromAdmin:!0},meta:{title:"admin.USER",count:1}},{path:"users",name:"UsersAdministration",component:OJe,meta:{title:"admin.USERS.TITLE",minimumRole:"admin"}}]},{path:"/about",name:"About",component:$ct,meta:{title:"common.ABOUT",withoutChecks:!0}},{path:"/privacy-policy",name:"PrivacyPolicy",component:tmt,meta:{title:"privacy_policy.TITLE",withoutChecks:!0}},{path:"/:pathMatch(.*)*",name:"not-found",component:XEt,meta:{title:"error.NOT_FOUND.PAGE"}}],lt=bP({history:nP("/"),routes:G1t});lt.beforeEach((e,t,n)=>{if("title"in e.meta){const a=typeof e.meta.title=="string"?e.meta.title:"",s=a?typeof e.meta.count=="number"?r0(a,+e.meta.count):r0(a):"";window.document.title=`FitTrackee${a?` - ${Fe(s)}`:""}`}kn.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),kn.dispatch(K.ACTIONS.CHECK_AUTH_USER).then(()=>{if(e.meta.withoutChecks)return n();if(kn.getters[K.GETTERS.IS_PROFILE_LOADED]&&kn.getters[K.GETTERS.IS_SUSPENDED]&&!e.path.startsWith("/profile")&&!e.meta.allowedToSuspendedUser)return n("/profile");if(kn.getters[K.GETTERS.IS_AUTHENTICATED]&&kn.getters[K.GETTERS.IS_PROFILE_LOADED]&&!kn.getters[K.GETTERS.IS_SUSPENDED]&&kn.dispatch(Et.ACTIONS.GET_UNREAD_STATUS),kn.getters[K.GETTERS.IS_AUTHENTICATED]&&e.meta.withoutAuth)return n("/");if(!kn.getters[K.GETTERS.IS_AUTHENTICATED]&&!e.meta.withoutAuth){const a=e.path==="/"?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(a)}else n()}).catch(a=>{console.error(a),n()})});RE.register(BI,GI,VI,HI,KI,qI,jI,l0,YI,c0,XI,QI);const FI=RN(oGe).provide("sportColors",Bp).use(ko).use(kn).use(lt).use(cb,{name:"VFullscreen"}).directive("click-outside",Uje);$je.forEach(e=>{FI.component(e.name,e.target)});FI.mount("#app"); diff --git a/fittrackee/dist/static/index-wcYMtFVC.js b/fittrackee/dist/static/index-wcYMtFVC.js deleted file mode 100644 index 52d13f12c..000000000 --- a/fittrackee/dist/static/index-wcYMtFVC.js +++ /dev/null @@ -1,694 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["static/maps-DkiRMund.js","static/css/maps-CIGW-MKW.css"])))=>i.map(i=>d[i]); -var WI=Object.defineProperty;var FI=(e,t,n)=>t in e?WI(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Nt=(e,t,n)=>FI(e,typeof t!="symbol"?t+"":t,n);import{C as gE,B as u0,L as l0,a as zI,b as xI,P as BI,p as GI,c as VI,d as HI,i as KI,e as qI,f as jI,g as YI}from"./charts-BDOr5tL2.js";import{g as RE,a as XI}from"./maps-DkiRMund.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();/** -* @vue/shared v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function NE(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const vt={},oi=[],Oa=()=>{},QI=()=>!1,tl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),vE=e=>e.startsWith("onUpdate:"),Zt=Object.assign,bE=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ZI=Object.prototype.hasOwnProperty,St=(e,t)=>ZI.call(e,t),ze=Array.isArray,ri=e=>jo(e)==="[object Map]",Pi=e=>jo(e)==="[object Set]",uT=e=>jo(e)==="[object Date]",je=e=>typeof e=="function",Ft=e=>typeof e=="string",na=e=>typeof e=="symbol",bt=e=>e!==null&&typeof e=="object",c0=e=>(bt(e)||je(e))&&je(e.then)&&je(e.catch),d0=Object.prototype.toString,jo=e=>d0.call(e),JI=e=>jo(e).slice(8,-1),E0=e=>jo(e)==="[object Object]",CE=e=>Ft(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,io=NE(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),nl=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},eg=/-(\w)/g,Xn=nl(e=>e.replace(eg,(t,n)=>n?n.toUpperCase():"")),tg=/\B([A-Z])/g,ds=nl(e=>e.replace(tg,"-$1").toLowerCase()),Fe=nl(e=>e.charAt(0).toUpperCase()+e.slice(1)),xl=nl(e=>e?`on${Fe(e)}`:""),rs=(e,t)=>!Object.is(e,t),zr=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:a,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ng=e=>{const t=Ft(e)?Number(e):NaN;return isNaN(t)?e:t};let lT;const al=()=>lT||(lT=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function za(e){if(ze(e)){const t={};for(let n=0;n{if(n){const a=n.split(sg);a.length>1&&(t[a[0].trim()]=a[1].trim())}}),t}function Ae(e){let t="";if(Ft(e))t=e;else if(ze(e))for(let n=0;nks(n,t))}const m0=e=>!!(e&&e.__v_isRef===!0),S=e=>Ft(e)?e:e==null?"":ze(e)||bt(e)&&(e.toString===d0||!je(e.toString))?m0(e)?S(e.value):JSON.stringify(e,_0,2):String(e),_0=(e,t)=>m0(t)?_0(e,t.value):ri(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[a,s],i)=>(n[Bl(a,i)+" =>"]=s,n),{})}:Pi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Bl(n))}:na(t)?Bl(t):bt(t)&&!ze(t)&&!E0(t)?String(t):t,Bl=(e,t="")=>{var n;return na(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let wn;class f0{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=wn,!t&&wn&&(this.index=(wn.scopes||(wn.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(ro){let t=ro;for(ro=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;oo;){let t=oo;for(oo=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(a){e||(e=a)}t=n}}if(e)throw e}function I0(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function g0(e){let t,n=e.depsTail,a=n;for(;a;){const s=a.prevDep;a.version===-1?(a===n&&(n=s),yE(a),dg(a)):t=a,a.dep.activeLink=a.prevActiveLink,a.prevActiveLink=void 0,a=s}e.deps=t,e.depsTail=n}function _d(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(R0(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function R0(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===No))return;e.globalVersion=No;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_d(e)){e.flags&=-3;return}const n=Ct,a=ea;Ct=e,ea=!0;try{I0(e);const s=e.fn(e._value);(t.version===0||rs(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Ct=n,ea=a,g0(e),e.flags&=-3}}function yE(e,t=!1){const{dep:n,prevSub:a,nextSub:s}=e;if(a&&(a.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=a,e.nextSub=void 0),n.subs===e&&(n.subs=a,!a&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)yE(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dg(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ea=!0;const N0=[];function Es(){N0.push(ea),ea=!1}function ps(){const e=N0.pop();ea=e===void 0?!0:e}function cT(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ct;Ct=void 0;try{t()}finally{Ct=n}}}let No=0;class Eg{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $E{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Ct||!ea||Ct===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ct)n=this.activeLink=new Eg(Ct,this),Ct.deps?(n.prevDep=Ct.depsTail,Ct.depsTail.nextDep=n,Ct.depsTail=n):Ct.deps=Ct.depsTail=n,v0(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const a=n.nextDep;a.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=a),n.prevDep=Ct.depsTail,n.nextDep=void 0,Ct.depsTail.nextDep=n,Ct.depsTail=n,Ct.deps===n&&(Ct.deps=a)}return n}trigger(t){this.version++,No++,this.notify(t)}notify(t){DE();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{LE()}}}function v0(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let a=t.deps;a;a=a.nextDep)v0(a)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const eu=new WeakMap,$s=Symbol(""),fd=Symbol(""),vo=Symbol("");function on(e,t,n){if(ea&&Ct){let a=eu.get(e);a||eu.set(e,a=new Map);let s=a.get(n);s||(a.set(n,s=new $E),s.map=a,s.key=n),s.track()}}function $a(e,t,n,a,s,i){const o=eu.get(e);if(!o){No++;return}const r=u=>{u&&u.trigger()};if(DE(),t==="clear")o.forEach(r);else{const u=ze(e),l=u&&CE(n);if(u&&n==="length"){const d=Number(a);o.forEach((E,c)=>{(c==="length"||c===vo||!na(c)&&c>=d)&&r(E)})}else switch((n!==void 0||o.has(void 0))&&r(o.get(n)),l&&r(o.get(vo)),t){case"add":u?l&&r(o.get("length")):(r(o.get($s)),ri(e)&&r(o.get(fd)));break;case"delete":u||(r(o.get($s)),ri(e)&&r(o.get(fd)));break;case"set":ri(e)&&r(o.get($s));break}}LE()}function pg(e,t){const n=eu.get(e);return n&&n.get(t)}function Ys(e){const t=dt(e);return t===e?t:(on(t,"iterate",vo),qn(e)?t:t.map(rn))}function sl(e){return on(e=dt(e),"iterate",vo),e}const Tg={__proto__:null,[Symbol.iterator](){return Vl(this,Symbol.iterator,rn)},concat(...e){return Ys(this).concat(...e.map(t=>ze(t)?Ys(t):t))},entries(){return Vl(this,"entries",e=>(e[1]=rn(e[1]),e))},every(e,t){return ga(this,"every",e,t,void 0,arguments)},filter(e,t){return ga(this,"filter",e,t,n=>n.map(rn),arguments)},find(e,t){return ga(this,"find",e,t,rn,arguments)},findIndex(e,t){return ga(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ga(this,"findLast",e,t,rn,arguments)},findLastIndex(e,t){return ga(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ga(this,"forEach",e,t,void 0,arguments)},includes(...e){return Hl(this,"includes",e)},indexOf(...e){return Hl(this,"indexOf",e)},join(e){return Ys(this).join(e)},lastIndexOf(...e){return Hl(this,"lastIndexOf",e)},map(e,t){return ga(this,"map",e,t,void 0,arguments)},pop(){return Fi(this,"pop")},push(...e){return Fi(this,"push",e)},reduce(e,...t){return dT(this,"reduce",e,t)},reduceRight(e,...t){return dT(this,"reduceRight",e,t)},shift(){return Fi(this,"shift")},some(e,t){return ga(this,"some",e,t,void 0,arguments)},splice(...e){return Fi(this,"splice",e)},toReversed(){return Ys(this).toReversed()},toSorted(e){return Ys(this).toSorted(e)},toSpliced(...e){return Ys(this).toSpliced(...e)},unshift(...e){return Fi(this,"unshift",e)},values(){return Vl(this,"values",rn)}};function Vl(e,t,n){const a=sl(e),s=a[t]();return a!==e&&!qn(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=n(i.value)),i}),s}const mg=Array.prototype;function ga(e,t,n,a,s,i){const o=sl(e),r=o!==e&&!qn(e),u=o[t];if(u!==mg[t]){const E=u.apply(e,i);return r?rn(E):E}let l=n;o!==e&&(r?l=function(E,c){return n.call(this,rn(E),c,e)}:n.length>2&&(l=function(E,c){return n.call(this,E,c,e)}));const d=u.call(o,l,a);return r&&s?s(d):d}function dT(e,t,n,a){const s=sl(e);let i=n;return s!==e&&(qn(e)?n.length>3&&(i=function(o,r,u){return n.call(this,o,r,u,e)}):i=function(o,r,u){return n.call(this,o,rn(r),u,e)}),s[t](i,...a)}function Hl(e,t,n){const a=dt(e);on(a,"iterate",vo);const s=a[t](...n);return(s===-1||s===!1)&&Yo(n[0])?(n[0]=dt(n[0]),a[t](...n)):s}function Fi(e,t,n=[]){Es(),DE();const a=dt(e)[t].apply(e,n);return LE(),ps(),a}const _g=NE("__proto__,__v_isRef,__isVue"),b0=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(na));function fg(e){na(e)||(e=String(e));const t=dt(this);return on(t,"has",e),t.hasOwnProperty(e)}class C0{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,a){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return a===(s?i?bg:y0:i?L0:D0).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(a)?t:void 0;const o=ze(t);if(!s){let u;if(o&&(u=Tg[n]))return u;if(n==="hasOwnProperty")return fg}const r=Reflect.get(t,n,Kt(t)?t:a);return(na(n)?b0.has(n):_g(n))||(s||on(t,"get",n),i)?r:Kt(r)?o&&CE(n)?r:r.value:bt(r)?s?U0(r):kt(r):r}}class P0 extends C0{constructor(t=!1){super(!1,t)}set(t,n,a,s){let i=t[n];if(!this._isShallow){const u=ws(i);if(!qn(a)&&!ws(a)&&(i=dt(i),a=dt(a)),!ze(t)&&Kt(i)&&!Kt(a))return u?!1:(i.value=a,!0)}const o=ze(t)&&CE(n)?Number(n)e,dr=e=>Reflect.getPrototypeOf(e);function Ig(e,t,n){return function(...a){const s=this.__v_raw,i=dt(s),o=ri(i),r=e==="entries"||e===Symbol.iterator&&o,u=e==="keys"&&o,l=s[e](...a),d=n?hd:t?Sd:rn;return!t&&on(i,"iterate",u?fd:$s),{next(){const{value:E,done:c}=l.next();return c?{value:E,done:c}:{value:r?[d(E[0]),d(E[1])]:d(E),done:c}},[Symbol.iterator](){return this}}}}function Er(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function gg(e,t){const n={get(s){const i=this.__v_raw,o=dt(i),r=dt(s);e||(rs(s,r)&&on(o,"get",s),on(o,"get",r));const{has:u}=dr(o),l=t?hd:e?Sd:rn;if(u.call(o,s))return l(i.get(s));if(u.call(o,r))return l(i.get(r));i!==o&&i.get(s)},get size(){const s=this.__v_raw;return!e&&on(dt(s),"iterate",$s),Reflect.get(s,"size",s)},has(s){const i=this.__v_raw,o=dt(i),r=dt(s);return e||(rs(s,r)&&on(o,"has",s),on(o,"has",r)),s===r?i.has(s):i.has(s)||i.has(r)},forEach(s,i){const o=this,r=o.__v_raw,u=dt(r),l=t?hd:e?Sd:rn;return!e&&on(u,"iterate",$s),r.forEach((d,E)=>s.call(i,l(d),l(E),o))}};return Zt(n,e?{add:Er("add"),set:Er("set"),delete:Er("delete"),clear:Er("clear")}:{add(s){!t&&!qn(s)&&!ws(s)&&(s=dt(s));const i=dt(this);return dr(i).has.call(i,s)||(i.add(s),$a(i,"add",s,s)),this},set(s,i){!t&&!qn(i)&&!ws(i)&&(i=dt(i));const o=dt(this),{has:r,get:u}=dr(o);let l=r.call(o,s);l||(s=dt(s),l=r.call(o,s));const d=u.call(o,s);return o.set(s,i),l?rs(i,d)&&$a(o,"set",s,i):$a(o,"add",s,i),this},delete(s){const i=dt(this),{has:o,get:r}=dr(i);let u=o.call(i,s);u||(s=dt(s),u=o.call(i,s)),r&&r.call(i,s);const l=i.delete(s);return u&&$a(i,"delete",s,void 0),l},clear(){const s=dt(this),i=s.size!==0,o=s.clear();return i&&$a(s,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Ig(s,e,t)}),n}function UE(e,t){const n=gg(e,t);return(a,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?a:Reflect.get(St(n,s)&&s in a?n:a,s,i)}const Rg={get:UE(!1,!1)},Ng={get:UE(!1,!0)},vg={get:UE(!0,!1)};const D0=new WeakMap,L0=new WeakMap,y0=new WeakMap,bg=new WeakMap;function Cg(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Pg(e){return e.__v_skip||!Object.isExtensible(e)?0:Cg(JI(e))}function kt(e){return ws(e)?e:kE(e,!1,Sg,Rg,D0)}function $0(e){return kE(e,!1,Og,Ng,L0)}function U0(e){return kE(e,!0,Ag,vg,y0)}function kE(e,t,n,a,s){if(!bt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const o=Pg(e);if(o===0)return e;const r=new Proxy(e,o===2?a:n);return s.set(e,r),r}function ui(e){return ws(e)?ui(e.__v_raw):!!(e&&e.__v_isReactive)}function ws(e){return!!(e&&e.__v_isReadonly)}function qn(e){return!!(e&&e.__v_isShallow)}function Yo(e){return e?!!e.__v_raw:!1}function dt(e){const t=e&&e.__v_raw;return t?dt(t):e}function xa(e){return!St(e,"__v_skip")&&Object.isExtensible(e)&&p0(e,"__v_skip",!0),e}const rn=e=>bt(e)?kt(e):e,Sd=e=>bt(e)?U0(e):e;function Kt(e){return e?e.__v_isRef===!0:!1}function Ie(e){return k0(e,!1)}function il(e){return k0(e,!0)}function k0(e,t){return Kt(e)?e:new Dg(e,t)}class Dg{constructor(t,n){this.dep=new $E,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:dt(t),this._value=n?t:rn(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,a=this.__v_isShallow||qn(t)||ws(t);t=a?t:dt(t),rs(t,n)&&(this._rawValue=t,this._value=a?t:rn(t),this.dep.trigger())}}function m(e){return Kt(e)?e.value:e}const Lg={get:(e,t,n)=>t==="__v_raw"?e:m(Reflect.get(e,t,n)),set:(e,t,n,a)=>{const s=e[t];return Kt(s)&&!Kt(n)?(s.value=n,!0):Reflect.set(e,t,n,a)}};function w0(e){return ui(e)?e:new Proxy(e,Lg)}function fe(e){const t=ze(e)?new Array(e.length):{};for(const n in e)t[n]=$g(e,n);return t}class yg{constructor(t,n,a){this._object=t,this._key=n,this._defaultValue=a,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pg(dt(this._object),this._key)}}function $g(e,t,n){const a=e[t];return Kt(a)?a:new yg(e,t,n)}class Ug{constructor(t,n,a){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $E(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=No-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=a}notify(){if(this.flags|=16,!(this.flags&8)&&Ct!==this)return O0(this,!0),!0}get value(){const t=this.dep.track();return R0(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function kg(e,t,n=!1){let a,s;return je(e)?a=e:(a=e.get,s=e.set),new Ug(a,s,n)}const pr={},tu=new WeakMap;let bs;function wg(e,t=!1,n=bs){if(n){let a=tu.get(n);a||tu.set(n,a=[]),a.push(e)}}function Mg(e,t,n=vt){const{immediate:a,deep:s,once:i,scheduler:o,augmentJob:r,call:u}=n,l=I=>s?I:qn(I)||s===!1||s===0?Ua(I,1):Ua(I);let d,E,c,T,_=!1,f=!1;if(Kt(e)?(E=()=>e.value,_=qn(e)):ui(e)?(E=()=>l(e),_=!0):ze(e)?(f=!0,_=e.some(I=>ui(I)||qn(I)),E=()=>e.map(I=>{if(Kt(I))return I.value;if(ui(I))return l(I);if(je(I))return u?u(I,2):I()})):je(e)?t?E=u?()=>u(e,2):e:E=()=>{if(c){Es();try{c()}finally{ps()}}const I=bs;bs=d;try{return u?u(e,3,[T]):e(T)}finally{bs=I}}:E=Oa,t&&s){const I=E,N=s===!0?1/0:s;E=()=>Ua(I(),N)}const O=cg(),A=()=>{d.stop(),O&&O.active&&bE(O.effects,d)};if(i&&t){const I=t;t=(...N)=>{I(...N),A()}}let R=f?new Array(e.length).fill(pr):pr;const g=I=>{if(!(!(d.flags&1)||!d.dirty&&!I))if(t){const N=d.run();if(s||_||(f?N.some((b,C)=>rs(b,R[C])):rs(N,R))){c&&c();const b=bs;bs=d;try{const C=[N,R===pr?void 0:f&&R[0]===pr?[]:R,T];u?u(t,3,C):t(...C),R=N}finally{bs=b}}}else d.run()};return r&&r(g),d=new S0(E),d.scheduler=o?()=>o(g,!1):g,T=I=>wg(I,!1,d),c=d.onStop=()=>{const I=tu.get(d);if(I){if(u)u(I,4);else for(const N of I)N();tu.delete(d)}},t?a?g(!0):R=d.run():o?o(g.bind(null,!0),!0):d.run(),A.pause=d.pause.bind(d),A.resume=d.resume.bind(d),A.stop=A,A}function Ua(e,t=1/0,n){if(t<=0||!bt(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Kt(e))Ua(e.value,t,n);else if(ze(e))for(let a=0;a{Ua(a,t,n)});else if(E0(e)){for(const a in e)Ua(e[a],t,n);for(const a of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,a)&&Ua(e[a],t,n)}return e}/** -* @vue/runtime-core v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Xo(e,t,n,a){try{return a?e(...a):e()}catch(s){ol(s,t,n)}}function aa(e,t,n,a){if(je(e)){const s=Xo(e,t,n,a);return s&&c0(s)&&s.catch(i=>{ol(i,t,n)}),s}if(ze(e)){const s=[];for(let i=0;i>>1,s=_n[a],i=bo(s);i=bo(n)?_n.push(e):_n.splice(Fg(t),0,e),e.flags|=1,W0()}}function W0(){nu||(nu=M0.then(z0))}function zg(e){ze(e)?li.push(...e):Za&&e.id===-1?Za.splice(ni+1,0,e):e.flags&1||(li.push(e),e.flags|=1),W0()}function ET(e,t,n=fa+1){for(;n<_n.length;n++){const a=_n[n];if(a&&a.flags&2){if(e&&a.id!==e.uid)continue;_n.splice(n,1),n--,a.flags&4&&(a.flags&=-2),a(),a.flags&4||(a.flags&=-2)}}}function F0(e){if(li.length){const t=[...new Set(li)].sort((n,a)=>bo(n)-bo(a));if(li.length=0,Za){Za.push(...t);return}for(Za=t,ni=0;nie.id==null?e.flags&2?-1:1/0:e.id;function z0(e){try{for(fa=0;fa<_n.length;fa++){const t=_n[fa];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Xo(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;fa<_n.length;fa++){const t=_n[fa];t&&(t.flags&=-2)}fa=-1,_n.length=0,F0(),nu=null,(_n.length||li.length)&&z0()}}let Xt=null,x0=null;function au(e){const t=Xt;return Xt=e,x0=e&&e.type.__scopeId||null,t}function Y(e,t=Xt,n){if(!t||e._n)return e;const a=(...s)=>{a._d&&vT(-1);const i=au(t);let o;try{o=e(...s)}finally{au(i),a._d&&vT(1)}return o};return a._n=!0,a._c=!0,a._d=!0,a}function We(e,t){if(Xt===null)return e;const n=cl(Xt),a=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,uo=e=>e&&(e.disabled||e.disabled===""),pT=e=>e&&(e.defer||e.defer===""),TT=e=>typeof SVGElement<"u"&&e instanceof SVGElement,mT=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ad=(e,t)=>{const n=e&&e.to;return Ft(n)?t?t(n):null:n},V0={name:"Teleport",__isTeleport:!0,process(e,t,n,a,s,i,o,r,u,l){const{mc:d,pc:E,pbc:c,o:{insert:T,querySelector:_,createText:f,createComment:O}}=l,A=uo(t.props);let{shapeFlag:R,children:g,dynamicChildren:I}=t;if(e==null){const N=t.el=f(""),b=t.anchor=f("");T(N,n,a),T(b,n,a);const C=(D,U)=>{R&16&&(s&&s.isCE&&(s.ce._teleportTarget=D),d(g,D,U,s,i,o,r,u))},y=()=>{const D=t.target=Ad(t.props,_),U=H0(D,t,f,T);D&&(o!=="svg"&&TT(D)?o="svg":o!=="mathml"&&mT(D)&&(o="mathml"),A||(C(D,U),xr(t,!1)))};A&&(C(n,b),xr(t,!0)),pT(t.props)?mn(()=>{y(),t.el.__isMounted=!0},i):y()}else{if(pT(t.props)&&!e.el.__isMounted){mn(()=>{V0.process(e,t,n,a,s,i,o,r,u,l),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const N=t.anchor=e.anchor,b=t.target=e.target,C=t.targetAnchor=e.targetAnchor,y=uo(e.props),D=y?n:b,U=y?N:C;if(o==="svg"||TT(b)?o="svg":(o==="mathml"||mT(b))&&(o="mathml"),I?(c(e.dynamicChildren,I,D,s,i,o,r),WE(e,t,!0)):u||E(e,t,D,U,s,i,o,r,!1),A)y?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Tr(t,n,N,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=Ad(t.props,_);P&&Tr(t,P,null,l,0)}else y&&Tr(t,b,C,l,1);xr(t,A)}},remove(e,t,n,{um:a,o:{remove:s}},i){const{shapeFlag:o,children:r,anchor:u,targetStart:l,targetAnchor:d,target:E,props:c}=e;if(E&&(s(l),s(d)),i&&s(u),o&16){const T=i||!uo(c);for(let _=0;_{e.isMounted=!0}),Qo(()=>{e.isUnmounting=!0}),e}const xn=[Function,Array],K0={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xn,onEnter:xn,onAfterEnter:xn,onEnterCancelled:xn,onBeforeLeave:xn,onLeave:xn,onAfterLeave:xn,onLeaveCancelled:xn,onBeforeAppear:xn,onAppear:xn,onAfterAppear:xn,onAppearCancelled:xn},q0=e=>{const t=e.subTree;return t.component?q0(t.component):t},Vg={name:"BaseTransition",props:K0,setup(e,{slots:t}){const n=_i(),a=Gg();return()=>{const s=t.default&&X0(t.default(),!0);if(!s||!s.length)return;const i=j0(s),o=dt(e),{mode:r}=o;if(a.isLeaving)return Kl(i);const u=_T(i);if(!u)return Kl(i);let l=Od(u,o,a,n,E=>l=E);u.type!==fn&&Co(u,l);let d=n.subTree&&_T(n.subTree);if(d&&d.type!==fn&&!Ps(u,d)&&q0(n).type!==fn){let E=Od(d,o,a,n);if(Co(d,E),r==="out-in"&&u.type!==fn)return a.isLeaving=!0,E.afterLeave=()=>{a.isLeaving=!1,n.job.flags&8||n.update(),delete E.afterLeave,d=void 0},Kl(i);r==="in-out"&&u.type!==fn?E.delayLeave=(c,T,_)=>{const f=Y0(a,d);f[String(d.key)]=d,c[Ja]=()=>{T(),c[Ja]=void 0,delete l.delayedLeave,d=void 0},l.delayedLeave=()=>{_(),delete l.delayedLeave,d=void 0}}:d=void 0}else d&&(d=void 0);return i}}};function j0(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==fn){t=n;break}}return t}const Hg=Vg;function Y0(e,t){const{leavingVNodes:n}=e;let a=n.get(t.type);return a||(a=Object.create(null),n.set(t.type,a)),a}function Od(e,t,n,a,s){const{appear:i,mode:o,persisted:r=!1,onBeforeEnter:u,onEnter:l,onAfterEnter:d,onEnterCancelled:E,onBeforeLeave:c,onLeave:T,onAfterLeave:_,onLeaveCancelled:f,onBeforeAppear:O,onAppear:A,onAfterAppear:R,onAppearCancelled:g}=t,I=String(e.key),N=Y0(n,e),b=(D,U)=>{D&&aa(D,a,9,U)},C=(D,U)=>{const P=U[1];b(D,U),ze(D)?D.every(F=>F.length<=1)&&P():D.length<=1&&P()},y={mode:o,persisted:r,beforeEnter(D){let U=u;if(!n.isMounted)if(i)U=O||u;else return;D[Ja]&&D[Ja](!0);const P=N[I];P&&Ps(e,P)&&P.el[Ja]&&P.el[Ja](),b(U,[D])},enter(D){let U=l,P=d,F=E;if(!n.isMounted)if(i)U=A||l,P=R||d,F=g||E;else return;let Z=!1;const Oe=D[mr]=ee=>{Z||(Z=!0,ee?b(F,[D]):b(P,[D]),y.delayedLeave&&y.delayedLeave(),D[mr]=void 0)};U?C(U,[D,Oe]):Oe()},leave(D,U){const P=String(e.key);if(D[mr]&&D[mr](!0),n.isUnmounting)return U();b(c,[D]);let F=!1;const Z=D[Ja]=Oe=>{F||(F=!0,U(),Oe?b(f,[D]):b(_,[D]),D[Ja]=void 0,N[P]===e&&delete N[P])};N[P]=e,T?C(T,[D,Z]):Z()},clone(D){const U=Od(D,t,n,a,s);return s&&s(U),U}};return y}function Kl(e){if(rl(e))return e=us(e),e.children=null,e}function _T(e){if(!rl(e))return G0(e.type)&&e.children?j0(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&je(n.default))return n.default()}}function Co(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Co(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function X0(e,t=!1,n){let a=[],s=0;for(let i=0;i1)for(let i=0;isu(_,t&&(ze(t)?t[f]:t),n,a,s));return}if(ci(a)&&!s){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&su(e,t,n,a.component.subTree);return}const i=a.shapeFlag&4?cl(a.component):a.el,o=s?null:i,{i:r,r:u}=e,l=t&&t.r,d=r.refs===vt?r.refs={}:r.refs,E=r.setupState,c=dt(E),T=E===vt?()=>!1:_=>St(c,_);if(l!=null&&l!==u&&(Ft(l)?(d[l]=null,T(l)&&(E[l]=null)):Kt(l)&&(l.value=null)),je(u))Xo(u,r,12,[o,d]);else{const _=Ft(u),f=Kt(u);if(_||f){const O=()=>{if(e.f){const A=_?T(u)?E[u]:d[u]:u.value;s?ze(A)&&bE(A,i):ze(A)?A.includes(i)||A.push(i):_?(d[u]=[i],T(u)&&(E[u]=d[u])):(u.value=[i],e.k&&(d[e.k]=u.value))}else _?(d[u]=o,T(u)&&(E[u]=o)):f&&(u.value=o,e.k&&(d[e.k]=o))};o?(O.id=-1,mn(O,n)):O()}}}al().requestIdleCallback;al().cancelIdleCallback;const ci=e=>!!e.type.__asyncLoader,rl=e=>e.type.__isKeepAlive;function Kg(e,t){Z0(e,"a",t)}function qg(e,t){Z0(e,"da",t)}function Z0(e,t,n=en){const a=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ul(t,a,n),n){let s=n.parent;for(;s&&s.parent;)rl(s.parent.vnode)&&jg(a,t,n,s),s=s.parent}}function jg(e,t,n,a){const s=ul(t,e,a,!0);ct(()=>{bE(a[t],s)},n)}function ul(e,t,n=en,a=!1){if(n){const s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Es();const r=Jo(n),u=aa(t,n,e,o);return r(),ps(),u});return a?s.unshift(i):s.push(i),i}}const Ba=e=>(t,n=en)=>{(!Lo||e==="sp")&&ul(e,(...a)=>t(...a),n)},et=Ba("bm"),mt=Ba("m"),Yg=Ba("bu"),Xg=Ba("u"),Qo=Ba("bum"),ct=Ba("um"),Qg=Ba("sp"),Zg=Ba("rtg"),Jg=Ba("rtc");function eR(e,t=en){ul("ec",e,t)}const J0="components",tR="directives";function j(e,t){return eS(J0,e,!0,t)||e}const nR=Symbol.for("v-ndc");function aR(e){return eS(tR,e)}function eS(e,t,n=!0,a=!1){const s=Xt||en;if(s){const i=s.type;if(e===J0){const r=BR(i,!1);if(r&&(r===t||r===Xn(t)||r===Fe(Xn(t))))return i}const o=fT(s[e]||i[e],t)||fT(s.appContext[e],t);return!o&&a?i:o}}function fT(e,t){return e&&(e[t]||e[Xn(t)]||e[Fe(Xn(t))])}function be(e,t,n,a){let s;const i=n,o=ze(e);if(o||Ft(e)){const r=o&&ui(e);let u=!1;r&&(u=!qn(e),e=sl(e)),s=new Array(e.length);for(let l=0,d=e.length;lt(r,u,void 0,i));else{const r=Object.keys(e);s=new Array(r.length);for(let u=0,l=r.length;u{const i=a.fn(...s);return i&&(i.key=a.key),i}:a.fn)}return e}function Pt(e,t,n={},a,s){if(Xt.ce||Xt.parent&&ci(Xt.parent)&&Xt.parent.ce)return t!=="default"&&(n.name=t),h(),B(ue,null,[M("slot",n,a&&a())],64);let i=e[t];i&&i._c&&(i._d=!1),h();const o=i&&tS(i(n)),r=n.key||o&&o.key,u=B(ue,{key:(r&&!na(r)?r:`_${t}`)+(!o&&a?"_fb":"")},o||(a?a():[]),o&&e._===1?64:-2);return!s&&u.scopeId&&(u.slotScopeIds=[u.scopeId+"-s"]),i&&i._c&&(i._d=!0),u}function tS(e){return e.some(t=>Do(t)?!(t.type===fn||t.type===ue&&!tS(t.children)):!0)?e:null}const Id=e=>e?IS(e)?cl(e):Id(e.parent):null,lo=Zt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Id(e.parent),$root:e=>Id(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>aS(e),$forceUpdate:e=>e.f||(e.f=()=>{wE(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>RR.bind(e)}),ql=(e,t)=>e!==vt&&!e.__isScriptSetup&&St(e,t),sR={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:a,data:s,props:i,accessCache:o,type:r,appContext:u}=e;let l;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return a[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(ql(a,t))return o[t]=1,a[t];if(s!==vt&&St(s,t))return o[t]=2,s[t];if((l=e.propsOptions[0])&&St(l,t))return o[t]=3,i[t];if(n!==vt&&St(n,t))return o[t]=4,n[t];gd&&(o[t]=0)}}const d=lo[t];let E,c;if(d)return t==="$attrs"&&on(e.attrs,"get",""),d(e);if((E=r.__cssModules)&&(E=E[t]))return E;if(n!==vt&&St(n,t))return o[t]=4,n[t];if(c=u.config.globalProperties,St(c,t))return c[t]},set({_:e},t,n){const{data:a,setupState:s,ctx:i}=e;return ql(s,t)?(s[t]=n,!0):a!==vt&&St(a,t)?(a[t]=n,!0):St(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:a,appContext:s,propsOptions:i}},o){let r;return!!n[o]||e!==vt&&St(e,o)||ql(t,o)||(r=i[0])&&St(r,o)||St(a,o)||St(lo,o)||St(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:St(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function hT(e){return ze(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gd=!0;function iR(e){const t=aS(e),n=e.proxy,a=e.ctx;gd=!1,t.beforeCreate&&ST(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:o,watch:r,provide:u,inject:l,created:d,beforeMount:E,mounted:c,beforeUpdate:T,updated:_,activated:f,deactivated:O,beforeDestroy:A,beforeUnmount:R,destroyed:g,unmounted:I,render:N,renderTracked:b,renderTriggered:C,errorCaptured:y,serverPrefetch:D,expose:U,inheritAttrs:P,components:F,directives:Z,filters:Oe}=t;if(l&&oR(l,a,null),o)for(const _e in o){const Pe=o[_e];je(Pe)&&(a[_e]=Pe.bind(n))}if(s){const _e=s.call(n,n);bt(_e)&&(e.data=kt(_e))}if(gd=!0,i)for(const _e in i){const Pe=i[_e],He=je(Pe)?Pe.bind(n,n):je(Pe.get)?Pe.get.bind(n,n):Oa,Je=!je(Pe)&&je(Pe.set)?Pe.set.bind(n):Oa,Ve=z({get:He,set:Je});Object.defineProperty(a,_e,{enumerable:!0,configurable:!0,get:()=>Ve.value,set:_t=>Ve.value=_t})}if(r)for(const _e in r)nS(r[_e],a,n,_e);if(u){const _e=je(u)?u.call(n):u;Reflect.ownKeys(_e).forEach(Pe=>{Sn(Pe,_e[Pe])})}d&&ST(d,e,"c");function Ee(_e,Pe){ze(Pe)?Pe.forEach(He=>_e(He.bind(n))):Pe&&_e(Pe.bind(n))}if(Ee(et,E),Ee(mt,c),Ee(Yg,T),Ee(Xg,_),Ee(Kg,f),Ee(qg,O),Ee(eR,y),Ee(Jg,b),Ee(Zg,C),Ee(Qo,R),Ee(ct,I),Ee(Qg,D),ze(U))if(U.length){const _e=e.exposed||(e.exposed={});U.forEach(Pe=>{Object.defineProperty(_e,Pe,{get:()=>n[Pe],set:He=>n[Pe]=He})})}else e.exposed||(e.exposed={});N&&e.render===Oa&&(e.render=N),P!=null&&(e.inheritAttrs=P),F&&(e.components=F),Z&&(e.directives=Z),D&&Q0(e)}function oR(e,t,n=Oa){ze(e)&&(e=Rd(e));for(const a in e){const s=e[a];let i;bt(s)?"default"in s?i=Ut(s.from||a,s.default,!0):i=Ut(s.from||a):i=Ut(s),Kt(i)?Object.defineProperty(t,a,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[a]=i}}function ST(e,t,n){aa(ze(e)?e.map(a=>a.bind(t.proxy)):e.bind(t.proxy),t,n)}function nS(e,t,n,a){let s=a.includes(".")?_S(n,a):()=>n[a];if(Ft(e)){const i=t[e];je(i)&&Ce(s,i)}else if(je(e))Ce(s,e.bind(n));else if(bt(e))if(ze(e))e.forEach(i=>nS(i,t,n,a));else{const i=je(e.handler)?e.handler.bind(n):t[e.handler];je(i)&&Ce(s,i,e)}}function aS(e){const t=e.type,{mixins:n,extends:a}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,r=i.get(t);let u;return r?u=r:!s.length&&!n&&!a?u=t:(u={},s.length&&s.forEach(l=>iu(u,l,o,!0)),iu(u,t,o)),bt(t)&&i.set(t,u),u}function iu(e,t,n,a=!1){const{mixins:s,extends:i}=t;i&&iu(e,i,n,!0),s&&s.forEach(o=>iu(e,o,n,!0));for(const o in t)if(!(a&&o==="expose")){const r=rR[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const rR={data:AT,props:OT,emits:OT,methods:ao,computed:ao,beforeCreate:pn,created:pn,beforeMount:pn,mounted:pn,beforeUpdate:pn,updated:pn,beforeDestroy:pn,beforeUnmount:pn,destroyed:pn,unmounted:pn,activated:pn,deactivated:pn,errorCaptured:pn,serverPrefetch:pn,components:ao,directives:ao,watch:lR,provide:AT,inject:uR};function AT(e,t){return t?e?function(){return Zt(je(e)?e.call(this,this):e,je(t)?t.call(this,this):t)}:t:e}function uR(e,t){return ao(Rd(e),Rd(t))}function Rd(e){if(ze(e)){const t={};for(let n=0;n1)return n&&je(t)?t.call(a&&a.proxy):t}}const iS={},oS=()=>Object.create(iS),rS=e=>Object.getPrototypeOf(e)===iS;function ER(e,t,n,a=!1){const s={},i=oS();e.propsDefaults=Object.create(null),uS(e,t,s,i);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=a?s:$0(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function pR(e,t,n,a){const{props:s,attrs:i,vnode:{patchFlag:o}}=e,r=dt(s),[u]=e.propsOptions;let l=!1;if((a||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let E=0;E{u=!0;const[c,T]=lS(E,t,!0);Zt(o,c),T&&r.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!u)return bt(e)&&a.set(e,oi),oi;if(ze(i))for(let d=0;de[0]==="_"||e==="$stable",ME=e=>ze(e)?e.map(Aa):[Aa(e)],mR=(e,t,n)=>{if(t._n)return t;const a=Y((...s)=>ME(t(...s)),n);return a._c=!1,a},dS=(e,t,n)=>{const a=e._ctx;for(const s in e){if(cS(s))continue;const i=e[s];if(je(i))t[s]=mR(s,i,a);else if(i!=null){const o=ME(i);t[s]=()=>o}}},ES=(e,t)=>{const n=ME(t);e.slots.default=()=>n},pS=(e,t,n)=>{for(const a in t)(n||a!=="_")&&(e[a]=t[a])},_R=(e,t,n)=>{const a=e.slots=oS();if(e.vnode.shapeFlag&32){const s=t._;s?(pS(a,t,n),n&&p0(a,"_",s,!0)):dS(t,a)}else t&&ES(e,t)},fR=(e,t,n)=>{const{vnode:a,slots:s}=e;let i=!0,o=vt;if(a.shapeFlag&32){const r=t._;r?n&&r===1?i=!1:pS(s,t,n):(i=!t.$stable,dS(t,s)),o=t}else t&&(ES(e,t),o={default:1});if(i)for(const r in s)!cS(r)&&o[r]==null&&delete s[r]},mn=LR;function hR(e){return SR(e)}function SR(e,t){const n=al();n.__VUE__=!0;const{insert:a,remove:s,patchProp:i,createElement:o,createText:r,createComment:u,setText:l,setElementText:d,parentNode:E,nextSibling:c,setScopeId:T=Oa,insertStaticContent:_}=e,f=(k,w,G,re=null,pe=null,oe=null,$=void 0,W=null,V=!!w.dynamicChildren)=>{if(k===w)return;k&&!Ps(k,w)&&(re=Te(k),_t(k,pe,oe,!0),k=null),w.patchFlag===-2&&(V=!1,w.dynamicChildren=null);const{type:q,ref:Re,shapeFlag:he}=w;switch(q){case Zo:O(k,w,G,re);break;case fn:A(k,w,G,re);break;case Br:k==null&&R(w,G,re,$);break;case ue:F(k,w,G,re,pe,oe,$,W,V);break;default:he&1?N(k,w,G,re,pe,oe,$,W,V):he&6?Z(k,w,G,re,pe,oe,$,W,V):(he&64||he&128)&&q.process(k,w,G,re,pe,oe,$,W,V,me)}Re!=null&&pe&&su(Re,k&&k.ref,oe,w||k,!w)},O=(k,w,G,re)=>{if(k==null)a(w.el=r(w.children),G,re);else{const pe=w.el=k.el;w.children!==k.children&&l(pe,w.children)}},A=(k,w,G,re)=>{k==null?a(w.el=u(w.children||""),G,re):w.el=k.el},R=(k,w,G,re)=>{[k.el,k.anchor]=_(k.children,w,G,re,k.el,k.anchor)},g=({el:k,anchor:w},G,re)=>{let pe;for(;k&&k!==w;)pe=c(k),a(k,G,re),k=pe;a(w,G,re)},I=({el:k,anchor:w})=>{let G;for(;k&&k!==w;)G=c(k),s(k),k=G;s(w)},N=(k,w,G,re,pe,oe,$,W,V)=>{w.type==="svg"?$="svg":w.type==="math"&&($="mathml"),k==null?b(w,G,re,pe,oe,$,W,V):D(k,w,pe,oe,$,W,V)},b=(k,w,G,re,pe,oe,$,W)=>{let V,q;const{props:Re,shapeFlag:he,transition:H,dirs:le}=k;if(V=k.el=o(k.type,oe,Re&&Re.is,Re),he&8?d(V,k.children):he&16&&y(k.children,V,null,re,pe,jl(k,oe),$,W),le&&Ss(k,null,re,"created"),C(V,k,k.scopeId,$,re),Re){for(const Be in Re)Be!=="value"&&!io(Be)&&i(V,Be,null,Re[Be],oe,re);"value"in Re&&i(V,"value",null,Re.value,oe),(q=Re.onVnodeBeforeMount)&&ca(q,re,k)}le&&Ss(k,null,re,"beforeMount");const Me=AR(pe,H);Me&&H.beforeEnter(V),a(V,w,G),((q=Re&&Re.onVnodeMounted)||Me||le)&&mn(()=>{q&&ca(q,re,k),Me&&H.enter(V),le&&Ss(k,null,re,"mounted")},pe)},C=(k,w,G,re,pe)=>{if(G&&T(k,G),re)for(let oe=0;oe{for(let q=V;q{const W=w.el=k.el;let{patchFlag:V,dynamicChildren:q,dirs:Re}=w;V|=k.patchFlag&16;const he=k.props||vt,H=w.props||vt;let le;if(G&&As(G,!1),(le=H.onVnodeBeforeUpdate)&&ca(le,G,w,k),Re&&Ss(w,k,G,"beforeUpdate"),G&&As(G,!0),(he.innerHTML&&H.innerHTML==null||he.textContent&&H.textContent==null)&&d(W,""),q?U(k.dynamicChildren,q,W,G,re,jl(w,pe),oe):$||Pe(k,w,W,null,G,re,jl(w,pe),oe,!1),V>0){if(V&16)P(W,he,H,G,pe);else if(V&2&&he.class!==H.class&&i(W,"class",null,H.class,pe),V&4&&i(W,"style",he.style,H.style,pe),V&8){const Me=w.dynamicProps;for(let Be=0;Be{le&&ca(le,G,w,k),Re&&Ss(w,k,G,"updated")},re)},U=(k,w,G,re,pe,oe,$)=>{for(let W=0;W{if(w!==G){if(w!==vt)for(const oe in w)!io(oe)&&!(oe in G)&&i(k,oe,w[oe],null,pe,re);for(const oe in G){if(io(oe))continue;const $=G[oe],W=w[oe];$!==W&&oe!=="value"&&i(k,oe,W,$,pe,re)}"value"in G&&i(k,"value",w.value,G.value,pe)}},F=(k,w,G,re,pe,oe,$,W,V)=>{const q=w.el=k?k.el:r(""),Re=w.anchor=k?k.anchor:r("");let{patchFlag:he,dynamicChildren:H,slotScopeIds:le}=w;le&&(W=W?W.concat(le):le),k==null?(a(q,G,re),a(Re,G,re),y(w.children||[],G,Re,pe,oe,$,W,V)):he>0&&he&64&&H&&k.dynamicChildren?(U(k.dynamicChildren,H,G,pe,oe,$,W),(w.key!=null||pe&&w===pe.subTree)&&WE(k,w,!0)):Pe(k,w,G,Re,pe,oe,$,W,V)},Z=(k,w,G,re,pe,oe,$,W,V)=>{w.slotScopeIds=W,k==null?w.shapeFlag&512?pe.ctx.activate(w,G,re,$,V):Oe(w,G,re,pe,oe,$,V):ee(k,w,V)},Oe=(k,w,G,re,pe,oe,$)=>{const W=k.component=MR(k,re,pe);if(rl(k)&&(W.ctx.renderer=me),WR(W,!1,$),W.asyncDep){if(pe&&pe.registerDep(W,Ee,$),!k.el){const V=W.subTree=M(fn);A(null,V,w,G)}}else Ee(W,k,w,G,pe,oe,$)},ee=(k,w,G)=>{const re=w.component=k.component;if(PR(k,w,G))if(re.asyncDep&&!re.asyncResolved){_e(re,w,G);return}else re.next=w,re.update();else w.el=k.el,re.vnode=w},Ee=(k,w,G,re,pe,oe,$)=>{const W=()=>{if(k.isMounted){let{next:he,bu:H,u:le,parent:Me,vnode:Be}=k;{const Qn=TS(k);if(Qn){he&&(he.el=Be.el,_e(k,he,$)),Qn.asyncDep.then(()=>{k.isUnmounted||W()});return}}let rt=he,jt;As(k,!1),he?(he.el=Be.el,_e(k,he,$)):he=Be,H&&zr(H),(jt=he.props&&he.props.onVnodeBeforeUpdate)&&ca(jt,Me,he,Be),As(k,!0);const zt=RT(k),zn=k.subTree;k.subTree=zt,f(zn,zt,E(zn.el),Te(zn),k,pe,oe),he.el=zt.el,rt===null&&DR(k,zt.el),le&&mn(le,pe),(jt=he.props&&he.props.onVnodeUpdated)&&mn(()=>ca(jt,Me,he,Be),pe)}else{let he;const{el:H,props:le}=w,{bm:Me,m:Be,parent:rt,root:jt,type:zt}=k,zn=ci(w);As(k,!1),Me&&zr(Me),!zn&&(he=le&&le.onVnodeBeforeMount)&&ca(he,rt,w),As(k,!0);{jt.ce&&jt.ce._injectChildStyle(zt);const Qn=k.subTree=RT(k);f(null,Qn,G,re,k,pe,oe),w.el=Qn.el}if(Be&&mn(Be,pe),!zn&&(he=le&&le.onVnodeMounted)){const Qn=w;mn(()=>ca(he,rt,Qn),pe)}(w.shapeFlag&256||rt&&ci(rt.vnode)&&rt.vnode.shapeFlag&256)&&k.a&&mn(k.a,pe),k.isMounted=!0,w=G=re=null}};k.scope.on();const V=k.effect=new S0(W);k.scope.off();const q=k.update=V.run.bind(V),Re=k.job=V.runIfDirty.bind(V);Re.i=k,Re.id=k.uid,V.scheduler=()=>wE(Re),As(k,!0),q()},_e=(k,w,G)=>{w.component=k;const re=k.vnode.props;k.vnode=w,k.next=null,pR(k,w.props,re,G),fR(k,w.children,G),Es(),ET(k),ps()},Pe=(k,w,G,re,pe,oe,$,W,V=!1)=>{const q=k&&k.children,Re=k?k.shapeFlag:0,he=w.children,{patchFlag:H,shapeFlag:le}=w;if(H>0){if(H&128){Je(q,he,G,re,pe,oe,$,W,V);return}else if(H&256){He(q,he,G,re,pe,oe,$,W,V);return}}le&8?(Re&16&&pt(q,pe,oe),he!==q&&d(G,he)):Re&16?le&16?Je(q,he,G,re,pe,oe,$,W,V):pt(q,pe,oe,!0):(Re&8&&d(G,""),le&16&&y(he,G,re,pe,oe,$,W,V))},He=(k,w,G,re,pe,oe,$,W,V)=>{k=k||oi,w=w||oi;const q=k.length,Re=w.length,he=Math.min(q,Re);let H;for(H=0;HRe?pt(k,pe,oe,!0,!1,he):y(w,G,re,pe,oe,$,W,V,he)},Je=(k,w,G,re,pe,oe,$,W,V)=>{let q=0;const Re=w.length;let he=k.length-1,H=Re-1;for(;q<=he&&q<=H;){const le=k[q],Me=w[q]=V?es(w[q]):Aa(w[q]);if(Ps(le,Me))f(le,Me,G,null,pe,oe,$,W,V);else break;q++}for(;q<=he&&q<=H;){const le=k[he],Me=w[H]=V?es(w[H]):Aa(w[H]);if(Ps(le,Me))f(le,Me,G,null,pe,oe,$,W,V);else break;he--,H--}if(q>he){if(q<=H){const le=H+1,Me=leH)for(;q<=he;)_t(k[q],pe,oe,!0),q++;else{const le=q,Me=q,Be=new Map;for(q=Me;q<=H;q++){const yn=w[q]=V?es(w[q]):Aa(w[q]);yn.key!=null&&Be.set(yn.key,q)}let rt,jt=0;const zt=H-Me+1;let zn=!1,Qn=0;const Wi=new Array(zt);for(q=0;q=zt){_t(yn,pe,oe,!0);continue}let la;if(yn.key!=null)la=Be.get(yn.key);else for(rt=Me;rt<=H;rt++)if(Wi[rt-Me]===0&&Ps(yn,w[rt])){la=rt;break}la===void 0?_t(yn,pe,oe,!0):(Wi[la-Me]=q+1,la>=Qn?Qn=la:zn=!0,f(yn,w[la],G,null,pe,oe,$,W,V),jt++)}const oT=zn?OR(Wi):oi;for(rt=oT.length-1,q=zt-1;q>=0;q--){const yn=Me+q,la=w[yn],rT=yn+1{const{el:oe,type:$,transition:W,children:V,shapeFlag:q}=k;if(q&6){Ve(k.component.subTree,w,G,re);return}if(q&128){k.suspense.move(w,G,re);return}if(q&64){$.move(k,w,G,me);return}if($===ue){a(oe,w,G);for(let he=0;heW.enter(oe),pe);else{const{leave:he,delayLeave:H,afterLeave:le}=W,Me=()=>a(oe,w,G),Be=()=>{he(oe,()=>{Me(),le&&le()})};H?H(oe,Me,Be):Be()}else a(oe,w,G)},_t=(k,w,G,re=!1,pe=!1)=>{const{type:oe,props:$,ref:W,children:V,dynamicChildren:q,shapeFlag:Re,patchFlag:he,dirs:H,cacheIndex:le}=k;if(he===-2&&(pe=!1),W!=null&&su(W,null,G,k,!0),le!=null&&(w.renderCache[le]=void 0),Re&256){w.ctx.deactivate(k);return}const Me=Re&1&&H,Be=!ci(k);let rt;if(Be&&(rt=$&&$.onVnodeBeforeUnmount)&&ca(rt,w,k),Re&6)ke(k.component,G,re);else{if(Re&128){k.suspense.unmount(G,re);return}Me&&Ss(k,null,w,"beforeUnmount"),Re&64?k.type.remove(k,w,G,me,re):q&&!q.hasOnce&&(oe!==ue||he>0&&he&64)?pt(q,w,G,!1,!0):(oe===ue&&he&384||!pe&&Re&16)&&pt(V,w,G),re&&we(k)}(Be&&(rt=$&&$.onVnodeUnmounted)||Me)&&mn(()=>{rt&&ca(rt,w,k),Me&&Ss(k,null,w,"unmounted")},G)},we=k=>{const{type:w,el:G,anchor:re,transition:pe}=k;if(w===ue){ae(G,re);return}if(w===Br){I(k);return}const oe=()=>{s(G),pe&&!pe.persisted&&pe.afterLeave&&pe.afterLeave()};if(k.shapeFlag&1&&pe&&!pe.persisted){const{leave:$,delayLeave:W}=pe,V=()=>$(G,oe);W?W(k.el,oe,V):V()}else oe()},ae=(k,w)=>{let G;for(;k!==w;)G=c(k),s(k),k=G;s(w)},ke=(k,w,G)=>{const{bum:re,scope:pe,job:oe,subTree:$,um:W,m:V,a:q}=k;gT(V),gT(q),re&&zr(re),pe.stop(),oe&&(oe.flags|=8,_t($,k,w,G)),W&&mn(W,w),mn(()=>{k.isUnmounted=!0},w),w&&w.pendingBranch&&!w.isUnmounted&&k.asyncDep&&!k.asyncResolved&&k.suspenseId===w.pendingId&&(w.deps--,w.deps===0&&w.resolve())},pt=(k,w,G,re=!1,pe=!1,oe=0)=>{for(let $=oe;${if(k.shapeFlag&6)return Te(k.component.subTree);if(k.shapeFlag&128)return k.suspense.next();const w=c(k.anchor||k.el),G=w&&w[B0];return G?c(G):w};let Q=!1;const Se=(k,w,G)=>{k==null?w._vnode&&_t(w._vnode,null,null,!0):f(w._vnode||null,k,w,null,null,null,G),w._vnode=k,Q||(Q=!0,ET(),F0(),Q=!1)},me={p:f,um:_t,m:Ve,r:we,mt:Oe,mc:y,pc:Pe,pbc:U,n:Te,o:e};return{render:Se,hydrate:void 0,createApp:dR(Se)}}function jl({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function As({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function AR(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function WE(e,t,n=!1){const a=e.children,s=t.children;if(ze(a)&&ze(s))for(let i=0;i>1,e[n[r]]0&&(t[a]=n[i-1]),n[i]=a)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function TS(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:TS(t)}function gT(e){if(e)for(let t=0;tUt(IR);function Ce(e,t,n){return mS(e,t,n)}function mS(e,t,n=vt){const{immediate:a,deep:s,flush:i,once:o}=n,r=Zt({},n),u=t&&a||!t&&i!=="post";let l;if(Lo){if(i==="sync"){const T=gR();l=T.__watcherHandles||(T.__watcherHandles=[])}else if(!u){const T=()=>{};return T.stop=Oa,T.resume=Oa,T.pause=Oa,T}}const d=en;r.call=(T,_,f)=>aa(T,d,_,f);let E=!1;i==="post"?r.scheduler=T=>{mn(T,d&&d.suspense)}:i!=="sync"&&(E=!0,r.scheduler=(T,_)=>{_?T():wE(T)}),r.augmentJob=T=>{t&&(T.flags|=4),E&&(T.flags|=2,d&&(T.id=d.uid,T.i=d))};const c=Mg(e,t,r);return Lo&&(l?l.push(c):u&&c()),c}function RR(e,t,n){const a=this.proxy,s=Ft(e)?e.includes(".")?_S(a,e):()=>a[e]:e.bind(a,a);let i;je(t)?i=t:(i=t.handler,n=t);const o=Jo(this),r=mS(s,i.bind(a),n);return o(),r}function _S(e,t){const n=t.split(".");return()=>{let a=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Xn(t)}Modifiers`]||e[`${ds(t)}Modifiers`];function vR(e,t,...n){if(e.isUnmounted)return;const a=e.vnode.props||vt;let s=n;const i=t.startsWith("update:"),o=i&&NR(a,t.slice(7));o&&(o.trim&&(s=n.map(d=>Ft(d)?d.trim():d)),o.number&&(s=n.map(Jr)));let r,u=a[r=xl(t)]||a[r=xl(Xn(t))];!u&&i&&(u=a[r=xl(ds(t))]),u&&aa(u,e,6,s);const l=a[r+"Once"];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,aa(l,e,6,s)}}function fS(e,t,n=!1){const a=t.emitsCache,s=a.get(e);if(s!==void 0)return s;const i=e.emits;let o={},r=!1;if(!je(e)){const u=l=>{const d=fS(l,t,!0);d&&(r=!0,Zt(o,d))};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!r?(bt(e)&&a.set(e,null),null):(ze(i)?i.forEach(u=>o[u]=null):Zt(o,i),bt(e)&&a.set(e,o),o)}function ll(e,t){return!e||!tl(t)?!1:(t=t.slice(2).replace(/Once$/,""),St(e,t[0].toLowerCase()+t.slice(1))||St(e,ds(t))||St(e,t))}function RT(e){const{type:t,vnode:n,proxy:a,withProxy:s,propsOptions:[i],slots:o,attrs:r,emit:u,render:l,renderCache:d,props:E,data:c,setupState:T,ctx:_,inheritAttrs:f}=e,O=au(e);let A,R;try{if(n.shapeFlag&4){const I=s||a,N=I;A=Aa(l.call(N,I,d,E,T,c,_)),R=r}else{const I=t;A=Aa(I.length>1?I(E,{attrs:r,slots:o,emit:u}):I(E,null)),R=t.props?r:bR(r)}}catch(I){co.length=0,ol(I,e,1),A=M(fn)}let g=A;if(R&&f!==!1){const I=Object.keys(R),{shapeFlag:N}=g;I.length&&N&7&&(i&&I.some(vE)&&(R=CR(R,i)),g=us(g,R,!1,!0))}return n.dirs&&(g=us(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&Co(g,n.transition),A=g,au(O),A}const bR=e=>{let t;for(const n in e)(n==="class"||n==="style"||tl(n))&&((t||(t={}))[n]=e[n]);return t},CR=(e,t)=>{const n={};for(const a in e)(!vE(a)||!(a.slice(9)in t))&&(n[a]=e[a]);return n};function PR(e,t,n){const{props:a,children:s,component:i}=e,{props:o,children:r,patchFlag:u}=t,l=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return a?NT(a,o,l):!!o;if(u&8){const d=t.dynamicProps;for(let E=0;Ee.__isSuspense;function LR(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):zg(e)}const ue=Symbol.for("v-fgt"),Zo=Symbol.for("v-txt"),fn=Symbol.for("v-cmt"),Br=Symbol.for("v-stc"),co=[];let Wn=null;function h(e=!1){co.push(Wn=e?null:[])}function yR(){co.pop(),Wn=co[co.length-1]||null}let Po=1;function vT(e,t=!1){Po+=e,e<0&&Wn&&t&&(Wn.hasOnce=!0)}function SS(e){return e.dynamicChildren=Po>0?Wn||oi:null,yR(),Po>0&&Wn&&Wn.push(e),e}function v(e,t,n,a,s,i){return SS(p(e,t,n,a,s,i,!0))}function B(e,t,n,a,s){return SS(M(e,t,n,a,s,!0))}function Do(e){return e?e.__v_isVNode===!0:!1}function Ps(e,t){return e.type===t.type&&e.key===t.key}const AS=({key:e})=>e??null,Gr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ft(e)||Kt(e)||je(e)?{i:Xt,r:e,k:t,f:!!n}:e:null);function p(e,t=null,n=null,a=0,s=null,i=e===ue?0:1,o=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&AS(t),ref:t&&Gr(t),scopeId:x0,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:a,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Xt};return r?(FE(u,n),i&128&&e.normalize(u)):n&&(u.shapeFlag|=Ft(n)?8:16),Po>0&&!o&&Wn&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&Wn.push(u),u}const M=$R;function $R(e,t=null,n=null,a=0,s=null,i=!1){if((!e||e===nR)&&(e=fn),Do(e)){const r=us(e,t,!0);return n&&FE(r,n),Po>0&&!i&&Wn&&(r.shapeFlag&6?Wn[Wn.indexOf(e)]=r:Wn.push(r)),r.patchFlag=-2,r}if(GR(e)&&(e=e.__vccOpts),t){t=UR(t);let{class:r,style:u}=t;r&&!Ft(r)&&(t.class=Ae(r)),bt(u)&&(Yo(u)&&!ze(u)&&(u=Zt({},u)),t.style=za(u))}const o=Ft(e)?1:hS(e)?128:G0(e)?64:bt(e)?4:je(e)?2:0;return p(e,t,n,a,s,o,i,!0)}function UR(e){return e?Yo(e)||rS(e)?Zt({},e):e:null}function us(e,t,n=!1,a=!1){const{props:s,ref:i,patchFlag:o,children:r,transition:u}=e,l=t?OS(s||{},t):s,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&AS(l),ref:t&&t.ref?n&&i?ze(i)?i.concat(Gr(t)):[i,Gr(t)]:Gr(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ue?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&us(e.ssContent),ssFallback:e.ssFallback&&us(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&a&&Co(d,u.clone(d)),d}function x(e=" ",t=0){return M(Zo,null,e,t)}function Pn(e,t){const n=M(Br,null,e);return n.staticCount=t,n}function L(e="",t=!1){return t?(h(),B(fn,null,e)):M(fn,null,e)}function Aa(e){return e==null||typeof e=="boolean"?M(fn):ze(e)?M(ue,null,e.slice()):Do(e)?es(e):M(Zo,null,String(e))}function es(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:us(e)}function FE(e,t){let n=0;const{shapeFlag:a}=e;if(t==null)t=null;else if(ze(t))n=16;else if(typeof t=="object")if(a&65){const s=t.default;s&&(s._c&&(s._d=!1),FE(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!rS(t)?t._ctx=Xt:s===3&&Xt&&(Xt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else je(t)?(t={default:t,_ctx:Xt},n=32):(t=String(t),a&64?(n=16,t=[x(t)]):n=8);e.children=t,e.shapeFlag|=n}function OS(...e){const t={};for(let n=0;nen||Xt;let ou,vd;{const e=al(),t=(n,a)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(a),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};ou=t("__VUE_INSTANCE_SETTERS__",n=>en=n),vd=t("__VUE_SSR_SETTERS__",n=>Lo=n)}const Jo=e=>{const t=en;return ou(e),e.scope.on(),()=>{e.scope.off(),ou(t)}},bT=()=>{en&&en.scope.off(),ou(null)};function IS(e){return e.vnode.shapeFlag&4}let Lo=!1;function WR(e,t=!1,n=!1){t&&vd(t);const{props:a,children:s}=e.vnode,i=IS(e);ER(e,a,i,t),_R(e,s,n);const o=i?FR(e,t):void 0;return t&&vd(!1),o}function FR(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,sR);const{setup:a}=n;if(a){Es();const s=e.setupContext=a.length>1?xR(e):null,i=Jo(e),o=Xo(a,e,0,[e.props,s]),r=c0(o);if(ps(),i(),(r||e.sp)&&!ci(e)&&Q0(e),r){if(o.then(bT,bT),t)return o.then(u=>{CT(e,u)}).catch(u=>{ol(u,e,0)});e.asyncDep=o}else CT(e,o)}else gS(e)}function CT(e,t,n){je(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:bt(t)&&(e.setupState=w0(t)),gS(e)}function gS(e,t,n){const a=e.type;e.render||(e.render=a.render||Oa);{const s=Jo(e);Es();try{iR(e)}finally{ps(),s()}}}const zR={get(e,t){return on(e,"get",""),e[t]}};function xR(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,zR),slots:e.slots,emit:e.emit,expose:t}}function cl(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(w0(xa(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in lo)return lo[n](e)},has(t,n){return n in t||n in lo}})):e.proxy}function BR(e,t=!0){return je(e)?e.displayName||e.name:e.name||t&&e.__name}function GR(e){return je(e)&&"__vccOpts"in e}const z=(e,t)=>kg(e,t,Lo);function bn(e,t,n){const a=arguments.length;return a===2?bt(t)&&!ze(t)?Do(t)?M(e,null,[t]):M(e,t):M(e,null,t):(a>3?n=Array.prototype.slice.call(arguments,2):a===3&&Do(n)&&(n=[n]),M(e,t,n))}const RS="3.5.13";/** -* @vue/runtime-dom v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let bd;const PT=typeof window<"u"&&window.trustedTypes;if(PT)try{bd=PT.createPolicy("vue",{createHTML:e=>e})}catch{}const NS=bd?e=>bd.createHTML(e):e=>e,VR="http://www.w3.org/2000/svg",HR="http://www.w3.org/1998/Math/MathML",La=typeof document<"u"?document:null,DT=La&&La.createElement("template"),KR={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,a)=>{const s=t==="svg"?La.createElementNS(VR,e):t==="mathml"?La.createElementNS(HR,e):n?La.createElement(e,{is:n}):La.createElement(e);return e==="select"&&a&&a.multiple!=null&&s.setAttribute("multiple",a.multiple),s},createText:e=>La.createTextNode(e),createComment:e=>La.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>La.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,a,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{DT.innerHTML=NS(a==="svg"?`${e}`:a==="mathml"?`${e}`:e);const r=DT.content;if(a==="svg"||a==="mathml"){const u=r.firstChild;for(;u.firstChild;)r.appendChild(u.firstChild);r.removeChild(u)}t.insertBefore(r,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ha="transition",zi="animation",yo=Symbol("_vtc"),vS={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},qR=Zt({},K0,vS),jR=e=>(e.displayName="Transition",e.props=qR,e),LT=jR((e,{slots:t})=>bn(Hg,YR(e),t)),Os=(e,t=[])=>{ze(e)?e.forEach(n=>n(...t)):e&&e(...t)},yT=e=>e?ze(e)?e.some(t=>t.length>1):e.length>1:!1;function YR(e){const t={};for(const F in e)F in vS||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:a,duration:s,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:r=`${n}-enter-to`,appearFromClass:u=i,appearActiveClass:l=o,appearToClass:d=r,leaveFromClass:E=`${n}-leave-from`,leaveActiveClass:c=`${n}-leave-active`,leaveToClass:T=`${n}-leave-to`}=e,_=XR(s),f=_&&_[0],O=_&&_[1],{onBeforeEnter:A,onEnter:R,onEnterCancelled:g,onLeave:I,onLeaveCancelled:N,onBeforeAppear:b=A,onAppear:C=R,onAppearCancelled:y=g}=t,D=(F,Z,Oe,ee)=>{F._enterCancelled=ee,Is(F,Z?d:r),Is(F,Z?l:o),Oe&&Oe()},U=(F,Z)=>{F._isLeaving=!1,Is(F,E),Is(F,T),Is(F,c),Z&&Z()},P=F=>(Z,Oe)=>{const ee=F?C:R,Ee=()=>D(Z,F,Oe);Os(ee,[Z,Ee]),$T(()=>{Is(Z,F?u:i),Ra(Z,F?d:r),yT(ee)||UT(Z,a,f,Ee)})};return Zt(t,{onBeforeEnter(F){Os(A,[F]),Ra(F,i),Ra(F,o)},onBeforeAppear(F){Os(b,[F]),Ra(F,u),Ra(F,l)},onEnter:P(!1),onAppear:P(!0),onLeave(F,Z){F._isLeaving=!0;const Oe=()=>U(F,Z);Ra(F,E),F._enterCancelled?(Ra(F,c),MT()):(MT(),Ra(F,c)),$T(()=>{F._isLeaving&&(Is(F,E),Ra(F,T),yT(I)||UT(F,a,O,Oe))}),Os(I,[F,Oe])},onEnterCancelled(F){D(F,!1,void 0,!0),Os(g,[F])},onAppearCancelled(F){D(F,!0,void 0,!0),Os(y,[F])},onLeaveCancelled(F){U(F),Os(N,[F])}})}function XR(e){if(e==null)return null;if(bt(e))return[Yl(e.enter),Yl(e.leave)];{const t=Yl(e);return[t,t]}}function Yl(e){return ng(e)}function Ra(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[yo]||(e[yo]=new Set)).add(t)}function Is(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.remove(a));const n=e[yo];n&&(n.delete(t),n.size||(e[yo]=void 0))}function $T(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let QR=0;function UT(e,t,n,a){const s=e._endId=++QR,i=()=>{s===e._endId&&a()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:r,propCount:u}=ZR(e,t);if(!o)return a();const l=o+"end";let d=0;const E=()=>{e.removeEventListener(l,c),i()},c=T=>{T.target===e&&++d>=u&&E()};setTimeout(()=>{d(n[_]||"").split(", "),s=a(`${Ha}Delay`),i=a(`${Ha}Duration`),o=kT(s,i),r=a(`${zi}Delay`),u=a(`${zi}Duration`),l=kT(r,u);let d=null,E=0,c=0;t===Ha?o>0&&(d=Ha,E=o,c=i.length):t===zi?l>0&&(d=zi,E=l,c=u.length):(E=Math.max(o,l),d=E>0?o>l?Ha:zi:null,c=d?d===Ha?i.length:u.length:0);const T=d===Ha&&/\b(transform|all)(,|$)/.test(a(`${Ha}Property`).toString());return{type:d,timeout:E,propCount:c,hasTransform:T}}function kT(e,t){for(;e.lengthwT(n)+wT(e[a])))}function wT(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function MT(){return document.body.offsetHeight}function JR(e,t,n){const a=e[yo];a&&(t=(t?[t,...a]:[...a]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ru=Symbol("_vod"),bS=Symbol("_vsh"),xi={beforeMount(e,{value:t},{transition:n}){e[ru]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Bi(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:a}){!t!=!n&&(a?t?(a.beforeEnter(e),Bi(e,!0),a.enter(e)):a.leave(e,()=>{Bi(e,!1)}):Bi(e,t))},beforeUnmount(e,{value:t}){Bi(e,t)}};function Bi(e,t){e.style.display=t?e[ru]:"none",e[bS]=!t}const eN=Symbol(""),tN=/(^|;)\s*display\s*:/;function nN(e,t,n){const a=e.style,s=Ft(n);let i=!1;if(n&&!s){if(t)if(Ft(t))for(const o of t.split(";")){const r=o.slice(0,o.indexOf(":")).trim();n[r]==null&&Vr(a,r,"")}else for(const o in t)n[o]==null&&Vr(a,o,"");for(const o in n)o==="display"&&(i=!0),Vr(a,o,n[o])}else if(s){if(t!==n){const o=a[eN];o&&(n+=";"+o),a.cssText=n,i=tN.test(n)}}else t&&e.removeAttribute("style");ru in e&&(e[ru]=i?a.display:"",e[bS]&&(a.display="none"))}const WT=/\s*!important$/;function Vr(e,t,n){if(ze(n))n.forEach(a=>Vr(e,t,a));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const a=aN(e,t);WT.test(n)?e.setProperty(ds(a),n.replace(WT,""),"important"):e[a]=n}}const FT=["Webkit","Moz","ms"],Xl={};function aN(e,t){const n=Xl[t];if(n)return n;let a=Xn(t);if(a!=="filter"&&a in e)return Xl[t]=a;a=Fe(a);for(let s=0;sQl||(rN.then(()=>Ql=0),Ql=Date.now());function lN(e,t){const n=a=>{if(!a._vts)a._vts=Date.now();else if(a._vts<=n.attached)return;aa(cN(a,n.value),t,5,[a])};return n.value=e,n.attached=uN(),n}function cN(e,t){if(ze(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(a=>s=>!s._stopped&&a&&a(s))}else return t}const HT=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,dN=(e,t,n,a,s,i)=>{const o=s==="svg";t==="class"?JR(e,a,o):t==="style"?nN(e,n,a):tl(t)?vE(t)||iN(e,t,n,a,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):EN(e,t,a,o))?(BT(e,t,a),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&xT(e,t,a,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Ft(a))?BT(e,Xn(t),a,i,t):(t==="true-value"?e._trueValue=a:t==="false-value"&&(e._falseValue=a),xT(e,t,a,o))};function EN(e,t,n,a){if(a)return!!(t==="innerHTML"||t==="textContent"||t in e&&HT(t)&&je(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return HT(t)&&Ft(n)?!1:t in e}const ls=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ze(t)?n=>zr(t,n):t};function pN(e){e.target.composing=!0}function KT(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const jn=Symbol("_assign"),ot={created(e,{modifiers:{lazy:t,trim:n,number:a}},s){e[jn]=ls(s);const i=a||s.props&&s.props.type==="number";ka(e,t?"change":"input",o=>{if(o.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=Jr(r)),e[jn](r)}),n&&ka(e,"change",()=>{e.value=e.value.trim()}),t||(ka(e,"compositionstart",pN),ka(e,"compositionend",KT),ka(e,"change",KT))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:a,trim:s,number:i}},o){if(e[jn]=ls(o),e.composing)return;const r=(i||e.type==="number")&&!/^0\d/.test(e.value)?Jr(e.value):e.value,u=t??"";r!==u&&(document.activeElement===e&&e.type!=="range"&&(a&&t===n||s&&e.value.trim()===u)||(e.value=u))}},dl={deep:!0,created(e,t,n){e[jn]=ls(n),ka(e,"change",()=>{const a=e._modelValue,s=fi(e),i=e.checked,o=e[jn];if(ze(a)){const r=PE(a,s),u=r!==-1;if(i&&!u)o(a.concat(s));else if(!i&&u){const l=[...a];l.splice(r,1),o(l)}}else if(Pi(a)){const r=new Set(a);i?r.add(s):r.delete(s),o(r)}else o(CS(e,i))})},mounted:qT,beforeUpdate(e,t,n){e[jn]=ls(n),qT(e,t,n)}};function qT(e,{value:t,oldValue:n},a){e._modelValue=t;let s;if(ze(t))s=PE(t,a.props.value)>-1;else if(Pi(t))s=t.has(a.props.value);else{if(t===n)return;s=ks(t,CS(e,!0))}e.checked!==s&&(e.checked=s)}const TN={created(e,{value:t},n){e.checked=ks(t,n.props.value),e[jn]=ls(n),ka(e,"change",()=>{e[jn](fi(e))})},beforeUpdate(e,{value:t,oldValue:n},a){e[jn]=ls(a),t!==n&&(e.checked=ks(t,a.props.value))}},Jt={deep:!0,created(e,{value:t,modifiers:{number:n}},a){const s=Pi(t);ka(e,"change",()=>{const i=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Jr(fi(o)):fi(o));e[jn](e.multiple?s?new Set(i):i:i[0]),e._assigning=!0,ln(()=>{e._assigning=!1})}),e[jn]=ls(a)},mounted(e,{value:t}){jT(e,t)},beforeUpdate(e,t,n){e[jn]=ls(n)},updated(e,{value:t}){e._assigning||jT(e,t)}};function jT(e,t){const n=e.multiple,a=ze(t);if(!(n&&!a&&!Pi(t))){for(let s=0,i=e.options.length;sString(l)===String(r)):o.selected=PE(t,r)>-1}else o.selected=t.has(r);else if(ks(fi(o),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function fi(e){return"_value"in e?e._value:e.value}function CS(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const mN={created(e,t,n){_r(e,t,n,null,"created")},mounted(e,t,n){_r(e,t,n,null,"mounted")},beforeUpdate(e,t,n,a){_r(e,t,n,a,"beforeUpdate")},updated(e,t,n,a){_r(e,t,n,a,"updated")}};function _N(e,t){switch(e){case"SELECT":return Jt;case"TEXTAREA":return ot;default:switch(t){case"checkbox":return dl;case"radio":return TN;default:return ot}}}function _r(e,t,n,a,s){const o=_N(e.tagName,n.props&&n.props.type)[s];o&&o(e,t,n,a)}const fN=["ctrl","shift","alt","meta"],hN={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>fN.some(n=>e[`${n}Key`]&&!t.includes(n))},ve=(e,t)=>{const n=e._withMods||(e._withMods={}),a=t.join(".");return n[a]||(n[a]=(s,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),a=t.join(".");return n[a]||(n[a]=s=>{if(!("key"in s))return;const i=ds(s.key);if(t.some(o=>o===i||SN[o]===i))return e(s)})},AN=Zt({patchProp:dN},KR);let YT;function PS(){return YT||(YT=hR(AN))}const ON=(...e)=>{PS().render(...e)},IN=(...e)=>{const t=PS().createApp(...e),{mount:n}=t;return t.mount=a=>{const s=RN(a);if(!s)return;const i=t._component;!je(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=n(s,!1,gN(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t};function gN(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function RN(e){return Ft(e)?document.querySelector(e):e}var NN=Object.defineProperty,vN=Object.defineProperties,bN=Object.getOwnPropertyDescriptors,uu=Object.getOwnPropertySymbols,DS=Object.prototype.hasOwnProperty,LS=Object.prototype.propertyIsEnumerable,XT=(e,t,n)=>t in e?NN(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},yS=function(e){return e},CN=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},QT=Math.max,PN=function(e,t,n){return t=QT(t===void 0?e.length-1:t,0),function(){for(var a=arguments,s=-1,i=QT(a.length-t,0),o=Array(i);++s0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(sv),rv=yS,uv=PN,lv=ov,cv=function(e,t){return lv(uv(e,t,rv),e+"")},wS=function(e,t){return e===t||e!=e&&t!=t},MS=function(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=9007199254740991},dv=kS,Ev=MS,WS=function(e){return e!=null&&Ev(e.length)&&!dv(e)},pv=/^(?:0|[1-9]\d*)$/,FS=function(e,t){var n=typeof e;return!!(t=t??9007199254740991)&&(n=="number"||n!="symbol"&&pv.test(e))&&e>-1&&e%1==0&&e2?t[2]:void 0;for(s&&Jv(t[0],t[1],s)&&(a=1);++ne.pageOnly||!Na.isEnabled),i=z(()=>(s.value||e.teleport)&&a.isFullscreen?{position:"fixed",left:"0",top:"0",width:"100%",height:"100%"}:void 0);function o(){t("change",a.isFullscreen),t("update:modelValue",a.isFullscreen),t("update:fullscreen",a.isFullscreen)}function r(){Na.isFullscreen||Na.off("change",r),a.isFullscreen=Na.isFullscreen,o()}function u(c){c.key==="Escape"&&d()}function l(){s.value?(a.isFullscreen=!0,o(),document.removeEventListener("keyup",u),document.addEventListener("keyup",u)):(Na.off("change",r),Na.on("change",r),Na.request(e.teleport?document.body:n.value))}function d(){a.isFullscreen&&(s.value?(a.isFullscreen=!1,o(),document.removeEventListener("keyup",u)):Na.exit())}return Ce(()=>e.fullscreen,c=>{c!==a.isFullscreen&&(c?l():d())}),Ce(()=>e.modelValue,c=>{c!==a.isFullscreen&&(c?l():d())}),E=((c,T)=>{for(var _ in T||(T={}))DS.call(T,_)&&XT(c,_,T[_]);if(uu)for(var _ of uu(T))LS.call(T,_)&&XT(c,_,T[_]);return c})({wrapper:n,wrapperStyle:i},fe(a)),vN(E,bN({toggle:function(c){c===void 0?a.isFullscreen?d():l():c?l():d()},request:l,exit:d,shadeClick:function(c){c.target===n.value&&e.exitOnClickWrapper&&d()}}));var E}});VS.render=function(e,t,n,a,s,i){return h(),B(Bg,{to:"body",disabled:!e.teleport||!e.fullscreen},[M("div",OS({ref:"wrapper"},e.$attrs,{style:e.wrapperStyle,class:{[e.fullscreenClass]:e.isFullscreen},onClick:t[1]||(t[1]=o=>e.shadeClick(o))}),[Pt(e.$slots,"default")],16)],8,["disabled"])};const ab=typeof window<"u"&&window!==null;(function(){if(ab&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)return"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get(){return this.intersectionRatio>0}}),!0})();const sb=Object.prototype.propertyIsEnumerable,lm=Object.getOwnPropertySymbols;function Hr(e){return typeof e=="function"||toString.call(e)==="[object Object]"}function ib(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"}function ob(e,...t){if(!Hr(e))throw new TypeError("expected the first argument to be an object");if(t.length===0||typeof Symbol!="function"||typeof lm!="function")return e;for(const n of t){const a=lm(n);for(const s of a)sb.call(n,s)&&(e[s]=n[s])}return e}function GE(e,...t){let n=0;var a;for((typeof(a=e)=="object"?a===null:typeof a!="function")&&(e=t[n++]),e||(e={});n{a.key==="Escape"&&(document.removeEventListener("keyup",n),this.exit())};return this.isFullscreen=!0,this.element=e,document.removeEventListener("keyup",n),document.addEventListener("keyup",n),this.options.callback&&this.options.callback(this.isFullscreen),Promise.resolve()}{const n=()=>{da.isFullscreen||(da.off("change",n),dm(this)),this.isFullscreen=da.isFullscreen,this.options.teleport?this.element=e||null:this.element=da.element,this.options.callback&&this.options.callback(da.isFullscreen)};return da.on("change",n),da.request(this.options.teleport?document.body:e)}},exit(){return this.isFullscreen?this.options.pageOnly?(dm(this),this.isFullscreen=!1,this.element=null,this.options.callback&&this.options.callback(this.isFullscreen),Promise.resolve()):da.exit():Promise.resolve()}},rb=(e,t,n)=>{const a=()=>{let s;const i={teleport:t.modifiers.teleport,pageOnly:t.modifiers.pageOnly};if(t.value)if(typeof t.value=="string")s=t.value;else{const o=t.value,{target:r}=o,u=((l,d)=>{var E={};for(var c in l)DS.call(l,c)&&d.indexOf(c)<0&&(E[c]=l[c]);if(l!=null&&uu)for(var c of uu(l))d.indexOf(c)<0&&LS.call(l,c)&&(E[c]=l[c]);return E})(o,["target"]);s=r,GE(i,u)}typeof s=="string"&&(s=document.querySelector(s)),KS.toggle(s,i)};e._onClickFullScreen&&e.removeEventListener("click",e._onClickFullScreen),e.addEventListener("click",a),e._onClickFullScreen=a};var ub={install(e,{name:t="fullscreen"}={}){e.config.globalProperties[`$${t}`]=KS,e.component(t,nb(VS,{name:t})),e.directive(t,rb)}};const lb={id:"footer"},cb={class:"footer-items"},db={class:"footer-item"},Eb={class:"footer-item"},pb={key:0,class:"footer-item bullet"},Tb={key:1,class:"footer-item"},mb=["href"],_b={class:"footer-item"},fb=X({__name:"Footer",props:{version:{},adminContact:{}},setup(e){const t=e,{adminContact:n,version:a}=fe(t);return(s,i)=>{const o=j("router-link");return h(),v("footer",lb,[p("div",cb,[p("div",db,[i[0]||(i[0]=p("strong",null,"FitTrackee",-1)),x(" v"+S(m(a)),1)]),i[1]||(i[1]=p("div",{class:"footer-item bullet"},"•",-1)),p("div",Eb,[M(o,{to:"/about"},{default:Y(()=>[x(S(s.$t("common.ABOUT")),1)]),_:1})]),m(n)?(h(),v("div",pb,"•")):L("",!0),m(n)?(h(),v("div",Tb,[p("a",{href:`mailto:${m(n)}`},S(s.$t("common.CONTACT")),9,mb)])):L("",!0),i[2]||(i[2]=p("div",{class:"footer-item bullet"},"•",-1)),p("div",_b,[M(o,{to:"/privacy-policy"},{default:Y(()=>[x(S(s.$t("privacy_policy.TITLE")),1)]),_:1})])])])}}}),se=(e,t)=>{const n=e.__vccOpts||e;for(const[a,s]of t)n[a]=s;return n},hb=se(fb,[["__scopeId","data-v-e9aea8ab"]]),Sb="/img/weather/clear-day.svg";function qS(e,t){return function(){return e.apply(t,arguments)}}const{toString:Ab}=Object.prototype,{getPrototypeOf:VE}=Object,pl=(e=>t=>{const n=Ab.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),ra=e=>(e=e.toLowerCase(),t=>pl(t)===e),Tl=e=>t=>typeof t===e,{isArray:Di}=Array,$o=Tl("undefined");function Ob(e){return e!==null&&!$o(e)&&e.constructor!==null&&!$o(e.constructor)&&Fn(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const jS=ra("ArrayBuffer");function Ib(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&jS(e.buffer),t}const gb=Tl("string"),Fn=Tl("function"),YS=Tl("number"),ml=e=>e!==null&&typeof e=="object",Rb=e=>e===!0||e===!1,Kr=e=>{if(pl(e)!=="object")return!1;const t=VE(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Nb=ra("Date"),vb=ra("File"),bb=ra("Blob"),Cb=ra("FileList"),Pb=e=>ml(e)&&Fn(e.pipe),Db=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||Fn(e.append)&&((t=pl(e))==="formdata"||t==="object"&&Fn(e.toString)&&e.toString()==="[object FormData]"))},Lb=ra("URLSearchParams"),[yb,$b,Ub,kb]=["ReadableStream","Request","Response","Headers"].map(ra),wb=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function er(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let a,s;if(typeof e!="object"&&(e=[e]),Di(e))for(a=0,s=e.length;a0;)if(s=n[a],t===s.toLowerCase())return s;return null}const Ds=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,QS=e=>!$o(e)&&e!==Ds;function Ld(){const{caseless:e}=QS(this)&&this||{},t={},n=(a,s)=>{const i=e&&XS(t,s)||s;Kr(t[i])&&Kr(a)?t[i]=Ld(t[i],a):Kr(a)?t[i]=Ld({},a):Di(a)?t[i]=a.slice():t[i]=a};for(let a=0,s=arguments.length;a(er(t,(s,i)=>{n&&Fn(s)?e[i]=qS(s,n):e[i]=s},{allOwnKeys:a}),e),Wb=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Fb=(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},zb=(e,t,n,a)=>{let s,i,o;const r={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)o=s[i],(!a||a(o,e,t))&&!r[o]&&(t[o]=e[o],r[o]=!0);e=n!==!1&&VE(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},xb=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return a!==-1&&a===n},Bb=e=>{if(!e)return null;if(Di(e))return e;let t=e.length;if(!YS(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Gb=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&VE(Uint8Array)),Vb=(e,t)=>{const a=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=a.next())&&!s.done;){const i=s.value;t.call(e,i[0],i[1])}},Hb=(e,t)=>{let n;const a=[];for(;(n=e.exec(t))!==null;)a.push(n);return a},Kb=ra("HTMLFormElement"),qb=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,a,s){return a.toUpperCase()+s}),Em=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),jb=ra("RegExp"),ZS=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};er(n,(s,i)=>{let o;(o=t(s,i,e))!==!1&&(a[i]=o||s)}),Object.defineProperties(e,a)},Yb=e=>{ZS(e,(t,n)=>{if(Fn(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const a=e[n];if(Fn(a)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Xb=(e,t)=>{const n={},a=s=>{s.forEach(i=>{n[i]=!0})};return Di(e)?a(e):a(String(e).split(t)),n},Qb=()=>{},Zb=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,ac="abcdefghijklmnopqrstuvwxyz",pm="0123456789",JS={DIGIT:pm,ALPHA:ac,ALPHA_DIGIT:ac+ac.toUpperCase()+pm},Jb=(e=16,t=JS.ALPHA_DIGIT)=>{let n="";const{length:a}=t;for(;e--;)n+=t[Math.random()*a|0];return n};function eC(e){return!!(e&&Fn(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const tC=e=>{const t=new Array(10),n=(a,s)=>{if(ml(a)){if(t.indexOf(a)>=0)return;if(!("toJSON"in a)){t[s]=a;const i=Di(a)?[]:{};return er(a,(o,r)=>{const u=n(o,s+1);!$o(u)&&(i[r]=u)}),t[s]=void 0,i}}return a};return n(e,0)},nC=ra("AsyncFunction"),aC=e=>e&&(ml(e)||Fn(e))&&Fn(e.then)&&Fn(e.catch),eA=((e,t)=>e?setImmediate:t?((n,a)=>(Ds.addEventListener("message",({source:s,data:i})=>{s===Ds&&i===n&&a.length&&a.shift()()},!1),s=>{a.push(s),Ds.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Fn(Ds.postMessage)),sC=typeof queueMicrotask<"u"?queueMicrotask.bind(Ds):typeof process<"u"&&process.nextTick||eA,de={isArray:Di,isArrayBuffer:jS,isBuffer:Ob,isFormData:Db,isArrayBufferView:Ib,isString:gb,isNumber:YS,isBoolean:Rb,isObject:ml,isPlainObject:Kr,isReadableStream:yb,isRequest:$b,isResponse:Ub,isHeaders:kb,isUndefined:$o,isDate:Nb,isFile:vb,isBlob:bb,isRegExp:jb,isFunction:Fn,isStream:Pb,isURLSearchParams:Lb,isTypedArray:Gb,isFileList:Cb,forEach:er,merge:Ld,extend:Mb,trim:wb,stripBOM:Wb,inherits:Fb,toFlatObject:zb,kindOf:pl,kindOfTest:ra,endsWith:xb,toArray:Bb,forEachEntry:Vb,matchAll:Hb,isHTMLForm:Kb,hasOwnProperty:Em,hasOwnProp:Em,reduceDescriptors:ZS,freezeMethods:Yb,toObjectSet:Xb,toCamelCase:qb,noop:Qb,toFiniteNumber:Zb,findKey:XS,global:Ds,isContextDefined:QS,ALPHABET:JS,generateString:Jb,isSpecCompliantForm:eC,toJSONObject:tC,isAsyncFn:nC,isThenable:aC,setImmediate:eA,asap:sC};function Qe(e,t,n,a,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),s&&(this.response=s,this.status=s.status?s.status:null)}de.inherits(Qe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:de.toJSONObject(this.config),code:this.code,status:this.status}}});const tA=Qe.prototype,nA={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{nA[e]={value:e}});Object.defineProperties(Qe,nA);Object.defineProperty(tA,"isAxiosError",{value:!0});Qe.from=(e,t,n,a,s,i)=>{const o=Object.create(tA);return de.toFlatObject(e,o,function(u){return u!==Error.prototype},r=>r!=="isAxiosError"),Qe.call(o,e.message,t,n,a,s),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};const iC=null;function yd(e){return de.isPlainObject(e)||de.isArray(e)}function aA(e){return de.endsWith(e,"[]")?e.slice(0,-2):e}function Tm(e,t,n){return e?e.concat(t).map(function(s,i){return s=aA(s),!n&&i?"["+s+"]":s}).join(n?".":""):t}function oC(e){return de.isArray(e)&&!e.some(yd)}const rC=de.toFlatObject(de,{},null,function(t){return/^is[A-Z]/.test(t)});function _l(e,t,n){if(!de.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=de.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(f,O){return!de.isUndefined(O[f])});const a=n.metaTokens,s=n.visitor||d,i=n.dots,o=n.indexes,u=(n.Blob||typeof Blob<"u"&&Blob)&&de.isSpecCompliantForm(t);if(!de.isFunction(s))throw new TypeError("visitor must be a function");function l(_){if(_===null)return"";if(de.isDate(_))return _.toISOString();if(!u&&de.isBlob(_))throw new Qe("Blob is not supported. Use a Buffer instead.");return de.isArrayBuffer(_)||de.isTypedArray(_)?u&&typeof Blob=="function"?new Blob([_]):Buffer.from(_):_}function d(_,f,O){let A=_;if(_&&!O&&typeof _=="object"){if(de.endsWith(f,"{}"))f=a?f:f.slice(0,-2),_=JSON.stringify(_);else if(de.isArray(_)&&oC(_)||(de.isFileList(_)||de.endsWith(f,"[]"))&&(A=de.toArray(_)))return f=aA(f),A.forEach(function(g,I){!(de.isUndefined(g)||g===null)&&t.append(o===!0?Tm([f],I,i):o===null?f:f+"[]",l(g))}),!1}return yd(_)?!0:(t.append(Tm(O,f,i),l(_)),!1)}const E=[],c=Object.assign(rC,{defaultVisitor:d,convertValue:l,isVisitable:yd});function T(_,f){if(!de.isUndefined(_)){if(E.indexOf(_)!==-1)throw Error("Circular reference detected in "+f.join("."));E.push(_),de.forEach(_,function(A,R){(!(de.isUndefined(A)||A===null)&&s.call(t,A,de.isString(R)?R.trim():R,f,c))===!0&&T(A,f?f.concat(R):[R])}),E.pop()}}if(!de.isObject(e))throw new TypeError("data must be an object");return T(e),t}function mm(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(a){return t[a]})}function HE(e,t){this._pairs=[],e&&_l(e,this,t)}const sA=HE.prototype;sA.append=function(t,n){this._pairs.push([t,n])};sA.toString=function(t){const n=t?function(a){return t.call(this,a,mm)}:mm;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function uC(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function iA(e,t,n){if(!t)return e;const a=n&&n.encode||uC;de.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(t,n):i=de.isURLSearchParams(t)?t.toString():new HE(t,n).toString(a),i){const o=e.indexOf("#");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class _m{constructor(){this.handlers=[]}use(t,n,a){return this.handlers.push({fulfilled:t,rejected:n,synchronous:a?a.synchronous:!1,runWhen:a?a.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){de.forEach(this.handlers,function(a){a!==null&&t(a)})}}const oA={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},lC=typeof URLSearchParams<"u"?URLSearchParams:HE,cC=typeof FormData<"u"?FormData:null,dC=typeof Blob<"u"?Blob:null,EC={isBrowser:!0,classes:{URLSearchParams:lC,FormData:cC,Blob:dC},protocols:["http","https","file","blob","url","data"]},KE=typeof window<"u"&&typeof document<"u",$d=typeof navigator=="object"&&navigator||void 0,pC=KE&&(!$d||["ReactNative","NativeScript","NS"].indexOf($d.product)<0),TC=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",mC=KE&&window.location.href||"http://localhost",_C=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:KE,hasStandardBrowserEnv:pC,hasStandardBrowserWebWorkerEnv:TC,navigator:$d,origin:mC},Symbol.toStringTag,{value:"Module"})),un={..._C,...EC};function fC(e,t){return _l(e,new un.classes.URLSearchParams,Object.assign({visitor:function(n,a,s,i){return un.isNode&&de.isBuffer(n)?(this.append(a,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}function hC(e){return de.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function SC(e){const t={},n=Object.keys(e);let a;const s=n.length;let i;for(a=0;a=n.length;return o=!o&&de.isArray(s)?s.length:o,u?(de.hasOwnProp(s,o)?s[o]=[s[o],a]:s[o]=a,!r):((!s[o]||!de.isObject(s[o]))&&(s[o]=[]),t(n,a,s[o],i)&&de.isArray(s[o])&&(s[o]=SC(s[o])),!r)}if(de.isFormData(e)&&de.isFunction(e.entries)){const n={};return de.forEachEntry(e,(a,s)=>{t(hC(a),s,n,0)}),n}return null}function AC(e,t,n){if(de.isString(e))try{return(t||JSON.parse)(e),de.trim(e)}catch(a){if(a.name!=="SyntaxError")throw a}return(0,JSON.stringify)(e)}const tr={transitional:oA,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const a=n.getContentType()||"",s=a.indexOf("application/json")>-1,i=de.isObject(t);if(i&&de.isHTMLForm(t)&&(t=new FormData(t)),de.isFormData(t))return s?JSON.stringify(rA(t)):t;if(de.isArrayBuffer(t)||de.isBuffer(t)||de.isStream(t)||de.isFile(t)||de.isBlob(t)||de.isReadableStream(t))return t;if(de.isArrayBufferView(t))return t.buffer;if(de.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(i){if(a.indexOf("application/x-www-form-urlencoded")>-1)return fC(t,this.formSerializer).toString();if((r=de.isFileList(t))||a.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return _l(r?{"files[]":t}:t,u&&new u,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),AC(t)):t}],transformResponse:[function(t){const n=this.transitional||tr.transitional,a=n&&n.forcedJSONParsing,s=this.responseType==="json";if(de.isResponse(t)||de.isReadableStream(t))return t;if(t&&de.isString(t)&&(a&&!this.responseType||s)){const o=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(r){if(o)throw r.name==="SyntaxError"?Qe.from(r,Qe.ERR_BAD_RESPONSE,this,null,this.response):r}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:un.classes.FormData,Blob:un.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};de.forEach(["delete","get","head","post","put","patch"],e=>{tr.headers[e]={}});const OC=de.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),IC=e=>{const t={};let n,a,s;return e&&e.split(` -`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),a=o.substring(s+1).trim(),!(!n||t[n]&&OC[n])&&(n==="set-cookie"?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)}),t},fm=Symbol("internals");function Hi(e){return e&&String(e).trim().toLowerCase()}function qr(e){return e===!1||e==null?e:de.isArray(e)?e.map(qr):String(e)}function gC(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}const RC=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function sc(e,t,n,a,s){if(de.isFunction(a))return a.call(this,t,n);if(s&&(t=n),!!de.isString(t)){if(de.isString(a))return t.indexOf(a)!==-1;if(de.isRegExp(a))return a.test(t)}}function NC(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,a)=>n.toUpperCase()+a)}function vC(e,t){const n=de.toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+n,{value:function(s,i,o){return this[a].call(this,t,s,i,o)},configurable:!0})})}class Nn{constructor(t){t&&this.set(t)}set(t,n,a){const s=this;function i(r,u,l){const d=Hi(u);if(!d)throw new Error("header name must be a non-empty string");const E=de.findKey(s,d);(!E||s[E]===void 0||l===!0||l===void 0&&s[E]!==!1)&&(s[E||u]=qr(r))}const o=(r,u)=>de.forEach(r,(l,d)=>i(l,d,u));if(de.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(de.isString(t)&&(t=t.trim())&&!RC(t))o(IC(t),n);else if(de.isHeaders(t))for(const[r,u]of t.entries())i(u,r,a);else t!=null&&i(n,t,a);return this}get(t,n){if(t=Hi(t),t){const a=de.findKey(this,t);if(a){const s=this[a];if(!n)return s;if(n===!0)return gC(s);if(de.isFunction(n))return n.call(this,s,a);if(de.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Hi(t),t){const a=de.findKey(this,t);return!!(a&&this[a]!==void 0&&(!n||sc(this,this[a],a,n)))}return!1}delete(t,n){const a=this;let s=!1;function i(o){if(o=Hi(o),o){const r=de.findKey(a,o);r&&(!n||sc(a,a[r],r,n))&&(delete a[r],s=!0)}}return de.isArray(t)?t.forEach(i):i(t),s}clear(t){const n=Object.keys(this);let a=n.length,s=!1;for(;a--;){const i=n[a];(!t||sc(this,this[i],i,t,!0))&&(delete this[i],s=!0)}return s}normalize(t){const n=this,a={};return de.forEach(this,(s,i)=>{const o=de.findKey(a,i);if(o){n[o]=qr(s),delete n[i];return}const r=t?NC(i):String(i).trim();r!==i&&delete n[i],n[r]=qr(s),a[r]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return de.forEach(this,(a,s)=>{a!=null&&a!==!1&&(n[s]=t&&de.isArray(a)?a.join(", "):a)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const a=new this(t);return n.forEach(s=>a.set(s)),a}static accessor(t){const a=(this[fm]=this[fm]={accessors:{}}).accessors,s=this.prototype;function i(o){const r=Hi(o);a[r]||(vC(s,o),a[r]=!0)}return de.isArray(t)?t.forEach(i):i(t),this}}Nn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);de.reduceDescriptors(Nn.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(a){this[n]=a}}});de.freezeMethods(Nn);function ic(e,t){const n=this||tr,a=t||n,s=Nn.from(a.headers);let i=a.data;return de.forEach(e,function(r){i=r.call(n,i,s.normalize(),t?t.status:void 0)}),s.normalize(),i}function uA(e){return!!(e&&e.__CANCEL__)}function Li(e,t,n){Qe.call(this,e??"canceled",Qe.ERR_CANCELED,t,n),this.name="CanceledError"}de.inherits(Li,Qe,{__CANCEL__:!0});function lA(e,t,n){const a=n.config.validateStatus;!n.status||!a||a(n.status)?e(n):t(new Qe("Request failed with status code "+n.status,[Qe.ERR_BAD_REQUEST,Qe.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function bC(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function CC(e,t){e=e||10;const n=new Array(e),a=new Array(e);let s=0,i=0,o;return t=t!==void 0?t:1e3,function(u){const l=Date.now(),d=a[i];o||(o=l),n[s]=u,a[s]=l;let E=i,c=0;for(;E!==s;)c+=n[E++],E=E%e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),l-o{n=d,s=null,i&&(clearTimeout(i),i=null),e.apply(null,l)};return[(...l)=>{const d=Date.now(),E=d-n;E>=a?o(l,d):(s=l,i||(i=setTimeout(()=>{i=null,o(s)},a-E)))},()=>s&&o(s)]}const cu=(e,t,n=3)=>{let a=0;const s=CC(50,250);return PC(i=>{const o=i.loaded,r=i.lengthComputable?i.total:void 0,u=o-a,l=s(u),d=o<=r;a=o;const E={loaded:o,total:r,progress:r?o/r:void 0,bytes:u,rate:l||void 0,estimated:l&&r&&d?(r-o)/l:void 0,event:i,lengthComputable:r!=null,[t?"download":"upload"]:!0};e(E)},n)},hm=(e,t)=>{const n=e!=null;return[a=>t[0]({lengthComputable:n,total:e,loaded:a}),t[1]]},Sm=e=>(...t)=>de.asap(()=>e(...t)),DC=un.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,un.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(un.origin),un.navigator&&/(msie|trident)/i.test(un.navigator.userAgent)):()=>!0,LC=un.hasStandardBrowserEnv?{write(e,t,n,a,s,i){const o=[e+"="+encodeURIComponent(t)];de.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),de.isString(a)&&o.push("path="+a),de.isString(s)&&o.push("domain="+s),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function yC(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function $C(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function cA(e,t){return e&&!yC(t)?$C(e,t):t}const Am=e=>e instanceof Nn?{...e}:e;function Ms(e,t){t=t||{};const n={};function a(l,d,E,c){return de.isPlainObject(l)&&de.isPlainObject(d)?de.merge.call({caseless:c},l,d):de.isPlainObject(d)?de.merge({},d):de.isArray(d)?d.slice():d}function s(l,d,E,c){if(de.isUndefined(d)){if(!de.isUndefined(l))return a(void 0,l,E,c)}else return a(l,d,E,c)}function i(l,d){if(!de.isUndefined(d))return a(void 0,d)}function o(l,d){if(de.isUndefined(d)){if(!de.isUndefined(l))return a(void 0,l)}else return a(void 0,d)}function r(l,d,E){if(E in t)return a(l,d);if(E in e)return a(void 0,l)}const u={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:r,headers:(l,d,E)=>s(Am(l),Am(d),E,!0)};return de.forEach(Object.keys(Object.assign({},e,t)),function(d){const E=u[d]||s,c=E(e[d],t[d],d);de.isUndefined(c)&&E!==r||(n[d]=c)}),n}const dA=e=>{const t=Ms({},e);let{data:n,withXSRFToken:a,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:r}=t;t.headers=o=Nn.from(o),t.url=iA(cA(t.baseURL,t.url),e.params,e.paramsSerializer),r&&o.set("Authorization","Basic "+btoa((r.username||"")+":"+(r.password?unescape(encodeURIComponent(r.password)):"")));let u;if(de.isFormData(n)){if(un.hasStandardBrowserEnv||un.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if((u=o.getContentType())!==!1){const[l,...d]=u?u.split(";").map(E=>E.trim()).filter(Boolean):[];o.setContentType([l||"multipart/form-data",...d].join("; "))}}if(un.hasStandardBrowserEnv&&(a&&de.isFunction(a)&&(a=a(t)),a||a!==!1&&DC(t.url))){const l=s&&i&&LC.read(i);l&&o.set(s,l)}return t},UC=typeof XMLHttpRequest<"u",kC=UC&&function(e){return new Promise(function(n,a){const s=dA(e);let i=s.data;const o=Nn.from(s.headers).normalize();let{responseType:r,onUploadProgress:u,onDownloadProgress:l}=s,d,E,c,T,_;function f(){T&&T(),_&&_(),s.cancelToken&&s.cancelToken.unsubscribe(d),s.signal&&s.signal.removeEventListener("abort",d)}let O=new XMLHttpRequest;O.open(s.method.toUpperCase(),s.url,!0),O.timeout=s.timeout;function A(){if(!O)return;const g=Nn.from("getAllResponseHeaders"in O&&O.getAllResponseHeaders()),N={data:!r||r==="text"||r==="json"?O.responseText:O.response,status:O.status,statusText:O.statusText,headers:g,config:e,request:O};lA(function(C){n(C),f()},function(C){a(C),f()},N),O=null}"onloadend"in O?O.onloadend=A:O.onreadystatechange=function(){!O||O.readyState!==4||O.status===0&&!(O.responseURL&&O.responseURL.indexOf("file:")===0)||setTimeout(A)},O.onabort=function(){O&&(a(new Qe("Request aborted",Qe.ECONNABORTED,e,O)),O=null)},O.onerror=function(){a(new Qe("Network Error",Qe.ERR_NETWORK,e,O)),O=null},O.ontimeout=function(){let I=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const N=s.transitional||oA;s.timeoutErrorMessage&&(I=s.timeoutErrorMessage),a(new Qe(I,N.clarifyTimeoutError?Qe.ETIMEDOUT:Qe.ECONNABORTED,e,O)),O=null},i===void 0&&o.setContentType(null),"setRequestHeader"in O&&de.forEach(o.toJSON(),function(I,N){O.setRequestHeader(N,I)}),de.isUndefined(s.withCredentials)||(O.withCredentials=!!s.withCredentials),r&&r!=="json"&&(O.responseType=s.responseType),l&&([c,_]=cu(l,!0),O.addEventListener("progress",c)),u&&O.upload&&([E,T]=cu(u),O.upload.addEventListener("progress",E),O.upload.addEventListener("loadend",T)),(s.cancelToken||s.signal)&&(d=g=>{O&&(a(!g||g.type?new Li(null,e,O):g),O.abort(),O=null)},s.cancelToken&&s.cancelToken.subscribe(d),s.signal&&(s.signal.aborted?d():s.signal.addEventListener("abort",d)));const R=bC(s.url);if(R&&un.protocols.indexOf(R)===-1){a(new Qe("Unsupported protocol "+R+":",Qe.ERR_BAD_REQUEST,e));return}O.send(i||null)})},wC=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let a=new AbortController,s;const i=function(l){if(!s){s=!0,r();const d=l instanceof Error?l:this.reason;a.abort(d instanceof Qe?d:new Li(d instanceof Error?d.message:d))}};let o=t&&setTimeout(()=>{o=null,i(new Qe(`timeout ${t} of ms exceeded`,Qe.ETIMEDOUT))},t);const r=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(l=>{l.unsubscribe?l.unsubscribe(i):l.removeEventListener("abort",i)}),e=null)};e.forEach(l=>l.addEventListener("abort",i));const{signal:u}=a;return u.unsubscribe=()=>de.asap(r),u}},MC=function*(e,t){let n=e.byteLength;if(n{const s=WC(e,t);let i=0,o,r=u=>{o||(o=!0,a&&a(u))};return new ReadableStream({async pull(u){try{const{done:l,value:d}=await s.next();if(l){r(),u.close();return}let E=d.byteLength;if(n){let c=i+=E;n(c)}u.enqueue(new Uint8Array(d))}catch(l){throw r(l),l}},cancel(u){return r(u),s.return()}},{highWaterMark:2})},fl=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",EA=fl&&typeof ReadableStream=="function",zC=fl&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),pA=(e,...t)=>{try{return!!e(...t)}catch{return!1}},xC=EA&&pA(()=>{let e=!1;const t=new Request(un.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Im=64*1024,Ud=EA&&pA(()=>de.isReadableStream(new Response("").body)),du={stream:Ud&&(e=>e.body)};fl&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!du[t]&&(du[t]=de.isFunction(e[t])?n=>n[t]():(n,a)=>{throw new Qe(`Response type '${t}' is not supported`,Qe.ERR_NOT_SUPPORT,a)})})})(new Response);const BC=async e=>{if(e==null)return 0;if(de.isBlob(e))return e.size;if(de.isSpecCompliantForm(e))return(await new Request(un.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(de.isArrayBufferView(e)||de.isArrayBuffer(e))return e.byteLength;if(de.isURLSearchParams(e)&&(e=e+""),de.isString(e))return(await zC(e)).byteLength},GC=async(e,t)=>{const n=de.toFiniteNumber(e.getContentLength());return n??BC(t)},VC=fl&&(async e=>{let{url:t,method:n,data:a,signal:s,cancelToken:i,timeout:o,onDownloadProgress:r,onUploadProgress:u,responseType:l,headers:d,withCredentials:E="same-origin",fetchOptions:c}=dA(e);l=l?(l+"").toLowerCase():"text";let T=wC([s,i&&i.toAbortSignal()],o),_;const f=T&&T.unsubscribe&&(()=>{T.unsubscribe()});let O;try{if(u&&xC&&n!=="get"&&n!=="head"&&(O=await GC(d,a))!==0){let N=new Request(t,{method:"POST",body:a,duplex:"half"}),b;if(de.isFormData(a)&&(b=N.headers.get("content-type"))&&d.setContentType(b),N.body){const[C,y]=hm(O,cu(Sm(u)));a=Om(N.body,Im,C,y)}}de.isString(E)||(E=E?"include":"omit");const A="credentials"in Request.prototype;_=new Request(t,{...c,signal:T,method:n.toUpperCase(),headers:d.normalize().toJSON(),body:a,duplex:"half",credentials:A?E:void 0});let R=await fetch(_);const g=Ud&&(l==="stream"||l==="response");if(Ud&&(r||g&&f)){const N={};["status","statusText","headers"].forEach(D=>{N[D]=R[D]});const b=de.toFiniteNumber(R.headers.get("content-length")),[C,y]=r&&hm(b,cu(Sm(r),!0))||[];R=new Response(Om(R.body,Im,C,()=>{y&&y(),f&&f()}),N)}l=l||"text";let I=await du[de.findKey(du,l)||"text"](R,e);return!g&&f&&f(),await new Promise((N,b)=>{lA(N,b,{data:I,headers:Nn.from(R.headers),status:R.status,statusText:R.statusText,config:e,request:_})})}catch(A){throw f&&f(),A&&A.name==="TypeError"&&/fetch/i.test(A.message)?Object.assign(new Qe("Network Error",Qe.ERR_NETWORK,e,_),{cause:A.cause||A}):Qe.from(A,A&&A.code,e,_)}}),kd={http:iC,xhr:kC,fetch:VC};de.forEach(kd,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const gm=e=>`- ${e}`,HC=e=>de.isFunction(e)||e===null||e===!1,TA={getAdapter:e=>{e=de.isArray(e)?e:[e];const{length:t}=e;let n,a;const s={};for(let i=0;i`adapter ${r} `+(u===!1?"is not supported by the environment":"is not available in the build"));let o=t?i.length>1?`since : -`+i.map(gm).join(` -`):" "+gm(i[0]):"as no adapter specified";throw new Qe("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return a},adapters:kd};function oc(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Li(null,e)}function Rm(e){return oc(e),e.headers=Nn.from(e.headers),e.data=ic.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),TA.getAdapter(e.adapter||tr.adapter)(e).then(function(a){return oc(e),a.data=ic.call(e,e.transformResponse,a),a.headers=Nn.from(a.headers),a},function(a){return uA(a)||(oc(e),a&&a.response&&(a.response.data=ic.call(e,e.transformResponse,a.response),a.response.headers=Nn.from(a.response.headers))),Promise.reject(a)})}const mA="1.7.9",hl={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{hl[e]=function(a){return typeof a===e||"a"+(t<1?"n ":" ")+e}});const Nm={};hl.transitional=function(t,n,a){function s(i,o){return"[Axios v"+mA+"] Transitional option '"+i+"'"+o+(a?". "+a:"")}return(i,o,r)=>{if(t===!1)throw new Qe(s(o," has been removed"+(n?" in "+n:"")),Qe.ERR_DEPRECATED);return n&&!Nm[o]&&(Nm[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,o,r):!0}};hl.spelling=function(t){return(n,a)=>(console.warn(`${a} is likely a misspelling of ${t}`),!0)};function KC(e,t,n){if(typeof e!="object")throw new Qe("options must be an object",Qe.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let s=a.length;for(;s-- >0;){const i=a[s],o=t[i];if(o){const r=e[i],u=r===void 0||o(r,i,e);if(u!==!0)throw new Qe("option "+i+" must be "+u,Qe.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Qe("Unknown option "+i,Qe.ERR_BAD_OPTION)}}const jr={assertOptions:KC,validators:hl},Ea=jr.validators;class Us{constructor(t){this.defaults=t,this.interceptors={request:new _m,response:new _m}}async request(t,n){try{return await this._request(t,n)}catch(a){if(a instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{a.stack?i&&!String(a.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(a.stack+=` -`+i):a.stack=i}catch{}}throw a}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Ms(this.defaults,n);const{transitional:a,paramsSerializer:s,headers:i}=n;a!==void 0&&jr.assertOptions(a,{silentJSONParsing:Ea.transitional(Ea.boolean),forcedJSONParsing:Ea.transitional(Ea.boolean),clarifyTimeoutError:Ea.transitional(Ea.boolean)},!1),s!=null&&(de.isFunction(s)?n.paramsSerializer={serialize:s}:jr.assertOptions(s,{encode:Ea.function,serialize:Ea.function},!0)),jr.assertOptions(n,{baseUrl:Ea.spelling("baseURL"),withXsrfToken:Ea.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&de.merge(i.common,i[n.method]);i&&de.forEach(["delete","get","head","post","put","patch","common"],_=>{delete i[_]}),n.headers=Nn.concat(o,i);const r=[];let u=!0;this.interceptors.request.forEach(function(f){typeof f.runWhen=="function"&&f.runWhen(n)===!1||(u=u&&f.synchronous,r.unshift(f.fulfilled,f.rejected))});const l=[];this.interceptors.response.forEach(function(f){l.push(f.fulfilled,f.rejected)});let d,E=0,c;if(!u){const _=[Rm.bind(this),void 0];for(_.unshift.apply(_,r),_.push.apply(_,l),c=_.length,d=Promise.resolve(n);E{if(!a._listeners)return;let i=a._listeners.length;for(;i-- >0;)a._listeners[i](s);a._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(r=>{a.subscribe(r),i=r}).then(s);return o.cancel=function(){a.unsubscribe(i)},o},t(function(i,o,r){a.reason||(a.reason=new Li(i,o,r),n(a.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=a=>{t.abort(a)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new qE(function(s){t=s}),cancel:t}}}function qC(e){return function(n){return e.apply(null,n)}}function jC(e){return de.isObject(e)&&e.isAxiosError===!0}const wd={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(wd).forEach(([e,t])=>{wd[t]=e});function _A(e){const t=new Us(e),n=qS(Us.prototype.request,t);return de.extend(n,Us.prototype,t,{allOwnKeys:!0}),de.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return _A(Ms(e,s))},n}const Gt=_A(tr);Gt.Axios=Us;Gt.CanceledError=Li;Gt.CancelToken=qE;Gt.isCancel=uA;Gt.VERSION=mA;Gt.toFormData=_l;Gt.AxiosError=Qe;Gt.Cancel=Gt.CanceledError;Gt.all=function(t){return Promise.all(t)};Gt.spread=qC;Gt.isAxiosError=jC;Gt.mergeConfig=Ms;Gt.AxiosHeaders=Nn;Gt.formToJSON=e=>rA(de.isHTMLForm(e)?new FormData(e):e);Gt.getAdapter=TA.getAdapter;Gt.HttpStatusCode=wd;Gt.default=Gt;var fA=(e=>(e.ACCEPT_PRIVACY_POLICY="ACCEPT_PRIVACY_POLICY",e.APPEAL="APPEAL",e.CHECK_AUTH_USER="CHECK_AUTH_USER",e.CONFIRM_ACCOUNT="CONFIRM_ACCOUNT",e.CONFIRM_EMAIL="CONFIRM_EMAIL",e.DELETE_ACCOUNT="DELETE_ACCOUNT",e.DELETE_PICTURE="DELETE_PICTURE",e.GET_ACCOUNT_SUSPENSION="GET_ACCOUNT_SUSPENSION",e.GET_BLOCKED_USERS="GET_BLOCKED_USERS",e.GET_FOLLOW_REQUESTS="GET_FOLLOW_REQUESTS",e.GET_REQUEST_DATA_EXPORT="GET_REQUEST_DATA_EXPORT",e.GET_USER_PROFILE="GET_USER_PROFILE",e.GET_USER_SANCTION="GET_USER_SANCTION",e.LOGIN_OR_REGISTER="LOGIN_OR_REGISTER",e.LOGOUT="LOGOUT",e.REQUEST_DATA_EXPORT="REQUEST_DATA_EXPORT",e.RESEND_ACCOUNT_CONFIRMATION_EMAIL="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e.RESET_USER_PASSWORD="RESET_USER_PASSWORD",e.RESET_USER_SPORT_PREFERENCES="RESET_USER_SPORT_PREFERENCES",e.SEND_PASSWORD_RESET_REQUEST="SEND_PASSWORD_RESET_REQUEST",e.UPDATE_FOLLOW_REQUESTS="UPDATE_FOLLOW_REQUESTS",e.UPDATE_USER_ACCOUNT="UPDATE_USER_ACCOUNT",e.UPDATE_USER_PICTURE="UPDATE_USER_PICTURE",e.UPDATE_USER_PROFILE="UPDATE_USER_PROFILE",e.UPDATE_USER_PREFERENCES="UPDATE_USER_PREFERENCES",e.UPDATE_USER_SPORT_PREFERENCES="UPDATE_USER_SPORT_PREFERENCES",e))(fA||{}),hA=(e=>(e.ACCOUNT_SUSPENSION="ACCOUNT_SUSPENSION",e.AUTH_TOKEN="AUTH_TOKEN",e.AUTH_USER_PROFILE="AUTH_USER_PROFILE",e.BLOCKED_USERS="BLOCKED_USERS",e.EXPORT_REQUEST="EXPORT_REQUEST",e.FOLLOW_REQUESTS="FOLLOW_REQUESTS",e.HAS_ADMIN_RIGHTS="HAS_ADMIN_RIGHTS",e.HAS_MODERATOR_RIGHTS="HAS_MODERATOR_RIGHTS",e.HAS_OWNER_RIGHTS="HAS_OWNER_RIGHTS",e.IS_AUTHENTICATED="IS_AUTHENTICATED",e.IS_PROFILE_NOT_LOADED="IS_PROFILE_NOT_LOADED",e.IS_SUCCESS="IS_SUCCESS",e.IS_SUSPENDED="IS_SUSPENDED",e.IS_REGISTRATION_SUCCESS="IS_REGISTRATION_SUCCESS",e.IS_PROFILE_LOADED="IS_PROFILE_LOADED",e.USER_LOADING="USER_LOADING",e.USER_SANCTION="USER_SANCTION",e))(hA||{}),SA=(e=>(e.CLEAR_AUTH_USER_TOKEN="CLEAR_AUTH_USER_TOKEN",e.SET_EXPORT_REQUEST="SET_EXPORT_REQUEST",e.SET_ACCOUNT_SUSPENSION="SET_ACCOUNT_SUSPENSION",e.SET_USER_SANCTION="SET_USER_SANCTION",e.UPDATE_AUTH_TOKEN="UPDATE_AUTH_TOKEN",e.UPDATE_AUTH_USER_PROFILE="UPDATE_AUTH_USER_PROFILE",e.UPDATE_BLOCKED_USERS="UPDATE_BLOCKED_USERS",e.UPDATE_FOLLOW_REQUESTS="UPDATE_FOLLOW_REQUESTS",e.UPDATE_IS_SUCCESS="UPDATE_USER_IS_SUCCESS",e.UPDATE_IS_REGISTRATION_SUCCESS="UPDATE_IS_REGISTRATION_SUCCESS",e.UPDATE_USER_LOADING="UPDATE_USER_LOADING",e))(SA||{}),AA=(e=>(e.ADD_EQUIPMENT="ADD_EQUIPMENT",e.DELETE_EQUIPMENT="DELETE_EQUIPMENT",e.GET_EQUIPMENT="GET_EQUIPMENT",e.GET_EQUIPMENT_TYPES="GET_EQUIPMENT_TYPES",e.GET_EQUIPMENTS="GET_EQUIPMENTS",e.REFRESH_EQUIPMENT="REFRESH_EQUIPMENT",e.UPDATE_EQUIPMENT="UPDATE_EQUIPMENT",e.UPDATE_EQUIPMENT_TYPE="UPDATE_EQUIPMENT_TYPE",e))(AA||{}),OA=(e=>(e.EQUIPMENT="EQUIPMENT",e.EQUIPMENTS="EQUIPMENTS",e.EQUIPMENT_TYPES="EQUIPMENT_TYPES",e.LOADING="LOADING",e))(OA||{}),IA=(e=>(e.ADD_EQUIPMENT="ADD_EQUIPMENT",e.REMOVE_EQUIPMENT="REMOVE_EQUIPMENT",e.SET_EQUIPMENTS="SET_EQUIPMENTS",e.SET_EQUIPMENT_TYPES="SET_EQUIPMENT_TYPES",e.SET_LOADING="SET_LOADING",e.UPDATE_EQUIPMENT="UPDATE_EQUIPMENT",e))(IA||{}),gA=(e=>(e.GET_UNREAD_STATUS="GET_UNREAD_STATUS",e.GET_NOTIFICATION_TYPES="GET_NOTIFICATION_TYPES",e.GET_NOTIFICATIONS="GET_NOTIFICATIONS",e.MARK_ALL_AS_READ="MARK_ALL_AS_READ",e.UPDATE_STATUS="UPDATE_STATUS",e))(gA||{}),RA=(e=>(e.NOTIFICATIONS="NOTIFICATIONS",e.PAGINATION="PAGINATION",e.UNREAD_STATUS="UNREAD_STATUS",e.TYPES="TYPES",e))(RA||{}),NA=(e=>(e.UPDATE_NOTIFICATIONS="UPDATE_NOTIFICATIONS",e.UPDATE_PAGINATION="UPDATE_PAGINATION",e.UPDATE_TYPES="UPDATE_TYPES",e.UPDATE_UNREAD_STATUS="UPDATE_UNREAD_STATUS",e.EMPTY_NOTIFICATIONS="EMPTY_NOTIFICATIONS",e))(NA||{}),vA=(e=>(e.AUTHORIZE_CLIENT="AUTHORIZE_CLIENT",e.CREATE_CLIENT="CREATE_CLIENT",e.DELETE_CLIENT="DELETE_CLIENT",e.GET_CLIENTS="GET_CLIENTS",e.GET_CLIENT_BY_CLIENT_ID="GET_CLIENT_BY_CLIENT_ID",e.GET_CLIENT_BY_ID="GET_CLIENT_BY_ID",e.REVOKE_ALL_TOKENS="REVOKE_ALL_TOKENS",e))(vA||{}),bA=(e=>(e.CLIENT="CLIENT",e.CLIENTS="CLIENTS",e.CLIENTS_PAGINATION="CLIENTS_PAGINATION",e.REVOCATION_SUCCESSFUL="REVOCATION_SUCCESSFUL",e))(bA||{}),CA=(e=>(e.EMPTY_CLIENT="EMPTY_CLIENT",e.SET_CLIENT="SET_CLIENT",e.SET_CLIENTS="SET_CLIENTS",e.SET_CLIENTS_PAGINATION="SET_CLIENTS_PAGINATION",e.SET_REVOCATION_SUCCESSFUL="SET_REVOCATION_SUCCESSFUL",e))(CA||{}),PA=(e=>(e.EMPTY_REPORTS="EMPTY_REPORTS",e.GET_REPORT="GET_REPORT",e.GET_REPORTS="GET_REPORTS",e.GET_UNRESOLVED_REPORTS_STATUS="GET_UNRESOLVED_REPORTS_STATUS",e.PROCESS_APPEAL="PROCESS_APPEAL",e.SUBMIT_ADMIN_ACTION="SUBMIT_ADMIN_ACTION",e.SUBMIT_REPORT="SUBMIT_REPORT",e.UPDATE_REPORT="UPDATE_REPORT",e))(PA||{}),DA=(e=>(e.REPORT="REPORT",e.REPORT_STATUS="REPORT_STATUS",e.REPORT_LOADING="REPORT_LOADING",e.REPORT_UPDATE_LOADING="REPORT_UPDATE_LOADING",e.REPORTS="REPORTS",e.REPORTS_PAGINATION="REPORTS_PAGINATION",e.UNRESOLVED_REPORTS_STATUS="UNRESOLVED_REPORTS_STATUS",e))(DA||{}),LA=(e=>(e.EMPTY_REPORT="EMPTY_REPORT",e.SET_REPORT="SET_REPORT",e.SET_REPORT_LOADING="SET_REPORT_LOADING",e.SET_REPORT_STATUS="SET_REPORT_STATUS",e.SET_REPORT_UPDATE_LOADING="SET_REPORT_UPDATE_LOADING",e.SET_REPORTS="SET_REPORTS",e.SET_REPORTS_PAGINATION="SET_REPORTS_PAGINATION",e.SET_UNRESOLVED_REPORTS_STATUS="SET_UNRESOLVED_REPORTS_STATUS",e))(LA||{}),yA=(e=>(e.GET_APPLICATION_CONFIG="GET_APPLICATION_CONFIG",e.GET_APPLICATION_PRIVACY_POLICY="GET_APPLICATION_PRIVACY_POLICY",e.GET_APPLICATION_STATS="GET_APPLICATION_STATS",e.UPDATE_APPLICATION_CONFIG="UPDATE_APPLICATION_CONFIG",e.UPDATE_APPLICATION_LANGUAGE="UPDATE_APPLICATION_LANGUAGE",e))(yA||{}),$A=(e=>(e.APP_CONFIG="APP_CONFIG",e.APP_LOADING="APP_LOADING",e.APP_STATS="APP_STATS",e.DARK_MODE="DARK_MODE",e.ERROR_MESSAGES="ERROR_MESSAGES",e.LANGUAGE="LANGUAGE",e.LOCALE="LOCALE",e.DISPLAY_OPTIONS="DISPLAY_OPTIONS",e))($A||{}),UA=(e=>(e.EMPTY_ERROR_MESSAGES="EMPTY_ERROR_MESSAGES",e.SET_ERROR_MESSAGES="SET_ERROR_MESSAGES",e.UPDATE_APPLICATION_CONFIG="UPDATE_APPLICATION_CONFIG",e.UPDATE_APPLICATION_LOADING="UPDATE_APPLICATION_LOADING",e.UPDATE_APPLICATION_PRIVACY_POLICY="UPDATE_APPLICATION_PRIVACY_POLICY",e.UPDATE_APPLICATION_STATS="UPDATE_APPLICATION_STATS",e.UPDATE_DARK_MODE="UPDATE_DARK_MODE",e.UPDATE_LANG="UPDATE_LANG",e.UPDATE_DISPLAY_OPTIONS="UPDATE_DISPLAY_OPTIONS",e))(UA||{}),kA=(e=>(e.GET_SPORTS="GET_SPORTS",e.UPDATE_SPORTS="UPDATE_SPORTS",e))(kA||{}),wA=(e=>(e.SPORTS="SPORTS",e))(wA||{}),MA=(e=>(e.SET_SPORTS="SET_SPORTS",e))(MA||{}),WA=(e=>(e.GET_USER_SPORT_STATS="GET_USER_SPORT_STATS",e.GET_USER_STATS="GET_USER_STATS",e))(WA||{}),FA=(e=>(e.USER_SPORT_STATS="USER_SPORT_STATS",e.USER_STATS="USER_STATS",e.STATS_LOADING="STATS_LOADING",e.TOTAL_WORKOUTS="TOTAL_WORKOUTS",e))(FA||{}),zA=(e=>(e.EMPTY_USER_SPORT_STATS="EMPTY_USER_SPORT_STATS",e.EMPTY_USER_STATS="EMPTY_USER_STATS",e.UPDATE_USER_SPORT_STATS="UPDATE_USER_SPORT_STATS",e.UPDATE_USER_STATS="UPDATE_USER_STATS",e.UPDATE_STATS_LOADING="UPDATE_STATS_LOADING",e.UPDATE_TOTAL_WORKOUTS="UPDATE_TOTAL_WORKOUTS",e))(zA||{}),xA=(e=>(e.EMPTY_USER="EMPTY_USER",e.EMPTY_USERS="EMPTY_USERS",e.GET_USER="GET_USER",e.GET_USER_SANCTIONS="GET_USER_SANCTIONS",e.GET_USER_WORKOUTS="GET_USER_WORKOUTS",e.GET_USERS="GET_USERS",e.GET_USERS_FOR_ADMIN="GET_USERS_FOR_ADMIN",e.UPDATE_USER="UPDATE_USER",e.DELETE_USER_ACCOUNT="DELETE_USER_ACCOUNT",e.UPDATE_RELATIONSHIP="UPDATE_RELATIONSHIP",e.GET_RELATIONSHIPS="GET_RELATIONSHIPS",e.EMPTY_RELATIONSHIPS="EMPTY_RELATIONSHIPS",e))(xA||{}),BA=(e=>(e.USER="USER",e.USER_SANCTIONS="USER_SANCTIONS",e.USER_SANCTIONS_LOADING="USER_SANCTIONS_LOADING",e.USER_SANCTIONS_PAGINATION="USER_SANCTIONS_PAGINATION",e.USER_CURRENT_REPORTING="USER_CURRENT_REPORTING",e.USER_RELATIONSHIPS="USER_RELATIONSHIPS",e.USER_WORKOUTS="USER_WORKOUTS",e.USER_WORKOUTS_LOADING="USER_WORKOUTS_LOADING",e.USERS="USERS",e.USERS_IS_SUCCESS="USERS_IS_SUCCESS",e.USERS_LOADING="USERS_LOADING",e.USERS_PAGINATION="USERS_PAGINATION",e))(BA||{}),GA=(e=>(e.UPDATE_USER="UPDATE_USER",e.UPDATE_USER_SANCTIONS="UPDATE_USER_SANCTIONS",e.UPDATE_USER_SANCTIONS_LOADING="UPDATE_USER_SANCTIONS_LOADING",e.UPDATE_USER_SANCTIONS_PAGINATION="UPDATE_USER_SANCTIONS_PAGINATION",e.UPDATE_USER_CURRENT_REPORTING="UPDATE_USER_CURRENT_REPORTING",e.UPDATE_USER_IN_USERS="UPDATE_USER_IN_USERS",e.UPDATE_USER_IN_RELATIONSHIPS="UPDATE_USER_IN_RELATIONSHIPS",e.UPDATE_USER_RELATIONSHIPS="UPDATE_USER_RELATIONSHIPS",e.UPDATE_USER_WORKOUTS="UPDATE_USER_WORKOUTS",e.UPDATE_USER_WORKOUTS_LOADING="UPDATE_USER_WORKOUTS_LOADING",e.UPDATE_USERS="UPDATE_USERS",e.UPDATE_USERS_LOADING="UPDATE_USERS_LOADING",e.UPDATE_USERS_PAGINATION="UPDATE_USERS_PAGINATION",e.UPDATE_IS_SUCCESS="UPDATE_IS_SUCCESS",e))(GA||{}),VA=(e=>(e.ADD_COMMENT="ADD_COMMENT",e.ADD_WORKOUT="ADD_WORKOUT",e.ADD_WORKOUT_WITHOUT_GPX="ADD_WORKOUT_WITHOUT_GPX",e.DELETE_WORKOUT="DELETE_WORKOUT",e.DELETE_WORKOUT_COMMENT="DELETE_WORKOUT_COMMENT",e.EDIT_WORKOUT="EDIT_WORKOUT",e.EDIT_WORKOUT_COMMENT="EDIT_WORKOUT_COMMENT",e.EDIT_WORKOUT_CONTENT="EDIT_WORKOUT_CONTENT",e.GET_CALENDAR_WORKOUTS="GET_CALENDAR_WORKOUTS",e.GET_AUTH_USER_WORKOUTS="GET_AUTH_USER_WORKOUTS",e.GET_TIMELINE_WORKOUTS="GET_TIMELINE_WORKOUTS",e.GET_MORE_TIMELINE_WORKOUTS="GET_MORE_TIMELINE_WORKOUTS",e.GET_WORKOUT_DATA="GET_WORKOUT_DATA",e.GET_WORKOUT_COMMENT="GET_WORKOUT_COMMENT",e.GET_WORKOUT_COMMENTS="GET_WORKOUT_COMMENTS",e.LIKE_COMMENT="LIKE_COMMENT",e.LIKE_WORKOUT="LIKE_WORKOUT",e.MAKE_APPEAL="MAKE_COMMENT_APPEAL",e.UNDO_LIKE_COMMENT="UNDO_LIKE_COMMENT",e.UNDO_LIKE_WORKOUT="UNDO_LIKE_WORKOUT",e))(VA||{}),HA=(e=>(e.APPEAL_LOADING="APPEAL_LOADING",e.CALENDAR_WORKOUTS="CALENDAR_WORKOUTS",e.CURRENT_REPORTING="CURRENT_REPORTING",e.SUCCESS="SUCCESS",e.TIMELINE_WORKOUTS="TIMELINE_WORKOUTS",e.AUTH_USER_WORKOUTS="AUTH_USER_WORKOUTS",e.WORKOUT_CONTENT_EDITION="WORKOUT_CONTENT_EDITION",e.WORKOUT_DATA="WORKOUT_DATA",e.WORKOUTS_PAGINATION="WORKOUTS_PAGINATION",e))(HA||{}),Ma=(e=>(e.ADD_TIMELINE_WORKOUTS="ADD_TIMELINE_WORKOUTS",e.EMPTY_WORKOUTS="EMPTY_WORKOUTS",e.EMPTY_CALENDAR_WORKOUTS="EMPTY_CALENDAR_WORKOUTS",e.EMPTY_WORKOUT="EMPTY_WORKOUT",e.SET_APPEAL_LOADING="SET_APPEAL_LOADING",e.SET_CALENDAR_WORKOUTS="SET_CALENDAR_WORKOUTS",e.SET_TIMELINE_WORKOUTS="SET_TIMELINE_WORKOUTS",e.SET_USER_WORKOUTS="SET_USER_WORKOUTS",e.SET_WORKOUT="SET_WORKOUT",e.SET_WORKOUT_GPX="SET_WORKOUT_GPX",e.SET_WORKOUT_CHART_DATA="SET_WORKOUT_CHART_DATA",e.SET_WORKOUT_CONTENT="SET_WORKOUT_CONTENT",e.SET_WORKOUT_CONTENT_LOADING="SET_WORKOUT_CONTENT_LOADING",e.SET_WORKOUT_CONTENT_TYPE="SET_WORKOUT_CONTENT_TYPE",e.SET_WORKOUT_LOADING="SET_WORKOUT_LOADING",e.SET_WORKOUTS_PAGINATION="SET_WORKOUTS_PAGINATION",e.ADD_WORKOUT_COMMENT="ADD_WORKOUT_COMMENT",e.SET_WORKOUT_COMMENTS="SET_WORKOUT_COMMENTS",e.SET_COMMENT_LOADING="SET_COMMENT_LOADING",e.SET_CURRENT_COMMENT_EDITION="SET_CURRENT_COMMENT_EDITION",e.SET_CURRENT_REPORTING="SET_CURRENT_REPORTING",e.SET_SUCCESS="SET_SUCCESS",e))(Ma||{});const te={ACTIONS:yA,GETTERS:$A,MUTATIONS:UA},Ht={ACTIONS:kA,GETTERS:wA,MUTATIONS:MA},Mt={ACTIONS:WA,GETTERS:FA,MUTATIONS:zA},K={ACTIONS:fA,GETTERS:hA,MUTATIONS:SA},st={ACTIONS:vA,GETTERS:bA,MUTATIONS:CA},Et={ACTIONS:gA,GETTERS:RA,MUTATIONS:NA},De={ACTIONS:PA,GETTERS:DA,MUTATIONS:LA},ce={ACTIONS:xA,GETTERS:BA,MUTATIONS:GA},J={ACTIONS:VA,GETTERS:HA,MUTATIONS:Ma},xe={ACTIONS:AA,GETTERS:OA,MUTATIONS:IA},nr=()=>"/api/",ne=(e,t,n="UNKNOWN")=>{var o;if(t&&t.message==="canceled")return;const a=t!=null&&t.response&&t.response.data?t.response.data:null;if(((o=t==null?void 0:t.response)==null?void 0:o.status)===401&&(a==null?void 0:a.error)==="invalid_token"){localStorage.removeItem("authToken"),e.dispatch(K.ACTIONS.CHECK_AUTH_USER);return}const s=YC(t,e),i=s?"":t?t.response?t.response.status===413?"file size is greater than the allowed size":a!=null&&a.message?a.message:n:t.message?t.message:n:n;e.commit(te.MUTATIONS.SET_ERROR_MESSAGES,s||(i.includes(` -`)?i.split(` -`).filter(r=>r!=="").map(r=>`api.ERROR.${r}`):`api.ERROR.${i}`))},YC=(e,t)=>{var n;if((n=e==null?void 0:e.response)!=null&&n.data){const a={...e.response.data};if("equipment_id"in a){const s=t.getters[xe.GETTERS.EQUIPMENTS].filter(i=>i.id===a.equipment_id);return{equipmentId:a.equipment_id,equipmentLabel:s.length===0?null:s[0].label,status:a.status}}}return null},XC={class:"user-picture"},QC=["alt","src"],ZC={key:1,class:"no-picture"},Qt=X({__name:"UserPicture",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=z(()=>n.value.picture?`${nr()}users/${n.value.username}/picture?${Date.now()}`:"");return(s,i)=>(h(),v("div",XC,[a.value!==""?(h(),v("img",{key:0,class:"profile-user-img",alt:s.$t("user.USER_PICTURE"),src:a.value},null,8,QC)):(h(),v("div",ZC,i[0]||(i[0]=[p("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1)])))]))}});function JC(){return KA().__VUE_DEVTOOLS_GLOBAL_HOOK__}function KA(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const e2=typeof Proxy=="function",t2="devtools-plugin:setup",n2="plugin:settings:set";let Xs,Md;function a2(){var e;return Xs!==void 0||(typeof window<"u"&&window.performance?(Xs=!0,Md=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(Xs=!0,Md=globalThis.perf_hooks.performance):Xs=!1),Xs}function s2(){return a2()?Md.now():Date.now()}class i2{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const a={};if(t.settings)for(const o in t.settings){const r=t.settings[o];a[o]=r.defaultValue}const s=`__vue-devtools-plugin-settings__${t.id}`;let i=Object.assign({},a);try{const o=localStorage.getItem(s),r=JSON.parse(o);Object.assign(i,r)}catch{}this.fallbacks={getSettings(){return i},setSettings(o){try{localStorage.setItem(s,JSON.stringify(o))}catch{}i=o},now(){return s2()}},n&&n.on(n2,(o,r)=>{o===this.plugin.id&&this.fallbacks.setSettings(r)}),this.proxiedOn=new Proxy({},{get:(o,r)=>this.target?this.target.on[r]:(...u)=>{this.onQueue.push({method:r,args:u})}}),this.proxiedTarget=new Proxy({},{get:(o,r)=>this.target?this.target[r]:r==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(r)?(...u)=>(this.targetQueue.push({method:r,args:u,resolve:()=>{}}),this.fallbacks[r](...u)):(...u)=>new Promise(l=>{this.targetQueue.push({method:r,args:u,resolve:l})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function o2(e,t){const n=e,a=KA(),s=JC(),i=e2&&n.enableEarlyProxy;if(s&&(a.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!i))s.emit(t2,e,t);else{const o=i?new i2(n,s):null;(a.__VUE_DEVTOOLS_PLUGINS__=a.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:o}),o&&t(o.proxiedTarget)}}/*! - * vuex v4.1.0 - * (c) 2022 Evan You - * @license MIT - */var qA="store";function jA(e){return e===void 0&&(e=null),Ut(e!==null?e:qA)}function yi(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}function r2(e){return e!==null&&typeof e=="object"}function u2(e){return e&&typeof e.then=="function"}function l2(e,t){return function(){return e(t)}}function YA(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var a=t.indexOf(e);a>-1&&t.splice(a,1)}}function XA(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;Sl(e,n,[],e._modules.root,!0),jE(e,n,t)}function jE(e,t,n){var a=e._state,s=e._scope;e.getters={},e._makeLocalGettersCache=Object.create(null);var i=e._wrappedGetters,o={},r={},u=h0(!0);u.run(function(){yi(i,function(l,d){o[d]=l2(l,e),r[d]=z(function(){return o[d]()}),Object.defineProperty(e.getters,d,{get:function(){return r[d].value},enumerable:!0})})}),e._state=kt({data:t}),e._scope=u,e.strict&&T2(e),a&&n&&e._withCommit(function(){a.data=null}),s&&s.stop()}function Sl(e,t,n,a,s){var i=!n.length,o=e._modules.getNamespace(n);if(a.namespaced&&(e._modulesNamespaceMap[o],e._modulesNamespaceMap[o]=a),!i&&!s){var r=YE(t,n.slice(0,-1)),u=n[n.length-1];e._withCommit(function(){r[u]=a.state})}var l=a.context=c2(e,o,n);a.forEachMutation(function(d,E){var c=o+E;d2(e,c,d,l)}),a.forEachAction(function(d,E){var c=d.root?E:o+E,T=d.handler||d;E2(e,c,T,l)}),a.forEachGetter(function(d,E){var c=o+E;p2(e,c,d,l)}),a.forEachChild(function(d,E){Sl(e,t,n.concat(E),d,s)})}function c2(e,t,n){var a=t==="",s={dispatch:a?e.dispatch:function(i,o,r){var u=Eu(i,o,r),l=u.payload,d=u.options,E=u.type;return(!d||!d.root)&&(E=t+E),e.dispatch(E,l)},commit:a?e.commit:function(i,o,r){var u=Eu(i,o,r),l=u.payload,d=u.options,E=u.type;(!d||!d.root)&&(E=t+E),e.commit(E,l,d)}};return Object.defineProperties(s,{getters:{get:a?function(){return e.getters}:function(){return QA(e,t)}},state:{get:function(){return YE(e.state,n)}}}),s}function QA(e,t){if(!e._makeLocalGettersCache[t]){var n={},a=t.length;Object.keys(e.getters).forEach(function(s){if(s.slice(0,a)===t){var i=s.slice(a);Object.defineProperty(n,i,{get:function(){return e.getters[s]},enumerable:!0})}}),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function d2(e,t,n,a){var s=e._mutations[t]||(e._mutations[t]=[]);s.push(function(o){n.call(e,a.state,o)})}function E2(e,t,n,a){var s=e._actions[t]||(e._actions[t]=[]);s.push(function(o){var r=n.call(e,{dispatch:a.dispatch,commit:a.commit,getters:a.getters,state:a.state,rootGetters:e.getters,rootState:e.state},o);return u2(r)||(r=Promise.resolve(r)),e._devtoolHook?r.catch(function(u){throw e._devtoolHook.emit("vuex:error",u),u}):r})}function p2(e,t,n,a){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(i){return n(a.state,a.getters,i.state,i.getters)})}function T2(e){Ce(function(){return e._state.data},function(){},{deep:!0,flush:"sync"})}function YE(e,t){return t.reduce(function(n,a){return n[a]},e)}function Eu(e,t,n){return r2(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}var m2="vuex bindings",vm="vuex:mutations",rc="vuex:actions",Qs="vuex",_2=0;function f2(e,t){o2({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[m2]},function(n){n.addTimelineLayer({id:vm,label:"Vuex Mutations",color:bm}),n.addTimelineLayer({id:rc,label:"Vuex Actions",color:bm}),n.addInspector({id:Qs,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree(function(a){if(a.app===e&&a.inspectorId===Qs)if(a.filter){var s=[];t1(s,t._modules.root,a.filter,""),a.rootNodes=s}else a.rootNodes=[e1(t._modules.root,"")]}),n.on.getInspectorState(function(a){if(a.app===e&&a.inspectorId===Qs){var s=a.nodeId;QA(t,s),a.state=A2(I2(t._modules,s),s==="root"?t.getters:t._makeLocalGettersCache,s)}}),n.on.editInspectorState(function(a){if(a.app===e&&a.inspectorId===Qs){var s=a.nodeId,i=a.path;s!=="root"&&(i=s.split("/").filter(Boolean).concat(i)),t._withCommit(function(){a.set(t._state.data,i,a.state.value)})}}),t.subscribe(function(a,s){var i={};a.payload&&(i.payload=a.payload),i.state=s,n.notifyComponentUpdate(),n.sendInspectorTree(Qs),n.sendInspectorState(Qs),n.addTimelineEvent({layerId:vm,event:{time:Date.now(),title:a.type,data:i}})}),t.subscribeAction({before:function(a,s){var i={};a.payload&&(i.payload=a.payload),a._id=_2++,a._time=Date.now(),i.state=s,n.addTimelineEvent({layerId:rc,event:{time:a._time,title:a.type,groupId:a._id,subtitle:"start",data:i}})},after:function(a,s){var i={},o=Date.now()-a._time;i.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},a.payload&&(i.payload=a.payload),i.state=s,n.addTimelineEvent({layerId:rc,event:{time:Date.now(),title:a.type,groupId:a._id,subtitle:"end",data:i}})}})})}var bm=8702998,h2=6710886,S2=16777215,ZA={label:"namespaced",textColor:S2,backgroundColor:h2};function JA(e){return e&&e!=="root"?e.split("/").slice(-2,-1)[0]:"Root"}function e1(e,t){return{id:t||"root",label:JA(t),tags:e.namespaced?[ZA]:[],children:Object.keys(e._children).map(function(n){return e1(e._children[n],t+n+"/")})}}function t1(e,t,n,a){a.includes(n)&&e.push({id:a||"root",label:a.endsWith("/")?a.slice(0,a.length-1):a||"Root",tags:t.namespaced?[ZA]:[]}),Object.keys(t._children).forEach(function(s){t1(e,t._children[s],n,a+s+"/")})}function A2(e,t,n){t=n==="root"?t:t[n];var a=Object.keys(t),s={state:Object.keys(e.state).map(function(o){return{key:o,editable:!0,value:e.state[o]}})};if(a.length){var i=O2(t);s.getters=Object.keys(i).map(function(o){return{key:o.endsWith("/")?JA(o):o,editable:!1,value:Wd(function(){return i[o]})}})}return s}function O2(e){var t={};return Object.keys(e).forEach(function(n){var a=n.split("/");if(a.length>1){var s=t,i=a.pop();a.forEach(function(o){s[o]||(s[o]={_custom:{value:{},display:o,tooltip:"Module",abstract:!0}}),s=s[o]._custom.value}),s[i]=Wd(function(){return e[n]})}else t[n]=Wd(function(){return e[n]})}),t}function I2(e,t){var n=t.split("/").filter(function(a){return a});return n.reduce(function(a,s,i){var o=a[s];if(!o)throw new Error('Missing module "'+s+'" for path "'+t+'".');return i===n.length-1?o:o._children},t==="root"?e:e.root._children)}function Wd(e){try{return e()}catch(t){return t}}var ua=function(t,n){this.runtime=n,this._children=Object.create(null),this._rawModule=t;var a=t.state;this.state=(typeof a=="function"?a():a)||{}},n1={namespaced:{configurable:!0}};n1.namespaced.get=function(){return!!this._rawModule.namespaced};ua.prototype.addChild=function(t,n){this._children[t]=n};ua.prototype.removeChild=function(t){delete this._children[t]};ua.prototype.getChild=function(t){return this._children[t]};ua.prototype.hasChild=function(t){return t in this._children};ua.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)};ua.prototype.forEachChild=function(t){yi(this._children,t)};ua.prototype.forEachGetter=function(t){this._rawModule.getters&&yi(this._rawModule.getters,t)};ua.prototype.forEachAction=function(t){this._rawModule.actions&&yi(this._rawModule.actions,t)};ua.prototype.forEachMutation=function(t){this._rawModule.mutations&&yi(this._rawModule.mutations,t)};Object.defineProperties(ua.prototype,n1);var Gs=function(t){this.register([],t,!1)};Gs.prototype.get=function(t){return t.reduce(function(n,a){return n.getChild(a)},this.root)};Gs.prototype.getNamespace=function(t){var n=this.root;return t.reduce(function(a,s){return n=n.getChild(s),a+(n.namespaced?s+"/":"")},"")};Gs.prototype.update=function(t){a1([],this.root,t)};Gs.prototype.register=function(t,n,a){var s=this;a===void 0&&(a=!0);var i=new ua(n,a);if(t.length===0)this.root=i;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],i)}n.modules&&yi(n.modules,function(r,u){s.register(t.concat(u),r,a)})};Gs.prototype.unregister=function(t){var n=this.get(t.slice(0,-1)),a=t[t.length-1],s=n.getChild(a);s&&s.runtime&&n.removeChild(a)};Gs.prototype.isRegistered=function(t){var n=this.get(t.slice(0,-1)),a=t[t.length-1];return n?n.hasChild(a):!1};function a1(e,t,n){if(t.update(n),n.modules)for(var a in n.modules){if(!t.getChild(a))return;a1(e.concat(a),t.getChild(a),n.modules[a])}}function g2(e){return new Dn(e)}var Dn=function(t){var n=this;t===void 0&&(t={});var a=t.plugins;a===void 0&&(a=[]);var s=t.strict;s===void 0&&(s=!1);var i=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new Gs(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=i;var o=this,r=this,u=r.dispatch,l=r.commit;this.dispatch=function(c,T){return u.call(o,c,T)},this.commit=function(c,T,_){return l.call(o,c,T,_)},this.strict=s;var d=this._modules.root.state;Sl(this,d,[],this._modules.root),jE(this,d),a.forEach(function(E){return E(n)})},XE={state:{configurable:!0}};Dn.prototype.install=function(t,n){t.provide(n||qA,this),t.config.globalProperties.$store=this;var a=this._devtools!==void 0?this._devtools:!1;a&&f2(t,this)};XE.state.get=function(){return this._state.data};XE.state.set=function(e){};Dn.prototype.commit=function(t,n,a){var s=this,i=Eu(t,n,a),o=i.type,r=i.payload,u={type:o,payload:r},l=this._mutations[o];l&&(this._withCommit(function(){l.forEach(function(E){E(r)})}),this._subscribers.slice().forEach(function(d){return d(u,s.state)}))};Dn.prototype.dispatch=function(t,n){var a=this,s=Eu(t,n),i=s.type,o=s.payload,r={type:i,payload:o},u=this._actions[i];if(u){try{this._actionSubscribers.slice().filter(function(d){return d.before}).forEach(function(d){return d.before(r,a.state)})}catch{}var l=u.length>1?Promise.all(u.map(function(d){return d(o)})):u[0](o);return new Promise(function(d,E){l.then(function(c){try{a._actionSubscribers.filter(function(T){return T.after}).forEach(function(T){return T.after(r,a.state)})}catch{}d(c)},function(c){try{a._actionSubscribers.filter(function(T){return T.error}).forEach(function(T){return T.error(r,a.state,c)})}catch{}E(c)})})}};Dn.prototype.subscribe=function(t,n){return YA(t,this._subscribers,n)};Dn.prototype.subscribeAction=function(t,n){var a=typeof t=="function"?{before:t}:t;return YA(a,this._actionSubscribers,n)};Dn.prototype.watch=function(t,n,a){var s=this;return Ce(function(){return t(s.state,s.getters)},n,Object.assign({},a))};Dn.prototype.replaceState=function(t){var n=this;this._withCommit(function(){n._state.data=t})};Dn.prototype.registerModule=function(t,n,a){a===void 0&&(a={}),typeof t=="string"&&(t=[t]),this._modules.register(t,n),Sl(this,this.state,t,this._modules.get(t),a.preserveState),jE(this,this.state)};Dn.prototype.unregisterModule=function(t){var n=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var a=YE(n.state,t.slice(0,-1));delete a[t[t.length-1]]}),XA(this)};Dn.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)};Dn.prototype.hotUpdate=function(t){this._modules.update(t),XA(this,!0)};Dn.prototype._withCommit=function(t){var n=this._committing;this._committing=!0,t(),this._committing=n};Object.defineProperties(Dn.prototype,XE);function Le(){return jA()}function qe(){const e=Le(),t=z(()=>e.getters[te.GETTERS.LANGUAGE]),n=z(()=>e.getters[te.GETTERS.APP_CONFIG]),a=z(()=>e.getters[te.GETTERS.APP_LOADING]),s=z(()=>e.getters[te.GETTERS.DISPLAY_OPTIONS]),i=z(()=>e.getters[te.GETTERS.DARK_MODE]),o=z(()=>l()),r=z(()=>e.getters[te.GETTERS.ERROR_MESSAGES]),u=z(()=>e.getters[te.GETTERS.LOCALE]);function l(){return i.value===null&&window.matchMedia("(prefers-color-scheme: dark)").matches?!0:i.value===!0}return{appConfig:n,appLanguage:t,appLoading:a,darkMode:i,darkTheme:o,displayOptions:s,errorMessages:r,locale:u}}/*! - * vue-router v4.5.0 - * (c) 2024 Eduardo San Martin Morote - * @license MIT - */const ai=typeof document<"u";function s1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function R2(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&s1(e.default)}const ht=Object.assign;function uc(e,t){const n={};for(const a in t){const s=t[a];n[a]=sa(s)?s.map(e):e(s)}return n}const Eo=()=>{},sa=Array.isArray,i1=/#/g,N2=/&/g,v2=/\//g,b2=/=/g,C2=/\?/g,o1=/\+/g,P2=/%5B/g,D2=/%5D/g,r1=/%5E/g,L2=/%60/g,u1=/%7B/g,y2=/%7C/g,l1=/%7D/g,$2=/%20/g;function QE(e){return encodeURI(""+e).replace(y2,"|").replace(P2,"[").replace(D2,"]")}function U2(e){return QE(e).replace(u1,"{").replace(l1,"}").replace(r1,"^")}function Fd(e){return QE(e).replace(o1,"%2B").replace($2,"+").replace(i1,"%23").replace(N2,"%26").replace(L2,"`").replace(u1,"{").replace(l1,"}").replace(r1,"^")}function k2(e){return Fd(e).replace(b2,"%3D")}function w2(e){return QE(e).replace(i1,"%23").replace(C2,"%3F")}function M2(e){return e==null?"":w2(e).replace(v2,"%2F")}function Uo(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const W2=/\/$/,F2=e=>e.replace(W2,"");function lc(e,t,n="/"){let a,s={},i="",o="";const r=t.indexOf("#");let u=t.indexOf("?");return r=0&&(u=-1),u>-1&&(a=t.slice(0,u),i=t.slice(u+1,r>-1?r:t.length),s=e(i)),r>-1&&(a=a||t.slice(0,r),o=t.slice(r,t.length)),a=G2(a??t,n),{fullPath:a+(i&&"?")+i+o,path:a,query:s,hash:Uo(o)}}function z2(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Cm(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function x2(e,t,n){const a=t.matched.length-1,s=n.matched.length-1;return a>-1&&a===s&&hi(t.matched[a],n.matched[s])&&c1(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function hi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function c1(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!B2(e[n],t[n]))return!1;return!0}function B2(e,t){return sa(e)?Pm(e,t):sa(t)?Pm(t,e):e===t}function Pm(e,t){return sa(t)?e.length===t.length&&e.every((n,a)=>n===t[a]):e.length===1&&e[0]===t}function G2(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),a=e.split("/"),s=a[a.length-1];(s===".."||s===".")&&a.push("");let i=n.length-1,o,r;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+a.slice(o).join("/")}const Ka={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var ko;(function(e){e.pop="pop",e.push="push"})(ko||(ko={}));var po;(function(e){e.back="back",e.forward="forward",e.unknown=""})(po||(po={}));function V2(e){if(!e)if(ai){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),F2(e)}const H2=/^[^#]+#/;function K2(e,t){return e.replace(H2,"#")+t}function q2(e,t){const n=document.documentElement.getBoundingClientRect(),a=e.getBoundingClientRect();return{behavior:t.behavior,left:a.left-n.left-(t.left||0),top:a.top-n.top-(t.top||0)}}const Al=()=>({left:window.scrollX,top:window.scrollY});function j2(e){let t;if("el"in e){const n=e.el,a=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?a?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=q2(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Dm(e,t){return(history.state?history.state.position-t:-1)+e}const zd=new Map;function Y2(e,t){zd.set(e,t)}function X2(e){const t=zd.get(e);return zd.delete(e),t}let Q2=()=>location.protocol+"//"+location.host;function d1(e,t){const{pathname:n,search:a,hash:s}=t,i=e.indexOf("#");if(i>-1){let r=s.includes(e.slice(i))?e.slice(i).length:1,u=s.slice(r);return u[0]!=="/"&&(u="/"+u),Cm(u,"")}return Cm(n,e)+a+s}function Z2(e,t,n,a){let s=[],i=[],o=null;const r=({state:c})=>{const T=d1(e,location),_=n.value,f=t.value;let O=0;if(c){if(n.value=T,t.value=c,o&&o===_){o=null;return}O=f?c.position-f.position:0}else a(T);s.forEach(A=>{A(n.value,_,{delta:O,type:ko.pop,direction:O?O>0?po.forward:po.back:po.unknown})})};function u(){o=n.value}function l(c){s.push(c);const T=()=>{const _=s.indexOf(c);_>-1&&s.splice(_,1)};return i.push(T),T}function d(){const{history:c}=window;c.state&&c.replaceState(ht({},c.state,{scroll:Al()}),"")}function E(){for(const c of i)c();i=[],window.removeEventListener("popstate",r),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",r),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:u,listen:l,destroy:E}}function Lm(e,t,n,a=!1,s=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:s?Al():null}}function J2(e){const{history:t,location:n}=window,a={value:d1(e,n)},s={value:t.state};s.value||i(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(u,l,d){const E=e.indexOf("#"),c=E>-1?(n.host&&document.querySelector("base")?e:e.slice(E))+u:Q2()+e+u;try{t[d?"replaceState":"pushState"](l,"",c),s.value=l}catch(T){console.error(T),n[d?"replace":"assign"](c)}}function o(u,l){const d=ht({},t.state,Lm(s.value.back,u,s.value.forward,!0),l,{position:s.value.position});i(u,d,!0),a.value=u}function r(u,l){const d=ht({},s.value,t.state,{forward:u,scroll:Al()});i(d.current,d,!0);const E=ht({},Lm(a.value,u,null),{position:d.position+1},l);i(u,E,!1),a.value=u}return{location:a,state:s,push:r,replace:o}}function eP(e){e=V2(e);const t=J2(e),n=Z2(e,t.state,t.location,t.replace);function a(i,o=!0){o||n.pauseListeners(),history.go(i)}const s=ht({location:"",base:e,go:a,createHref:K2.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function tP(e){return typeof e=="string"||e&&typeof e=="object"}function E1(e){return typeof e=="string"||typeof e=="symbol"}const p1=Symbol("");var ym;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(ym||(ym={}));function Si(e,t){return ht(new Error,{type:e,[p1]:!0},t)}function va(e,t){return e instanceof Error&&p1 in e&&(t==null||!!(e.type&t))}const $m="[^/]+?",nP={sensitive:!1,strict:!1,start:!0,end:!0},aP=/[.+*?^${}()[\]/\\]/g;function sP(e,t){const n=ht({},nP,t),a=[];let s=n.start?"^":"";const i=[];for(const l of e){const d=l.length?[]:[90];n.strict&&!l.length&&(s+="/");for(let E=0;Et.length?t.length===1&&t[0]===80?1:-1:0}function T1(e,t){let n=0;const a=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const oP={type:0,value:""},rP=/[a-zA-Z0-9_]/;function uP(e){if(!e)return[[]];if(e==="/")return[[oP]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(T){throw new Error(`ERR (${n})/"${l}": ${T}`)}let n=0,a=n;const s=[];let i;function o(){i&&s.push(i),i=[]}let r=0,u,l="",d="";function E(){l&&(n===0?i.push({type:0,value:l}):n===1||n===2||n===3?(i.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:l,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),l="")}function c(){l+=u}for(;r{o(g)}:Eo}function o(E){if(E1(E)){const c=a.get(E);c&&(a.delete(E),n.splice(n.indexOf(c),1),c.children.forEach(o),c.alias.forEach(o))}else{const c=n.indexOf(E);c>-1&&(n.splice(c,1),E.record.name&&a.delete(E.record.name),E.children.forEach(o),E.alias.forEach(o))}}function r(){return n}function u(E){const c=pP(E,n);n.splice(c,0,E),E.record.name&&!Mm(E)&&a.set(E.record.name,E)}function l(E,c){let T,_={},f,O;if("name"in E&&E.name){if(T=a.get(E.name),!T)throw Si(1,{location:E});O=T.record.name,_=ht(km(c.params,T.keys.filter(g=>!g.optional).concat(T.parent?T.parent.keys.filter(g=>g.optional):[]).map(g=>g.name)),E.params&&km(E.params,T.keys.map(g=>g.name))),f=T.stringify(_)}else if(E.path!=null)f=E.path,T=n.find(g=>g.re.test(f)),T&&(_=T.parse(f),O=T.record.name);else{if(T=c.name?a.get(c.name):n.find(g=>g.re.test(c.path)),!T)throw Si(1,{location:E,currentLocation:c});O=T.record.name,_=ht({},c.params,E.params),f=T.stringify(_)}const A=[];let R=T;for(;R;)A.unshift(R.record),R=R.parent;return{name:O,path:f,params:_,matched:A,meta:EP(A)}}e.forEach(E=>i(E));function d(){n.length=0,a.clear()}return{addRoute:i,resolve:l,removeRoute:o,clearRoutes:d,getRoutes:r,getRecordMatcher:s}}function km(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function wm(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:dP(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function dP(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function Mm(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function EP(e){return e.reduce((t,n)=>ht(t,n.meta),{})}function Wm(e,t){const n={};for(const a in e)n[a]=a in t?t[a]:e[a];return n}function pP(e,t){let n=0,a=t.length;for(;n!==a;){const i=n+a>>1;T1(e,t[i])<0?a=i:n=i+1}const s=TP(e);return s&&(a=t.lastIndexOf(s,a-1)),a}function TP(e){let t=e;for(;t=t.parent;)if(m1(t)&&T1(e,t)===0)return t}function m1({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function mP(e){const t={};if(e===""||e==="?")return t;const a=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;si&&Fd(i)):[a&&Fd(a)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function _P(e){const t={};for(const n in e){const a=e[n];a!==void 0&&(t[n]=sa(a)?a.map(s=>s==null?null:""+s):a==null?a:""+a)}return t}const fP=Symbol(""),zm=Symbol(""),Ol=Symbol(""),ZE=Symbol(""),xd=Symbol("");function Ki(){let e=[];function t(a){return e.push(a),()=>{const s=e.indexOf(a);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function ts(e,t,n,a,s,i=o=>o()){const o=a&&(a.enterCallbacks[s]=a.enterCallbacks[s]||[]);return()=>new Promise((r,u)=>{const l=c=>{c===!1?u(Si(4,{from:n,to:t})):c instanceof Error?u(c):tP(c)?u(Si(2,{from:t,to:c})):(o&&a.enterCallbacks[s]===o&&typeof c=="function"&&o.push(c),r())},d=i(()=>e.call(a&&a.instances[s],t,n,l));let E=Promise.resolve(d);e.length<3&&(E=E.then(l)),E.catch(c=>u(c))})}function cc(e,t,n,a,s=i=>i()){const i=[];for(const o of e)for(const r in o.components){let u=o.components[r];if(!(t!=="beforeRouteEnter"&&!o.instances[r]))if(s1(u)){const d=(u.__vccOpts||u)[t];d&&i.push(ts(d,n,a,o,r,s))}else{let l=u();i.push(()=>l.then(d=>{if(!d)throw new Error(`Couldn't resolve component "${r}" at "${o.path}"`);const E=R2(d)?d.default:d;o.mods[r]=d,o.components[r]=E;const T=(E.__vccOpts||E)[t];return T&&ts(T,n,a,o,r,s)()}))}}return i}function xm(e){const t=Ut(Ol),n=Ut(ZE),a=z(()=>{const u=m(e.to);return t.resolve(u)}),s=z(()=>{const{matched:u}=a.value,{length:l}=u,d=u[l-1],E=n.matched;if(!d||!E.length)return-1;const c=E.findIndex(hi.bind(null,d));if(c>-1)return c;const T=Bm(u[l-2]);return l>1&&Bm(d)===T&&E[E.length-1].path!==T?E.findIndex(hi.bind(null,u[l-2])):c}),i=z(()=>s.value>-1&&IP(n.params,a.value.params)),o=z(()=>s.value>-1&&s.value===n.matched.length-1&&c1(n.params,a.value.params));function r(u={}){if(OP(u)){const l=t[m(e.replace)?"replace":"push"](m(e.to)).catch(Eo);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>l),l}return Promise.resolve()}return{route:a,href:z(()=>a.value.href),isActive:i,isExactActive:o,navigate:r}}function hP(e){return e.length===1?e[0]:e}const SP=X({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:xm,setup(e,{slots:t}){const n=kt(xm(e)),{options:a}=Ut(Ol),s=z(()=>({[Gm(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[Gm(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&hP(t.default(n));return e.custom?i:bn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},i)}}}),AP=SP;function OP(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function IP(e,t){for(const n in t){const a=t[n],s=e[n];if(typeof a=="string"){if(a!==s)return!1}else if(!sa(s)||s.length!==a.length||a.some((i,o)=>i!==s[o]))return!1}return!0}function Bm(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Gm=(e,t,n)=>e??t??n,gP=X({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=Ut(xd),s=z(()=>e.route||a.value),i=Ut(zm,0),o=z(()=>{let l=m(i);const{matched:d}=s.value;let E;for(;(E=d[l])&&!E.components;)l++;return l}),r=z(()=>s.value.matched[o.value]);Sn(zm,z(()=>o.value+1)),Sn(fP,r),Sn(xd,s);const u=Ie();return Ce(()=>[u.value,r.value,e.name],([l,d,E],[c,T,_])=>{d&&(d.instances[E]=l,T&&T!==d&&l&&l===c&&(d.leaveGuards.size||(d.leaveGuards=T.leaveGuards),d.updateGuards.size||(d.updateGuards=T.updateGuards))),l&&d&&(!T||!hi(d,T)||!c)&&(d.enterCallbacks[E]||[]).forEach(f=>f(l))},{flush:"post"}),()=>{const l=s.value,d=e.name,E=r.value,c=E&&E.components[d];if(!c)return Vm(n.default,{Component:c,route:l});const T=E.props[d],_=T?T===!0?l.params:typeof T=="function"?T(l):T:null,O=bn(c,ht({},_,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(E.instances[d]=null)},ref:u}));return Vm(n.default,{Component:O,route:l})||O}}});function Vm(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const RP=gP;function NP(e){const t=cP(e.routes,e),n=e.parseQuery||mP,a=e.stringifyQuery||Fm,s=e.history,i=Ki(),o=Ki(),r=Ki(),u=il(Ka);let l=Ka;ai&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=uc.bind(null,Te=>""+Te),E=uc.bind(null,M2),c=uc.bind(null,Uo);function T(Te,Q){let Se,me;return E1(Te)?(Se=t.getRecordMatcher(Te),me=Q):me=Te,t.addRoute(me,Se)}function _(Te){const Q=t.getRecordMatcher(Te);Q&&t.removeRoute(Q)}function f(){return t.getRoutes().map(Te=>Te.record)}function O(Te){return!!t.getRecordMatcher(Te)}function A(Te,Q){if(Q=ht({},Q||u.value),typeof Te=="string"){const G=lc(n,Te,Q.path),re=t.resolve({path:G.path},Q),pe=s.createHref(G.fullPath);return ht(G,re,{params:c(re.params),hash:Uo(G.hash),redirectedFrom:void 0,href:pe})}let Se;if(Te.path!=null)Se=ht({},Te,{path:lc(n,Te.path,Q.path).path});else{const G=ht({},Te.params);for(const re in G)G[re]==null&&delete G[re];Se=ht({},Te,{params:E(G)}),Q.params=E(Q.params)}const me=t.resolve(Se,Q),ie=Te.hash||"";me.params=d(c(me.params));const k=z2(a,ht({},Te,{hash:U2(ie),path:me.path})),w=s.createHref(k);return ht({fullPath:k,hash:ie,query:a===Fm?_P(Te.query):Te.query||{}},me,{redirectedFrom:void 0,href:w})}function R(Te){return typeof Te=="string"?lc(n,Te,u.value.path):ht({},Te)}function g(Te,Q){if(l!==Te)return Si(8,{from:Q,to:Te})}function I(Te){return C(Te)}function N(Te){return I(ht(R(Te),{replace:!0}))}function b(Te){const Q=Te.matched[Te.matched.length-1];if(Q&&Q.redirect){const{redirect:Se}=Q;let me=typeof Se=="function"?Se(Te):Se;return typeof me=="string"&&(me=me.includes("?")||me.includes("#")?me=R(me):{path:me},me.params={}),ht({query:Te.query,hash:Te.hash,params:me.path!=null?{}:Te.params},me)}}function C(Te,Q){const Se=l=A(Te),me=u.value,ie=Te.state,k=Te.force,w=Te.replace===!0,G=b(Se);if(G)return C(ht(R(G),{state:typeof G=="object"?ht({},ie,G.state):ie,force:k,replace:w}),Q||Se);const re=Se;re.redirectedFrom=Q;let pe;return!k&&x2(a,me,Se)&&(pe=Si(16,{to:re,from:me}),Ve(me,me,!0,!1)),(pe?Promise.resolve(pe):U(re,me)).catch(oe=>va(oe)?va(oe,2)?oe:Je(oe):Pe(oe,re,me)).then(oe=>{if(oe){if(va(oe,2))return C(ht({replace:w},R(oe.to),{state:typeof oe.to=="object"?ht({},ie,oe.to.state):ie,force:k}),Q||re)}else oe=F(re,me,!0,w,ie);return P(re,me,oe),oe})}function y(Te,Q){const Se=g(Te,Q);return Se?Promise.reject(Se):Promise.resolve()}function D(Te){const Q=ae.values().next().value;return Q&&typeof Q.runWithContext=="function"?Q.runWithContext(Te):Te()}function U(Te,Q){let Se;const[me,ie,k]=vP(Te,Q);Se=cc(me.reverse(),"beforeRouteLeave",Te,Q);for(const G of me)G.leaveGuards.forEach(re=>{Se.push(ts(re,Te,Q))});const w=y.bind(null,Te,Q);return Se.push(w),pt(Se).then(()=>{Se=[];for(const G of i.list())Se.push(ts(G,Te,Q));return Se.push(w),pt(Se)}).then(()=>{Se=cc(ie,"beforeRouteUpdate",Te,Q);for(const G of ie)G.updateGuards.forEach(re=>{Se.push(ts(re,Te,Q))});return Se.push(w),pt(Se)}).then(()=>{Se=[];for(const G of k)if(G.beforeEnter)if(sa(G.beforeEnter))for(const re of G.beforeEnter)Se.push(ts(re,Te,Q));else Se.push(ts(G.beforeEnter,Te,Q));return Se.push(w),pt(Se)}).then(()=>(Te.matched.forEach(G=>G.enterCallbacks={}),Se=cc(k,"beforeRouteEnter",Te,Q,D),Se.push(w),pt(Se))).then(()=>{Se=[];for(const G of o.list())Se.push(ts(G,Te,Q));return Se.push(w),pt(Se)}).catch(G=>va(G,8)?G:Promise.reject(G))}function P(Te,Q,Se){r.list().forEach(me=>D(()=>me(Te,Q,Se)))}function F(Te,Q,Se,me,ie){const k=g(Te,Q);if(k)return k;const w=Q===Ka,G=ai?history.state:{};Se&&(me||w?s.replace(Te.fullPath,ht({scroll:w&&G&&G.scroll},ie)):s.push(Te.fullPath,ie)),u.value=Te,Ve(Te,Q,Se,w),Je()}let Z;function Oe(){Z||(Z=s.listen((Te,Q,Se)=>{if(!ke.listening)return;const me=A(Te),ie=b(me);if(ie){C(ht(ie,{replace:!0,force:!0}),me).catch(Eo);return}l=me;const k=u.value;ai&&Y2(Dm(k.fullPath,Se.delta),Al()),U(me,k).catch(w=>va(w,12)?w:va(w,2)?(C(ht(R(w.to),{force:!0}),me).then(G=>{va(G,20)&&!Se.delta&&Se.type===ko.pop&&s.go(-1,!1)}).catch(Eo),Promise.reject()):(Se.delta&&s.go(-Se.delta,!1),Pe(w,me,k))).then(w=>{w=w||F(me,k,!1),w&&(Se.delta&&!va(w,8)?s.go(-Se.delta,!1):Se.type===ko.pop&&va(w,20)&&s.go(-1,!1)),P(me,k,w)}).catch(Eo)}))}let ee=Ki(),Ee=Ki(),_e;function Pe(Te,Q,Se){Je(Te);const me=Ee.list();return me.length?me.forEach(ie=>ie(Te,Q,Se)):console.error(Te),Promise.reject(Te)}function He(){return _e&&u.value!==Ka?Promise.resolve():new Promise((Te,Q)=>{ee.add([Te,Q])})}function Je(Te){return _e||(_e=!Te,Oe(),ee.list().forEach(([Q,Se])=>Te?Se(Te):Q()),ee.reset()),Te}function Ve(Te,Q,Se,me){const{scrollBehavior:ie}=e;if(!ai||!ie)return Promise.resolve();const k=!Se&&X2(Dm(Te.fullPath,0))||(me||!Se)&&history.state&&history.state.scroll||null;return ln().then(()=>ie(Te,Q,k)).then(w=>w&&j2(w)).catch(w=>Pe(w,Te,Q))}const _t=Te=>s.go(Te);let we;const ae=new Set,ke={currentRoute:u,listening:!0,addRoute:T,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:f,resolve:A,options:e,push:I,replace:N,go:_t,back:()=>_t(-1),forward:()=>_t(1),beforeEach:i.add,beforeResolve:o.add,afterEach:r.add,onError:Ee.add,isReady:He,install(Te){const Q=this;Te.component("RouterLink",AP),Te.component("RouterView",RP),Te.config.globalProperties.$router=Q,Object.defineProperty(Te.config.globalProperties,"$route",{enumerable:!0,get:()=>m(u)}),ai&&!we&&u.value===Ka&&(we=!0,I(s.location).catch(ie=>{}));const Se={};for(const ie in Ka)Object.defineProperty(Se,ie,{get:()=>u.value[ie],enumerable:!0});Te.provide(Ol,Q),Te.provide(ZE,$0(Se)),Te.provide(xd,u);const me=Te.unmount;ae.add(Te),Te.unmount=function(){ae.delete(Te),ae.size<1&&(l=Ka,Z&&Z(),Z=null,u.value=Ka,we=!1,_e=!1),me()}}};function pt(Te){return Te.reduce((Q,Se)=>Q.then(()=>D(Se)),Promise.resolve())}return ke}function vP(e,t){const n=[],a=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;ohi(l,r))?a.push(r):n.push(r));const u=e.matched[o];u&&(t.matched.find(l=>hi(l,u))||s.push(u))}return[n,a,s]}function gn(){return Ut(Ol)}function ut(e){return Ut(ZE)}function pu(e){"@babel/helpers - typeof";return pu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pu(e)}function tn(e){if(e===null||e===!0||e===!1)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Xe(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function nt(e){Xe(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||pu(e)==="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function ar(e,t){Xe(2,arguments);var n=nt(e),a=tn(t);return isNaN(a)?new Date(NaN):(a&&n.setDate(n.getDate()+a),n)}function Ai(e,t){Xe(2,arguments);var n=nt(e),a=tn(t);if(isNaN(a))return new Date(NaN);if(!a)return n;var s=n.getDate(),i=new Date(n.getTime());i.setMonth(n.getMonth()+a+1,0);var o=i.getDate();return s>=o?i:(n.setFullYear(i.getFullYear(),i.getMonth(),s),n)}function bP(e,t){Xe(2,arguments);var n=nt(e).getTime(),a=tn(t);return new Date(n+a)}var CP={};function Vs(){return CP}function Il(e,t){var n,a,s,i,o,r,u,l;Xe(1,arguments);var d=Vs(),E=tn((n=(a=(s=(i=t==null?void 0:t.weekStartsOn)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(r=o.options)===null||r===void 0?void 0:r.weekStartsOn)!==null&&s!==void 0?s:d.weekStartsOn)!==null&&a!==void 0?a:(u=d.locale)===null||u===void 0||(l=u.options)===null||l===void 0?void 0:l.weekStartsOn)!==null&&n!==void 0?n:0);if(!(E>=0&&E<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=nt(e),T=c.getDay(),_=(T0?1:s}function _1(e,t){Xe(2,arguments);var n=Hm(e),a=Hm(t);return n.getTime()===a.getTime()}function PP(e){return Xe(1,arguments),e instanceof Date||pu(e)==="object"&&Object.prototype.toString.call(e)==="[object Date]"}function DP(e){if(Xe(1,arguments),!PP(e)&&typeof e!="number")return!1;var t=nt(e);return!isNaN(Number(t))}function LP(e,t){Xe(2,arguments);var n=nt(e),a=nt(t),s=n.getFullYear()-a.getFullYear(),i=n.getMonth()-a.getMonth();return s*12+i}function yP(e,t){return Xe(2,arguments),nt(e).getTime()-nt(t).getTime()}var Km={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(t){return t<0?Math.ceil(t):Math.floor(t)}},$P="trunc";function UP(e){return e?Km[e]:Km[$P]}function kP(e){Xe(1,arguments);var t=nt(e);return t.setHours(23,59,59,999),t}function sr(e){Xe(1,arguments);var t=nt(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function wP(e){Xe(1,arguments);var t=nt(e);return kP(t).getTime()===sr(t).getTime()}function MP(e,t){Xe(2,arguments);var n=nt(e),a=nt(t),s=To(n,a),i=Math.abs(LP(n,a)),o;if(i<1)o=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-s*i);var r=To(n,a)===-s;wP(nt(e))&&i===1&&To(e,a)===1&&(r=!1),o=s*(i-Number(r))}return o===0?0:o}function WP(e,t,n){Xe(2,arguments);var a=yP(e,t)/1e3;return UP(void 0)(a)}function ir(e){Xe(1,arguments);var t=nt(e);return t.setDate(1),t.setHours(0,0,0,0),t}function f1(e){Xe(1,arguments);var t=nt(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}function JE(e){Xe(1,arguments);var t=nt(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function ep(e,t){var n,a,s,i,o,r,u,l;Xe(1,arguments);var d=Vs(),E=tn((n=(a=(s=(i=t==null?void 0:t.weekStartsOn)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(r=o.options)===null||r===void 0?void 0:r.weekStartsOn)!==null&&s!==void 0?s:d.weekStartsOn)!==null&&a!==void 0?a:(u=d.locale)===null||u===void 0||(l=u.options)===null||l===void 0?void 0:l.weekStartsOn)!==null&&n!==void 0?n:0);if(!(E>=0&&E<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=nt(e),T=c.getDay(),_=(T=s.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function BP(e){Xe(1,arguments);var t=h1(e),n=new Date(0);n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0);var a=mu(n);return a}var GP=6048e5;function VP(e){Xe(1,arguments);var t=nt(e),n=mu(t).getTime()-BP(t).getTime();return Math.round(n/GP)+1}function Oi(e,t){var n,a,s,i,o,r,u,l;Xe(1,arguments);var d=Vs(),E=tn((n=(a=(s=(i=t==null?void 0:t.weekStartsOn)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(r=o.options)===null||r===void 0?void 0:r.weekStartsOn)!==null&&s!==void 0?s:d.weekStartsOn)!==null&&a!==void 0?a:(u=d.locale)===null||u===void 0||(l=u.options)===null||l===void 0?void 0:l.weekStartsOn)!==null&&n!==void 0?n:0);if(!(E>=0&&E<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=nt(e),T=c.getUTCDay(),_=(T=1&&T<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var _=new Date(0);_.setUTCFullYear(E+1,0,T),_.setUTCHours(0,0,0,0);var f=Oi(_,t),O=new Date(0);O.setUTCFullYear(E,0,T),O.setUTCHours(0,0,0,0);var A=Oi(O,t);return d.getTime()>=f.getTime()?E+1:d.getTime()>=A.getTime()?E:E-1}function HP(e,t){var n,a,s,i,o,r,u,l;Xe(1,arguments);var d=Vs(),E=tn((n=(a=(s=(i=t==null?void 0:t.firstWeekContainsDate)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(r=o.options)===null||r===void 0?void 0:r.firstWeekContainsDate)!==null&&s!==void 0?s:d.firstWeekContainsDate)!==null&&a!==void 0?a:(u=d.locale)===null||u===void 0||(l=u.options)===null||l===void 0?void 0:l.firstWeekContainsDate)!==null&&n!==void 0?n:1),c=S1(e,t),T=new Date(0);T.setUTCFullYear(c,0,E),T.setUTCHours(0,0,0,0);var _=Oi(T,t);return _}var KP=6048e5;function qP(e,t){Xe(1,arguments);var n=nt(e),a=Oi(n,t).getTime()-HP(n,t).getTime();return Math.round(a/KP)+1}function Ot(e,t){for(var n=e<0?"-":"",a=Math.abs(e).toString();a.length0?a:1-a;return Ot(n==="yy"?s%100:s,n.length)},M:function(t,n){var a=t.getUTCMonth();return n==="M"?String(a+1):Ot(a+1,2)},d:function(t,n){return Ot(t.getUTCDate(),n.length)},a:function(t,n){var a=t.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return a.toUpperCase();case"aaa":return a;case"aaaaa":return a[0];case"aaaa":default:return a==="am"?"a.m.":"p.m."}},h:function(t,n){return Ot(t.getUTCHours()%12||12,n.length)},H:function(t,n){return Ot(t.getUTCHours(),n.length)},m:function(t,n){return Ot(t.getUTCMinutes(),n.length)},s:function(t,n){return Ot(t.getUTCSeconds(),n.length)},S:function(t,n){var a=n.length,s=t.getUTCMilliseconds(),i=Math.floor(s*Math.pow(10,a-3));return Ot(i,n.length)}},Zs={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},jP={G:function(t,n,a){var s=t.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return a.era(s,{width:"abbreviated"});case"GGGGG":return a.era(s,{width:"narrow"});case"GGGG":default:return a.era(s,{width:"wide"})}},y:function(t,n,a){if(n==="yo"){var s=t.getUTCFullYear(),i=s>0?s:1-s;return a.ordinalNumber(i,{unit:"year"})}return qa.y(t,n)},Y:function(t,n,a,s){var i=S1(t,s),o=i>0?i:1-i;if(n==="YY"){var r=o%100;return Ot(r,2)}return n==="Yo"?a.ordinalNumber(o,{unit:"year"}):Ot(o,n.length)},R:function(t,n){var a=h1(t);return Ot(a,n.length)},u:function(t,n){var a=t.getUTCFullYear();return Ot(a,n.length)},Q:function(t,n,a){var s=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"Q":return String(s);case"QQ":return Ot(s,2);case"Qo":return a.ordinalNumber(s,{unit:"quarter"});case"QQQ":return a.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return a.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return a.quarter(s,{width:"wide",context:"formatting"})}},q:function(t,n,a){var s=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"q":return String(s);case"qq":return Ot(s,2);case"qo":return a.ordinalNumber(s,{unit:"quarter"});case"qqq":return a.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return a.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return a.quarter(s,{width:"wide",context:"standalone"})}},M:function(t,n,a){var s=t.getUTCMonth();switch(n){case"M":case"MM":return qa.M(t,n);case"Mo":return a.ordinalNumber(s+1,{unit:"month"});case"MMM":return a.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return a.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return a.month(s,{width:"wide",context:"formatting"})}},L:function(t,n,a){var s=t.getUTCMonth();switch(n){case"L":return String(s+1);case"LL":return Ot(s+1,2);case"Lo":return a.ordinalNumber(s+1,{unit:"month"});case"LLL":return a.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return a.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return a.month(s,{width:"wide",context:"standalone"})}},w:function(t,n,a,s){var i=qP(t,s);return n==="wo"?a.ordinalNumber(i,{unit:"week"}):Ot(i,n.length)},I:function(t,n,a){var s=VP(t);return n==="Io"?a.ordinalNumber(s,{unit:"week"}):Ot(s,n.length)},d:function(t,n,a){return n==="do"?a.ordinalNumber(t.getUTCDate(),{unit:"date"}):qa.d(t,n)},D:function(t,n,a){var s=xP(t);return n==="Do"?a.ordinalNumber(s,{unit:"dayOfYear"}):Ot(s,n.length)},E:function(t,n,a){var s=t.getUTCDay();switch(n){case"E":case"EE":case"EEE":return a.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return a.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(s,{width:"short",context:"formatting"});case"EEEE":default:return a.day(s,{width:"wide",context:"formatting"})}},e:function(t,n,a,s){var i=t.getUTCDay(),o=(i-s.weekStartsOn+8)%7||7;switch(n){case"e":return String(o);case"ee":return Ot(o,2);case"eo":return a.ordinalNumber(o,{unit:"day"});case"eee":return a.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return a.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(i,{width:"short",context:"formatting"});case"eeee":default:return a.day(i,{width:"wide",context:"formatting"})}},c:function(t,n,a,s){var i=t.getUTCDay(),o=(i-s.weekStartsOn+8)%7||7;switch(n){case"c":return String(o);case"cc":return Ot(o,n.length);case"co":return a.ordinalNumber(o,{unit:"day"});case"ccc":return a.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return a.day(i,{width:"narrow",context:"standalone"});case"cccccc":return a.day(i,{width:"short",context:"standalone"});case"cccc":default:return a.day(i,{width:"wide",context:"standalone"})}},i:function(t,n,a){var s=t.getUTCDay(),i=s===0?7:s;switch(n){case"i":return String(i);case"ii":return Ot(i,n.length);case"io":return a.ordinalNumber(i,{unit:"day"});case"iii":return a.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return a.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return a.day(s,{width:"short",context:"formatting"});case"iiii":default:return a.day(s,{width:"wide",context:"formatting"})}},a:function(t,n,a){var s=t.getUTCHours(),i=s/12>=1?"pm":"am";switch(n){case"a":case"aa":return a.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaa":return a.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return a.dayPeriod(i,{width:"narrow",context:"formatting"});case"aaaa":default:return a.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(t,n,a){var s=t.getUTCHours(),i;switch(s===12?i=Zs.noon:s===0?i=Zs.midnight:i=s/12>=1?"pm":"am",n){case"b":case"bb":return a.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return a.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return a.dayPeriod(i,{width:"narrow",context:"formatting"});case"bbbb":default:return a.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(t,n,a){var s=t.getUTCHours(),i;switch(s>=17?i=Zs.evening:s>=12?i=Zs.afternoon:s>=4?i=Zs.morning:i=Zs.night,n){case"B":case"BB":case"BBB":return a.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return a.dayPeriod(i,{width:"narrow",context:"formatting"});case"BBBB":default:return a.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(t,n,a){if(n==="ho"){var s=t.getUTCHours()%12;return s===0&&(s=12),a.ordinalNumber(s,{unit:"hour"})}return qa.h(t,n)},H:function(t,n,a){return n==="Ho"?a.ordinalNumber(t.getUTCHours(),{unit:"hour"}):qa.H(t,n)},K:function(t,n,a){var s=t.getUTCHours()%12;return n==="Ko"?a.ordinalNumber(s,{unit:"hour"}):Ot(s,n.length)},k:function(t,n,a){var s=t.getUTCHours();return s===0&&(s=24),n==="ko"?a.ordinalNumber(s,{unit:"hour"}):Ot(s,n.length)},m:function(t,n,a){return n==="mo"?a.ordinalNumber(t.getUTCMinutes(),{unit:"minute"}):qa.m(t,n)},s:function(t,n,a){return n==="so"?a.ordinalNumber(t.getUTCSeconds(),{unit:"second"}):qa.s(t,n)},S:function(t,n){return qa.S(t,n)},X:function(t,n,a,s){var i=s._originalDate||t,o=i.getTimezoneOffset();if(o===0)return"Z";switch(n){case"X":return jm(o);case"XXXX":case"XX":return Cs(o);case"XXXXX":case"XXX":default:return Cs(o,":")}},x:function(t,n,a,s){var i=s._originalDate||t,o=i.getTimezoneOffset();switch(n){case"x":return jm(o);case"xxxx":case"xx":return Cs(o);case"xxxxx":case"xxx":default:return Cs(o,":")}},O:function(t,n,a,s){var i=s._originalDate||t,o=i.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+qm(o,":");case"OOOO":default:return"GMT"+Cs(o,":")}},z:function(t,n,a,s){var i=s._originalDate||t,o=i.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+qm(o,":");case"zzzz":default:return"GMT"+Cs(o,":")}},t:function(t,n,a,s){var i=s._originalDate||t,o=Math.floor(i.getTime()/1e3);return Ot(o,n.length)},T:function(t,n,a,s){var i=s._originalDate||t,o=i.getTime();return Ot(o,n.length)}};function qm(e,t){var n=e>0?"-":"+",a=Math.abs(e),s=Math.floor(a/60),i=a%60;if(i===0)return n+String(s);var o=t;return n+String(s)+o+Ot(i,2)}function jm(e,t){if(e%60===0){var n=e>0?"-":"+";return n+Ot(Math.abs(e)/60,2)}return Cs(e,t)}function Cs(e,t){var n=t||"",a=e>0?"-":"+",s=Math.abs(e),i=Ot(Math.floor(s/60),2),o=Ot(s%60,2);return a+i+n+o}var Ym=function(t,n){switch(t){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},A1=function(t,n){switch(t){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},YP=function(t,n){var a=t.match(/(P+)(p+)?/)||[],s=a[1],i=a[2];if(!i)return Ym(t,n);var o;switch(s){case"P":o=n.dateTime({width:"short"});break;case"PP":o=n.dateTime({width:"medium"});break;case"PPP":o=n.dateTime({width:"long"});break;case"PPPP":default:o=n.dateTime({width:"full"});break}return o.replace("{{date}}",Ym(s,n)).replace("{{time}}",A1(i,n))},XP={p:A1,P:YP},QP=["D","DD"],ZP=["YY","YYYY"];function JP(e){return QP.indexOf(e)!==-1}function eD(e){return ZP.indexOf(e)!==-1}function Xm(e,t,n){if(e==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var tD={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},nD=function(t,n,a){var s,i=tD[t];return typeof i=="string"?s=i:n===1?s=i.one:s=i.other.replace("{{count}}",n.toString()),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"in "+s:s+" ago":s};function Ze(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,a=e.formats[n]||e.formats[e.defaultWidth];return a}}var aD={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},sD={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},iD={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},oD={date:Ze({formats:aD,defaultWidth:"full"}),time:Ze({formats:sD,defaultWidth:"full"}),dateTime:Ze({formats:iD,defaultWidth:"full"})},rD={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},uD=function(t,n,a,s){return rD[t]};function $e(e){return function(t,n){var a=n!=null&&n.context?String(n.context):"standalone",s;if(a==="formatting"&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,o=n!=null&&n.width?String(n.width):i;s=e.formattingValues[o]||e.formattingValues[i]}else{var r=e.defaultWidth,u=n!=null&&n.width?String(n.width):e.defaultWidth;s=e.values[u]||e.values[r]}var l=e.argumentCallback?e.argumentCallback(t):t;return s[l]}}var lD={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},cD={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},dD={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ED={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},pD={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},TD={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},mD=function(t,n){var a=Number(t),s=a%100;if(s>20||s<10)switch(s%10){case 1:return a+"st";case 2:return a+"nd";case 3:return a+"rd"}return a+"th"},_D={ordinalNumber:mD,era:$e({values:lD,defaultWidth:"wide"}),quarter:$e({values:cD,defaultWidth:"wide",argumentCallback:function(t){return t-1}}),month:$e({values:dD,defaultWidth:"wide"}),day:$e({values:ED,defaultWidth:"wide"}),dayPeriod:$e({values:pD,defaultWidth:"wide",formattingValues:TD,defaultFormattingWidth:"wide"})};function Ue(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=n.width,s=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(s);if(!i)return null;var o=i[0],r=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(r)?hD(r,function(E){return E.test(o)}):fD(r,function(E){return E.test(o)}),l;l=e.valueCallback?e.valueCallback(u):u,l=n.valueCallback?n.valueCallback(l):l;var d=t.slice(o.length);return{value:l,rest:d}}}function fD(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function hD(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},a=t.match(e.matchPattern);if(!a)return null;var s=a[0],i=t.match(e.parsePattern);if(!i)return null;var o=e.valueCallback?e.valueCallback(i[0]):i[0];o=n.valueCallback?n.valueCallback(o):o;var r=t.slice(s.length);return{value:o,rest:r}}}var SD=/^(\d+)(th|st|nd|rd)?/i,AD=/\d+/i,OD={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},ID={any:[/^b/i,/^(a|c)/i]},gD={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},RD={any:[/1/i,/2/i,/3/i,/4/i]},ND={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},vD={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},bD={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},CD={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},PD={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},DD={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},LD={ordinalNumber:Ln({matchPattern:SD,parsePattern:AD,valueCallback:function(t){return parseInt(t,10)}}),era:Ue({matchPatterns:OD,defaultMatchWidth:"wide",parsePatterns:ID,defaultParseWidth:"any"}),quarter:Ue({matchPatterns:gD,defaultMatchWidth:"wide",parsePatterns:RD,defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:Ue({matchPatterns:ND,defaultMatchWidth:"wide",parsePatterns:vD,defaultParseWidth:"any"}),day:Ue({matchPatterns:bD,defaultMatchWidth:"wide",parsePatterns:CD,defaultParseWidth:"any"}),dayPeriod:Ue({matchPatterns:PD,defaultMatchWidth:"any",parsePatterns:DD,defaultParseWidth:"any"})},or={code:"en-US",formatDistance:nD,formatLong:oD,formatRelative:uD,localize:_D,match:LD,options:{weekStartsOn:0,firstWeekContainsDate:1}},yD=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,$D=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,UD=/^'([^]*?)'?$/,kD=/''/g,wD=/[a-zA-Z]/;function On(e,t,n){var a,s,i,o,r,u,l,d,E,c,T,_,f,O,A,R,g,I;Xe(2,arguments);var N=String(t),b=Vs(),C=(a=(s=n==null?void 0:n.locale)!==null&&s!==void 0?s:b.locale)!==null&&a!==void 0?a:or,y=tn((i=(o=(r=(u=n==null?void 0:n.firstWeekContainsDate)!==null&&u!==void 0?u:n==null||(l=n.locale)===null||l===void 0||(d=l.options)===null||d===void 0?void 0:d.firstWeekContainsDate)!==null&&r!==void 0?r:b.firstWeekContainsDate)!==null&&o!==void 0?o:(E=b.locale)===null||E===void 0||(c=E.options)===null||c===void 0?void 0:c.firstWeekContainsDate)!==null&&i!==void 0?i:1);if(!(y>=1&&y<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var D=tn((T=(_=(f=(O=n==null?void 0:n.weekStartsOn)!==null&&O!==void 0?O:n==null||(A=n.locale)===null||A===void 0||(R=A.options)===null||R===void 0?void 0:R.weekStartsOn)!==null&&f!==void 0?f:b.weekStartsOn)!==null&&_!==void 0?_:(g=b.locale)===null||g===void 0||(I=g.options)===null||I===void 0?void 0:I.weekStartsOn)!==null&&T!==void 0?T:0);if(!(D>=0&&D<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!C.localize)throw new RangeError("locale must contain localize property");if(!C.formatLong)throw new RangeError("locale must contain formatLong property");var U=nt(e);if(!DP(U))throw new RangeError("Invalid time value");var P=Bd(U),F=FP(U,P),Z={firstWeekContainsDate:y,weekStartsOn:D,locale:C,_originalDate:U},Oe=N.match($D).map(function(ee){var Ee=ee[0];if(Ee==="p"||Ee==="P"){var _e=XP[Ee];return _e(ee,C.formatLong)}return ee}).join("").match(yD).map(function(ee){if(ee==="''")return"'";var Ee=ee[0];if(Ee==="'")return MD(ee);var _e=jP[Ee];if(_e)return!(n!=null&&n.useAdditionalWeekYearTokens)&&eD(ee)&&Xm(ee,t,String(e)),!(n!=null&&n.useAdditionalDayOfYearTokens)&&JP(ee)&&Xm(ee,t,String(e)),_e(F,ee,C.localize,Z);if(Ee.match(wD))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Ee+"`");return ee}).join("");return Oe}function MD(e){var t=e.match(UD);return t?t[1].replace(kD,"'"):e}function O1(e,t){if(e==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function WD(e){return O1({},e)}var Qm=1440,FD=2520,dc=43200,zD=86400;function Ws(e,t,n){var a,s;Xe(2,arguments);var i=Vs(),o=(a=(s=n==null?void 0:n.locale)!==null&&s!==void 0?s:i.locale)!==null&&a!==void 0?a:or;if(!o.formatDistance)throw new RangeError("locale must contain formatDistance property");var r=To(e,t);if(isNaN(r))throw new RangeError("Invalid time value");var u=O1(WD(n),{addSuffix:!!(n!=null&&n.addSuffix),comparison:r}),l,d;r>0?(l=nt(t),d=nt(e)):(l=nt(e),d=nt(t));var E=WP(d,l),c=(Bd(d)-Bd(l))/1e3,T=Math.round((E-c)/60),_;if(T<2)return n!=null&&n.includeSeconds?E<5?o.formatDistance("lessThanXSeconds",5,u):E<10?o.formatDistance("lessThanXSeconds",10,u):E<20?o.formatDistance("lessThanXSeconds",20,u):E<40?o.formatDistance("halfAMinute",0,u):E<60?o.formatDistance("lessThanXMinutes",1,u):o.formatDistance("xMinutes",1,u):T===0?o.formatDistance("lessThanXMinutes",1,u):o.formatDistance("xMinutes",T,u);if(T<45)return o.formatDistance("xMinutes",T,u);if(T<90)return o.formatDistance("aboutXHours",1,u);if(T=0&&(a[i]=parseInt(n[s].value,10))}return a}catch(o){if(o instanceof RangeError)return[NaN];throw o}}function XD(e,t){var n=e.format(t),a=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(n);return[a[3],a[1],a[2],a[4],a[5],a[6]]}var Ec={};function QD(e){if(!Ec[e]){var t=new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:"America/New_York",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),n=t==="06/25/2014, 00:00:00"||t==="‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00";Ec[e]=n?new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return Ec[e]}function I1(e,t,n,a,s,i,o){var r=new Date(0);return r.setUTCFullYear(e,t,n),r.setUTCHours(a,s,i,o),r}var t_=36e5,ZD=6e4,pc={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/};function g1(e,t,n){var a,s;if(!e||(a=pc.timezoneZ.exec(e),a))return 0;var i;if(a=pc.timezoneHH.exec(e),a)return i=parseInt(a[1],10),n_(i)?-(i*t_):NaN;if(a=pc.timezoneHHMM.exec(e),a){i=parseInt(a[2],10);var o=parseInt(a[3],10);return n_(i,o)?(s=Math.abs(i)*t_+o*ZD,a[1]==="+"?-s:s):NaN}if(tL(e)){t=new Date(t||Date.now());var r=n?t:JD(t),u=Hd(r,e),l=n?u:eL(t,u,e);return-l}return NaN}function JD(e){return I1(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function Hd(e,t){var n=qD(e,t),a=I1(n[0],n[1]-1,n[2],n[3]%24,n[4],n[5],0).getTime(),s=e.getTime(),i=s%1e3;return s-=i>=0?i:1e3+i,a-s}function eL(e,t,n){var a=e.getTime(),s=a-t,i=Hd(new Date(s),n);if(t===i)return t;s-=i-t;var o=Hd(new Date(s),n);return i===o?i:Math.max(i,o)}function n_(e,t){return-23<=e&&e<=23&&(t==null||0<=t&&t<=59)}var a_={};function tL(e){if(a_[e])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:e}),a_[e]=!0,!0}catch{return!1}}var nL=HD();const aL=RE(nL);var sL=KD();const s_=RE(sL);var iL=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,Tc=36e5,i_=6e4,oL=2,hn={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:iL};function rL(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(e===null)return new Date(NaN);var n={},a=n.additionalDigits==null?oL:aL(n.additionalDigits);if(a!==2&&a!==1&&a!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]")return new Date(e.getTime());if(typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]")return new Date(e);if(!(typeof e=="string"||Object.prototype.toString.call(e)==="[object String]"))return new Date(NaN);var s=uL(e),i=lL(s.date,a),o=i.year,r=i.restDateString,u=cL(r,o);if(isNaN(u))return new Date(NaN);if(u){var l=u.getTime(),d=0,E;if(s.time&&(d=dL(s.time),isNaN(d)))return new Date(NaN);if(s.timeZone||n.timeZone){if(E=g1(s.timeZone||n.timeZone,new Date(l+d)),isNaN(E))return new Date(NaN)}else E=s_(new Date(l+d)),E=s_(new Date(l+d+E));return new Date(l+d+E)}else return new Date(NaN)}function uL(e){var t={},n=hn.dateTimePattern.exec(e),a;if(n?(t.date=n[1],a=n[3]):(n=hn.datePattern.exec(e),n?(t.date=n[1],a=n[2]):(t.date=null,a=e)),a){var s=hn.timeZone.exec(a);s?(t.time=a.replace(s[1],""),t.timeZone=s[1].trim()):t.time=a}return t}function lL(e,t){var n=hn.YYY[t],a=hn.YYYYY[t],s;if(s=hn.YYYY.exec(e)||a.exec(e),s){var i=s[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(s=hn.YY.exec(e)||n.exec(e),s){var o=s[1];return{year:parseInt(o,10)*100,restDateString:e.slice(o.length)}}return{year:null}}function cL(e,t){if(t===null)return null;var n,a,s,i;if(e.length===0)return a=new Date(0),a.setUTCFullYear(t),a;if(n=hn.MM.exec(e),n)return a=new Date(0),s=parseInt(n[1],10)-1,r_(t,s)?(a.setUTCFullYear(t,s),a):new Date(NaN);if(n=hn.DDD.exec(e),n){a=new Date(0);var o=parseInt(n[1],10);return TL(t,o)?(a.setUTCFullYear(t,0,o),a):new Date(NaN)}if(n=hn.MMDD.exec(e),n){a=new Date(0),s=parseInt(n[1],10)-1;var r=parseInt(n[2],10);return r_(t,s,r)?(a.setUTCFullYear(t,s,r),a):new Date(NaN)}if(n=hn.Www.exec(e),n)return i=parseInt(n[1],10)-1,u_(t,i)?o_(t,i):new Date(NaN);if(n=hn.WwwD.exec(e),n){i=parseInt(n[1],10)-1;var u=parseInt(n[2],10)-1;return u_(t,i,u)?o_(t,i,u):new Date(NaN)}return null}function dL(e){var t,n,a;if(t=hn.HH.exec(e),t)return n=parseFloat(t[1].replace(",",".")),mc(n)?n%24*Tc:NaN;if(t=hn.HHMM.exec(e),t)return n=parseInt(t[1],10),a=parseFloat(t[2].replace(",",".")),mc(n,a)?n%24*Tc+a*i_:NaN;if(t=hn.HHMMSS.exec(e),t){n=parseInt(t[1],10),a=parseInt(t[2],10);var s=parseFloat(t[3].replace(",","."));return mc(n,a,s)?n%24*Tc+a*i_+s*1e3:NaN}return null}function o_(e,t,n){t=t||0,n=n||0;var a=new Date(0);a.setUTCFullYear(e,0,4);var s=a.getUTCDay()||7,i=t*7+n+1-s;return a.setUTCDate(a.getUTCDate()+i),a}var EL=[31,28,31,30,31,30,31,31,30,31,30,31],pL=[31,29,31,30,31,30,31,31,30,31,30,31];function R1(e){return e%400===0||e%4===0&&e%100!==0}function r_(e,t,n){if(t<0||t>11)return!1;if(n!=null){if(n<1)return!1;var a=R1(e);if(a&&n>pL[t]||!a&&n>EL[t])return!1}return!0}function TL(e,t){if(t<1)return!1;var n=R1(e);return!(n&&t>366||!n&&t>365)}function u_(e,t,n){return!(t<0||t>52||n!=null&&(n<0||n>6))}function mc(e,t,n){return!(e!=null&&(e<0||e>=25)||t!=null&&(t<0||t>=60)||n!=null&&(n<0||n>=60))}function mL(e,t,n){var a=rL(e,n),s=g1(t,a,!0),i=new Date(a.getTime()-s),o=new Date(0);return o.setFullYear(i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()),o.setHours(i.getUTCHours(),i.getUTCMinutes(),i.getUTCSeconds(),i.getUTCMilliseconds()),o}/*! - * shared v10.0.5 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */const _u=typeof window<"u",Ts=(e,t=!1)=>t?Symbol.for(e):Symbol(e),_L=(e,t,n)=>fL({l:e,k:t,s:n}),fL=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Bt=e=>typeof e=="number"&&isFinite(e),hL=e=>tp(e)==="[object Date]",Ii=e=>tp(e)==="[object RegExp]",gl=e=>it(e)&&Object.keys(e).length===0,qt=Object.assign,SL=Object.create,gt=(e=null)=>SL(e);let l_;const Ls=()=>l_||(l_=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:gt());function c_(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const AL=Object.prototype.hasOwnProperty;function Zn(e,t){return AL.call(e,t)}const Wt=Array.isArray,Lt=e=>typeof e=="function",ye=e=>typeof e=="string",Tt=e=>typeof e=="boolean",ft=e=>e!==null&&typeof e=="object",OL=e=>ft(e)&&Lt(e.then)&&Lt(e.catch),N1=Object.prototype.toString,tp=e=>N1.call(e),it=e=>tp(e)==="[object Object]",IL=e=>e==null?"":Wt(e)||it(e)&&e.toString===N1?JSON.stringify(e,null,2):String(e);function np(e,t=""){return e.reduce((n,a,s)=>s===0?n+a:n+t+a,"")}function gL(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Ar=e=>!ft(e)||Wt(e);function Yr(e,t){if(Ar(e)||Ar(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:a,des:s}=n.pop();Object.keys(a).forEach(i=>{i!=="__proto__"&&(ft(a[i])&&!ft(s[i])&&(s[i]=Array.isArray(a[i])?[]:gt()),Ar(s[i])||Ar(a[i])?s[i]=a[i]:n.push({src:a[i],des:s[i]}))})}}/*! - * message-compiler v10.0.5 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */function RL(e,t,n){return{line:e,column:t,offset:n}}function Kd(e,t,n){return{start:e,end:t}}const It={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16},NL=17;function Rl(e,t,n={}){const{domain:a,messages:s,args:i}=n,o=e,r=new SyntaxError(String(o));return r.code=e,t&&(r.location=t),r.domain=a,r}function vL(e){throw e}const ba=" ",bL="\r",Tn=` -`,CL="\u2028",PL="\u2029";function DL(e){const t=e;let n=0,a=1,s=1,i=0;const o=C=>t[C]===bL&&t[C+1]===Tn,r=C=>t[C]===Tn,u=C=>t[C]===PL,l=C=>t[C]===CL,d=C=>o(C)||r(C)||u(C)||l(C),E=()=>n,c=()=>a,T=()=>s,_=()=>i,f=C=>o(C)||u(C)||l(C)?Tn:t[C],O=()=>f(n),A=()=>f(n+i);function R(){return i=0,d(n)&&(a++,s=0),o(n)&&n++,n++,s++,t[n]}function g(){return o(n+i)&&i++,i++,t[n+i]}function I(){n=0,a=1,s=1,i=0}function N(C=0){i=C}function b(){const C=n+i;for(;C!==n;)R();i=0}return{index:E,line:c,column:T,peekOffset:_,charAt:f,currentChar:O,currentPeek:A,next:R,peek:g,reset:I,resetPeek:N,skipToPeek:b}}const ja=void 0,LL=".",d_="'",yL="tokenizer";function $L(e,t={}){const n=t.location!==!1,a=DL(e),s=()=>a.index(),i=()=>RL(a.line(),a.column(),a.index()),o=i(),r=s(),u={currentType:13,offset:r,startLoc:o,endLoc:o,lastType:13,lastOffset:r,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:""},l=()=>u,{onError:d}=t;function E($,W,V,...q){const Re=l();if(W.column+=V,W.offset+=V,d){const he=n?Kd(Re.startLoc,W):null,H=Rl($,he,{domain:yL,args:q});d(H)}}function c($,W,V){$.endLoc=i(),$.currentType=W;const q={type:W};return n&&(q.loc=Kd($.startLoc,$.endLoc)),V!=null&&(q.value=V),q}const T=$=>c($,13);function _($,W){return $.currentChar()===W?($.next(),W):(E(It.EXPECTED_TOKEN,i(),0,W),"")}function f($){let W="";for(;$.currentPeek()===ba||$.currentPeek()===Tn;)W+=$.currentPeek(),$.peek();return W}function O($){const W=f($);return $.skipToPeek(),W}function A($){if($===ja)return!1;const W=$.charCodeAt(0);return W>=97&&W<=122||W>=65&&W<=90||W===95}function R($){if($===ja)return!1;const W=$.charCodeAt(0);return W>=48&&W<=57}function g($,W){const{currentType:V}=W;if(V!==2)return!1;f($);const q=A($.currentPeek());return $.resetPeek(),q}function I($,W){const{currentType:V}=W;if(V!==2)return!1;f($);const q=$.currentPeek()==="-"?$.peek():$.currentPeek(),Re=R(q);return $.resetPeek(),Re}function N($,W){const{currentType:V}=W;if(V!==2)return!1;f($);const q=$.currentPeek()===d_;return $.resetPeek(),q}function b($,W){const{currentType:V}=W;if(V!==7)return!1;f($);const q=$.currentPeek()===".";return $.resetPeek(),q}function C($,W){const{currentType:V}=W;if(V!==8)return!1;f($);const q=A($.currentPeek());return $.resetPeek(),q}function y($,W){const{currentType:V}=W;if(!(V===7||V===11))return!1;f($);const q=$.currentPeek()===":";return $.resetPeek(),q}function D($,W){const{currentType:V}=W;if(V!==9)return!1;const q=()=>{const he=$.currentPeek();return he==="{"?A($.peek()):he==="@"||he==="|"||he===":"||he==="."||he===ba||!he?!1:he===Tn?($.peek(),q()):P($,!1)},Re=q();return $.resetPeek(),Re}function U($){f($);const W=$.currentPeek()==="|";return $.resetPeek(),W}function P($,W=!0){const V=(Re=!1,he="")=>{const H=$.currentPeek();return H==="{"||H==="@"||!H?Re:H==="|"?!(he===ba||he===Tn):H===ba?($.peek(),V(!0,ba)):H===Tn?($.peek(),V(!0,Tn)):!0},q=V();return W&&$.resetPeek(),q}function F($,W){const V=$.currentChar();return V===ja?ja:W(V)?($.next(),V):null}function Z($){const W=$.charCodeAt(0);return W>=97&&W<=122||W>=65&&W<=90||W>=48&&W<=57||W===95||W===36}function Oe($){return F($,Z)}function ee($){const W=$.charCodeAt(0);return W>=97&&W<=122||W>=65&&W<=90||W>=48&&W<=57||W===95||W===36||W===45}function Ee($){return F($,ee)}function _e($){const W=$.charCodeAt(0);return W>=48&&W<=57}function Pe($){return F($,_e)}function He($){const W=$.charCodeAt(0);return W>=48&&W<=57||W>=65&&W<=70||W>=97&&W<=102}function Je($){return F($,He)}function Ve($){let W="",V="";for(;W=Pe($);)V+=W;return V}function _t($){let W="";for(;;){const V=$.currentChar();if(V==="{"||V==="}"||V==="@"||V==="|"||!V)break;if(V===ba||V===Tn)if(P($))W+=V,$.next();else{if(U($))break;W+=V,$.next()}else W+=V,$.next()}return W}function we($){O($);let W="",V="";for(;W=Ee($);)V+=W;return $.currentChar()===ja&&E(It.UNTERMINATED_CLOSING_BRACE,i(),0),V}function ae($){O($);let W="";return $.currentChar()==="-"?($.next(),W+=`-${Ve($)}`):W+=Ve($),$.currentChar()===ja&&E(It.UNTERMINATED_CLOSING_BRACE,i(),0),W}function ke($){return $!==d_&&$!==Tn}function pt($){O($),_($,"'");let W="",V="";for(;W=F($,ke);)W==="\\"?V+=Te($):V+=W;const q=$.currentChar();return q===Tn||q===ja?(E(It.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),q===Tn&&($.next(),_($,"'")),V):(_($,"'"),V)}function Te($){const W=$.currentChar();switch(W){case"\\":case"'":return $.next(),`\\${W}`;case"u":return Q($,W,4);case"U":return Q($,W,6);default:return E(It.UNKNOWN_ESCAPE_SEQUENCE,i(),0,W),""}}function Q($,W,V){_($,W);let q="";for(let Re=0;Re{const q=$.currentChar();return q==="{"||q==="@"||q==="|"||q==="("||q===")"||!q||q===ba?V:(V+=q,$.next(),W(V))};return W("")}function w($){O($);const W=_($,"|");return O($),W}function G($,W){let V=null;switch($.currentChar()){case"{":return W.braceNest>=1&&E(It.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),$.next(),V=c(W,2,"{"),O($),W.braceNest++,V;case"}":return W.braceNest>0&&W.currentType===2&&E(It.EMPTY_PLACEHOLDER,i(),0),$.next(),V=c(W,3,"}"),W.braceNest--,W.braceNest>0&&O($),W.inLinked&&W.braceNest===0&&(W.inLinked=!1),V;case"@":return W.braceNest>0&&E(It.UNTERMINATED_CLOSING_BRACE,i(),0),V=re($,W)||T(W),W.braceNest=0,V;default:{let Re=!0,he=!0,H=!0;if(U($))return W.braceNest>0&&E(It.UNTERMINATED_CLOSING_BRACE,i(),0),V=c(W,1,w($)),W.braceNest=0,W.inLinked=!1,V;if(W.braceNest>0&&(W.currentType===4||W.currentType===5||W.currentType===6))return E(It.UNTERMINATED_CLOSING_BRACE,i(),0),W.braceNest=0,pe($,W);if(Re=g($,W))return V=c(W,4,we($)),O($),V;if(he=I($,W))return V=c(W,5,ae($)),O($),V;if(H=N($,W))return V=c(W,6,pt($)),O($),V;if(!Re&&!he&&!H)return V=c(W,12,me($)),E(It.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,V.value),O($),V;break}}return V}function re($,W){const{currentType:V}=W;let q=null;const Re=$.currentChar();switch((V===7||V===8||V===11||V===9)&&(Re===Tn||Re===ba)&&E(It.INVALID_LINKED_FORMAT,i(),0),Re){case"@":return $.next(),q=c(W,7,"@"),W.inLinked=!0,q;case".":return O($),$.next(),c(W,8,".");case":":return O($),$.next(),c(W,9,":");default:return U($)?(q=c(W,1,w($)),W.braceNest=0,W.inLinked=!1,q):b($,W)||y($,W)?(O($),re($,W)):C($,W)?(O($),c(W,11,ie($))):D($,W)?(O($),Re==="{"?G($,W)||q:c(W,10,k($))):(V===7&&E(It.INVALID_LINKED_FORMAT,i(),0),W.braceNest=0,W.inLinked=!1,pe($,W))}}function pe($,W){let V={type:13};if(W.braceNest>0)return G($,W)||T(W);if(W.inLinked)return re($,W)||T(W);switch($.currentChar()){case"{":return G($,W)||T(W);case"}":return E(It.UNBALANCED_CLOSING_BRACE,i(),0),$.next(),c(W,3,"}");case"@":return re($,W)||T(W);default:{if(U($))return V=c(W,1,w($)),W.braceNest=0,W.inLinked=!1,V;if(P($))return c(W,0,_t($));break}}return V}function oe(){const{currentType:$,offset:W,startLoc:V,endLoc:q}=u;return u.lastType=$,u.lastOffset=W,u.lastStartLoc=V,u.lastEndLoc=q,u.offset=s(),u.startLoc=i(),a.currentChar()===ja?c(u,13):pe(a,u)}return{nextToken:oe,currentOffset:s,currentPosition:i,context:l}}const UL="parser",kL=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function wL(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const a=parseInt(t||n,16);return a<=55295||a>=57344?String.fromCodePoint(a):"�"}}}function ML(e={}){const t=e.location!==!1,{onError:n}=e;function a(A,R,g,I,...N){const b=A.currentPosition();if(b.offset+=I,b.column+=I,n){const C=t?Kd(g,b):null,y=Rl(R,C,{domain:UL,args:N});n(y)}}function s(A,R,g){const I={type:A};return t&&(I.start=R,I.end=R,I.loc={start:g,end:g}),I}function i(A,R,g,I){t&&(A.end=R,A.loc&&(A.loc.end=g))}function o(A,R){const g=A.context(),I=s(3,g.offset,g.startLoc);return I.value=R,i(I,A.currentOffset(),A.currentPosition()),I}function r(A,R){const g=A.context(),{lastOffset:I,lastStartLoc:N}=g,b=s(5,I,N);return b.index=parseInt(R,10),A.nextToken(),i(b,A.currentOffset(),A.currentPosition()),b}function u(A,R){const g=A.context(),{lastOffset:I,lastStartLoc:N}=g,b=s(4,I,N);return b.key=R,A.nextToken(),i(b,A.currentOffset(),A.currentPosition()),b}function l(A,R){const g=A.context(),{lastOffset:I,lastStartLoc:N}=g,b=s(9,I,N);return b.value=R.replace(kL,wL),A.nextToken(),i(b,A.currentOffset(),A.currentPosition()),b}function d(A){const R=A.nextToken(),g=A.context(),{lastOffset:I,lastStartLoc:N}=g,b=s(8,I,N);return R.type!==11?(a(A,It.UNEXPECTED_EMPTY_LINKED_MODIFIER,g.lastStartLoc,0),b.value="",i(b,I,N),{nextConsumeToken:R,node:b}):(R.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,g.lastStartLoc,0,pa(R)),b.value=R.value||"",i(b,A.currentOffset(),A.currentPosition()),{node:b})}function E(A,R){const g=A.context(),I=s(7,g.offset,g.startLoc);return I.value=R,i(I,A.currentOffset(),A.currentPosition()),I}function c(A){const R=A.context(),g=s(6,R.offset,R.startLoc);let I=A.nextToken();if(I.type===8){const N=d(A);g.modifier=N.node,I=N.nextConsumeToken||A.nextToken()}switch(I.type!==9&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(I)),I=A.nextToken(),I.type===2&&(I=A.nextToken()),I.type){case 10:I.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(I)),g.key=E(A,I.value||"");break;case 4:I.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(I)),g.key=u(A,I.value||"");break;case 5:I.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(I)),g.key=r(A,I.value||"");break;case 6:I.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(I)),g.key=l(A,I.value||"");break;default:{a(A,It.UNEXPECTED_EMPTY_LINKED_KEY,R.lastStartLoc,0);const N=A.context(),b=s(7,N.offset,N.startLoc);return b.value="",i(b,N.offset,N.startLoc),g.key=b,i(g,N.offset,N.startLoc),{nextConsumeToken:I,node:g}}}return i(g,A.currentOffset(),A.currentPosition()),{node:g}}function T(A){const R=A.context(),g=R.currentType===1?A.currentOffset():R.offset,I=R.currentType===1?R.endLoc:R.startLoc,N=s(2,g,I);N.items=[];let b=null;do{const D=b||A.nextToken();switch(b=null,D.type){case 0:D.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(D)),N.items.push(o(A,D.value||""));break;case 5:D.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(D)),N.items.push(r(A,D.value||""));break;case 4:D.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(D)),N.items.push(u(A,D.value||""));break;case 6:D.value==null&&a(A,It.UNEXPECTED_LEXICAL_ANALYSIS,R.lastStartLoc,0,pa(D)),N.items.push(l(A,D.value||""));break;case 7:{const U=c(A);N.items.push(U.node),b=U.nextConsumeToken||null;break}}}while(R.currentType!==13&&R.currentType!==1);const C=R.currentType===1?R.lastOffset:A.currentOffset(),y=R.currentType===1?R.lastEndLoc:A.currentPosition();return i(N,C,y),N}function _(A,R,g,I){const N=A.context();let b=I.items.length===0;const C=s(1,R,g);C.cases=[],C.cases.push(I);do{const y=T(A);b||(b=y.items.length===0),C.cases.push(y)}while(N.currentType!==13);return b&&a(A,It.MUST_HAVE_MESSAGES_IN_PLURAL,g,0),i(C,A.currentOffset(),A.currentPosition()),C}function f(A){const R=A.context(),{offset:g,startLoc:I}=R,N=T(A);return R.currentType===13?N:_(A,g,I,N)}function O(A){const R=$L(A,qt({},e)),g=R.context(),I=s(0,g.offset,g.startLoc);return t&&I.loc&&(I.loc.source=A),I.body=f(R),e.onCacheKey&&(I.cacheKey=e.onCacheKey(A)),g.currentType!==13&&a(R,It.UNEXPECTED_LEXICAL_ANALYSIS,g.lastStartLoc,0,A[g.offset]||""),i(I,R.currentOffset(),R.currentPosition()),I}return{parse:O}}function pa(e){if(e.type===13)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function WL(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function E_(e,t){for(let n=0;np_(n)),e}function p_(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;nr;function l(O,A){r.code+=O}function d(O,A=!0){const R=A?s:"";l(i?R+" ".repeat(O):R)}function E(O=!0){const A=++r.indentLevel;O&&d(A)}function c(O=!0){const A=--r.indentLevel;O&&d(A)}function T(){d(r.indentLevel)}return{context:u,push:l,indent:E,deindent:c,newline:T,helper:O=>`_${O}`,needIndent:()=>r.needIndent}}function BL(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),gi(e,t.key),t.modifier?(e.push(", "),gi(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function GL(e,t){const{helper:n,needIndent:a}=e;e.push(`${n("normalize")}([`),e.indent(a());const s=t.items.length;for(let i=0;i1){e.push(`${n("plural")}([`),e.indent(a());const s=t.cases.length;for(let i=0;i{const n=ye(t.mode)?t.mode:"normal",a=ye(t.filename)?t.filename:"message.intl",s=!!t.sourceMap,i=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` -`,o=t.needIndent?t.needIndent:n!=="arrow",r=e.helpers||[],u=xL(e,{mode:n,filename:a,sourceMap:s,breakLineCode:i,needIndent:o});u.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),u.indent(o),r.length>0&&(u.push(`const { ${np(r.map(E=>`${E}: _${E}`),", ")} } = ctx`),u.newline()),u.push("return "),gi(u,e),u.deindent(o),u.push("}"),delete e.helpers;const{code:l,map:d}=u.context();return{ast:e,code:l,map:d?d.toJSON():void 0}};function qL(e,t={}){const n=qt({},t),a=!!n.jit,s=!!n.minify,i=n.optimize==null?!0:n.optimize,r=ML(n).parse(e);return a?(i&&zL(r),s&&si(r),{ast:r,code:""}):(FL(r,n),KL(r,n))}/*! - * core-base v10.0.5 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */function jL(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Ls().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Ls().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function _c(e){return n=>YL(n,e)}function YL(e,t){const n=QL(t);if(n==null)throw Mo(0);if(sp(n)===1){const i=JL(n);return e.plural(i.reduce((o,r)=>[...o,T_(e,r)],[]))}else return T_(e,n)}const XL=["b","body"];function QL(e){return ms(e,XL)}const ZL=["c","cases"];function JL(e){return ms(e,ZL,[])}function T_(e,t){const n=ty(t);if(n!=null)return e.type==="text"?n:e.normalize([n]);{const a=ay(t).reduce((s,i)=>[...s,qd(e,i)],[]);return e.normalize(a)}}const ey=["s","static"];function ty(e){return ms(e,ey)}const ny=["i","items"];function ay(e){return ms(e,ny,[])}function qd(e,t){const n=sp(t);switch(n){case 3:return Or(t,n);case 9:return Or(t,n);case 4:{const a=t;if(Zn(a,"k")&&a.k)return e.interpolate(e.named(a.k));if(Zn(a,"key")&&a.key)return e.interpolate(e.named(a.key));throw Mo(n)}case 5:{const a=t;if(Zn(a,"i")&&Bt(a.i))return e.interpolate(e.list(a.i));if(Zn(a,"index")&&Bt(a.index))return e.interpolate(e.list(a.index));throw Mo(n)}case 6:{const a=t,s=ry(a),i=ly(a);return e.linked(qd(e,i),s?qd(e,s):void 0,e.type)}case 7:return Or(t,n);case 8:return Or(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const sy=["t","type"];function sp(e){return ms(e,sy)}const iy=["v","value"];function Or(e,t){const n=ms(e,iy);if(n)return n;throw Mo(t)}const oy=["m","modifier"];function ry(e){return ms(e,oy)}const uy=["k","key"];function ly(e){const t=ms(e,uy);if(t)return t;throw Mo(6)}function ms(e,t,n){for(let a=0;ae;let Ir=gt();function Ri(e){return ft(e)&&sp(e)===0&&(Zn(e,"b")||Zn(e,"body"))}function dy(e,t={}){let n=!1;const a=t.onError||vL;return t.onError=s=>{n=!0,a(s)},{...qL(e,t),detectError:n}}function Ey(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&ye(e)){Tt(t.warnHtmlMessage)&&t.warnHtmlMessage;const a=(t.onCacheKey||cy)(e),s=Ir[a];if(s)return s;const{ast:i,detectError:o}=dy(e,{...t,location:!1,jit:!0}),r=_c(i);return o?r:Ir[a]=r}else{const n=e.cacheKey;if(n){const a=Ir[n];return a||(Ir[n]=_c(e))}else return _c(e)}}let Wo=null;function py(e){Wo=e}function Ty(e,t,n){Wo&&Wo.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const my=_y("function:translate");function _y(e){return t=>Wo&&Wo.emit(e,t)}const Wa={INVALID_ARGUMENT:NL,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},fy=24;function Fa(e){return Rl(e,null,void 0)}function ip(e,t){return t.locale!=null?m_(t.locale):m_(e.locale)}let fc;function m_(e){if(ye(e))return e;if(Lt(e)){if(e.resolvedOnce&&fc!=null)return fc;if(e.constructor.name==="Function"){const t=e();if(OL(t))throw Fa(Wa.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return fc=t}else throw Fa(Wa.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Fa(Wa.NOT_SUPPORT_LOCALE_TYPE)}function hy(e,t,n){return[...new Set([n,...Wt(t)?t:ft(t)?Object.keys(t):ye(t)?[t]:[n]])]}function v1(e,t,n){const a=ye(n)?n:Fo,s=e;s.__localeChainCache||(s.__localeChainCache=new Map);let i=s.__localeChainCache.get(a);if(!i){i=[];let o=[n];for(;Wt(o);)o=__(i,o,t);const r=Wt(t)||!it(t)?t:t.default?t.default:null;o=ye(r)?[r]:r,Wt(o)&&__(i,o,!1),s.__localeChainCache.set(a,i)}return i}function __(e,t,n){let a=!0;for(let s=0;s{o===void 0?o=r:o+=r},c[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},c[2]=()=>{c[0](),s++},c[3]=()=>{if(s>0)s--,a=4,c[0]();else{if(s=0,o===void 0||(o=Ny(o),o===!1))return!1;c[1]()}};function T(){const _=e[n+1];if(a===5&&_==="'"||a===6&&_==='"')return n++,r="\\"+_,c[0](),!0}for(;a!==null;)if(n++,i=e[n],!(i==="\\"&&T())){if(u=Ry(i),E=_s[a],l=E[u]||E.l||8,l===8||(a=l[0],l[1]!==void 0&&(d=c[l[1]],d&&(r=i,d()===!1))))return;if(a===7)return t}}const f_=new Map;function by(e,t){return ft(e)?e[t]:null}function Cy(e,t){if(!ft(e))return null;let n=f_.get(t);if(n||(n=vy(t),n&&f_.set(t,n)),!n)return null;const a=n.length;let s=e,i=0;for(;i`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Dy(){return{upper:(e,t)=>t==="text"&&ye(e)?e.toUpperCase():t==="vnode"&&ft(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&ye(e)?e.toLowerCase():t==="vnode"&&ft(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&ye(e)?S_(e):t==="vnode"&&ft(e)&&"__v_isVNode"in e?S_(e.children):e}}let b1;function Ly(e){b1=e}let C1;function yy(e){C1=e}let P1;function $y(e){P1=e}let D1=null;const Uy=e=>{D1=e},ky=()=>D1;let L1=null;const A_=e=>{L1=e},wy=()=>L1;let O_=0;function My(e={}){const t=Lt(e.onWarn)?e.onWarn:gL,n=ye(e.version)?e.version:Py,a=ye(e.locale)||Lt(e.locale)?e.locale:Fo,s=Lt(a)?Fo:a,i=Wt(e.fallbackLocale)||it(e.fallbackLocale)||ye(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s,o=it(e.messages)?e.messages:hc(s),r=it(e.datetimeFormats)?e.datetimeFormats:hc(s),u=it(e.numberFormats)?e.numberFormats:hc(s),l=qt(gt(),e.modifiers,Dy()),d=e.pluralRules||gt(),E=Lt(e.missing)?e.missing:null,c=Tt(e.missingWarn)||Ii(e.missingWarn)?e.missingWarn:!0,T=Tt(e.fallbackWarn)||Ii(e.fallbackWarn)?e.fallbackWarn:!0,_=!!e.fallbackFormat,f=!!e.unresolving,O=Lt(e.postTranslation)?e.postTranslation:null,A=it(e.processor)?e.processor:null,R=Tt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,g=!!e.escapeParameter,I=Lt(e.messageCompiler)?e.messageCompiler:b1,N=Lt(e.messageResolver)?e.messageResolver:C1||by,b=Lt(e.localeFallbacker)?e.localeFallbacker:P1||hy,C=ft(e.fallbackContext)?e.fallbackContext:void 0,y=e,D=ft(y.__datetimeFormatters)?y.__datetimeFormatters:new Map,U=ft(y.__numberFormatters)?y.__numberFormatters:new Map,P=ft(y.__meta)?y.__meta:{};O_++;const F={version:n,cid:O_,locale:a,fallbackLocale:i,messages:o,modifiers:l,pluralRules:d,missing:E,missingWarn:c,fallbackWarn:T,fallbackFormat:_,unresolving:f,postTranslation:O,processor:A,warnHtmlMessage:R,escapeParameter:g,messageCompiler:I,messageResolver:N,localeFallbacker:b,fallbackContext:C,onWarn:t,__meta:P};return F.datetimeFormats=r,F.numberFormats=u,F.__datetimeFormatters=D,F.__numberFormatters=U,__INTLIFY_PROD_DEVTOOLS__&&Ty(F,n,P),F}const hc=e=>({[e]:gt()});function op(e,t,n,a,s){const{missing:i,onWarn:o}=e;if(i!==null){const r=i(e,n,t,s);return ye(r)?r:t}else return t}function qi(e,t,n){const a=e;a.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function Wy(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Fy(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let a=n+1;a{y1.includes(u)?o[u]=n[u]:i[u]=n[u]}),ye(a)?i.locale=a:it(a)&&(o=a),it(s)&&(o=s),[i.key||"",r,i,o]}function g_(e,t,n){const a=e;for(const s in n){const i=`${t}__${s}`;a.__datetimeFormatters.has(i)&&a.__datetimeFormatters.delete(i)}}function R_(e,...t){const{numberFormats:n,unresolving:a,fallbackLocale:s,onWarn:i,localeFallbacker:o}=e,{__numberFormatters:r}=e,[u,l,d,E]=Yd(...t),c=Tt(d.missingWarn)?d.missingWarn:e.missingWarn;Tt(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const T=!!d.part,_=ip(e,d),f=o(e,s,_);if(!ye(u)||u==="")return new Intl.NumberFormat(_,E).format(l);let O={},A,R=null;const g="number format";for(let b=0;b{$1.includes(u)?o[u]=n[u]:i[u]=n[u]}),ye(a)?i.locale=a:it(a)&&(o=a),it(s)&&(o=s),[i.key||"",r,i,o]}function N_(e,t,n){const a=e;for(const s in n){const i=`${t}__${s}`;a.__numberFormatters.has(i)&&a.__numberFormatters.delete(i)}}const zy=e=>e,xy=e=>"",By="text",Gy=e=>e.length===0?"":np(e),Vy=IL;function v_(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Hy(e){const t=Bt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Bt(e.named.count)||Bt(e.named.n))?Bt(e.named.count)?e.named.count:Bt(e.named.n)?e.named.n:t:t}function Ky(e,t){t.count||(t.count=e),t.n||(t.n=e)}function qy(e={}){const t=e.locale,n=Hy(e),a=ft(e.pluralRules)&&ye(t)&&Lt(e.pluralRules[t])?e.pluralRules[t]:v_,s=ft(e.pluralRules)&&ye(t)&&Lt(e.pluralRules[t])?v_:void 0,i=A=>A[a(n,A.length,s)],o=e.list||[],r=A=>o[A],u=e.named||gt();Bt(e.pluralIndex)&&Ky(n,u);const l=A=>u[A];function d(A,R){const g=Lt(e.messages)?e.messages(A,!!R):ft(e.messages)?e.messages[A]:!1;return g||(e.parent?e.parent.message(A):xy)}const E=A=>e.modifiers?e.modifiers[A]:zy,c=it(e.processor)&&Lt(e.processor.normalize)?e.processor.normalize:Gy,T=it(e.processor)&&Lt(e.processor.interpolate)?e.processor.interpolate:Vy,_=it(e.processor)&&ye(e.processor.type)?e.processor.type:By,O={list:r,named:l,plural:i,linked:(A,...R)=>{const[g,I]=R;let N="text",b="";R.length===1?ft(g)?(b=g.modifier||b,N=g.type||N):ye(g)&&(b=g||b):R.length===2&&(ye(g)&&(b=g||b),ye(I)&&(N=I||N));const C=d(A,!0)(O),y=N==="vnode"&&Wt(C)&&b?C[0]:C;return b?E(b)(y,N):y},message:d,type:_,interpolate:T,normalize:c,values:qt(gt(),o,u)};return O}const b_=()=>"",Vn=e=>Lt(e);function C_(e,...t){const{fallbackFormat:n,postTranslation:a,unresolving:s,messageCompiler:i,fallbackLocale:o,messages:r}=e,[u,l]=Xd(...t),d=Tt(l.missingWarn)?l.missingWarn:e.missingWarn,E=Tt(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,c=Tt(l.escapeParameter)?l.escapeParameter:e.escapeParameter,T=!!l.resolvedMessage,_=ye(l.default)||Tt(l.default)?Tt(l.default)?i?u:()=>u:l.default:n?i?u:()=>u:null,f=n||_!=null&&(ye(_)||Lt(_)),O=ip(e,l);c&&jy(l);let[A,R,g]=T?[u,O,r[O]||gt()]:U1(e,u,O,o,E,d),I=A,N=u;if(!T&&!(ye(I)||Ri(I)||Vn(I))&&f&&(I=_,N=I),!T&&(!(ye(I)||Ri(I)||Vn(I))||!ye(R)))return s?Nl:u;let b=!1;const C=()=>{b=!0},y=Vn(I)?I:k1(e,u,R,I,N,C);if(b)return I;const D=Qy(e,R,g,l),U=qy(D),P=Yy(e,y,U),F=a?a(P,u):P;if(__INTLIFY_PROD_DEVTOOLS__){const Z={timestamp:Date.now(),key:ye(u)?u:Vn(I)?I.key:"",locale:R||(Vn(I)?I.locale:""),format:ye(I)?I:Vn(I)?I.source:"",message:F};Z.meta=qt({},e.__meta,ky()||{}),my(Z)}return F}function jy(e){Wt(e.list)?e.list=e.list.map(t=>ye(t)?c_(t):t):ft(e.named)&&Object.keys(e.named).forEach(t=>{ye(e.named[t])&&(e.named[t]=c_(e.named[t]))})}function U1(e,t,n,a,s,i){const{messages:o,onWarn:r,messageResolver:u,localeFallbacker:l}=e,d=l(e,a,n);let E=gt(),c,T=null;const _="translate";for(let f=0;fa;return l.locale=n,l.key=t,l}const u=o(a,Xy(e,n,s,a,r,i));return u.locale=n,u.key=t,u.source=a,u}function Yy(e,t,n){return t(n)}function Xd(...e){const[t,n,a]=e,s=gt();if(!ye(t)&&!Bt(t)&&!Vn(t)&&!Ri(t))throw Fa(Wa.INVALID_ARGUMENT);const i=Bt(t)?String(t):(Vn(t),t);return Bt(n)?s.plural=n:ye(n)?s.default=n:it(n)&&!gl(n)?s.named=n:Wt(n)&&(s.list=n),Bt(a)?s.plural=a:ye(a)?s.default=a:it(a)&&qt(s,a),[i,s]}function Xy(e,t,n,a,s,i){return{locale:t,key:n,warnHtmlMessage:s,onError:o=>{throw i&&i(o),o},onCacheKey:o=>_L(t,n,o)}}function Qy(e,t,n,a){const{modifiers:s,pluralRules:i,messageResolver:o,fallbackLocale:r,fallbackWarn:u,missingWarn:l,fallbackContext:d}=e,c={locale:t,modifiers:s,pluralRules:i,messages:(T,_)=>{let f=o(n,T);if(f==null&&(d||_)){const[,,O]=U1(d||e,T,t,r,u,l);f=o(O,T)}if(ye(f)||Ri(f)){let O=!1;const R=k1(e,T,t,f,T,()=>{O=!0});return O?b_:R}else return Vn(f)?f:b_}};return e.processor&&(c.processor=e.processor),a.list&&(c.list=a.list),a.named&&(c.named=a.named),Bt(a.plural)&&(c.pluralIndex=a.plural),c}jL();/*! - * vue-i18n v10.0.5 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */const Zy="10.0.5";function Jy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Ls().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Ls().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Ls().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Ls().__INTLIFY_PROD_DEVTOOLS__=!1)}const In={UNEXPECTED_RETURN_TYPE:fy,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Cn(e,...t){return Rl(e,null,void 0)}const Qd=Ts("__translateVNode"),Zd=Ts("__datetimeParts"),Jd=Ts("__numberParts"),w1=Ts("__setPluralRules"),M1=Ts("__injectWithOption"),eE=Ts("__dispose");function zo(e){if(!ft(e))return e;for(const t in e)if(Zn(e,t))if(!t.includes("."))ft(e[t])&&zo(e[t]);else{const n=t.split("."),a=n.length-1;let s=e,i=!1;for(let o=0;o{if("locale"in r&&"resource"in r){const{locale:u,resource:l}=r;u?(o[u]=o[u]||gt(),Yr(l,o[u])):Yr(l,o)}else ye(r)&&Yr(JSON.parse(r),o)}),s==null&&i)for(const r in o)Zn(o,r)&&zo(o[r]);return o}function W1(e){return e.type}function F1(e,t,n){let a=ft(t.messages)?t.messages:gt();"__i18nGlobal"in n&&(a=rp(e.locale.value,{messages:a,__i18n:n.__i18nGlobal}));const s=Object.keys(a);s.length&&s.forEach(i=>{e.mergeLocaleMessage(i,a[i])});{if(ft(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(o=>{e.mergeDateTimeFormat(o,t.datetimeFormats[o])})}if(ft(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(o=>{e.mergeNumberFormat(o,t.numberFormats[o])})}}}function P_(e){return M(Zo,null,e,0)}const D_="__INTLIFY_META__",L_=()=>[],e3=()=>!1;let y_=0;function $_(e){return(t,n,a,s)=>e(n,a,_i()||void 0,s)}const t3=()=>{const e=_i();let t=null;return e&&(t=W1(e)[D_])?{[D_]:t}:null};function up(e={}){const{__root:t,__injectWithOption:n}=e,a=t===void 0,s=e.flatJson,i=_u?Ie:il;let o=Tt(e.inheritLocale)?e.inheritLocale:!0;const r=i(t&&o?t.locale.value:ye(e.locale)?e.locale:Fo),u=i(t&&o?t.fallbackLocale.value:ye(e.fallbackLocale)||Wt(e.fallbackLocale)||it(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r.value),l=i(rp(r.value,e)),d=i(it(e.datetimeFormats)?e.datetimeFormats:{[r.value]:{}}),E=i(it(e.numberFormats)?e.numberFormats:{[r.value]:{}});let c=t?t.missingWarn:Tt(e.missingWarn)||Ii(e.missingWarn)?e.missingWarn:!0,T=t?t.fallbackWarn:Tt(e.fallbackWarn)||Ii(e.fallbackWarn)?e.fallbackWarn:!0,_=t?t.fallbackRoot:Tt(e.fallbackRoot)?e.fallbackRoot:!0,f=!!e.fallbackFormat,O=Lt(e.missing)?e.missing:null,A=Lt(e.missing)?$_(e.missing):null,R=Lt(e.postTranslation)?e.postTranslation:null,g=t?t.warnHtmlMessage:Tt(e.warnHtmlMessage)?e.warnHtmlMessage:!0,I=!!e.escapeParameter;const N=t?t.modifiers:it(e.modifiers)?e.modifiers:{};let b=e.pluralRules||t&&t.pluralRules,C;C=(()=>{a&&A_(null);const H={version:Zy,locale:r.value,fallbackLocale:u.value,messages:l.value,modifiers:N,pluralRules:b,missing:A===null?void 0:A,missingWarn:c,fallbackWarn:T,fallbackFormat:f,unresolving:!0,postTranslation:R===null?void 0:R,warnHtmlMessage:g,escapeParameter:I,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};H.datetimeFormats=d.value,H.numberFormats=E.value,H.__datetimeFormatters=it(C)?C.__datetimeFormatters:void 0,H.__numberFormatters=it(C)?C.__numberFormatters:void 0;const le=My(H);return a&&A_(le),le})(),qi(C,r.value,u.value);function D(){return[r.value,u.value,l.value,d.value,E.value]}const U=z({get:()=>r.value,set:H=>{r.value=H,C.locale=r.value}}),P=z({get:()=>u.value,set:H=>{u.value=H,C.fallbackLocale=u.value,qi(C,r.value,H)}}),F=z(()=>l.value),Z=z(()=>d.value),Oe=z(()=>E.value);function ee(){return Lt(R)?R:null}function Ee(H){R=H,C.postTranslation=H}function _e(){return O}function Pe(H){H!==null&&(A=$_(H)),O=H,C.missing=A}const He=(H,le,Me,Be,rt,jt)=>{D();let zt;try{__INTLIFY_PROD_DEVTOOLS__,a||(C.fallbackContext=t?wy():void 0),zt=H(C)}finally{__INTLIFY_PROD_DEVTOOLS__,a||(C.fallbackContext=void 0)}if(Me!=="translate exists"&&Bt(zt)&&zt===Nl||Me==="translate exists"&&!zt){const[zn,Qn]=le();return t&&_?Be(t):rt(zn)}else{if(jt(zt))return zt;throw Cn(In.UNEXPECTED_RETURN_TYPE)}};function Je(...H){return He(le=>Reflect.apply(C_,null,[le,...H]),()=>Xd(...H),"translate",le=>Reflect.apply(le.t,le,[...H]),le=>le,le=>ye(le))}function Ve(...H){const[le,Me,Be]=H;if(Be&&!ft(Be))throw Cn(In.INVALID_ARGUMENT);return Je(le,Me,qt({resolvedMessage:!0},Be||{}))}function _t(...H){return He(le=>Reflect.apply(I_,null,[le,...H]),()=>jd(...H),"datetime format",le=>Reflect.apply(le.d,le,[...H]),()=>h_,le=>ye(le))}function we(...H){return He(le=>Reflect.apply(R_,null,[le,...H]),()=>Yd(...H),"number format",le=>Reflect.apply(le.n,le,[...H]),()=>h_,le=>ye(le))}function ae(H){return H.map(le=>ye(le)||Bt(le)||Tt(le)?P_(String(le)):le)}const pt={normalize:ae,interpolate:H=>H,type:"vnode"};function Te(...H){return He(le=>{let Me;const Be=le;try{Be.processor=pt,Me=Reflect.apply(C_,null,[Be,...H])}finally{Be.processor=null}return Me},()=>Xd(...H),"translate",le=>le[Qd](...H),le=>[P_(le)],le=>Wt(le))}function Q(...H){return He(le=>Reflect.apply(R_,null,[le,...H]),()=>Yd(...H),"number format",le=>le[Jd](...H),L_,le=>ye(le)||Wt(le))}function Se(...H){return He(le=>Reflect.apply(I_,null,[le,...H]),()=>jd(...H),"datetime format",le=>le[Zd](...H),L_,le=>ye(le)||Wt(le))}function me(H){b=H,C.pluralRules=b}function ie(H,le){return He(()=>{if(!H)return!1;const Me=ye(le)?le:r.value,Be=G(Me),rt=C.messageResolver(Be,H);return Ri(rt)||Vn(rt)||ye(rt)},()=>[H],"translate exists",Me=>Reflect.apply(Me.te,Me,[H,le]),e3,Me=>Tt(Me))}function k(H){let le=null;const Me=v1(C,u.value,r.value);for(let Be=0;Be{o&&(r.value=H,C.locale=H,qi(C,r.value,u.value))}),Ce(t.fallbackLocale,H=>{o&&(u.value=H,C.fallbackLocale=H,qi(C,r.value,u.value))}));const he={id:y_,locale:U,fallbackLocale:P,get inheritLocale(){return o},set inheritLocale(H){o=H,H&&t&&(r.value=t.locale.value,u.value=t.fallbackLocale.value,qi(C,r.value,u.value))},get availableLocales(){return Object.keys(l.value).sort()},messages:F,get modifiers(){return N},get pluralRules(){return b||{}},get isGlobal(){return a},get missingWarn(){return c},set missingWarn(H){c=H,C.missingWarn=c},get fallbackWarn(){return T},set fallbackWarn(H){T=H,C.fallbackWarn=T},get fallbackRoot(){return _},set fallbackRoot(H){_=H},get fallbackFormat(){return f},set fallbackFormat(H){f=H,C.fallbackFormat=f},get warnHtmlMessage(){return g},set warnHtmlMessage(H){g=H,C.warnHtmlMessage=H},get escapeParameter(){return I},set escapeParameter(H){I=H,C.escapeParameter=H},t:Je,getLocaleMessage:G,setLocaleMessage:re,mergeLocaleMessage:pe,getPostTranslationHandler:ee,setPostTranslationHandler:Ee,getMissingHandler:_e,setMissingHandler:Pe,[w1]:me};return he.datetimeFormats=Z,he.numberFormats=Oe,he.rt=Ve,he.te=ie,he.tm=w,he.d=_t,he.n=we,he.getDateTimeFormat=oe,he.setDateTimeFormat=$,he.mergeDateTimeFormat=W,he.getNumberFormat=V,he.setNumberFormat=q,he.mergeNumberFormat=Re,he[M1]=n,he[Qd]=Te,he[Zd]=Se,he[Jd]=Q,he}function n3(e){const t=ye(e.locale)?e.locale:Fo,n=ye(e.fallbackLocale)||Wt(e.fallbackLocale)||it(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,a=Lt(e.missing)?e.missing:void 0,s=Tt(e.silentTranslationWarn)||Ii(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=Tt(e.silentFallbackWarn)||Ii(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=Tt(e.fallbackRoot)?e.fallbackRoot:!0,r=!!e.formatFallbackMessages,u=it(e.modifiers)?e.modifiers:{},l=e.pluralizationRules,d=Lt(e.postTranslation)?e.postTranslation:void 0,E=ye(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,c=!!e.escapeParameterHtml,T=Tt(e.sync)?e.sync:!0;let _=e.messages;if(it(e.sharedMessages)){const N=e.sharedMessages;_=Object.keys(N).reduce((C,y)=>{const D=C[y]||(C[y]={});return qt(D,N[y]),C},_||{})}const{__i18n:f,__root:O,__injectWithOption:A}=e,R=e.datetimeFormats,g=e.numberFormats,I=e.flatJson;return{locale:t,fallbackLocale:n,messages:_,flatJson:I,datetimeFormats:R,numberFormats:g,missing:a,missingWarn:s,fallbackWarn:i,fallbackRoot:o,fallbackFormat:r,modifiers:u,pluralRules:l,postTranslation:d,warnHtmlMessage:E,escapeParameter:c,messageResolver:e.messageResolver,inheritLocale:T,__i18n:f,__root:O,__injectWithOption:A}}function tE(e={}){const t=up(n3(e)),{__extender:n}=e,a={id:t.id,get locale(){return t.locale.value},set locale(s){t.locale.value=s},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(s){t.fallbackLocale.value=s},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(s){t.setMissingHandler(s)},get silentTranslationWarn(){return Tt(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(s){t.missingWarn=Tt(s)?!s:s},get silentFallbackWarn(){return Tt(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(s){t.fallbackWarn=Tt(s)?!s:s},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(s){t.fallbackFormat=s},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(s){t.setPostTranslationHandler(s)},get sync(){return t.inheritLocale},set sync(s){t.inheritLocale=s},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(s){t.warnHtmlMessage=s!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(s){t.escapeParameter=s},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...s){return Reflect.apply(t.t,t,[...s])},rt(...s){return Reflect.apply(t.rt,t,[...s])},tc(...s){const[i,o,r]=s,u={plural:1};let l=null,d=null;if(!ye(i))throw Cn(In.INVALID_ARGUMENT);const E=i;return ye(o)?u.locale=o:Bt(o)?u.plural=o:Wt(o)?l=o:it(o)&&(d=o),ye(r)?u.locale=r:Wt(r)?l=r:it(r)&&(d=r),Reflect.apply(t.t,t,[E,l||d||{},u])},te(s,i){return t.te(s,i)},tm(s){return t.tm(s)},getLocaleMessage(s){return t.getLocaleMessage(s)},setLocaleMessage(s,i){t.setLocaleMessage(s,i)},mergeLocaleMessage(s,i){t.mergeLocaleMessage(s,i)},d(...s){return Reflect.apply(t.d,t,[...s])},getDateTimeFormat(s){return t.getDateTimeFormat(s)},setDateTimeFormat(s,i){t.setDateTimeFormat(s,i)},mergeDateTimeFormat(s,i){t.mergeDateTimeFormat(s,i)},n(...s){return Reflect.apply(t.n,t,[...s])},getNumberFormat(s){return t.getNumberFormat(s)},setNumberFormat(s,i){t.setNumberFormat(s,i)},mergeNumberFormat(s,i){t.mergeNumberFormat(s,i)}};return a.__extender=n,a}function a3(e,t,n){return{beforeCreate(){const a=_i();if(!a)throw Cn(In.UNEXPECTED_ERROR);const s=this.$options;if(s.i18n){const i=s.i18n;if(s.__i18n&&(i.__i18n=s.__i18n),i.__root=t,this===this.$root)this.$i18n=U_(e,i);else{i.__injectWithOption=!0,i.__extender=n.__vueI18nExtend,this.$i18n=tE(i);const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}}else if(s.__i18n)if(this===this.$root)this.$i18n=U_(e,s);else{this.$i18n=tE({__i18n:s.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=e;s.__i18nGlobal&&F1(t,s,s),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,o)=>this.$i18n.te(i,o),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),n.__setInstance(a,this.$i18n)},mounted(){},unmounted(){const a=_i();if(!a)throw Cn(In.UNEXPECTED_ERROR);const s=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,s.__disposer&&(s.__disposer(),delete s.__disposer,delete s.__extender),n.__deleteInstance(a),delete this.$i18n}}}function U_(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[w1](t.pluralizationRules||e.pluralizationRules);const n=rp(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(a=>e.mergeLocaleMessage(a,n[a])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(a=>e.mergeDateTimeFormat(a,t.datetimeFormats[a])),t.numberFormats&&Object.keys(t.numberFormats).forEach(a=>e.mergeNumberFormat(a,t.numberFormats[a])),e}const lp={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function s3({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((a,s)=>[...a,...s.type===ue?s.children:[s]],[]):t.reduce((n,a)=>{const s=e[a];return s&&(n[a]=s()),n},gt())}function z1(){return ue}const i3=X({name:"i18n-t",props:qt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Bt(e)||!isNaN(e)}},lp),setup(e,t){const{slots:n,attrs:a}=t,s=e.i18n||yt({useScope:e.scope,__useComponent:!0});return()=>{const i=Object.keys(n).filter(E=>E!=="_"),o=gt();e.locale&&(o.locale=e.locale),e.plural!==void 0&&(o.plural=ye(e.plural)?+e.plural:e.plural);const r=s3(t,i),u=s[Qd](e.keypath,r,o),l=qt(gt(),a),d=ye(e.tag)||ft(e.tag)?e.tag:z1();return bn(d,l,u)}}}),k_=i3;function o3(e){return Wt(e)&&!ye(e[0])}function x1(e,t,n,a){const{slots:s,attrs:i}=t;return()=>{const o={part:!0};let r=gt();e.locale&&(o.locale=e.locale),ye(e.format)?o.key=e.format:ft(e.format)&&(ye(e.format.key)&&(o.key=e.format.key),r=Object.keys(e.format).reduce((c,T)=>n.includes(T)?qt(gt(),c,{[T]:e.format[T]}):c,gt()));const u=a(e.value,o,r);let l=[o.key];Wt(u)?l=u.map((c,T)=>{const _=s[c.type],f=_?_({[c.type]:c.value,index:T,parts:u}):[c.value];return o3(f)&&(f[0].key=`${c.type}-${T}`),f}):ye(u)&&(l=[u]);const d=qt(gt(),i),E=ye(e.tag)||ft(e.tag)?e.tag:z1();return bn(E,d,l)}}const r3=X({name:"i18n-n",props:qt({value:{type:Number,required:!0},format:{type:[String,Object]}},lp),setup(e,t){const n=e.i18n||yt({useScope:e.scope,__useComponent:!0});return x1(e,t,$1,(...a)=>n[Jd](...a))}}),w_=r3,u3=X({name:"i18n-d",props:qt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},lp),setup(e,t){const n=e.i18n||yt({useScope:e.scope,__useComponent:!0});return x1(e,t,y1,(...a)=>n[Zd](...a))}}),M_=u3;function l3(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const a=n.__getInstance(t);return a!=null?a.__composer:e.global.__composer}}function c3(e){const t=o=>{const{instance:r,value:u}=o;if(!r||!r.$)throw Cn(In.UNEXPECTED_ERROR);const l=l3(e,r.$),d=W_(u);return[Reflect.apply(l.t,l,[...F_(d)]),l]};return{created:(o,r)=>{const[u,l]=t(r);_u&&e.global===l&&(o.__i18nWatcher=Ce(l.locale,()=>{r.instance&&r.instance.$forceUpdate()})),o.__composer=l,o.textContent=u},unmounted:o=>{_u&&o.__i18nWatcher&&(o.__i18nWatcher(),o.__i18nWatcher=void 0,delete o.__i18nWatcher),o.__composer&&(o.__composer=void 0,delete o.__composer)},beforeUpdate:(o,{value:r})=>{if(o.__composer){const u=o.__composer,l=W_(r);o.textContent=Reflect.apply(u.t,u,[...F_(l)])}},getSSRProps:o=>{const[r]=t(o);return{textContent:r}}}}function W_(e){if(ye(e))return{path:e};if(it(e)){if(!("path"in e))throw Cn(In.REQUIRED_VALUE,"path");return e}else throw Cn(In.INVALID_VALUE)}function F_(e){const{path:t,locale:n,args:a,choice:s,plural:i}=e,o={},r=a||{};return ye(n)&&(o.locale=n),Bt(s)&&(o.plural=s),Bt(i)&&(o.plural=i),[t,r,o]}function d3(e,t,...n){const a=it(n[0])?n[0]:{};(Tt(a.globalInstall)?a.globalInstall:!0)&&([k_.name,"I18nT"].forEach(i=>e.component(i,k_)),[w_.name,"I18nN"].forEach(i=>e.component(i,w_)),[M_.name,"I18nD"].forEach(i=>e.component(i,M_))),e.directive("t",c3(t))}const E3=Ts("global-vue-i18n");function p3(e={},t){const n=__VUE_I18N_LEGACY_API__&&Tt(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,a=Tt(e.globalInjection)?e.globalInjection:!0,s=new Map,[i,o]=T3(e,n),r=Ts("");function u(c){return s.get(c)||null}function l(c,T){s.set(c,T)}function d(c){s.delete(c)}const E={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},async install(c,...T){if(c.__VUE_I18N_SYMBOL__=r,c.provide(c.__VUE_I18N_SYMBOL__,E),it(T[0])){const O=T[0];E.__composerExtend=O.__composerExtend,E.__vueI18nExtend=O.__vueI18nExtend}let _=null;!n&&a&&(_=I3(c,E.global)),__VUE_I18N_FULL_INSTALL__&&d3(c,E,...T),__VUE_I18N_LEGACY_API__&&n&&c.mixin(a3(o,o.__composer,E));const f=c.unmount;c.unmount=()=>{_&&_(),E.dispose(),f()}},get global(){return o},dispose(){i.stop()},__instances:s,__getInstance:u,__setInstance:l,__deleteInstance:d};return E}function yt(e={}){const t=_i();if(t==null)throw Cn(In.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Cn(In.NOT_INSTALLED);const n=m3(t),a=f3(n),s=W1(t),i=_3(e,s);if(i==="global")return F1(a,e,s),a;if(i==="parent"){let u=h3(n,t,e.__useComponent);return u==null&&(u=a),u}const o=n;let r=o.__getInstance(t);if(r==null){const u=qt({},e);"__i18n"in s&&(u.__i18n=s.__i18n),a&&(u.__root=a),r=up(u),o.__composerExtend&&(r[eE]=o.__composerExtend(r)),A3(o,t,r),o.__setInstance(t,r)}return r}function T3(e,t,n){const a=h0(),s=__VUE_I18N_LEGACY_API__&&t?a.run(()=>tE(e)):a.run(()=>up(e));if(s==null)throw Cn(In.UNEXPECTED_ERROR);return[a,s]}function m3(e){const t=Ut(e.isCE?E3:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Cn(e.isCE?In.NOT_INSTALLED_WITH_PROVIDE:In.UNEXPECTED_ERROR);return t}function _3(e,t){return gl(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function f3(e){return e.mode==="composition"?e.global:e.global.__composer}function h3(e,t,n=!1){let a=null;const s=t.root;let i=S3(t,n);for(;i!=null;){const o=e;if(e.mode==="composition")a=o.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const r=o.__getInstance(i);r!=null&&(a=r.__composer,n&&a&&!a[M1]&&(a=null))}if(a!=null||s===i)break;i=i.parent}return a}function S3(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function A3(e,t,n){mt(()=>{},t),ct(()=>{const a=n;e.__deleteInstance(t);const s=a[eE];s&&(s(),delete a[eE])},t)}const O3=["locale","fallbackLocale","availableLocales"],z_=["t","rt","d","n","tm","te"];function I3(e,t){const n=Object.create(null);return O3.forEach(s=>{const i=Object.getOwnPropertyDescriptor(t,s);if(!i)throw Cn(In.UNEXPECTED_ERROR);const o=Kt(i.value)?{get(){return i.value.value},set(r){i.value.value=r}}:{get(){return i.get&&i.get()}};Object.defineProperty(n,s,o)}),e.config.globalProperties.$i18n=n,z_.forEach(s=>{const i=Object.getOwnPropertyDescriptor(t,s);if(!i||!i.value)throw Cn(In.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${s}`,i)}),()=>{delete e.config.globalProperties.$i18n,z_.forEach(s=>{delete e.config.globalProperties[`$${s}`]})}}Jy();Ly(Ey);yy(Cy);$y(v1);if(__INTLIFY_PROD_DEVTOOLS__){const e=Ls();e.__INTLIFY__=!0,py(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const g3="Относно тази инстанция",R3="Връзка с администратор",N3="FitTrackee е self-hosted тракер за активности.",v3="под {0} лиценз ",b3="Сорс код",C3="Данни за времето от:",P3={ABOUT_THIS_INSTANCE:g3,CONTACT_ADMIN:R3,FITTRACKEE_DESCRIPTION:N3,FITTRACKEE_LICENSE:v3,SOURCE_CODE:b3,WEATHER_DATA_FROM:C3},D3={DESCRIPTION:"Всякаква допълнителна информация, която може да бъде полезна за вашите потребители. Може да се използва Markdown синтаксис.",TEXT:"Детайлна информация за инстанцията"},L3="Действие",y3="Активиране на акаунт",$3="Активен",U3="Администриране",k3="Администрация",w3="Добавяне/премахване на администраторски права, изтриване на потребителски акаунт.",M3="Приложение",W3={ADMIN_CONTACT:"Администраторски имейл за контакт",MAX_FILES_IN_ZIP_LABEL:"Макс. файлове в zip архив",MAX_USERS_HELP:"0 - без лимит за регистрация.",MAX_USERS_LABEL:"Макс. брой активни потребители",NO_CONTACT_EMAIL:"без имейл за връзка",SINGLE_UPLOAD_MAX_SIZE_LABEL:"Макс. големина на качените файлове (в Mb)",STATS_WORKOUTS_LIMIT_HELP:"0 - без лимит на броя тренировки.",STATS_WORKOUTS_LIMIT_LABEL:"Макс. тренировки за спортни статистики",TITLE:"Конфигурация на приложението",ZIP_UPLOAD_MAX_SIZE_LABEL:"Макс. размер на zip архива (в Mb)"},F3="Обратно към администрациата",z3="Сигурни ли сте, че искате да изтриете {0} акаунтa? Всички данни ще бъдат изтрити, и няма да могат да бъдат възстановени.",x3="Сигурни ли сте, че искате да зададете нова парола за {0}?",B3="Текущ имейл",G3="Изтрий потребител",V3="Изпращането на имейли е забранено.",H3="Позволи/забрани видеве оборудвания.",K3="Позволи/забрани спортове.",q3={TABLE:{ACTIVE:"Активно",HAS_EQUIPMENTS:"оборудването съществува",IMAGE:"Изображение",LABEL:"Етикет"},TITLE:"Администриране на оборудването"},j3="Нов имейл",Y3="Не е въведен текст",X3="Паролата бе нулирана.",Q3="Добавете своя собствена политика за поверителност или оставете празно, за да използвате тази по подразбиране. Може да се използва Markdown синтаксис.",Z3="Регистрациите са забранени.",J3="Регистрациите са позволени.",e$="Нулиране на парола",t$={TABLE:{ACTIVE:"Активен",HAS_WORKOUTS:"съществуват тренировки",IMAGE:"Изображение",LABEL:"Етикет"},TITLE:"Администриране на спортове"},n$="Актуализиране на конфигурацията на приложението.",a$="Актуализиране на имейл",s$="потребител | потребители",i$={SELECTS:{ORDER_BY:{ADMIN:"административен статус",CREATED_AT:"регистриран на",IS_ACTIVE:"статус на акаунт",USERNAME:"потребителско име",WORKOUTS_COUNT:"брой тренировки"}},TITLE:"Администриране - Потребители"},o$="Имейл адресът бе променен.",r$={ABOUT:D3,ACTION:L3,ACTIVATE_USER_ACCOUNT:y3,ACTIVE:$3,ADMIN:U3,ADMINISTRATION:k3,ADMIN_RIGHTS_DELETE_USER_ACCOUNT:w3,APPLICATION:M3,APP_CONFIG:W3,BACK_TO_ADMIN:F3,CONFIRM_USER_ACCOUNT_DELETION:z3,CONFIRM_USER_PASSWORD_RESET:x3,CURRENT_EMAIL:B3,DELETE_USER:G3,EMAIL_SENDING_DISABLED:V3,ENABLE_DISABLE_EQUIPMENT_TYPES:H3,ENABLE_DISABLE_SPORTS:K3,EQUIPMENT_TYPES:q3,NEW_EMAIL:j3,NO_TEXT_ENTERED:Y3,PASSWORD_RESET_SUCCESSFUL:X3,PRIVACY_POLICY_DESCRIPTION:Q3,REGISTRATION_DISABLED:Z3,REGISTRATION_ENABLED:J3,RESET_USER_PASSWORD:e$,SPORTS:t$,UPDATE_APPLICATION_DESCRIPTION:n$,UPDATE_USER_EMAIL:a$,USER:s$,USERS:i$,USER_EMAIL_UPDATE_SUCCESSFUL:o$},u$={"
    /i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},qGe=/^(?:[ \t]*(?:\n|$))+/,jGe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,YGe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,rr=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,XGe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,aO=/(?:[*+-]|\d{1,9}[.)])/,sO=Rt(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,aO).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),Rp=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,QGe=/^[^\n]+/,Np=/(?!\s*\])(?:\\.|[^\[\]\\])+/,ZGe=Rt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Np).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),JGe=Rt(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,aO).getRegex(),Pl="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",vp=/|$))/,eVe=Rt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",vp).replace("tag",Pl).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),iO=Rt(Rp).replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Pl).getRegex(),tVe=Rt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",iO).getRegex(),bp={blockquote:tVe,code:jGe,def:ZGe,fences:YGe,heading:XGe,hr:rr,html:eVe,lheading:sO,list:JGe,newline:qGe,paragraph:iO,table:Oo,text:QGe},J_=Rt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Pl).getRegex(),nVe={...bp,table:J_,paragraph:Rt(Rp).replace("hr",rr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",J_).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Pl).getRegex()},aVe={...bp,html:Rt(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",vp).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Oo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Rt(Rp).replace("hr",rr).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",sO).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},oO=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,sVe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,rO=/^( {2,}|\\)\n(?!\s*$)/,iVe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,uVe=Rt(/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,"u").replace(/punct/g,Dl).getRegex(),lVe=Rt("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)","gu").replace(/notPunctSpace/g,uO).replace(/punctSpace/g,Cp).replace(/punct/g,Dl).getRegex(),cVe=Rt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,uO).replace(/punctSpace/g,Cp).replace(/punct/g,Dl).getRegex(),dVe=Rt(/\\(punct)/,"gu").replace(/punct/g,Dl).getRegex(),EVe=Rt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pVe=Rt(vp).replace("(?:-->|$)","-->").getRegex(),TVe=Rt("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",pVe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Hu=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,mVe=Rt(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",Hu).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),lO=Rt(/^!?\[(label)\]\[(ref)\]/).replace("label",Hu).replace("ref",Np).getRegex(),cO=Rt(/^!?\[(ref)\](?:\[\])?/).replace("ref",Np).getRegex(),_Ve=Rt("reflink|nolink(?!\\()","g").replace("reflink",lO).replace("nolink",cO).getRegex(),Pp={_backpedal:Oo,anyPunctuation:dVe,autolink:EVe,blockSkip:rVe,br:rO,code:sVe,del:Oo,emStrongLDelim:uVe,emStrongRDelimAst:lVe,emStrongRDelimUnd:cVe,escape:oO,link:mVe,nolink:cO,punctuation:oVe,reflink:lO,reflinkSearch:_Ve,tag:TVe,text:iVe,url:Oo},fVe={...Pp,link:Rt(/^!?\[(label)\]\((.*?)\)/).replace("label",Hu).getRegex(),reflink:Rt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Hu).getRegex()},TE={...Pp,escape:Rt(oO).replace("])","~|])").getRegex(),url:Rt(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ef=e=>SVe[e];function _a(e,t){if(t){if(An.escapeTest.test(e))return e.replace(An.escapeReplace,ef)}else if(An.escapeTestNoEncode.test(e))return e.replace(An.escapeReplaceNoEncode,ef);return e}function tf(e){try{e=encodeURI(e).replace(An.percentDecode,"%")}catch{return null}return e}function nf(e,t){var i;const n=e.replace(An.findPipe,(o,r,u)=>{let l=!1,d=r;for(;--d>=0&&u[d]==="\\";)l=!l;return l?"|":" |"}),a=n.split(An.splitPipe);let s=0;if(a[0].trim()||a.shift(),a.length>0&&!((i=a.at(-1))!=null&&i.trim())&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length{const o=i.match(n.other.beginningSpace);if(o===null)return i;const[r]=o;return r.length>=s.length?i.slice(s.length):i}).join(` -`)}class Ku{constructor(t){Nt(this,"options");Nt(this,"rules");Nt(this,"lexer");this.options=t||Hs}space(t){const n=this.rules.block.newline.exec(t);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(t){const n=this.rules.block.code.exec(t);if(n){const a=n[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?a:Qi(a,` -`)}}}fences(t){const n=this.rules.block.fences.exec(t);if(n){const a=n[0],s=OVe(a,n[3]||"",this.rules);return{type:"code",raw:a,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:s}}}heading(t){const n=this.rules.block.heading.exec(t);if(n){let a=n[2].trim();if(this.rules.other.endingHash.test(a)){const s=Qi(a,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(a=s.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:a,tokens:this.lexer.inline(a)}}}hr(t){const n=this.rules.block.hr.exec(t);if(n)return{type:"hr",raw:Qi(n[0],` -`)}}blockquote(t){const n=this.rules.block.blockquote.exec(t);if(n){let a=Qi(n[0],` -`).split(` -`),s="",i="";const o=[];for(;a.length>0;){let r=!1;const u=[];let l;for(l=0;l1,i={type:"list",raw:"",ordered:s,start:s?+a.slice(0,-1):"",loose:!1,items:[]};a=s?`\\d{1,9}\\${a.slice(-1)}`:`\\${a}`,this.options.pedantic&&(a=s?a:"[*+-]");const o=this.rules.other.listItemRegex(a);let r=!1;for(;t;){let l=!1,d="",E="";if(!(n=o.exec(t))||this.rules.block.hr.test(t))break;d=n[0],t=t.substring(d.length);let c=n[2].split(` -`,1)[0].replace(this.rules.other.listReplaceTabs,R=>" ".repeat(3*R.length)),T=t.split(` -`,1)[0],_=!c.trim(),f=0;if(this.options.pedantic?(f=2,E=c.trimStart()):_?f=n[1].length+1:(f=n[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,E=c.slice(f),f+=n[1].length),_&&this.rules.other.blankLine.test(T)&&(d+=T+` -`,t=t.substring(T.length+1),l=!0),!l){const R=this.rules.other.nextBulletRegex(f),g=this.rules.other.hrRegex(f),I=this.rules.other.fencesBeginRegex(f),N=this.rules.other.headingBeginRegex(f),b=this.rules.other.htmlBeginRegex(f);for(;t;){const C=t.split(` -`,1)[0];let y;if(T=C,this.options.pedantic?(T=T.replace(this.rules.other.listReplaceNesting," "),y=T):y=T.replace(this.rules.other.tabCharGlobal," "),I.test(T)||N.test(T)||b.test(T)||R.test(T)||g.test(T))break;if(y.search(this.rules.other.nonSpaceChar)>=f||!T.trim())E+=` -`+y.slice(f);else{if(_||c.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||I.test(c)||N.test(c)||g.test(c))break;E+=` -`+T}!_&&!T.trim()&&(_=!0),d+=C+` -`,t=t.substring(C.length+1),c=y.slice(f)}}i.loose||(r?i.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(r=!0));let O=null,A;this.options.gfm&&(O=this.rules.other.listIsTask.exec(E),O&&(A=O[0]!=="[ ] ",E=E.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:d,task:!!O,checked:A,loose:!1,text:E,tokens:[]}),i.raw+=d}const u=i.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l=0;lc.type==="space"),E=d.length>0&&d.some(c=>this.rules.other.anyLine.test(c.raw));i.loose=E}if(i.loose)for(let l=0;l({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[d]})));return o}}lheading(t){const n=this.rules.block.lheading.exec(t);if(n)return{type:"heading",raw:n[0],depth:n[2].charAt(0)==="="?1:2,text:n[1],tokens:this.lexer.inline(n[1])}}paragraph(t){const n=this.rules.block.paragraph.exec(t);if(n){const a=n[1].charAt(n[1].length-1)===` -`?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:a,tokens:this.lexer.inline(a)}}}text(t){const n=this.rules.block.text.exec(t);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(t){const n=this.rules.inline.escape.exec(t);if(n)return{type:"escape",raw:n[0],text:n[1]}}tag(t){const n=this.rules.inline.tag.exec(t);if(n)return!this.lexer.state.inLink&&this.rules.other.startATag.test(n[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(t){const n=this.rules.inline.link.exec(t);if(n){const a=n[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(a)){if(!this.rules.other.endAngleBracket.test(a))return;const o=Qi(a.slice(0,-1),"\\");if((a.length-o.length)%2===0)return}else{const o=AVe(n[2],"()");if(o>-1){const u=(n[0].indexOf("!")===0?5:4)+n[1].length+o;n[2]=n[2].substring(0,o),n[0]=n[0].substring(0,u).trim(),n[3]=""}}let s=n[2],i="";if(this.options.pedantic){const o=this.rules.other.pedanticHrefTitle.exec(s);o&&(s=o[1],i=o[3])}else i=n[3]?n[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(a)?s=s.slice(1):s=s.slice(1,-1)),af(n,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},n[0],this.lexer,this.rules)}}reflink(t,n){let a;if((a=this.rules.inline.reflink.exec(t))||(a=this.rules.inline.nolink.exec(t))){const s=(a[2]||a[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=n[s.toLowerCase()];if(!i){const o=a[0].charAt(0);return{type:"text",raw:o,text:o}}return af(a,i,a[0],this.lexer,this.rules)}}emStrong(t,n,a=""){let s=this.rules.inline.emStrongLDelim.exec(t);if(!s||s[3]&&a.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[2]||"")||!a||this.rules.inline.punctuation.exec(a)){const o=[...s[0]].length-1;let r,u,l=o,d=0;const E=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(E.lastIndex=0,n=n.slice(-1*t.length+o);(s=E.exec(n))!=null;){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(u=[...r].length,s[3]||s[4]){l+=u;continue}else if((s[5]||s[6])&&o%3&&!((o+u)%3)){d+=u;continue}if(l-=u,l>0)continue;u=Math.min(u,u+l+d);const c=[...s[0]][0].length,T=t.slice(0,o+s.index+c+u);if(Math.min(o,u)%2){const f=T.slice(1,-1);return{type:"em",raw:T,text:f,tokens:this.lexer.inlineTokens(f)}}const _=T.slice(2,-2);return{type:"strong",raw:T,text:_,tokens:this.lexer.inlineTokens(_)}}}}codespan(t){const n=this.rules.inline.code.exec(t);if(n){let a=n[2].replace(this.rules.other.newLineCharGlobal," ");const s=this.rules.other.nonSpaceChar.test(a),i=this.rules.other.startingSpaceChar.test(a)&&this.rules.other.endingSpaceChar.test(a);return s&&i&&(a=a.substring(1,a.length-1)),{type:"codespan",raw:n[0],text:a}}}br(t){const n=this.rules.inline.br.exec(t);if(n)return{type:"br",raw:n[0]}}del(t){const n=this.rules.inline.del.exec(t);if(n)return{type:"del",raw:n[0],text:n[2],tokens:this.lexer.inlineTokens(n[2])}}autolink(t){const n=this.rules.inline.autolink.exec(t);if(n){let a,s;return n[2]==="@"?(a=n[1],s="mailto:"+a):(a=n[1],s=a),{type:"link",raw:n[0],text:a,href:s,tokens:[{type:"text",raw:a,text:a}]}}}url(t){var a;let n;if(n=this.rules.inline.url.exec(t)){let s,i;if(n[2]==="@")s=n[0],i="mailto:"+s;else{let o;do o=n[0],n[0]=((a=this.rules.inline._backpedal.exec(n[0]))==null?void 0:a[0])??"";while(o!==n[0]);s=n[0],n[1]==="www."?i="http://"+n[0]:i=n[0]}return{type:"link",raw:n[0],text:s,href:i,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(t){const n=this.rules.inline.text.exec(t);if(n){const a=this.lexer.state.inRawBlock;return{type:"text",raw:n[0],text:n[0],escaped:a}}}}class Hn{constructor(t){Nt(this,"tokens");Nt(this,"options");Nt(this,"state");Nt(this,"tokenizer");Nt(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Hs,this.options.tokenizer=this.options.tokenizer||new Ku,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const n={other:An,block:vr.normal,inline:Xi.normal};this.options.pedantic?(n.block=vr.pedantic,n.inline=Xi.pedantic):this.options.gfm&&(n.block=vr.gfm,this.options.breaks?n.inline=Xi.breaks:n.inline=Xi.gfm),this.tokenizer.rules=n}static get rules(){return{block:vr,inline:Xi}}static lex(t,n){return new Hn(n).lex(t)}static lexInline(t,n){return new Hn(n).inlineTokens(t)}lex(t){t=t.replace(An.carriageReturn,` -`),this.blockTokens(t,this.tokens);for(let n=0;n(r=l.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))continue;if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length);const l=n.at(-1);r.raw.length===1&&l!==void 0?l.raw+=` -`:n.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="paragraph"||(l==null?void 0:l.type)==="text"?(l.raw+=` -`+r.raw,l.text+=` -`+r.text,this.inlineQueue.at(-1).src=l.text):n.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="paragraph"||(l==null?void 0:l.type)==="text"?(l.raw+=` -`+r.raw,l.text+=` -`+r.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),n.push(r);continue}let u=t;if((o=this.options.extensions)!=null&&o.startBlock){let l=1/0;const d=t.slice(1);let E;this.options.extensions.startBlock.forEach(c=>{E=c.call({lexer:this},d),typeof E=="number"&&E>=0&&(l=Math.min(l,E))}),l<1/0&&l>=0&&(u=t.substring(0,l+1))}if(this.state.top&&(r=this.tokenizer.paragraph(u))){const l=n.at(-1);a&&(l==null?void 0:l.type)==="paragraph"?(l.raw+=` -`+r.raw,l.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(r),a=u.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length);const l=n.at(-1);(l==null?void 0:l.type)==="text"?(l.raw+=` -`+r.raw,l.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(r);continue}if(t){const l="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var r,u,l;let a=t,s=null;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(a))!=null;)d.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(a))!=null;)a=a.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(a))!=null;)a=a.slice(0,s.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i=!1,o="";for(;t;){i||(o=""),i=!1;let d;if((u=(r=this.options.extensions)==null?void 0:r.inline)!=null&&u.some(c=>(d=c.call({lexer:this},t,n))?(t=t.substring(d.raw.length),n.push(d),!0):!1))continue;if(d=this.tokenizer.escape(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.tag(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.link(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(d.raw.length);const c=n.at(-1);d.type==="text"&&(c==null?void 0:c.type)==="text"?(c.raw+=d.raw,c.text+=d.text):n.push(d);continue}if(d=this.tokenizer.emStrong(t,a,o)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.codespan(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.br(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.del(t)){t=t.substring(d.raw.length),n.push(d);continue}if(d=this.tokenizer.autolink(t)){t=t.substring(d.raw.length),n.push(d);continue}if(!this.state.inLink&&(d=this.tokenizer.url(t))){t=t.substring(d.raw.length),n.push(d);continue}let E=t;if((l=this.options.extensions)!=null&&l.startInline){let c=1/0;const T=t.slice(1);let _;this.options.extensions.startInline.forEach(f=>{_=f.call({lexer:this},T),typeof _=="number"&&_>=0&&(c=Math.min(c,_))}),c<1/0&&c>=0&&(E=t.substring(0,c+1))}if(d=this.tokenizer.inlineText(E)){t=t.substring(d.raw.length),d.raw.slice(-1)!=="_"&&(o=d.raw.slice(-1)),i=!0;const c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=d.raw,c.text+=d.text):n.push(d);continue}if(t){const c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return n}}class qu{constructor(t){Nt(this,"options");Nt(this,"parser");this.options=t||Hs}space(t){return""}code({text:t,lang:n,escaped:a}){var o;const s=(o=(n||"").match(An.notSpaceStart))==null?void 0:o[0],i=t.replace(An.endingNewline,"")+` -`;return s?'
    '+(a?i:_a(i,!0))+`
    -`:"
    "+(a?i:_a(i,!0))+`
    -`}blockquote({tokens:t}){return`
    -${this.parser.parse(t)}
    -`}html({text:t}){return t}heading({tokens:t,depth:n}){return`${this.parser.parseInline(t)} -`}hr(t){return`
    -`}list(t){const n=t.ordered,a=t.start;let s="";for(let r=0;r -`+s+" -`}listitem(t){var a;let n="";if(t.task){const s=this.checkbox({checked:!!t.checked});t.loose?((a=t.tokens[0])==null?void 0:a.type)==="paragraph"?(t.tokens[0].text=s+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=s+" "+_a(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:s+" ",text:s+" ",escaped:!0}):n+=s+" "}return n+=this.parser.parse(t.tokens,!!t.loose),`
  • ${n}
  • -`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    -`}table(t){let n="",a="";for(let i=0;i${s}`),` - -`+n+` -`+s+`
    -`}tablerow({text:t}){return` -${t} -`}tablecell(t){const n=this.parser.parseInline(t.tokens),a=t.header?"th":"td";return(t.align?`<${a} align="${t.align}">`:`<${a}>`)+n+` -`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${_a(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:n,tokens:a}){const s=this.parser.parseInline(a),i=tf(t);if(i===null)return s;t=i;let o='
    ",o}image({href:t,title:n,text:a}){const s=tf(t);if(s===null)return _a(a);t=s;let i=`${a}{const l=r[u].flat(1/0);a=a.concat(this.walkTokens(l,n))}):r.tokens&&(a=a.concat(this.walkTokens(r.tokens,n)))}}return a}use(...t){const n=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(a=>{const s={...a};if(s.async=this.defaults.async||s.async||!1,a.extensions&&(a.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){const o=n.renderers[i.name];o?n.renderers[i.name]=function(...r){let u=i.renderer.apply(this,r);return u===!1&&(u=o.apply(this,r)),u}:n.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const o=n[i.level];o?o.unshift(i.tokenizer):n[i.level]=[i.tokenizer],i.start&&(i.level==="block"?n.startBlock?n.startBlock.push(i.start):n.startBlock=[i.start]:i.level==="inline"&&(n.startInline?n.startInline.push(i.start):n.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(n.childTokens[i.name]=i.childTokens)}),s.extensions=n),a.renderer){const i=this.defaults.renderer||new qu(this.defaults);for(const o in a.renderer){if(!(o in i))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;const r=o,u=a.renderer[r],l=i[r];i[r]=(...d)=>{let E=u.apply(i,d);return E===!1&&(E=l.apply(i,d)),E||""}}s.renderer=i}if(a.tokenizer){const i=this.defaults.tokenizer||new Ku(this.defaults);for(const o in a.tokenizer){if(!(o in i))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;const r=o,u=a.tokenizer[r],l=i[r];i[r]=(...d)=>{let E=u.apply(i,d);return E===!1&&(E=l.apply(i,d)),E}}s.tokenizer=i}if(a.hooks){const i=this.defaults.hooks||new Io;for(const o in a.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;const r=o,u=a.hooks[r],l=i[r];Io.passThroughHooks.has(o)?i[r]=d=>{if(this.defaults.async)return Promise.resolve(u.call(i,d)).then(c=>l.call(i,c));const E=u.call(i,d);return l.call(i,E)}:i[r]=(...d)=>{let E=u.apply(i,d);return E===!1&&(E=l.apply(i,d)),E}}s.hooks=i}if(a.walkTokens){const i=this.defaults.walkTokens,o=a.walkTokens;s.walkTokens=function(r){let u=[];return u.push(o.call(this,r)),i&&(u=u.concat(i.call(this,r))),u}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,n){return Hn.lex(t,n??this.defaults)}parser(t,n){return Kn.parse(t,n??this.defaults)}parseMarkdown(t){return(a,s)=>{const i={...s},o={...this.defaults,...i},r=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&i.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof a>"u"||a===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof a!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(a)+", string expected"));o.hooks&&(o.hooks.options=o,o.hooks.block=t);const u=o.hooks?o.hooks.provideLexer():t?Hn.lex:Hn.lexInline,l=o.hooks?o.hooks.provideParser():t?Kn.parse:Kn.parseInline;if(o.async)return Promise.resolve(o.hooks?o.hooks.preprocess(a):a).then(d=>u(d,o)).then(d=>o.hooks?o.hooks.processAllTokens(d):d).then(d=>o.walkTokens?Promise.all(this.walkTokens(d,o.walkTokens)).then(()=>d):d).then(d=>l(d,o)).then(d=>o.hooks?o.hooks.postprocess(d):d).catch(r);try{o.hooks&&(a=o.hooks.preprocess(a));let d=u(a,o);o.hooks&&(d=o.hooks.processAllTokens(d)),o.walkTokens&&this.walkTokens(d,o.walkTokens);let E=l(d,o);return o.hooks&&(E=o.hooks.postprocess(E)),E}catch(d){return r(d)}}}onError(t,n){return a=>{if(a.message+=` -Please report this to https://github.com/markedjs/marked.`,t){const s="

    An error occurred:

    "+_a(a.message+"",!0)+"
    ";return n?Promise.resolve(s):s}if(n)return Promise.reject(a);throw a}}}const xs=new IVe;function At(e,t){return xs.parse(e,t)}At.options=At.setOptions=function(e){return xs.setOptions(e),At.defaults=xs.defaults,nO(At.defaults),At};At.getDefaults=gp;At.defaults=Hs;At.use=function(...e){return xs.use(...e),At.defaults=xs.defaults,nO(At.defaults),At};At.walkTokens=function(e,t){return xs.walkTokens(e,t)};At.parseInline=xs.parseInline;At.Parser=Kn;At.parser=Kn.parse;At.Renderer=qu;At.TextRenderer=Dp;At.Lexer=Hn;At.lexer=Hn.lex;At.Tokenizer=Ku;At.Hooks=Io;At.parse=At;At.options;At.setOptions;At.use;At.walkTokens;At.parseInline;Kn.parse;Hn.lex;var Rs={},Xa={},vc={},Ns={},br={},sf;function gVe(){return sf||(sf=1,Object.defineProperty(br,"__esModule",{value:!0}),br.default=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(function(e){return e.charCodeAt(0)}))),br}var Cr={},of;function RVe(){return of||(of=1,Object.defineProperty(Cr,"__esModule",{value:!0}),Cr.default=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(function(e){return e.charCodeAt(0)}))),Cr}var bc={},rf;function uf(){return rf||(rf=1,function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.replaceCodePoint=e.fromCodePoint=void 0;var n=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);e.fromCodePoint=(t=String.fromCodePoint)!==null&&t!==void 0?t:function(i){var o="";return i>65535&&(i-=65536,o+=String.fromCharCode(i>>>10&1023|55296),i=56320|i&1023),o+=String.fromCharCode(i),o};function a(i){var o;return i>=55296&&i<=57343||i>1114111?65533:(o=n.get(i))!==null&&o!==void 0?o:i}e.replaceCodePoint=a;function s(i){return(0,e.fromCodePoint)(a(i))}e.default=s}(bc)),bc}var lf;function ju(){return lf||(lf=1,function(e){var t=Ns.__createBinding||(Object.create?function(P,F,Z,Oe){Oe===void 0&&(Oe=Z);var ee=Object.getOwnPropertyDescriptor(F,Z);(!ee||("get"in ee?!F.__esModule:ee.writable||ee.configurable))&&(ee={enumerable:!0,get:function(){return F[Z]}}),Object.defineProperty(P,Oe,ee)}:function(P,F,Z,Oe){Oe===void 0&&(Oe=Z),P[Oe]=F[Z]}),n=Ns.__setModuleDefault||(Object.create?function(P,F){Object.defineProperty(P,"default",{enumerable:!0,value:F})}:function(P,F){P.default=F}),a=Ns.__importStar||function(P){if(P&&P.__esModule)return P;var F={};if(P!=null)for(var Z in P)Z!=="default"&&Object.prototype.hasOwnProperty.call(P,Z)&&t(F,P,Z);return n(F,P),F},s=Ns.__importDefault||function(P){return P&&P.__esModule?P:{default:P}};Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXML=e.decodeHTMLStrict=e.decodeHTMLAttribute=e.decodeHTML=e.determineBranch=e.EntityDecoder=e.DecodingMode=e.BinTrieFlags=e.fromCodePoint=e.replaceCodePoint=e.decodeCodePoint=e.xmlDecodeTree=e.htmlDecodeTree=void 0;var i=s(gVe());e.htmlDecodeTree=i.default;var o=s(RVe());e.xmlDecodeTree=o.default;var r=a(uf());e.decodeCodePoint=r.default;var u=uf();Object.defineProperty(e,"replaceCodePoint",{enumerable:!0,get:function(){return u.replaceCodePoint}}),Object.defineProperty(e,"fromCodePoint",{enumerable:!0,get:function(){return u.fromCodePoint}});var l;(function(P){P[P.NUM=35]="NUM",P[P.SEMI=59]="SEMI",P[P.EQUALS=61]="EQUALS",P[P.ZERO=48]="ZERO",P[P.NINE=57]="NINE",P[P.LOWER_A=97]="LOWER_A",P[P.LOWER_F=102]="LOWER_F",P[P.LOWER_X=120]="LOWER_X",P[P.LOWER_Z=122]="LOWER_Z",P[P.UPPER_A=65]="UPPER_A",P[P.UPPER_F=70]="UPPER_F",P[P.UPPER_Z=90]="UPPER_Z"})(l||(l={}));var d=32,E;(function(P){P[P.VALUE_LENGTH=49152]="VALUE_LENGTH",P[P.BRANCH_LENGTH=16256]="BRANCH_LENGTH",P[P.JUMP_TABLE=127]="JUMP_TABLE"})(E=e.BinTrieFlags||(e.BinTrieFlags={}));function c(P){return P>=l.ZERO&&P<=l.NINE}function T(P){return P>=l.UPPER_A&&P<=l.UPPER_F||P>=l.LOWER_A&&P<=l.LOWER_F}function _(P){return P>=l.UPPER_A&&P<=l.UPPER_Z||P>=l.LOWER_A&&P<=l.LOWER_Z||c(P)}function f(P){return P===l.EQUALS||_(P)}var O;(function(P){P[P.EntityStart=0]="EntityStart",P[P.NumericStart=1]="NumericStart",P[P.NumericDecimal=2]="NumericDecimal",P[P.NumericHex=3]="NumericHex",P[P.NamedEntity=4]="NamedEntity"})(O||(O={}));var A;(function(P){P[P.Legacy=0]="Legacy",P[P.Strict=1]="Strict",P[P.Attribute=2]="Attribute"})(A=e.DecodingMode||(e.DecodingMode={}));var R=function(){function P(F,Z,Oe){this.decodeTree=F,this.emitCodePoint=Z,this.errors=Oe,this.state=O.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=A.Strict}return P.prototype.startEntity=function(F){this.decodeMode=F,this.state=O.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1},P.prototype.write=function(F,Z){switch(this.state){case O.EntityStart:return F.charCodeAt(Z)===l.NUM?(this.state=O.NumericStart,this.consumed+=1,this.stateNumericStart(F,Z+1)):(this.state=O.NamedEntity,this.stateNamedEntity(F,Z));case O.NumericStart:return this.stateNumericStart(F,Z);case O.NumericDecimal:return this.stateNumericDecimal(F,Z);case O.NumericHex:return this.stateNumericHex(F,Z);case O.NamedEntity:return this.stateNamedEntity(F,Z)}},P.prototype.stateNumericStart=function(F,Z){return Z>=F.length?-1:(F.charCodeAt(Z)|d)===l.LOWER_X?(this.state=O.NumericHex,this.consumed+=1,this.stateNumericHex(F,Z+1)):(this.state=O.NumericDecimal,this.stateNumericDecimal(F,Z))},P.prototype.addToNumericResult=function(F,Z,Oe,ee){if(Z!==Oe){var Ee=Oe-Z;this.result=this.result*Math.pow(ee,Ee)+parseInt(F.substr(Z,Ee),ee),this.consumed+=Ee}},P.prototype.stateNumericHex=function(F,Z){for(var Oe=Z;Z>14;Z>14,Ee!==0){if(_e===l.SEMI)return this.emitNamedEntityData(this.treeIndex,Ee,this.consumed+this.excess);this.decodeMode!==A.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1},P.prototype.emitNotTerminatedNamedEntity=function(){var F,Z=this,Oe=Z.result,ee=Z.decodeTree,Ee=(ee[Oe]&E.VALUE_LENGTH)>>14;return this.emitNamedEntityData(Oe,Ee,this.consumed),(F=this.errors)===null||F===void 0||F.missingSemicolonAfterCharacterReference(),this.consumed},P.prototype.emitNamedEntityData=function(F,Z,Oe){var ee=this.decodeTree;return this.emitCodePoint(Z===1?ee[F]&~E.VALUE_LENGTH:ee[F+1],Oe),Z===3&&this.emitCodePoint(ee[F+2],Oe),Oe},P.prototype.end=function(){var F;switch(this.state){case O.NamedEntity:return this.result!==0&&(this.decodeMode!==A.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case O.NumericDecimal:return this.emitNumericEntity(0,2);case O.NumericHex:return this.emitNumericEntity(0,3);case O.NumericStart:return(F=this.errors)===null||F===void 0||F.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case O.EntityStart:return 0}},P}();e.EntityDecoder=R;function g(P){var F="",Z=new R(P,function(Oe){return F+=(0,r.fromCodePoint)(Oe)});return function(ee,Ee){for(var _e=0,Pe=0;(Pe=ee.indexOf("&",Pe))>=0;){F+=ee.slice(_e,Pe),Z.startEntity(Ee);var He=Z.write(ee,Pe+1);if(He<0){_e=Pe+Z.end();break}_e=Pe+He,Pe=He===0?_e+1:_e}var Je=F+ee.slice(_e);return F="",Je}}function I(P,F,Z,Oe){var ee=(F&E.BRANCH_LENGTH)>>7,Ee=F&E.JUMP_TABLE;if(ee===0)return Ee!==0&&Oe===Ee?Z:-1;if(Ee){var _e=Oe-Ee;return _e<0||_e>=ee?-1:P[Z+_e]-1}for(var Pe=Z,He=Pe+ee-1;Pe<=He;){var Je=Pe+He>>>1,Ve=P[Je];if(VeOe)He=Je-1;else return P[Je+ee]}return-1}e.determineBranch=I;var N=g(i.default),b=g(o.default);function C(P,F){return F===void 0&&(F=A.Legacy),N(P,F)}e.decodeHTML=C;function y(P){return N(P,A.Attribute)}e.decodeHTMLAttribute=y;function D(P){return N(P,A.Strict)}e.decodeHTMLStrict=D;function U(P){return b(P,A.Strict)}e.decodeXML=U}(Ns)),Ns}var cf;function dO(){return cf||(cf=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.QuoteType=void 0;var t=ju(),n;(function(c){c[c.Tab=9]="Tab",c[c.NewLine=10]="NewLine",c[c.FormFeed=12]="FormFeed",c[c.CarriageReturn=13]="CarriageReturn",c[c.Space=32]="Space",c[c.ExclamationMark=33]="ExclamationMark",c[c.Number=35]="Number",c[c.Amp=38]="Amp",c[c.SingleQuote=39]="SingleQuote",c[c.DoubleQuote=34]="DoubleQuote",c[c.Dash=45]="Dash",c[c.Slash=47]="Slash",c[c.Zero=48]="Zero",c[c.Nine=57]="Nine",c[c.Semi=59]="Semi",c[c.Lt=60]="Lt",c[c.Eq=61]="Eq",c[c.Gt=62]="Gt",c[c.Questionmark=63]="Questionmark",c[c.UpperA=65]="UpperA",c[c.LowerA=97]="LowerA",c[c.UpperF=70]="UpperF",c[c.LowerF=102]="LowerF",c[c.UpperZ=90]="UpperZ",c[c.LowerZ=122]="LowerZ",c[c.LowerX=120]="LowerX",c[c.OpeningSquareBracket=91]="OpeningSquareBracket"})(n||(n={}));var a;(function(c){c[c.Text=1]="Text",c[c.BeforeTagName=2]="BeforeTagName",c[c.InTagName=3]="InTagName",c[c.InSelfClosingTag=4]="InSelfClosingTag",c[c.BeforeClosingTagName=5]="BeforeClosingTagName",c[c.InClosingTagName=6]="InClosingTagName",c[c.AfterClosingTagName=7]="AfterClosingTagName",c[c.BeforeAttributeName=8]="BeforeAttributeName",c[c.InAttributeName=9]="InAttributeName",c[c.AfterAttributeName=10]="AfterAttributeName",c[c.BeforeAttributeValue=11]="BeforeAttributeValue",c[c.InAttributeValueDq=12]="InAttributeValueDq",c[c.InAttributeValueSq=13]="InAttributeValueSq",c[c.InAttributeValueNq=14]="InAttributeValueNq",c[c.BeforeDeclaration=15]="BeforeDeclaration",c[c.InDeclaration=16]="InDeclaration",c[c.InProcessingInstruction=17]="InProcessingInstruction",c[c.BeforeComment=18]="BeforeComment",c[c.CDATASequence=19]="CDATASequence",c[c.InSpecialComment=20]="InSpecialComment",c[c.InCommentLike=21]="InCommentLike",c[c.BeforeSpecialS=22]="BeforeSpecialS",c[c.SpecialStartSequence=23]="SpecialStartSequence",c[c.InSpecialTag=24]="InSpecialTag",c[c.BeforeEntity=25]="BeforeEntity",c[c.BeforeNumericEntity=26]="BeforeNumericEntity",c[c.InNamedEntity=27]="InNamedEntity",c[c.InNumericEntity=28]="InNumericEntity",c[c.InHexEntity=29]="InHexEntity"})(a||(a={}));function s(c){return c===n.Space||c===n.NewLine||c===n.Tab||c===n.FormFeed||c===n.CarriageReturn}function i(c){return c===n.Slash||c===n.Gt||s(c)}function o(c){return c>=n.Zero&&c<=n.Nine}function r(c){return c>=n.LowerA&&c<=n.LowerZ||c>=n.UpperA&&c<=n.UpperZ}function u(c){return c>=n.UpperA&&c<=n.UpperF||c>=n.LowerA&&c<=n.LowerF}var l;(function(c){c[c.NoValue=0]="NoValue",c[c.Unquoted=1]="Unquoted",c[c.Single=2]="Single",c[c.Double=3]="Double"})(l=e.QuoteType||(e.QuoteType={}));var d={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},E=function(){function c(T,_){var f=T.xmlMode,O=f===void 0?!1:f,A=T.decodeEntities,R=A===void 0?!0:A;this.cbs=_,this.state=a.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=a.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=O,this.decodeEntities=R,this.entityTrie=O?t.xmlDecodeTree:t.htmlDecodeTree}return c.prototype.reset=function(){this.state=a.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=a.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},c.prototype.write=function(T){this.offset+=this.buffer.length,this.buffer=T,this.parse()},c.prototype.end=function(){this.running&&this.finish()},c.prototype.pause=function(){this.running=!1},c.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=a.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&T===n.Amp&&(this.state=a.BeforeEntity)},c.prototype.stateSpecialStartSequence=function(T){var _=this.sequenceIndex===this.currentSequence.length,f=_?i(T):(T|32)===this.currentSequence[this.sequenceIndex];if(!f)this.isSpecial=!1;else if(!_){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=a.InTagName,this.stateInTagName(T)},c.prototype.stateInSpecialTag=function(T){if(this.sequenceIndex===this.currentSequence.length){if(T===n.Gt||s(T)){var _=this.index-this.currentSequence.length;if(this.sectionStart<_){var f=this.index;this.index=_,this.cbs.ontext(this.sectionStart,_),this.index=f}this.isSpecial=!1,this.sectionStart=_+2,this.stateInClosingTagName(T);return}this.sequenceIndex=0}(T|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===d.TitleEnd?this.decodeEntities&&T===n.Amp&&(this.state=a.BeforeEntity):this.fastForwardTo(n.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(T===n.Lt)},c.prototype.stateCDATASequence=function(T){T===d.Cdata[this.sequenceIndex]?++this.sequenceIndex===d.Cdata.length&&(this.state=a.InCommentLike,this.currentSequence=d.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=a.InDeclaration,this.stateInDeclaration(T))},c.prototype.fastForwardTo=function(T){for(;++this.index>14)-1;if(!this.allowLegacyEntity()&&T!==n.Semi)this.trieIndex+=f;else{var O=this.index-this.entityExcess+1;O>this.sectionStart&&this.emitPartial(this.sectionStart,O),this.entityResult=this.trieIndex,this.trieIndex+=f,this.entityExcess=0,this.sectionStart=this.index+1,f===0&&this.emitNamedEntity()}}},c.prototype.emitNamedEntity=function(){if(this.state=this.baseState,this.entityResult!==0){var T=(this.entityTrie[this.entityResult]&t.BinTrieFlags.VALUE_LENGTH)>>14;switch(T){case 1:{this.emitCodePoint(this.entityTrie[this.entityResult]&~t.BinTrieFlags.VALUE_LENGTH);break}case 2:{this.emitCodePoint(this.entityTrie[this.entityResult+1]);break}case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}},c.prototype.stateBeforeNumericEntity=function(T){(T|32)===n.LowerX?(this.entityExcess++,this.state=a.InHexEntity):(this.state=a.InNumericEntity,this.stateInNumericEntity(T))},c.prototype.emitNumericEntity=function(T){var _=this.index-this.entityExcess-1,f=_+2+ +(this.state===a.InHexEntity);f!==this.index&&(_>this.sectionStart&&this.emitPartial(this.sectionStart,_),this.sectionStart=this.index+Number(T),this.emitCodePoint((0,t.replaceCodePoint)(this.entityResult))),this.state=this.baseState},c.prototype.stateInNumericEntity=function(T){T===n.Semi?this.emitNumericEntity(!0):o(T)?(this.entityResult=this.entityResult*10+(T-n.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},c.prototype.stateInHexEntity=function(T){T===n.Semi?this.emitNumericEntity(!0):o(T)?(this.entityResult=this.entityResult*16+(T-n.Zero),this.entityExcess++):u(T)?(this.entityResult=this.entityResult*16+((T|32)-n.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},c.prototype.allowLegacyEntity=function(){return!this.xmlMode&&(this.baseState===a.Text||this.baseState===a.InSpecialTag)},c.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===a.Text||this.state===a.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===a.InAttributeValueDq||this.state===a.InAttributeValueSq||this.state===a.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},c.prototype.shouldContinue=function(){return this.index0&&b.has(this.stack[this.stack.length-1]);){var C=this.stack.pop();(g=(R=this.cbs).onclosetag)===null||g===void 0||g.call(R,C,!0)}this.isVoidElement(A)||(this.stack.push(A),c.has(A)?this.foreignContext.push(!0):T.has(A)&&this.foreignContext.push(!1)),(N=(I=this.cbs).onopentagname)===null||N===void 0||N.call(I,A),this.cbs.onopentag&&(this.attribs={})},O.prototype.endOpenTag=function(A){var R,g;this.startIndex=this.openTagStart,this.attribs&&((g=(R=this.cbs).onopentag)===null||g===void 0||g.call(R,this.tagname,this.attribs,A),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},O.prototype.onopentagend=function(A){this.endIndex=A,this.endOpenTag(!1),this.startIndex=A+1},O.prototype.onclosetag=function(A,R){var g,I,N,b,C,y;this.endIndex=R;var D=this.getSlice(A,R);if(this.lowerCaseTagNames&&(D=D.toLowerCase()),(c.has(D)||T.has(D))&&this.foreignContext.pop(),this.isVoidElement(D))!this.options.xmlMode&&D==="br"&&((I=(g=this.cbs).onopentagname)===null||I===void 0||I.call(g,"br"),(b=(N=this.cbs).onopentag)===null||b===void 0||b.call(N,"br",{},!0),(y=(C=this.cbs).onclosetag)===null||y===void 0||y.call(C,"br",!1));else{var U=this.stack.lastIndexOf(D);if(U!==-1)if(this.cbs.onclosetag)for(var P=this.stack.length-U;P--;)this.cbs.onclosetag(this.stack.pop(),P!==0);else this.stack.length=U;else!this.options.xmlMode&&D==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=R+1},O.prototype.onselfclosingtag=function(A){this.endIndex=A,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=A+1):this.onopentagend(A)},O.prototype.closeCurrentTag=function(A){var R,g,I=this.tagname;this.endOpenTag(A),this.stack[this.stack.length-1]===I&&((g=(R=this.cbs).onclosetag)===null||g===void 0||g.call(R,I,!A),this.stack.pop())},O.prototype.onattribname=function(A,R){this.startIndex=A;var g=this.getSlice(A,R);this.attribname=this.lowerCaseAttributeNames?g.toLowerCase():g},O.prototype.onattribdata=function(A,R){this.attribvalue+=this.getSlice(A,R)},O.prototype.onattribentity=function(A){this.attribvalue+=(0,s.fromCodePoint)(A)},O.prototype.onattribend=function(A,R){var g,I;this.endIndex=R,(I=(g=this.cbs).onattribute)===null||I===void 0||I.call(g,this.attribname,this.attribvalue,A===a.QuoteType.Double?'"':A===a.QuoteType.Single?"'":A===a.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},O.prototype.getInstructionName=function(A){var R=A.search(_),g=R<0?A:A.substr(0,R);return this.lowerCaseTagNames&&(g=g.toLowerCase()),g},O.prototype.ondeclaration=function(A,R){this.endIndex=R;var g=this.getSlice(A,R);if(this.cbs.onprocessinginstruction){var I=this.getInstructionName(g);this.cbs.onprocessinginstruction("!".concat(I),"!".concat(g))}this.startIndex=R+1},O.prototype.onprocessinginstruction=function(A,R){this.endIndex=R;var g=this.getSlice(A,R);if(this.cbs.onprocessinginstruction){var I=this.getInstructionName(g);this.cbs.onprocessinginstruction("?".concat(I),"?".concat(g))}this.startIndex=R+1},O.prototype.oncomment=function(A,R,g){var I,N,b,C;this.endIndex=R,(N=(I=this.cbs).oncomment)===null||N===void 0||N.call(I,this.getSlice(A,R-g)),(C=(b=this.cbs).oncommentend)===null||C===void 0||C.call(b),this.startIndex=R+1},O.prototype.oncdata=function(A,R,g){var I,N,b,C,y,D,U,P,F,Z;this.endIndex=R;var Oe=this.getSlice(A,R-g);this.options.xmlMode||this.options.recognizeCDATA?((N=(I=this.cbs).oncdatastart)===null||N===void 0||N.call(I),(C=(b=this.cbs).ontext)===null||C===void 0||C.call(b,Oe),(D=(y=this.cbs).oncdataend)===null||D===void 0||D.call(y)):((P=(U=this.cbs).oncomment)===null||P===void 0||P.call(U,"[CDATA[".concat(Oe,"]]")),(Z=(F=this.cbs).oncommentend)===null||Z===void 0||Z.call(F)),this.startIndex=R+1},O.prototype.onend=function(){var A,R;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var g=this.stack.length;g>0;this.cbs.onclosetag(this.stack[--g],!0));}(R=(A=this.cbs).onend)===null||R===void 0||R.call(A)},O.prototype.reset=function(){var A,R,g,I;(R=(A=this.cbs).onreset)===null||R===void 0||R.call(A),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(I=(g=this.cbs).onparserinit)===null||I===void 0||I.call(g,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1},O.prototype.parseComplete=function(A){this.reset(),this.end(A)},O.prototype.getSlice=function(A,R){for(;A-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();for(var g=this.buffers[0].slice(A-this.bufferOffset,R-this.bufferOffset);R-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),g+=this.buffers[0].slice(0,R-this.bufferOffset);return g},O.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},O.prototype.write=function(A){var R,g;if(this.ended){(g=(R=this.cbs).onerror)===null||g===void 0||g.call(R,new Error(".write() after done!"));return}this.buffers.push(A),this.tokenizer.running&&(this.tokenizer.write(A),this.writeIndex++)},O.prototype.end=function(A){var R,g;if(this.ended){(g=(R=this.cbs).onerror)===null||g===void 0||g.call(R,new Error(".end() after done!"));return}A&&this.write(A),this.ended=!0,this.tokenizer.end()},O.prototype.pause=function(){this.tokenizer.pause()},O.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"childNodes",{get:function(){return this.children},set:function(C){this.children=C},enumerable:!1,configurable:!0}),b}(a);at.NodeWithChildren=u;var l=function(N){e(b,N);function b(){var C=N!==null&&N.apply(this,arguments)||this;return C.type=n.ElementType.CDATA,C}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),b}(u);at.CDATA=l;var d=function(N){e(b,N);function b(){var C=N!==null&&N.apply(this,arguments)||this;return C.type=n.ElementType.Root,C}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),b}(u);at.Document=d;var E=function(N){e(b,N);function b(C,y,D,U){D===void 0&&(D=[]),U===void 0&&(U=C==="script"?n.ElementType.Script:C==="style"?n.ElementType.Style:n.ElementType.Tag);var P=N.call(this,D)||this;return P.name=C,P.attribs=y,P.type=U,P}return Object.defineProperty(b.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"tagName",{get:function(){return this.name},set:function(C){this.name=C},enumerable:!1,configurable:!0}),Object.defineProperty(b.prototype,"attributes",{get:function(){var C=this;return Object.keys(this.attribs).map(function(y){var D,U;return{name:y,value:C.attribs[y],namespace:(D=C["x-attribsNamespace"])===null||D===void 0?void 0:D[y],prefix:(U=C["x-attribsPrefix"])===null||U===void 0?void 0:U[y]}})},enumerable:!1,configurable:!0}),b}(u);at.Element=E;function c(N){return(0,n.isTag)(N)}at.isTag=c;function T(N){return N.type===n.ElementType.CDATA}at.isCDATA=T;function _(N){return N.type===n.ElementType.Text}at.isText=_;function f(N){return N.type===n.ElementType.Comment}at.isComment=f;function O(N){return N.type===n.ElementType.Directive}at.isDirective=O;function A(N){return N.type===n.ElementType.Root}at.isDocument=A;function R(N){return Object.prototype.hasOwnProperty.call(N,"children")}at.hasChildren=R;function g(N,b){b===void 0&&(b=!1);var C;if(_(N))C=new i(N.data);else if(f(N))C=new o(N.data);else if(c(N)){var y=b?I(N.children):[],D=new E(N.name,t({},N.attribs),y);y.forEach(function(Z){return Z.parent=D}),N.namespace!=null&&(D.namespace=N.namespace),N["x-attribsNamespace"]&&(D["x-attribsNamespace"]=t({},N["x-attribsNamespace"])),N["x-attribsPrefix"]&&(D["x-attribsPrefix"]=t({},N["x-attribsPrefix"])),C=D}else if(T(N)){var y=b?I(N.children):[],U=new l(y);y.forEach(function(Oe){return Oe.parent=U}),C=U}else if(A(N)){var y=b?I(N.children):[],P=new d(y);y.forEach(function(Oe){return Oe.parent=P}),N["x-mode"]&&(P["x-mode"]=N["x-mode"]),C=P}else if(O(N)){var F=new r(N.name,N.data);N["x-name"]!=null&&(F["x-name"]=N["x-name"],F["x-publicId"]=N["x-publicId"],F["x-systemId"]=N["x-systemId"]),C=F}else throw new Error("Not implemented yet: ".concat(N.type));return C.startIndex=N.startIndex,C.endIndex=N.endIndex,N.sourceCodeLocation!=null&&(C.sourceCodeLocation=N.sourceCodeLocation),C}at.cloneNode=g;function I(N){for(var b=N.map(function(y){return g(y,!0)}),C=1;C$\x80-\uFFFF]/g;var t=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);e.getCodePoint=String.prototype.codePointAt!=null?function(s,i){return s.codePointAt(i)}:function(s,i){return(s.charCodeAt(i)&64512)===55296?(s.charCodeAt(i)-55296)*1024+s.charCodeAt(i+1)-56320+65536:s.charCodeAt(i)};function n(s){for(var i="",o=0,r;(r=e.xmlReplacer.exec(s))!==null;){var u=r.index,l=s.charCodeAt(u),d=t.get(l);d!==void 0?(i+=s.substring(o,u)+d,o=u+1):(i+="".concat(s.substring(o,u),"&#x").concat((0,e.getCodePoint)(s,u).toString(16),";"),o=e.xmlReplacer.lastIndex+=+((l&64512)===55296))}return i+s.substr(o)}e.encodeXML=n,e.escape=n;function a(s,i){return function(r){for(var u,l=0,d="";u=s.exec(r);)l!==u.index&&(d+=r.substring(l,u.index)),d+=i.get(u[0].charCodeAt(0)),l=u.index+1;return d+r.substring(l)}}e.escapeUTF8=a(/[&<>'"]/g,t),e.escapeAttribute=a(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),e.escapeText=a(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))}(Dc)),Dc}var Sf;function Af(){if(Sf)return Qa;Sf=1;var e=Qa.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.encodeNonAsciiHTML=Qa.encodeHTML=void 0;var t=e(NVe()),n=mE(),a=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function s(r){return o(a,r)}Qa.encodeHTML=s;function i(r){return o(n.xmlReplacer,r)}Qa.encodeNonAsciiHTML=i;function o(r,u){for(var l="",d=0,E;(E=r.exec(u))!==null;){var c=E.index;l+=u.substring(d,c);var T=u.charCodeAt(c),_=t.default.get(T);if(typeof _=="object"){if(c+10&&(C+=E(I.children,N)),(N.xmlMode||!d.has(I.name))&&(C+=""))),C}function O(I){return"<".concat(I.data,">")}function A(I,N){var b,C=I.data||"";return((b=N.encodeEntities)!==null&&b!==void 0?b:N.decodeEntities)!==!1&&!(!N.xmlMode&&I.parent&&r.has(I.parent.name))&&(C=N.xmlMode||N.encodeEntities!=="utf8"?(0,i.encodeXML)(C):(0,i.escapeText)(C)),C}function R(I){return"")}function g(I){return"")}return Ta}var Rf;function EO(){if(Rf)return Rn;Rf=1;var e=Rn.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.innerText=Rn.textContent=Rn.getText=Rn.getInnerHTML=Rn.getOuterHTML=void 0;var t=cs(),n=e(CVe()),a=ur();function s(l,d){return(0,n.default)(l,d)}Rn.getOuterHTML=s;function i(l,d){return(0,t.hasChildren)(l)?l.children.map(function(E){return s(E,d)}).join(""):""}Rn.getInnerHTML=i;function o(l){return Array.isArray(l)?l.map(o).join(""):(0,t.isTag)(l)?l.name==="br"?` -`:o(l.children):(0,t.isCDATA)(l)?o(l.children):(0,t.isText)(l)?l.data:""}Rn.getText=o;function r(l){return Array.isArray(l)?l.map(r).join(""):(0,t.hasChildren)(l)&&!(0,t.isComment)(l)?r(l.children):(0,t.isText)(l)?l.data:""}Rn.textContent=r;function u(l){return Array.isArray(l)?l.map(u).join(""):(0,t.hasChildren)(l)&&(l.type===a.ElementType.Tag||(0,t.isCDATA)(l))?u(l.children):(0,t.isText)(l)?l.data:""}return Rn.innerText=u,Rn}var Vt={},Nf;function PVe(){if(Nf)return Vt;Nf=1,Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.prevElementSibling=Vt.nextElementSibling=Vt.getName=Vt.hasAttrib=Vt.getAttributeValue=Vt.getSiblings=Vt.getParent=Vt.getChildren=void 0;var e=cs();function t(l){return(0,e.hasChildren)(l)?l.children:[]}Vt.getChildren=t;function n(l){return l.parent||null}Vt.getParent=n;function a(l){var d,E,c=n(l);if(c!=null)return t(c);for(var T=[l],_=l.prev,f=l.next;_!=null;)T.unshift(_),d=_,_=d.prev;for(;f!=null;)T.push(f),E=f,f=E.next;return T}Vt.getSiblings=a;function s(l,d){var E;return(E=l.attribs)===null||E===void 0?void 0:E[d]}Vt.getAttributeValue=s;function i(l,d){return l.attribs!=null&&Object.prototype.hasOwnProperty.call(l.attribs,d)&&l.attribs[d]!=null}Vt.hasAttrib=i;function o(l){return l.name}Vt.getName=o;function r(l){for(var d,E=l.next;E!==null&&!(0,e.isTag)(E);)d=E,E=d.next;return E}Vt.nextElementSibling=r;function u(l){for(var d,E=l.prev;E!==null&&!(0,e.isTag)(E);)d=E,E=d.prev;return E}return Vt.prevElementSibling=u,Vt}var dn={},vf;function DVe(){if(vf)return dn;vf=1,Object.defineProperty(dn,"__esModule",{value:!0}),dn.prepend=dn.prependChild=dn.append=dn.appendChild=dn.replaceElement=dn.removeElement=void 0;function e(o){if(o.prev&&(o.prev.next=o.next),o.next&&(o.next.prev=o.prev),o.parent){var r=o.parent.children,u=r.lastIndexOf(o);u>=0&&r.splice(u,1)}o.next=null,o.prev=null,o.parent=null}dn.removeElement=e;function t(o,r){var u=r.prev=o.prev;u&&(u.next=r);var l=r.next=o.next;l&&(l.prev=r);var d=r.parent=o.parent;if(d){var E=d.children;E[E.lastIndexOf(o)]=r,o.parent=null}}dn.replaceElement=t;function n(o,r){if(e(r),r.next=null,r.parent=o,o.children.push(r)>1){var u=o.children[o.children.length-2];u.next=r,r.prev=u}else r.prev=null}dn.appendChild=n;function a(o,r){e(r);var u=o.parent,l=o.next;if(r.next=l,r.prev=o,o.next=r,r.parent=u,l){if(l.prev=r,u){var d=u.children;d.splice(d.lastIndexOf(l),0,r)}}else u&&u.children.push(r)}dn.append=a;function s(o,r){if(e(r),r.parent=o,r.prev=null,o.children.unshift(r)!==1){var u=o.children[1];u.prev=r,r.next=u}else r.next=null}dn.prependChild=s;function i(o,r){e(r);var u=o.parent;if(u){var l=u.children;l.splice(l.indexOf(o),0,r)}o.prev&&(o.prev.next=r),r.parent=u,r.prev=o.prev,r.next=o,o.prev=r}return dn.prepend=i,dn}var En={},bf;function pO(){if(bf)return En;bf=1,Object.defineProperty(En,"__esModule",{value:!0}),En.findAll=En.existsOne=En.findOne=En.findOneChild=En.find=En.filter=void 0;var e=cs();function t(r,u,l,d){return l===void 0&&(l=!0),d===void 0&&(d=1/0),n(r,Array.isArray(u)?u:[u],l,d)}En.filter=t;function n(r,u,l,d){for(var E=[],c=[u],T=[0];;){if(T[0]>=c[0].length){if(T.length===1)return E;c.shift(),T.shift();continue}var _=c[0][T[0]++];if(r(_)&&(E.push(_),--d<=0))return E;l&&(0,e.hasChildren)(_)&&_.children.length>0&&(T.unshift(0),c.unshift(_.children))}}En.find=n;function a(r,u){return u.find(r)}En.findOneChild=a;function s(r,u,l){l===void 0&&(l=!0);for(var d=null,E=0;E0&&(d=s(r,c.children,!0));else continue}return d}En.findOne=s;function i(r,u){return u.some(function(l){return(0,e.isTag)(l)&&(r(l)||i(r,l.children))})}En.existsOne=i;function o(r,u){for(var l=[],d=[u],E=[0];;){if(E[0]>=d[0].length){if(d.length===1)return l;d.shift(),E.shift();continue}var c=d[0][E[0]++];(0,e.isTag)(c)&&(r(c)&&l.push(c),c.children.length>0&&(E.unshift(0),d.unshift(c.children)))}}return En.findAll=o,En}var $n={},Cf;function TO(){if(Cf)return $n;Cf=1,Object.defineProperty($n,"__esModule",{value:!0}),$n.getElementsByTagType=$n.getElementsByTagName=$n.getElementById=$n.getElements=$n.testElement=void 0;var e=cs(),t=pO(),n={tag_name:function(E){return typeof E=="function"?function(c){return(0,e.isTag)(c)&&E(c.name)}:E==="*"?e.isTag:function(c){return(0,e.isTag)(c)&&c.name===E}},tag_type:function(E){return typeof E=="function"?function(c){return E(c.type)}:function(c){return c.type===E}},tag_contains:function(E){return typeof E=="function"?function(c){return(0,e.isText)(c)&&E(c.data)}:function(c){return(0,e.isText)(c)&&c.data===E}}};function a(E,c){return typeof c=="function"?function(T){return(0,e.isTag)(T)&&c(T.attribs[E])}:function(T){return(0,e.isTag)(T)&&T.attribs[E]===c}}function s(E,c){return function(T){return E(T)||c(T)}}function i(E){var c=Object.keys(E).map(function(T){var _=E[T];return Object.prototype.hasOwnProperty.call(n,T)?n[T](_):a(T,_)});return c.length===0?null:c.reduce(s)}function o(E,c){var T=i(E);return T?T(c):!0}$n.testElement=o;function r(E,c,T,_){_===void 0&&(_=1/0);var f=i(E);return f?(0,t.filter)(f,c,T,_):[]}$n.getElements=r;function u(E,c,T){return T===void 0&&(T=!0),Array.isArray(c)||(c=[c]),(0,t.findOne)(a("id",E),c,T)}$n.getElementById=u;function l(E,c,T,_){return T===void 0&&(T=!0),_===void 0&&(_=1/0),(0,t.filter)(n.tag_name(E),c,T,_)}$n.getElementsByTagName=l;function d(E,c,T,_){return T===void 0&&(T=!0),_===void 0&&(_=1/0),(0,t.filter)(n.tag_type(E),c,T,_)}return $n.getElementsByTagType=d,$n}var Lc={},Pf;function LVe(){return Pf||(Pf=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.uniqueSort=e.compareDocumentPosition=e.DocumentPosition=e.removeSubsets=void 0;var t=cs();function n(o){for(var r=o.length;--r>=0;){var u=o[r];if(r>0&&o.lastIndexOf(u,r-1)>=0){o.splice(r,1);continue}for(var l=u.parent;l;l=l.parent)if(o.includes(l)){o.splice(r,1);break}}return o}e.removeSubsets=n;var a;(function(o){o[o.DISCONNECTED=1]="DISCONNECTED",o[o.PRECEDING=2]="PRECEDING",o[o.FOLLOWING=4]="FOLLOWING",o[o.CONTAINS=8]="CONTAINS",o[o.CONTAINED_BY=16]="CONTAINED_BY"})(a=e.DocumentPosition||(e.DocumentPosition={}));function s(o,r){var u=[],l=[];if(o===r)return 0;for(var d=(0,t.hasChildren)(o)?o:o.parent;d;)u.unshift(d),d=d.parent;for(d=(0,t.hasChildren)(r)?r:r.parent;d;)l.unshift(d),d=d.parent;for(var E=Math.min(u.length,l.length),c=0;c_.indexOf(O)?T===r?a.FOLLOWING|a.CONTAINED_BY:a.FOLLOWING:T===o?a.PRECEDING|a.CONTAINS:a.PRECEDING}e.compareDocumentPosition=s;function i(o){return o=o.filter(function(r,u,l){return!l.includes(r,u+1)}),o.sort(function(r,u){var l=s(r,u);return l&a.PRECEDING?-1:l&a.FOLLOWING?1:0}),o}e.uniqueSort=i}(Lc)),Lc}var eo={},Df;function yVe(){if(Df)return eo;Df=1,Object.defineProperty(eo,"__esModule",{value:!0}),eo.getFeed=void 0;var e=EO(),t=TO();function n(c){var T=u(E,c);return T?T.name==="feed"?a(T):s(T):null}eo.getFeed=n;function a(c){var T,_=c.children,f={type:"atom",items:(0,t.getElementsByTagName)("entry",_).map(function(R){var g,I=R.children,N={media:r(I)};d(N,"id","id",I),d(N,"title","title",I);var b=(g=u("link",I))===null||g===void 0?void 0:g.attribs.href;b&&(N.link=b);var C=l("summary",I)||l("content",I);C&&(N.description=C);var y=l("updated",I);return y&&(N.pubDate=new Date(y)),N})};d(f,"id","id",_),d(f,"title","title",_);var O=(T=u("link",_))===null||T===void 0?void 0:T.attribs.href;O&&(f.link=O),d(f,"description","subtitle",_);var A=l("updated",_);return A&&(f.updated=new Date(A)),d(f,"author","email",_,!0),f}function s(c){var T,_,f=(_=(T=u("channel",c.children))===null||T===void 0?void 0:T.children)!==null&&_!==void 0?_:[],O={type:c.name.substr(0,3),id:"",items:(0,t.getElementsByTagName)("item",c.children).map(function(R){var g=R.children,I={media:r(g)};d(I,"id","guid",g),d(I,"title","title",g),d(I,"link","link",g),d(I,"description","description",g);var N=l("pubDate",g)||l("dc:date",g);return N&&(I.pubDate=new Date(N)),I})};d(O,"title","title",f),d(O,"link","link",f),d(O,"description","description",f);var A=l("lastBuildDate",f);return A&&(O.updated=new Date(A)),d(O,"author","managingEditor",f,!0),O}var i=["url","type","lang"],o=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function r(c){return(0,t.getElementsByTagName)("media:content",c).map(function(T){for(var _=T.attribs,f={medium:_.medium,isDefault:!!_.isDefault},O=0,A=i;O{if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}),$c}var Dr={},Uf;function kVe(){if(Uf)return Dr;Uf=1,Object.defineProperty(Dr,"__esModule",{value:!0});/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */function e(n){return Object.prototype.toString.call(n)==="[object Object]"}function t(n){var a,s;return e(n)===!1?!1:(a=n.constructor,a===void 0?!0:(s=a.prototype,!(e(s)===!1||s.hasOwnProperty("isPrototypeOf")===!1)))}return Dr.isPlainObject=t,Dr}var Uc,kf;function wVe(){if(kf)return Uc;kf=1;var e=function(R){return t(R)&&!n(R)};function t(A){return!!A&&typeof A=="object"}function n(A){var R=Object.prototype.toString.call(A);return R==="[object RegExp]"||R==="[object Date]"||i(A)}var a=typeof Symbol=="function"&&Symbol.for,s=a?Symbol.for("react.element"):60103;function i(A){return A.$$typeof===s}function o(A){return Array.isArray(A)?[]:{}}function r(A,R){return R.clone!==!1&&R.isMergeableObject(A)?f(o(A),A,R):A}function u(A,R,g){return A.concat(R).map(function(I){return r(I,g)})}function l(A,R){if(!R.customMerge)return f;var g=R.customMerge(A);return typeof g=="function"?g:f}function d(A){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(A).filter(function(R){return Object.propertyIsEnumerable.call(A,R)}):[]}function E(A){return Object.keys(A).concat(d(A))}function c(A,R){try{return R in A}catch{return!1}}function T(A,R){return c(A,R)&&!(Object.hasOwnProperty.call(A,R)&&Object.propertyIsEnumerable.call(A,R))}function _(A,R,g){var I={};return g.isMergeableObject(A)&&E(A).forEach(function(N){I[N]=r(A[N],g)}),E(R).forEach(function(N){T(A,N)||(c(A,N)&&g.isMergeableObject(R[N])?I[N]=l(N,g)(A[N],R[N],g):I[N]=r(R[N],g))}),I}function f(A,R,g){g=g||{},g.arrayMerge=g.arrayMerge||u,g.isMergeableObject=g.isMergeableObject||e,g.cloneUnlessOtherwiseSpecified=r;var I=Array.isArray(R),N=Array.isArray(A),b=I===N;return b?I?g.arrayMerge(A,R,g):_(A,R,g):r(R,g)}f.all=function(R,g){if(!Array.isArray(R))throw new Error("first argument should be an array");return R.reduce(function(I,N){return f(I,N,g)},{})};var O=f;return Uc=O,Uc}var Qr={exports:{}},MVe=Qr.exports,wf;function WVe(){return wf||(wf=1,function(e){(function(t,n){e.exports?e.exports=n():t.parseSrcset=n()})(MVe,function(){return function(t){function n(I){return I===" "||I===" "||I===` -`||I==="\f"||I==="\r"}function a(I){var N,b=I.exec(t.substring(O));if(b)return N=b[0],O+=N.length,N}for(var s=t.length,i=/^[ \t\n\r\u000c]+/,o=/^[, \t\n\r\u000c]+/,r=/^[^ \t\n\r\u000c]+/,u=/[,]+$/,l=/^\d+$/,d=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,E,c,T,_,f,O=0,A=[];;){if(a(o),O>=s)return A;E=a(r),c=[],E.slice(-1)===","?(E=E.replace(u,""),g()):R()}function R(){for(a(i),T="",_="in descriptor";;){if(f=t.charAt(O),_==="in descriptor")if(n(f))T&&(c.push(T),T="",_="after descriptor");else if(f===","){O+=1,T&&c.push(T),g();return}else if(f==="(")T=T+f,_="in parens";else if(f===""){T&&c.push(T),g();return}else T=T+f;else if(_==="in parens")if(f===")")T=T+f,_="in descriptor";else if(f===""){c.push(T),g();return}else T=T+f;else if(_==="after descriptor"&&!n(f))if(f===""){g();return}else _="in descriptor",O-=1;O+=1}}function g(){var I=!1,N,b,C,y,D={},U,P,F,Z,Oe;for(y=0;y",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(s){if(!this.source)return"";let i=this.source;s==null&&(s=e.isColorSupported);let o=T=>T,r=T=>T,u=T=>T;if(s){let{bold:T,gray:_,red:f}=e.createColors(!0);r=O=>T(f(O)),o=O=>_(O),t&&(u=O=>t(O))}let l=i.split(/\r?\n/),d=Math.max(this.line-3,0),E=Math.min(this.line+2,l.length),c=String(E).length;return l.slice(d,E).map((T,_)=>{let f=d+1+_,O=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(T.length>160){let R=20,g=Math.max(0,this.column-R),I=Math.max(this.column+R,this.endColumn+R),N=T.slice(g,I),b=o(O.replace(/\d/g," "))+T.slice(0,Math.min(this.column-1,R-1)).replace(/[^\t]/g," ");return r(">")+o(O)+u(N)+` - `+b+r("^")}let A=o(O.replace(/\d/g," "))+T.slice(0,this.column-1).replace(/[^\t]/g," ");return r(">")+o(O)+u(T)+` - `+A+r("^")}return" "+o(O)+u(T)}).join(` -`)}toString(){let s=this.showSourceCode();return s&&(s=` - -`+s+` -`),this.name+": "+this.message+s}}return kc=n,n.default=n,kc}var wc,Ff;function mO(){if(Ff)return wc;Ff=1;const e={after:` -`,beforeClose:` -`,beforeComment:` -`,beforeDecl:` -`,beforeOpen:" ",beforeRule:` -`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function t(a){return a[0].toUpperCase()+a.slice(1)}class n{constructor(s){this.builder=s}atrule(s,i){let o="@"+s.name,r=s.params?this.rawValue(s,"params"):"";if(typeof s.raws.afterName<"u"?o+=s.raws.afterName:r&&(o+=" "),s.nodes)this.block(s,o+r);else{let u=(s.raws.between||"")+(i?";":"");this.builder(o+r+u,s)}}beforeAfter(s,i){let o;s.type==="decl"?o=this.raw(s,null,"beforeDecl"):s.type==="comment"?o=this.raw(s,null,"beforeComment"):i==="before"?o=this.raw(s,null,"beforeRule"):o=this.raw(s,null,"beforeClose");let r=s.parent,u=0;for(;r&&r.type!=="root";)u+=1,r=r.parent;if(o.includes(` -`)){let l=this.raw(s,null,"indent");if(l.length)for(let d=0;d0&&s.nodes[i].type==="comment";)i-=1;let o=this.raw(s,"semicolon");for(let r=0;r{if(r=E.raws[i],typeof r<"u")return!1})}return typeof r>"u"&&(r=e[o]),l.rawCache[o]=r,r}rawBeforeClose(s){let i;return s.walk(o=>{if(o.nodes&&o.nodes.length>0&&typeof o.raws.after<"u")return i=o.raws.after,i.includes(` -`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i}rawBeforeComment(s,i){let o;return s.walkComments(r=>{if(typeof r.raws.before<"u")return o=r.raws.before,o.includes(` -`)&&(o=o.replace(/[^\n]+$/,"")),!1}),typeof o>"u"?o=this.raw(i,null,"beforeDecl"):o&&(o=o.replace(/\S/g,"")),o}rawBeforeDecl(s,i){let o;return s.walkDecls(r=>{if(typeof r.raws.before<"u")return o=r.raws.before,o.includes(` -`)&&(o=o.replace(/[^\n]+$/,"")),!1}),typeof o>"u"?o=this.raw(i,null,"beforeRule"):o&&(o=o.replace(/\S/g,"")),o}rawBeforeOpen(s){let i;return s.walk(o=>{if(o.type!=="decl"&&(i=o.raws.between,typeof i<"u"))return!1}),i}rawBeforeRule(s){let i;return s.walk(o=>{if(o.nodes&&(o.parent!==s||s.first!==o)&&typeof o.raws.before<"u")return i=o.raws.before,i.includes(` -`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i}rawColon(s){let i;return s.walkDecls(o=>{if(typeof o.raws.between<"u")return i=o.raws.between.replace(/[^\s:]/g,""),!1}),i}rawEmptyBody(s){let i;return s.walk(o=>{if(o.nodes&&o.nodes.length===0&&(i=o.raws.after,typeof i<"u"))return!1}),i}rawIndent(s){if(s.raws.indent)return s.raws.indent;let i;return s.walk(o=>{let r=o.parent;if(r&&r!==s&&r.parent&&r.parent===s&&typeof o.raws.before<"u"){let u=o.raws.before.split(` -`);return i=u[u.length-1],i=i.replace(/\S/g,""),!1}}),i}rawSemicolon(s){let i;return s.walk(o=>{if(o.nodes&&o.nodes.length&&o.last.type==="decl"&&(i=o.raws.semicolon,typeof i<"u"))return!1}),i}rawValue(s,i){let o=s[i],r=s.raws[i];return r&&r.value===o?r.raw:o}root(s){this.body(s),s.raws.after&&this.builder(s.raws.after)}rule(s){this.block(s,this.rawValue(s,"selector")),s.raws.ownSemicolon&&this.builder(s.raws.ownSemicolon,s,"end")}stringify(s,i){if(!this[s.type])throw new Error("Unknown AST node type "+s.type+". Maybe you need to change PostCSS stringifier.");this[s.type](s,i)}}return wc=n,n.default=n,wc}var Mc,zf;function Ll(){if(zf)return Mc;zf=1;let e=mO();function t(n,a){new e(a).stringify(n)}return Mc=t,t.default=t,Mc}var yr={},xf;function yp(){return xf||(xf=1,yr.isClean=Symbol("isClean"),yr.my=Symbol("my")),yr}var Wc,Bf;function yl(){if(Bf)return Wc;Bf=1;let e=Lp(),t=mO(),n=Ll(),{isClean:a,my:s}=yp();function i(u,l){let d=new u.constructor;for(let E in u){if(!Object.prototype.hasOwnProperty.call(u,E)||E==="proxyCache")continue;let c=u[E],T=typeof c;E==="parent"&&T==="object"?l&&(d[E]=l):E==="source"?d[E]=c:Array.isArray(c)?d[E]=c.map(_=>i(_,d)):(T==="object"&&c!==null&&(c=i(c)),d[E]=c)}return d}function o(u,l){if(l&&typeof l.offset<"u")return l.offset;let d=1,E=1,c=0;for(let T=0;Tl.root().toProxy():l[d]},set(l,d,E){return l[d]===E||(l[d]=E,(d==="prop"||d==="value"||d==="name"||d==="params"||d==="important"||d==="text")&&l.markDirty()),!0}}}markClean(){this[a]=!0}markDirty(){if(this[a]){this[a]=!1;let l=this;for(;l=l.parent;)l[a]=!1}}next(){if(!this.parent)return;let l=this.parent.index(this);return this.parent.nodes[l+1]}positionBy(l){let d=this.source.start;if(l.index)d=this.positionInside(l.index);else if(l.word){let c=this.source.input.css.slice(o(this.source.input.css,this.source.start),o(this.source.input.css,this.source.end)).indexOf(l.word);c!==-1&&(d=this.positionInside(c))}return d}positionInside(l){let d=this.source.start.column,E=this.source.start.line,c=o(this.source.input.css,this.source.start),T=c+l;for(let _=c;_typeof O=="object"&&O.toJSON?O.toJSON(null,d):O);else if(typeof f=="object"&&f.toJSON)E[_]=f.toJSON(null,d);else if(_==="source"){let O=d.get(f.input);O==null&&(O=T,d.set(f.input,T),T++),E[_]={end:f.end,inputId:O,start:f.start}}else E[_]=f}return c&&(E.inputs=[...d.keys()].map(_=>_.toJSON())),E}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(l=n){l.stringify&&(l=l.stringify);let d="";return l(this,E=>{d+=E}),d}warn(l,d,E){let c={node:this};for(let T in E)c[T]=E[T];return l.warn(d,c)}get proxyOf(){return this}}return Wc=r,r.default=r,Wc}var Fc,Gf;function $l(){if(Gf)return Fc;Gf=1;let e=yl();class t extends e{constructor(a){super(a),this.type="comment"}}return Fc=t,t.default=t,Fc}var zc,Vf;function Ul(){if(Vf)return zc;Vf=1;let e=yl();class t extends e{constructor(a){a&&typeof a.value<"u"&&typeof a.value!="string"&&(a={...a,value:String(a.value)}),super(a),this.type="decl"}get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}}return zc=t,t.default=t,zc}var xc,Hf;function Ks(){if(Hf)return xc;Hf=1;let e=$l(),t=Ul(),n=yl(),{isClean:a,my:s}=yp(),i,o,r,u;function l(c){return c.map(T=>(T.nodes&&(T.nodes=l(T.nodes)),delete T.source,T))}function d(c){if(c[a]=!1,c.proxyOf.nodes)for(let T of c.proxyOf.nodes)d(T)}class E extends n{append(...T){for(let _ of T){let f=this.normalize(_,this.last);for(let O of f)this.proxyOf.nodes.push(O)}return this.markDirty(),this}cleanRaws(T){if(super.cleanRaws(T),this.nodes)for(let _ of this.nodes)_.cleanRaws(T)}each(T){if(!this.proxyOf.nodes)return;let _=this.getIterator(),f,O;for(;this.indexes[_]T[_](...f.map(O=>typeof O=="function"?(A,R)=>O(A.toProxy(),R):O)):_==="every"||_==="some"?f=>T[_]((O,...A)=>f(O.toProxy(),...A)):_==="root"?()=>T.root().toProxy():_==="nodes"?T.nodes.map(f=>f.toProxy()):_==="first"||_==="last"?T[_].toProxy():T[_]:T[_]},set(T,_,f){return T[_]===f||(T[_]=f,(_==="name"||_==="params"||_==="selector")&&T.markDirty()),!0}}}index(T){return typeof T=="number"?T:(T.proxyOf&&(T=T.proxyOf),this.proxyOf.nodes.indexOf(T))}insertAfter(T,_){let f=this.index(T),O=this.normalize(_,this.proxyOf.nodes[f]).reverse();f=this.index(T);for(let R of O)this.proxyOf.nodes.splice(f+1,0,R);let A;for(let R in this.indexes)A=this.indexes[R],f"u")T=[];else if(Array.isArray(T)){T=T.slice(0);for(let O of T)O.parent&&O.parent.removeChild(O,"ignore")}else if(T.type==="root"&&this.type!=="document"){T=T.nodes.slice(0);for(let O of T)O.parent&&O.parent.removeChild(O,"ignore")}else if(T.type)T=[T];else if(T.prop){if(typeof T.value>"u")throw new Error("Value field is missed in node creation");typeof T.value!="string"&&(T.value=String(T.value)),T=[new t(T)]}else if(T.selector||T.selectors)T=[new u(T)];else if(T.name)T=[new i(T)];else if(T.text)T=[new e(T)];else throw new Error("Unknown node type in node creation");return T.map(O=>(O[s]||E.rebuild(O),O=O.proxyOf,O.parent&&O.parent.removeChild(O),O[a]&&d(O),O.raws||(O.raws={}),typeof O.raws.before>"u"&&_&&typeof _.raws.before<"u"&&(O.raws.before=_.raws.before.replace(/\S/g,"")),O.parent=this.proxyOf,O))}prepend(...T){T=T.reverse();for(let _ of T){let f=this.normalize(_,this.first,"prepend").reverse();for(let O of f)this.proxyOf.nodes.unshift(O);for(let O in this.indexes)this.indexes[O]=this.indexes[O]+f.length}return this.markDirty(),this}push(T){return T.parent=this,this.proxyOf.nodes.push(T),this}removeAll(){for(let T of this.proxyOf.nodes)T.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(T){T=this.index(T),this.proxyOf.nodes[T].parent=void 0,this.proxyOf.nodes.splice(T,1);let _;for(let f in this.indexes)_=this.indexes[f],_>=T&&(this.indexes[f]=_-1);return this.markDirty(),this}replaceValues(T,_,f){return f||(f=_,_={}),this.walkDecls(O=>{_.props&&!_.props.includes(O.prop)||_.fast&&!O.value.includes(_.fast)||(O.value=O.value.replace(T,f))}),this.markDirty(),this}some(T){return this.nodes.some(T)}walk(T){return this.each((_,f)=>{let O;try{O=T(_,f)}catch(A){throw _.addToError(A)}return O!==!1&&_.walk&&(O=_.walk(T)),O})}walkAtRules(T,_){return _?T instanceof RegExp?this.walk((f,O)=>{if(f.type==="atrule"&&T.test(f.name))return _(f,O)}):this.walk((f,O)=>{if(f.type==="atrule"&&f.name===T)return _(f,O)}):(_=T,this.walk((f,O)=>{if(f.type==="atrule")return _(f,O)}))}walkComments(T){return this.walk((_,f)=>{if(_.type==="comment")return T(_,f)})}walkDecls(T,_){return _?T instanceof RegExp?this.walk((f,O)=>{if(f.type==="decl"&&T.test(f.prop))return _(f,O)}):this.walk((f,O)=>{if(f.type==="decl"&&f.prop===T)return _(f,O)}):(_=T,this.walk((f,O)=>{if(f.type==="decl")return _(f,O)}))}walkRules(T,_){return _?T instanceof RegExp?this.walk((f,O)=>{if(f.type==="rule"&&T.test(f.selector))return _(f,O)}):this.walk((f,O)=>{if(f.type==="rule"&&f.selector===T)return _(f,O)}):(_=T,this.walk((f,O)=>{if(f.type==="rule")return _(f,O)}))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}return E.registerParse=c=>{o=c},E.registerRule=c=>{u=c},E.registerAtRule=c=>{i=c},E.registerRoot=c=>{r=c},xc=E,E.default=E,E.rebuild=c=>{c.type==="atrule"?Object.setPrototypeOf(c,i.prototype):c.type==="rule"?Object.setPrototypeOf(c,u.prototype):c.type==="decl"?Object.setPrototypeOf(c,t.prototype):c.type==="comment"?Object.setPrototypeOf(c,e.prototype):c.type==="root"&&Object.setPrototypeOf(c,r.prototype),c[s]=!0,c.nodes&&c.nodes.forEach(T=>{E.rebuild(T)})},xc}var Bc,Kf;function $p(){if(Kf)return Bc;Kf=1;let e=Ks();class t extends e{constructor(a){super(a),this.type="atrule"}append(...a){return this.proxyOf.nodes||(this.nodes=[]),super.append(...a)}prepend(...a){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...a)}}return Bc=t,t.default=t,e.registerAtRule(t),Bc}var Gc,qf;function Up(){if(qf)return Gc;qf=1;let e=Ks(),t,n;class a extends e{constructor(i){super({type:"document",...i}),this.nodes||(this.nodes=[])}toResult(i={}){return new t(new n,this,i).stringify()}}return a.registerLazyResult=s=>{t=s},a.registerProcessor=s=>{n=s},Gc=a,a.default=a,Gc}var Vc,jf;function BVe(){if(jf)return Vc;jf=1;let e="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";return Vc={nanoid:(a=21)=>{let s="",i=a|0;for(;i--;)s+=e[Math.random()*64|0];return s},customAlphabet:(a,s=21)=>(i=s)=>{let o="",r=i|0;for(;r--;)o+=a[Math.random()*a.length|0];return o}},Vc}var Hc,Yf;function _O(){if(Yf)return Hc;Yf=1;let{existsSync:e,readFileSync:t}=Jn,{dirname:n,join:a}=Jn,{SourceMapConsumer:s,SourceMapGenerator:i}=Jn;function o(u){return Buffer?Buffer.from(u,"base64").toString():window.atob(u)}class r{constructor(l,d){if(d.map===!1)return;this.loadAnnotation(l),this.inline=this.startWith(this.annotation,"data:");let E=d.map?d.map.prev:void 0,c=this.loadMap(d.from,E);!this.mapFile&&d.from&&(this.mapFile=d.from),this.mapFile&&(this.root=n(this.mapFile)),c&&(this.text=c)}consumer(){return this.consumerCache||(this.consumerCache=new s(this.text)),this.consumerCache}decodeInline(l){let d=/^data:application\/json;charset=utf-?8;base64,/,E=/^data:application\/json;base64,/,c=/^data:application\/json;charset=utf-?8,/,T=/^data:application\/json,/,_=l.match(c)||l.match(T);if(_)return decodeURIComponent(l.substr(_[0].length));let f=l.match(d)||l.match(E);if(f)return o(l.substr(f[0].length));let O=l.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+O)}getAnnotationURL(l){return l.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(l){return typeof l!="object"?!1:typeof l.mappings=="string"||typeof l._mappings=="string"||Array.isArray(l.sections)}loadAnnotation(l){let d=l.match(/\/\*\s*# sourceMappingURL=/g);if(!d)return;let E=l.lastIndexOf(d.pop()),c=l.indexOf("*/",E);E>-1&&c>-1&&(this.annotation=this.getAnnotationURL(l.substring(E,c)))}loadFile(l){if(this.root=n(l),e(l))return this.mapFile=l,t(l,"utf-8").toString().trim()}loadMap(l,d){if(d===!1)return!1;if(d){if(typeof d=="string")return d;if(typeof d=="function"){let E=d(l);if(E){let c=this.loadFile(E);if(!c)throw new Error("Unable to load previous source map: "+E.toString());return c}}else{if(d instanceof s)return i.fromSourceMap(d).toString();if(d instanceof i)return d.toString();if(this.isMap(d))return JSON.stringify(d);throw new Error("Unsupported previous source map format: "+d.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let E=this.annotation;return l&&(E=a(n(l),E)),this.loadFile(E)}}}startWith(l,d){return l?l.substr(0,d.length)===d:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}}return Hc=r,r.default=r,Hc}var Kc,Xf;function kl(){if(Xf)return Kc;Xf=1;let{nanoid:e}=BVe(),{isAbsolute:t,resolve:n}=Jn,{SourceMapConsumer:a,SourceMapGenerator:s}=Jn,{fileURLToPath:i,pathToFileURL:o}=Jn,r=Lp(),u=_O(),l=Jn,d=Symbol("fromOffsetCache"),E=!!(a&&s),c=!!(n&&t);class T{constructor(f,O={}){if(f===null||typeof f>"u"||typeof f=="object"&&!f.toString)throw new Error(`PostCSS received ${f} instead of CSS string`);if(this.css=f.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,O.from&&(!c||/^\w+:\/\//.test(O.from)||t(O.from)?this.file=O.from:this.file=n(O.from)),c&&E){let A=new u(this.css,O);if(A.text){this.map=A;let R=A.consumer().file;!this.file&&R&&(this.file=this.mapResolve(R))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(f,O,A,R={}){let g,I,N;if(O&&typeof O=="object"){let C=O,y=A;if(typeof C.offset=="number"){let D=this.fromOffset(C.offset);O=D.line,A=D.col}else O=C.line,A=C.column;if(typeof y.offset=="number"){let D=this.fromOffset(y.offset);I=D.line,g=D.col}else I=y.line,g=y.column}else if(!A){let C=this.fromOffset(O);O=C.line,A=C.col}let b=this.origin(O,A,I,g);return b?N=new r(f,b.endLine===void 0?b.line:{column:b.column,line:b.line},b.endLine===void 0?b.column:{column:b.endColumn,line:b.endLine},b.source,b.file,R.plugin):N=new r(f,I===void 0?O:{column:A,line:O},I===void 0?A:{column:g,line:I},this.css,this.file,R.plugin),N.input={column:A,endColumn:g,endLine:I,line:O,source:this.css},this.file&&(o&&(N.input.url=o(this.file).toString()),N.input.file=this.file),N}fromOffset(f){let O,A;if(this[d])A=this[d];else{let g=this.css.split(` -`);A=new Array(g.length);let I=0;for(let N=0,b=g.length;N=O)R=A.length-1;else{let g=A.length-2,I;for(;R>1),f=A[I+1])R=I+1;else{R=I;break}}return{col:f-A[R]+1,line:R+1}}mapResolve(f){return/^\w+:\/\//.test(f)?f:n(this.map.consumer().sourceRoot||this.map.root||".",f)}origin(f,O,A,R){if(!this.map)return!1;let g=this.map.consumer(),I=g.originalPositionFor({column:O,line:f});if(!I.source)return!1;let N;typeof A=="number"&&(N=g.originalPositionFor({column:R,line:A}));let b;t(I.source)?b=o(I.source):b=new URL(I.source,this.map.consumer().sourceRoot||o(this.map.mapFile));let C={column:I.column,endColumn:N&&N.column,endLine:N&&N.line,line:I.line,url:b.toString()};if(b.protocol==="file:")if(i)C.file=i(b);else throw new Error("file: protocol is not available in this PostCSS build");let y=g.sourceContentFor(I.source);return y&&(C.source=y),C}toJSON(){let f={};for(let O of["hasBOM","css","file","id"])this[O]!=null&&(f[O]=this[O]);return this.map&&(f.map={...this.map},f.map.consumerCache&&(f.map.consumerCache=void 0)),f}get from(){return this.file||this.id}}return Kc=T,T.default=T,l&&l.registerInput&&l.registerInput(T),Kc}var qc,Qf;function lr(){if(Qf)return qc;Qf=1;let e=Ks(),t,n;class a extends e{constructor(i){super(i),this.type="root",this.nodes||(this.nodes=[])}normalize(i,o,r){let u=super.normalize(i);if(o){if(r==="prepend")this.nodes.length>1?o.raws.before=this.nodes[1].raws.before:delete o.raws.before;else if(this.first!==o)for(let l of u)l.raws.before=o.raws.before}return u}removeChild(i,o){let r=this.index(i);return!o&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(i)}toResult(i={}){return new t(new n,this,i).stringify()}}return a.registerLazyResult=s=>{t=s},a.registerProcessor=s=>{n=s},qc=a,a.default=a,e.registerRoot(a),qc}var jc,Zf;function fO(){if(Zf)return jc;Zf=1;let e={comma(t){return e.split(t,[","],!0)},space(t){let n=[" ",` -`," "];return e.split(t,n)},split(t,n,a){let s=[],i="",o=!1,r=0,u=!1,l="",d=!1;for(let E of t)d?d=!1:E==="\\"?d=!0:u?E===l&&(u=!1):E==='"'||E==="'"?(u=!0,l=E):E==="("?r+=1:E===")"?r>0&&(r-=1):r===0&&n.includes(E)&&(o=!0),o?(i!==""&&s.push(i.trim()),i="",o=!1):i+=E;return(a||i!=="")&&s.push(i.trim()),s}};return jc=e,e.default=e,jc}var Yc,Jf;function kp(){if(Jf)return Yc;Jf=1;let e=Ks(),t=fO();class n extends e{constructor(s){super(s),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return t.comma(this.selector)}set selectors(s){let i=this.selector?this.selector.match(/,\s*/):null,o=i?i[0]:","+this.raw("between","beforeOpen");this.selector=s.join(o)}}return Yc=n,n.default=n,e.registerRule(n),Yc}var Xc,eh;function GVe(){if(eh)return Xc;eh=1;let e=$p(),t=$l(),n=Ul(),a=kl(),s=_O(),i=lr(),o=kp();function r(u,l){if(Array.isArray(u))return u.map(c=>r(c));let{inputs:d,...E}=u;if(d){l=[];for(let c of d){let T={...c,__proto__:a.prototype};T.map&&(T.map={...T.map,__proto__:s.prototype}),l.push(T)}}if(E.nodes&&(E.nodes=u.nodes.map(c=>r(c,l))),E.source){let{inputId:c,...T}=E.source;E.source=T,c!=null&&(E.source.input=l[c])}if(E.type==="root")return new i(E);if(E.type==="decl")return new n(E);if(E.type==="rule")return new o(E);if(E.type==="comment")return new t(E);if(E.type==="atrule")return new e(E);throw new Error("Unknown node type: "+u.type)}return Xc=r,r.default=r,Xc}var Qc,th;function hO(){if(th)return Qc;th=1;let{dirname:e,relative:t,resolve:n,sep:a}=Jn,{SourceMapConsumer:s,SourceMapGenerator:i}=Jn,{pathToFileURL:o}=Jn,r=kl(),u=!!(s&&i),l=!!(e&&n&&t&&a);class d{constructor(c,T,_,f){this.stringify=c,this.mapOpts=_.map||{},this.root=T,this.opts=_,this.css=f,this.originalCSS=f,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let c;this.isInline()?c="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?c=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?c=this.mapOpts.annotation(this.opts.to,this.root):c=this.outputFile()+".map";let T=` -`;this.css.includes(`\r -`)&&(T=`\r -`),this.css+=T+"/*# sourceMappingURL="+c+" */"}applyPrevMaps(){for(let c of this.previous()){let T=this.toUrl(this.path(c.file)),_=c.root||e(c.file),f;this.mapOpts.sourcesContent===!1?(f=new s(c.text),f.sourcesContent&&(f.sourcesContent=null)):f=c.consumer(),this.map.applySourceMap(f,T,this.toUrl(this.path(_)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1)if(this.root){let c;for(let T=this.root.nodes.length-1;T>=0;T--)c=this.root.nodes[T],c.type==="comment"&&c.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(T)}else this.css&&(this.css=this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),l&&u&&this.isMap())return this.generateMap();{let c="";return this.stringify(this.root,T=>{c+=T}),[c]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let c=this.previous()[0].consumer();c.file=this.outputFile(),this.map=i.fromSourceMap(c,{ignoreInvalidMapping:!0})}else this.map=new i({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new i({file:this.outputFile(),ignoreInvalidMapping:!0});let c=1,T=1,_="",f={generated:{column:0,line:0},original:{column:0,line:0},source:""},O,A;this.stringify(this.root,(R,g,I)=>{if(this.css+=R,g&&I!=="end"&&(f.generated.line=c,f.generated.column=T-1,g.source&&g.source.start?(f.source=this.sourcePath(g),f.original.line=g.source.start.line,f.original.column=g.source.start.column-1,this.map.addMapping(f)):(f.source=_,f.original.line=1,f.original.column=0,this.map.addMapping(f))),A=R.match(/\n/g),A?(c+=A.length,O=R.lastIndexOf(` -`),T=R.length-O):T+=R.length,g&&I!=="start"){let N=g.parent||{raws:{}};(!(g.type==="decl"||g.type==="atrule"&&!g.nodes)||g!==N.last||N.raws.semicolon)&&(g.source&&g.source.end?(f.source=this.sourcePath(g),f.original.line=g.source.end.line,f.original.column=g.source.end.column-1,f.generated.line=c,f.generated.column=T-2,this.map.addMapping(f)):(f.source=_,f.original.line=1,f.original.column=0,f.generated.line=c,f.generated.column=T-1,this.map.addMapping(f)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(c=>c.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let c=this.mapOpts.annotation;return typeof c<"u"&&c!==!0?!1:this.previous().length?this.previous().some(T=>T.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(c=>c.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(c){if(this.mapOpts.absolute||c.charCodeAt(0)===60||/^\w+:\/\//.test(c))return c;let T=this.memoizedPaths.get(c);if(T)return T;let _=this.opts.to?e(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(_=e(n(_,this.mapOpts.annotation)));let f=t(_,c);return this.memoizedPaths.set(c,f),f}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(c=>{if(c.source&&c.source.input.map){let T=c.source.input.map;this.previousMaps.includes(T)||this.previousMaps.push(T)}});else{let c=new r(this.originalCSS,this.opts);c.map&&this.previousMaps.push(c.map)}return this.previousMaps}setSourcesContent(){let c={};if(this.root)this.root.walk(T=>{if(T.source){let _=T.source.input.from;if(_&&!c[_]){c[_]=!0;let f=this.usesFileUrls?this.toFileUrl(_):this.toUrl(this.path(_));this.map.setSourceContent(f,T.source.input.css)}}});else if(this.css){let T=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(T,this.css)}}sourcePath(c){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(c.source.input.from):this.toUrl(this.path(c.source.input.from))}toBase64(c){return Buffer?Buffer.from(c).toString("base64"):window.btoa(unescape(encodeURIComponent(c)))}toFileUrl(c){let T=this.memoizedFileURLs.get(c);if(T)return T;if(o){let _=o(c).toString();return this.memoizedFileURLs.set(c,_),_}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(c){let T=this.memoizedURLs.get(c);if(T)return T;a==="\\"&&(c=c.replace(/\\/g,"/"));let _=encodeURI(c).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(c,_),_}}return Qc=d,Qc}var Zc,nh;function VVe(){if(nh)return Zc;nh=1;const e=39,t=34,n=92,a=47,s=10,i=32,o=12,r=9,u=13,l=91,d=93,E=40,c=41,T=123,_=125,f=59,O=42,A=58,R=64,g=/[\t\n\f\r "#'()/;[\\\]{}]/g,I=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,N=/.[\r\n"'(/\\]/,b=/[\da-f]/i;return Zc=function(y,D={}){let U=y.css.valueOf(),P=D.ignoreErrors,F,Z,Oe,ee,Ee,_e,Pe,He,Je,Ve,_t=U.length,we=0,ae=[],ke=[];function pt(){return we}function Te(ie){throw y.error("Unclosed "+ie,we)}function Q(){return ke.length===0&&we>=_t}function Se(ie){if(ke.length)return ke.pop();if(we>=_t)return;let k=ie?ie.ignoreUnclosed:!1;switch(F=U.charCodeAt(we),F){case s:case i:case r:case u:case o:{ee=we;do ee+=1,F=U.charCodeAt(ee);while(F===i||F===s||F===r||F===u||F===o);_e=["space",U.slice(we,ee)],we=ee-1;break}case l:case d:case T:case _:case A:case f:case c:{let w=String.fromCharCode(F);_e=[w,w,we];break}case E:{if(Ve=ae.length?ae.pop()[1]:"",Je=U.charCodeAt(we+1),Ve==="url"&&Je!==e&&Je!==t&&Je!==i&&Je!==s&&Je!==r&&Je!==o&&Je!==u){ee=we;do{if(Pe=!1,ee=U.indexOf(")",ee+1),ee===-1)if(P||k){ee=we;break}else Te("bracket");for(He=ee;U.charCodeAt(He-1)===n;)He-=1,Pe=!Pe}while(Pe);_e=["brackets",U.slice(we,ee+1),we,ee],we=ee}else ee=U.indexOf(")",we+1),Z=U.slice(we,ee+1),ee===-1||N.test(Z)?_e=["(","(",we]:(_e=["brackets",Z,we,ee],we=ee);break}case e:case t:{Ee=F===e?"'":'"',ee=we;do{if(Pe=!1,ee=U.indexOf(Ee,ee+1),ee===-1)if(P||k){ee=we+1;break}else Te("string");for(He=ee;U.charCodeAt(He-1)===n;)He-=1,Pe=!Pe}while(Pe);_e=["string",U.slice(we,ee+1),we,ee],we=ee;break}case R:{g.lastIndex=we+1,g.test(U),g.lastIndex===0?ee=U.length-1:ee=g.lastIndex-2,_e=["at-word",U.slice(we,ee+1),we,ee],we=ee;break}case n:{for(ee=we,Oe=!0;U.charCodeAt(ee+1)===n;)ee+=1,Oe=!Oe;if(F=U.charCodeAt(ee+1),Oe&&F!==a&&F!==i&&F!==s&&F!==r&&F!==u&&F!==o&&(ee+=1,b.test(U.charAt(ee)))){for(;b.test(U.charAt(ee+1));)ee+=1;U.charCodeAt(ee+1)===i&&(ee+=1)}_e=["word",U.slice(we,ee+1),we,ee],we=ee;break}default:{F===a&&U.charCodeAt(we+1)===O?(ee=U.indexOf("*/",we+2)+1,ee===0&&(P||k?ee=U.length:Te("comment")),_e=["comment",U.slice(we,ee+1),we,ee],we=ee):(I.lastIndex=we+1,I.test(U),I.lastIndex===0?ee=U.length-1:ee=I.lastIndex-2,_e=["word",U.slice(we,ee+1),we,ee],ae.push(_e),we=ee);break}}return we++,_e}function me(ie){ke.push(ie)}return{back:me,endOfFile:Q,nextToken:Se,position:pt}},Zc}var Jc,ah;function HVe(){if(ah)return Jc;ah=1;let e=$p(),t=$l(),n=Ul(),a=lr(),s=kp(),i=VVe();const o={empty:!0,space:!0};function r(l){for(let d=l.length-1;d>=0;d--){let E=l[d],c=E[3]||E[2];if(c)return c}}class u{constructor(d){this.input=d,this.root=new a,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:d,start:{column:1,line:1,offset:0}}}atrule(d){let E=new e;E.name=d[1].slice(1),E.name===""&&this.unnamedAtrule(E,d),this.init(E,d[2]);let c,T,_,f=!1,O=!1,A=[],R=[];for(;!this.tokenizer.endOfFile();){if(d=this.tokenizer.nextToken(),c=d[0],c==="("||c==="["?R.push(c==="("?")":"]"):c==="{"&&R.length>0?R.push("}"):c===R[R.length-1]&&R.pop(),R.length===0)if(c===";"){E.source.end=this.getPosition(d[2]),E.source.end.offset++,this.semicolon=!0;break}else if(c==="{"){O=!0;break}else if(c==="}"){if(A.length>0){for(_=A.length-1,T=A[_];T&&T[0]==="space";)T=A[--_];T&&(E.source.end=this.getPosition(T[3]||T[2]),E.source.end.offset++)}this.end(d);break}else A.push(d);else A.push(d);if(this.tokenizer.endOfFile()){f=!0;break}}E.raws.between=this.spacesAndCommentsFromEnd(A),A.length?(E.raws.afterName=this.spacesAndCommentsFromStart(A),this.raw(E,"params",A),f&&(d=A[A.length-1],E.source.end=this.getPosition(d[3]||d[2]),E.source.end.offset++,this.spaces=E.raws.between,E.raws.between="")):(E.raws.afterName="",E.params=""),O&&(E.nodes=[],this.current=E)}checkMissedSemicolon(d){let E=this.colon(d);if(E===!1)return;let c=0,T;for(let _=E-1;_>=0&&(T=d[_],!(T[0]!=="space"&&(c+=1,c===2)));_--);throw this.input.error("Missed semicolon",T[0]==="word"?T[3]+1:T[2])}colon(d){let E=0,c,T,_;for(let[f,O]of d.entries()){if(T=O,_=T[0],_==="("&&(E+=1),_===")"&&(E-=1),E===0&&_===":")if(!c)this.doubleColon(T);else{if(c[0]==="word"&&c[1]==="progid")continue;return f}c=T}return!1}comment(d){let E=new t;this.init(E,d[2]),E.source.end=this.getPosition(d[3]||d[2]),E.source.end.offset++;let c=d[1].slice(2,-2);if(/^\s*$/.test(c))E.text="",E.raws.left=c,E.raws.right="";else{let T=c.match(/^(\s*)([^]*\S)(\s*)$/);E.text=T[2],E.raws.left=T[1],E.raws.right=T[3]}}createTokenizer(){this.tokenizer=i(this.input)}decl(d,E){let c=new n;this.init(c,d[0][2]);let T=d[d.length-1];for(T[0]===";"&&(this.semicolon=!0,d.pop()),c.source.end=this.getPosition(T[3]||T[2]||r(d)),c.source.end.offset++;d[0][0]!=="word";)d.length===1&&this.unknownWord(d),c.raws.before+=d.shift()[1];for(c.source.start=this.getPosition(d[0][2]),c.prop="";d.length;){let R=d[0][0];if(R===":"||R==="space"||R==="comment")break;c.prop+=d.shift()[1]}c.raws.between="";let _;for(;d.length;)if(_=d.shift(),_[0]===":"){c.raws.between+=_[1];break}else _[0]==="word"&&/\w/.test(_[1])&&this.unknownWord([_]),c.raws.between+=_[1];(c.prop[0]==="_"||c.prop[0]==="*")&&(c.raws.before+=c.prop[0],c.prop=c.prop.slice(1));let f=[],O;for(;d.length&&(O=d[0][0],!(O!=="space"&&O!=="comment"));)f.push(d.shift());this.precheckMissedSemicolon(d);for(let R=d.length-1;R>=0;R--){if(_=d[R],_[1].toLowerCase()==="!important"){c.important=!0;let g=this.stringFrom(d,R);g=this.spacesFromEnd(d)+g,g!==" !important"&&(c.raws.important=g);break}else if(_[1].toLowerCase()==="important"){let g=d.slice(0),I="";for(let N=R;N>0;N--){let b=g[N][0];if(I.trim().startsWith("!")&&b!=="space")break;I=g.pop()[1]+I}I.trim().startsWith("!")&&(c.important=!0,c.raws.important=I,d=g)}if(_[0]!=="space"&&_[0]!=="comment")break}d.some(R=>R[0]!=="space"&&R[0]!=="comment")&&(c.raws.between+=f.map(R=>R[1]).join(""),f=[]),this.raw(c,"value",f.concat(d),E),c.value.includes(":")&&!E&&this.checkMissedSemicolon(d)}doubleColon(d){throw this.input.error("Double colon",{offset:d[2]},{offset:d[2]+d[1].length})}emptyRule(d){let E=new s;this.init(E,d[2]),E.selector="",E.raws.between="",this.current=E}end(d){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(d[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(d)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(d){if(this.spaces+=d[1],this.current.nodes){let E=this.current.nodes[this.current.nodes.length-1];E&&E.type==="rule"&&!E.raws.ownSemicolon&&(E.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(d){let E=this.input.fromOffset(d);return{column:E.col,line:E.line,offset:d}}init(d,E){this.current.push(d),d.source={input:this.input,start:this.getPosition(E)},d.raws.before=this.spaces,this.spaces="",d.type!=="comment"&&(this.semicolon=!1)}other(d){let E=!1,c=null,T=!1,_=null,f=[],O=d[1].startsWith("--"),A=[],R=d;for(;R;){if(c=R[0],A.push(R),c==="("||c==="[")_||(_=R),f.push(c==="("?")":"]");else if(O&&T&&c==="{")_||(_=R),f.push("}");else if(f.length===0)if(c===";")if(T){this.decl(A,O);return}else break;else if(c==="{"){this.rule(A);return}else if(c==="}"){this.tokenizer.back(A.pop()),E=!0;break}else c===":"&&(T=!0);else c===f[f.length-1]&&(f.pop(),f.length===0&&(_=null));R=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(E=!0),f.length>0&&this.unclosedBracket(_),E&&T){if(!O)for(;A.length&&(R=A[A.length-1][0],!(R!=="space"&&R!=="comment"));)this.tokenizer.back(A.pop());this.decl(A,O)}else this.unknownWord(A)}parse(){let d;for(;!this.tokenizer.endOfFile();)switch(d=this.tokenizer.nextToken(),d[0]){case"space":this.spaces+=d[1];break;case";":this.freeSemicolon(d);break;case"}":this.end(d);break;case"comment":this.comment(d);break;case"at-word":this.atrule(d);break;case"{":this.emptyRule(d);break;default:this.other(d);break}this.endFile()}precheckMissedSemicolon(){}raw(d,E,c,T){let _,f,O=c.length,A="",R=!0,g,I;for(let N=0;Nb+C[1],"");d.raws[E]={raw:N,value:A}}d[E]=A}rule(d){d.pop();let E=new s;this.init(E,d[0][2]),E.raws.between=this.spacesAndCommentsFromEnd(d),this.raw(E,"selector",d),this.current=E}spacesAndCommentsFromEnd(d){let E,c="";for(;d.length&&(E=d[d.length-1][0],!(E!=="space"&&E!=="comment"));)c=d.pop()[1]+c;return c}spacesAndCommentsFromStart(d){let E,c="";for(;d.length&&(E=d[0][0],!(E!=="space"&&E!=="comment"));)c+=d.shift()[1];return c}spacesFromEnd(d){let E,c="";for(;d.length&&(E=d[d.length-1][0],E==="space");)c=d.pop()[1]+c;return c}stringFrom(d,E){let c="";for(let T=E;Ta.type==="warning")}get content(){return this.css}}return nd=t,t.default=t,nd}var ad,rh;function AO(){if(rh)return ad;rh=1;let e=Ks(),t=Up(),n=hO(),a=wp(),s=Mp(),i=lr(),o=Ll(),{isClean:r,my:u}=yp();const l={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},d={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},E={Once:!0,postcssPlugin:!0,prepare:!0},c=0;function T(g){return typeof g=="object"&&typeof g.then=="function"}function _(g){let I=!1,N=l[g.type];return g.type==="decl"?I=g.prop.toLowerCase():g.type==="atrule"&&(I=g.name.toLowerCase()),I&&g.append?[N,N+"-"+I,c,N+"Exit",N+"Exit-"+I]:I?[N,N+"-"+I,N+"Exit",N+"Exit-"+I]:g.append?[N,c,N+"Exit"]:[N,N+"Exit"]}function f(g){let I;return g.type==="document"?I=["Document",c,"DocumentExit"]:g.type==="root"?I=["Root",c,"RootExit"]:I=_(g),{eventIndex:0,events:I,iterator:0,node:g,visitorIndex:0,visitors:[]}}function O(g){return g[r]=!1,g.nodes&&g.nodes.forEach(I=>O(I)),g}let A={};class R{constructor(I,N,b){this.stringified=!1,this.processed=!1;let C;if(typeof N=="object"&&N!==null&&(N.type==="root"||N.type==="document"))C=O(N);else if(N instanceof R||N instanceof s)C=O(N.root),N.map&&(typeof b.map>"u"&&(b.map={}),b.map.inline||(b.map.inline=!1),b.map.prev=N.map);else{let y=a;b.syntax&&(y=b.syntax.parse),b.parser&&(y=b.parser),y.parse&&(y=y.parse);try{C=y(N,b)}catch(D){this.processed=!0,this.error=D}C&&!C[u]&&e.rebuild(C)}this.result=new s(I,C,b),this.helpers={...A,postcss:A,result:this.result},this.plugins=this.processor.plugins.map(y=>typeof y=="object"&&y.prepare?{...y,...y.prepare(this.result)}:y)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(I){return this.async().catch(I)}finally(I){return this.async().then(I,I)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(I,N){let b=this.result.lastPlugin;try{N&&N.addToError(I),this.error=I,I.name==="CssSyntaxError"&&!I.plugin?(I.plugin=b.postcssPlugin,I.setMessage()):b.postcssVersion}catch(C){console&&console.error&&console.error(C)}return I}prepareVisitors(){this.listeners={};let I=(N,b,C)=>{this.listeners[b]||(this.listeners[b]=[]),this.listeners[b].push([N,C])};for(let N of this.plugins)if(typeof N=="object")for(let b in N){if(!d[b]&&/^[A-Z]/.test(b))throw new Error(`Unknown event ${b} in ${N.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!E[b])if(typeof N[b]=="object")for(let C in N[b])C==="*"?I(N,b,N[b][C]):I(N,b+"-"+C.toLowerCase(),N[b][C]);else typeof N[b]=="function"&&I(N,b,N[b])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let I=0;I0;){let b=this.visitTick(N);if(T(b))try{await b}catch(C){let y=N[N.length-1].node;throw this.handleError(C,y)}}}if(this.listeners.OnceExit)for(let[N,b]of this.listeners.OnceExit){this.result.lastPlugin=N;try{if(I.type==="document"){let C=I.nodes.map(y=>b(y,this.helpers));await Promise.all(C)}else await b(I,this.helpers)}catch(C){throw this.handleError(C)}}}return this.processed=!0,this.stringify()}runOnRoot(I){this.result.lastPlugin=I;try{if(typeof I=="object"&&I.Once){if(this.result.root.type==="document"){let N=this.result.root.nodes.map(b=>I.Once(b,this.helpers));return T(N[0])?Promise.all(N):N}return I.Once(this.result.root,this.helpers)}else if(typeof I=="function")return I(this.result.root,this.result)}catch(N){throw this.handleError(N)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let I=this.result.opts,N=o;I.syntax&&(N=I.syntax.stringify),I.stringifier&&(N=I.stringifier),N.stringify&&(N=N.stringify);let C=new n(N,this.result.root,this.result.opts).generate();return this.result.css=C[0],this.result.map=C[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let I of this.plugins){let N=this.runOnRoot(I);if(T(N))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let I=this.result.root;for(;!I[r];)I[r]=!0,this.walkSync(I);if(this.listeners.OnceExit)if(I.type==="document")for(let N of I.nodes)this.visitSync(this.listeners.OnceExit,N);else this.visitSync(this.listeners.OnceExit,I)}return this.result}then(I,N){return this.async().then(I,N)}toString(){return this.css}visitSync(I,N){for(let[b,C]of I){this.result.lastPlugin=b;let y;try{y=C(N,this.helpers)}catch(D){throw this.handleError(D,N.proxyOf)}if(N.type!=="root"&&N.type!=="document"&&!N.parent)return!0;if(T(y))throw this.getAsyncError()}}visitTick(I){let N=I[I.length-1],{node:b,visitors:C}=N;if(b.type!=="root"&&b.type!=="document"&&!b.parent){I.pop();return}if(C.length>0&&N.visitorIndex{C[r]||this.walkSync(C)});else{let C=this.listeners[b];if(C&&this.visitSync(C,I.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}}return R.registerPostcss=g=>{A=g},ad=R,R.default=R,i.registerLazyResult(R),t.registerLazyResult(R),ad}var sd,uh;function KVe(){if(uh)return sd;uh=1;let e=hO(),t=wp();const n=Mp();let a=Ll();class s{constructor(o,r,u){r=r.toString(),this.stringified=!1,this._processor=o,this._css=r,this._opts=u,this._map=void 0;let l,d=a;this.result=new n(this._processor,l,this._opts),this.result.css=r;let E=this;Object.defineProperty(this.result,"root",{get(){return E.root}});let c=new e(d,l,this._opts,r);if(c.isMap()){let[T,_]=c.generate();T&&(this.result.css=T),_&&(this.result.map=_)}else c.clearAnnotation(),this.result.css=c.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(o){return this.async().catch(o)}finally(o){return this.async().then(o,o)}sync(){if(this.error)throw this.error;return this.result}then(o,r){return this.async().then(o,r)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let o,r=t;try{o=r(this._css,this._opts)}catch(u){this.error=u}if(this.error)throw this.error;return this._root=o,o}get[Symbol.toStringTag](){return"NoWorkResult"}}return sd=s,s.default=s,sd}var id,lh;function qVe(){if(lh)return id;lh=1;let e=Up(),t=AO(),n=KVe(),a=lr();class s{constructor(o=[]){this.version="8.4.49",this.plugins=this.normalize(o)}normalize(o){let r=[];for(let u of o)if(u.postcss===!0?u=u():u.postcss&&(u=u.postcss),typeof u=="object"&&Array.isArray(u.plugins))r=r.concat(u.plugins);else if(typeof u=="object"&&u.postcssPlugin)r.push(u);else if(typeof u=="function")r.push(u);else if(!(typeof u=="object"&&(u.parse||u.stringify)))throw new Error(u+" is not a PostCSS plugin");return r}process(o,r={}){return!this.plugins.length&&!r.parser&&!r.stringifier&&!r.syntax?new n(this,o,r):new t(this,o,r)}use(o){return this.plugins=this.plugins.concat(this.normalize([o])),this}}return id=s,s.default=s,a.registerProcessor(s),e.registerProcessor(s),id}var od,ch;function jVe(){if(ch)return od;ch=1;var e={};let t=$p(),n=$l(),a=Ks(),s=Lp(),i=Ul(),o=Up(),r=GVe(),u=kl(),l=AO(),d=fO(),E=yl(),c=wp(),T=qVe(),_=Mp(),f=lr(),O=kp(),A=Ll(),R=SO();function g(...I){return I.length===1&&Array.isArray(I[0])&&(I=I[0]),new T(I)}return g.plugin=function(N,b){let C=!1;function y(...U){console&&console.warn&&!C&&(C=!0,console.warn(N+`: postcss.plugin was deprecated. Migration guide: -https://evilmartians.com/chronicles/postcss-8-plugin-migration`),e.LANG&&e.LANG.startsWith("cn")&&console.warn(N+`: 里面 postcss.plugin 被弃用. 迁移指南: -https://www.w3ctech.com/topic/2226`));let P=b(...U);return P.postcssPlugin=N,P.postcssVersion=new T().version,P}let D;return Object.defineProperty(y,"postcss",{get(){return D||(D=y()),D}}),y.process=function(U,P,F){return g([y(F)]).process(U,P)},y},g.stringify=A,g.parse=c,g.fromJSON=r,g.list=d,g.comment=I=>new n(I),g.atRule=I=>new t(I),g.decl=I=>new i(I),g.rule=I=>new O(I),g.root=I=>new f(I),g.document=I=>new o(I),g.CssSyntaxError=s,g.Declaration=i,g.Container=a,g.Processor=T,g.Document=o,g.Comment=n,g.Warning=R,g.AtRule=t,g.Result=_,g.Input=u,g.Rule=O,g.Root=f,g.Node=E,l.registerPostcss(g),od=g,g.default=g,od}var rd,dh;function YVe(){if(dh)return rd;dh=1;const e=$Ve(),t=UVe(),{isPlainObject:n}=kVe(),a=wVe(),s=WVe(),{parse:i}=jVe(),o=["img","audio","video","picture","svg","object","map","iframe","embed"],r=["script","style"];function u(O,A){O&&Object.keys(O).forEach(function(R){A(O[R],R)})}function l(O,A){return{}.hasOwnProperty.call(O,A)}function d(O,A){const R=[];return u(O,function(g){A(g)&&R.push(g)}),R}function E(O){for(const A in O)if(l(O,A))return!1;return!0}function c(O){return O.map(function(A){if(!A.url)throw new Error("URL missing");return A.url+(A.w?` ${A.w}w`:"")+(A.h?` ${A.h}h`:"")+(A.d?` ${A.d}x`:"")}).join(", ")}rd=_;const T=/^[^\0\t\n\f\r /<=>]+$/;function _(O,A,R){if(O==null)return"";typeof O=="number"&&(O=O.toString());let g="",I="";function N(ie,k){const w=this;this.tag=ie,this.attribs=k||{},this.tagPosition=g.length,this.text="",this.mediaChildren=[],this.updateParentNodeText=function(){if(Ee.length){const G=Ee[Ee.length-1];G.text+=w.text}},this.updateParentNodeMediaChildren=function(){Ee.length&&o.includes(this.tag)&&Ee[Ee.length-1].mediaChildren.push(this.tag)}}A=Object.assign({},_.defaults,A),A.parser=Object.assign({},f,A.parser);const b=function(ie){return A.allowedTags===!1||(A.allowedTags||[]).indexOf(ie)>-1};r.forEach(function(ie){b(ie)&&!A.allowVulnerableTags&&console.warn(` - -⚠️ Your \`allowedTags\` option includes, \`${ie}\`, which is inherently -vulnerable to XSS attacks. Please remove it from \`allowedTags\`. -Or, to disable this warning, add the \`allowVulnerableTags\` option -and ensure you are accounting for this risk. - -`)});const C=A.nonTextTags||["script","style","textarea","option"];let y,D;A.allowedAttributes&&(y={},D={},u(A.allowedAttributes,function(ie,k){y[k]=[];const w=[];ie.forEach(function(G){typeof G=="string"&&G.indexOf("*")>=0?w.push(t(G).replace(/\\\*/g,".*")):y[k].push(G)}),w.length&&(D[k]=new RegExp("^("+w.join("|")+")$"))}));const U={},P={},F={};u(A.allowedClasses,function(ie,k){if(y&&(l(y,k)||(y[k]=[]),y[k].push("class")),U[k]=ie,Array.isArray(ie)){const w=[];U[k]=[],F[k]=[],ie.forEach(function(G){typeof G=="string"&&G.indexOf("*")>=0?w.push(t(G).replace(/\\\*/g,".*")):G instanceof RegExp?F[k].push(G):U[k].push(G)}),w.length&&(P[k]=new RegExp("^("+w.join("|")+")$"))}});const Z={};let Oe;u(A.transformTags,function(ie,k){let w;typeof ie=="function"?w=ie:typeof ie=="string"&&(w=_.simpleTransform(ie)),k==="*"?Oe=w:Z[k]=w});let ee,Ee,_e,Pe,He,Je,Ve=!1;we();const _t=new e.Parser({onopentag:function(ie,k){if(A.enforceHtmlBoundary&&ie==="html"&&we(),He){Je++;return}const w=new N(ie,k);Ee.push(w);let G=!1;const re=!!w.text;let pe;if(l(Z,ie)&&(pe=Z[ie](ie,k),w.attribs=k=pe.attribs,pe.text!==void 0&&(w.innerText=pe.text),ie!==pe.tagName&&(w.name=ie=pe.tagName,Pe[ee]=pe.tagName)),Oe&&(pe=Oe(ie,k),w.attribs=k=pe.attribs,ie!==pe.tagName&&(w.name=ie=pe.tagName,Pe[ee]=pe.tagName)),(!b(ie)||A.disallowedTagsMode==="recursiveEscape"&&!E(_e)||A.nestingLimit!=null&&ee>=A.nestingLimit)&&(G=!0,_e[ee]=!0,(A.disallowedTagsMode==="discard"||A.disallowedTagsMode==="completelyDiscard")&&C.indexOf(ie)!==-1&&(He=!0,Je=1),_e[ee]=!0),ee++,G){if(A.disallowedTagsMode==="discard"||A.disallowedTagsMode==="completelyDiscard"){if(w.innerText&&!re){const oe=ae(w.innerText);A.textFilter?g+=A.textFilter(oe,ie):g+=ae(w.innerText),Ve=!0}return}I=g,g=""}g+="<"+ie,ie==="script"&&(A.allowedScriptHostnames||A.allowedScriptDomains)&&(w.innerText=""),(!y||l(y,ie)||y["*"])&&u(k,function(oe,$){if(!T.test($)){delete w.attribs[$];return}if(oe===""&&!A.allowedEmptyAttributes.includes($)&&(A.nonBooleanAttributes.includes($)||A.nonBooleanAttributes.includes("*"))){delete w.attribs[$];return}let W=!1;if(!y||l(y,ie)&&y[ie].indexOf($)!==-1||y["*"]&&y["*"].indexOf($)!==-1||l(D,ie)&&D[ie].test($)||D["*"]&&D["*"].test($))W=!0;else if(y&&y[ie]){for(const V of y[ie])if(n(V)&&V.name&&V.name===$){W=!0;let q="";if(V.multiple===!0){const Re=oe.split(" ");for(const he of Re)V.values.indexOf(he)!==-1&&(q===""?q=he:q+=" "+he)}else V.values.indexOf(oe)>=0&&(q=oe);oe=q}}if(W){if(A.allowedSchemesAppliedToAttributes.indexOf($)!==-1&&ke(ie,oe)){delete w.attribs[$];return}if(ie==="script"&&$==="src"){let V=!0;try{const q=pt(oe);if(A.allowedScriptHostnames||A.allowedScriptDomains){const Re=(A.allowedScriptHostnames||[]).find(function(H){return H===q.url.hostname}),he=(A.allowedScriptDomains||[]).find(function(H){return q.url.hostname===H||q.url.hostname.endsWith(`.${H}`)});V=Re||he}}catch{V=!1}if(!V){delete w.attribs[$];return}}if(ie==="iframe"&&$==="src"){let V=!0;try{const q=pt(oe);if(q.isRelativeUrl)V=l(A,"allowIframeRelativeUrls")?A.allowIframeRelativeUrls:!A.allowedIframeHostnames&&!A.allowedIframeDomains;else if(A.allowedIframeHostnames||A.allowedIframeDomains){const Re=(A.allowedIframeHostnames||[]).find(function(H){return H===q.url.hostname}),he=(A.allowedIframeDomains||[]).find(function(H){return q.url.hostname===H||q.url.hostname.endsWith(`.${H}`)});V=Re||he}}catch{V=!1}if(!V){delete w.attribs[$];return}}if($==="srcset")try{let V=s(oe);if(V.forEach(function(q){ke("srcset",q.url)&&(q.evil=!0)}),V=d(V,function(q){return!q.evil}),V.length)oe=c(d(V,function(q){return!q.evil})),w.attribs[$]=oe;else{delete w.attribs[$];return}}catch{delete w.attribs[$];return}if($==="class"){const V=U[ie],q=U["*"],Re=P[ie],he=F[ie],H=F["*"],le=P["*"],Me=[Re,le].concat(he,H).filter(function(Be){return Be});if(V&&q?oe=me(oe,a(V,q),Me):oe=me(oe,V||q,Me),!oe.length){delete w.attribs[$];return}}if($==="style"){if(A.parseStyleAttributes)try{const V=i(ie+" {"+oe+"}",{map:!1}),q=Te(V,A.allowedStyles);if(oe=Q(q),oe.length===0){delete w.attribs[$];return}}catch{typeof window<"u"&&console.warn('Failed to parse "'+ie+" {"+oe+`}", If you're running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547`),delete w.attribs[$];return}else if(A.allowedStyles)throw new Error("allowedStyles option cannot be used together with parseStyleAttributes: false.")}g+=" "+$,oe&&oe.length?g+='="'+ae(oe,!0)+'"':A.allowedEmptyAttributes.includes($)&&(g+='=""')}else delete w.attribs[$]}),A.selfClosing.indexOf(ie)!==-1?g+=" />":(g+=">",w.innerText&&!re&&!A.textFilter&&(g+=ae(w.innerText),Ve=!0)),G&&(g=I+ae(g),I="")},ontext:function(ie){if(He)return;const k=Ee[Ee.length-1];let w;if(k&&(w=k.tag,ie=k.innerText!==void 0?k.innerText:ie),A.disallowedTagsMode==="completelyDiscard"&&!b(w))ie="";else if((A.disallowedTagsMode==="discard"||A.disallowedTagsMode==="completelyDiscard")&&(w==="script"||w==="style"))g+=ie;else{const G=ae(ie,!1);A.textFilter&&!Ve?g+=A.textFilter(G,w):Ve||(g+=G)}if(Ee.length){const G=Ee[Ee.length-1];G.text+=ie}},onclosetag:function(ie,k){if(He)if(Je--,!Je)He=!1;else return;const w=Ee.pop();if(!w)return;if(w.tag!==ie){Ee.push(w);return}He=A.enforceHtmlBoundary?ie==="html":!1,ee--;const G=_e[ee];if(G){if(delete _e[ee],A.disallowedTagsMode==="discard"||A.disallowedTagsMode==="completelyDiscard"){w.updateParentNodeText();return}I=g,g=""}if(Pe[ee]&&(ie=Pe[ee],delete Pe[ee]),A.exclusiveFilter&&A.exclusiveFilter(w)){g=g.substr(0,w.tagPosition);return}if(w.updateParentNodeMediaChildren(),w.updateParentNodeText(),A.selfClosing.indexOf(ie)!==-1||k&&!b(ie)&&["escape","recursiveEscape"].indexOf(A.disallowedTagsMode)>=0){G&&(g=I,I="");return}g+="",G&&(g=I+ae(g),I=""),Ve=!1}},A.parser);return _t.write(O),_t.end(),g;function we(){g="",ee=0,Ee=[],_e={},Pe={},He=!1,Je=0}function ae(ie,k){return typeof ie!="string"&&(ie=ie+""),A.parser.decodeEntities&&(ie=ie.replace(/&/g,"&").replace(//g,">"),k&&(ie=ie.replace(/"/g,"""))),ie=ie.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,"&").replace(//g,">"),k&&(ie=ie.replace(/"/g,""")),ie}function ke(ie,k){for(k=k.replace(/[\x00-\x20]+/g,"");;){const re=k.indexOf("",re+4);if(pe===-1)break;k=k.substring(0,re)+k.substring(pe+3)}const w=k.match(/^([a-zA-Z][a-zA-Z0-9.\-+]*):/);if(!w)return k.match(/^[/\\]{2}/)?!A.allowProtocolRelative:!1;const G=w[1].toLowerCase();return l(A.allowedSchemesByTag,ie)?A.allowedSchemesByTag[ie].indexOf(G)===-1:!A.allowedSchemes||A.allowedSchemes.indexOf(G)===-1}function pt(ie){if(ie=ie.replace(/^(\w+:)?\s*[\\/]\s*[\\/]/,"$1//"),ie.startsWith("relative:"))throw new Error("relative: exploit attempt");let k="relative://relative-site";for(let re=0;re<100;re++)k+=`/${re}`;const w=new URL(ie,k);return{isRelativeUrl:w&&w.hostname==="relative-site"&&w.protocol==="relative:",url:w}}function Te(ie,k){if(!k)return ie;const w=ie.nodes[0];let G;return k[w.selector]&&k["*"]?G=a(k[w.selector],k["*"]):G=k[w.selector]||k["*"],G&&(ie.nodes[0].nodes=w.nodes.reduce(Se(G),[])),ie}function Q(ie){return ie.nodes[0].nodes.reduce(function(k,w){return k.push(`${w.prop}:${w.value}${w.important?" !important":""}`),k},[]).join(";")}function Se(ie){return function(k,w){return l(ie,w.prop)&&ie[w.prop].some(function(re){return re.test(w.value)})&&k.push(w),k}}function me(ie,k,w){return k?(ie=ie.split(/\s+/),ie.filter(function(G){return k.indexOf(G)!==-1||w.some(function(re){return re.test(G)})}).join(" ")):ie}}const f={decodeEntities:!0};return _.defaults={allowedTags:["address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","main","nav","section","blockquote","dd","div","dl","dt","figcaption","figure","hr","li","main","ol","p","pre","ul","a","abbr","b","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rb","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","caption","col","colgroup","table","tbody","td","tfoot","th","thead","tr"],nonBooleanAttributes:["abbr","accept","accept-charset","accesskey","action","allow","alt","as","autocapitalize","autocomplete","blocking","charset","cite","class","color","cols","colspan","content","contenteditable","coords","crossorigin","data","datetime","decoding","dir","dirname","download","draggable","enctype","enterkeyhint","fetchpriority","for","form","formaction","formenctype","formmethod","formtarget","headers","height","hidden","high","href","hreflang","http-equiv","id","imagesizes","imagesrcset","inputmode","integrity","is","itemid","itemprop","itemref","itemtype","kind","label","lang","list","loading","low","max","maxlength","media","method","min","minlength","name","nonce","optimum","pattern","ping","placeholder","popover","popovertarget","popovertargetaction","poster","preload","referrerpolicy","rel","rows","rowspan","sandbox","scope","shape","size","sizes","slot","span","spellcheck","src","srcdoc","srclang","srcset","start","step","style","tabindex","target","title","translate","type","usemap","value","width","wrap","onauxclick","onafterprint","onbeforematch","onbeforeprint","onbeforeunload","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextlost","oncontextmenu","oncontextrestored","oncopy","oncuechange","oncut","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onformdata","onhashchange","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onlanguagechange","onload","onloadeddata","onloadedmetadata","onloadstart","onmessage","onmessageerror","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onoffline","ononline","onpagehide","onpageshow","onpaste","onpause","onplay","onplaying","onpopstate","onprogress","onratechange","onreset","onresize","onrejectionhandled","onscroll","onscrollend","onsecuritypolicyviolation","onseeked","onseeking","onselect","onslotchange","onstalled","onstorage","onsubmit","onsuspend","ontimeupdate","ontoggle","onunhandledrejection","onunload","onvolumechange","onwaiting","onwheel"],disallowedTagsMode:"discard",allowedAttributes:{a:["href","name","target"],img:["src","srcset","alt","title","width","height","loading"]},allowedEmptyAttributes:["alt"],selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto","tel"],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:["href","src","cite"],allowProtocolRelative:!0,enforceHtmlBoundary:!1,parseStyleAttributes:!0},_.simpleTransform=function(O,A,R){return R=R===void 0?!0:R,A=A||{},function(g,I){let N;if(R)for(N in A)I[N]=A[N];else I=A;return{tagName:O,attribs:I}}},rd}var XVe=YVe();const OO=RE(XVe),IO=e=>OO(xGe(At.parseInline(e,{pedantic:!0}),{target:"_blank",validate:{email:()=>!1}}),{allowedTags:["a","p","span","strong","em","img"]}),QVe=e=>{const{value:t,selectionStart:n}=e,a=t.slice(0,n).search(/@\S+$/),s=t.slice(n).search(/\s/),i=a<0?"":s<0?t.slice(a+1):t.slice(a+1,s+n);return i.trim().length>1?{position:a,usernameQuery:i}:{position:null,usernameQuery:null}},ZVe=(e,t,n,a)=>e.substring(0,t+1)+a+" "+e.substring(t+n.length+2),Go=e=>{const t=At.parse(e,{breaks:!0});return OO(t)},gO=()=>["private","followers_only","public"],Yu=(e,t)=>t==="private"||t==="followers_only"&&e=="public"?t:e,Xu=e=>{switch(e){case"public":return["private","followers_only","public"];case"followers_only":return["private","followers_only"];case"private":return["private"]}},JVe=e=>{switch(e){case"public":return["private","followers_only","public"];case"followers_only":return["private","followers_only"];case"private":return["private"]}},eHe={class:"add-comment"},tHe={class:"form-items"},nHe={class:"form-item add-comment-label"},aHe={for:"comment",class:"visually-hidden"},sHe={class:"markdown-hints info-box"},iHe={key:0,class:"users-suggestions"},oHe=["onClick","onKeydown"],rHe={class:"form-select-buttons"},uHe={key:0,class:"form-item text-visibility"},lHe={for:"text_visibility"},cHe=["value"],dHe={key:1},EHe={key:2,class:"comment-buttons"},pHe={class:"confirm",type:"submit"},THe=X({__name:"CommentEdition",props:{workout:{},commentsLoading:{},authUser:{},comment:{default:null},name:{default:"text"},mentions:{default:()=>[]}},setup(e){var N;const t=e,{authUser:n,comment:a,commentsLoading:s,mentions:i,name:o,workout:r}=fe(t),u=Le(),{errorMessages:l}=qe();let d={position:null,usernameQuery:null};const E=Ie(f()),c=Ie(a!=null&&a.value?a.value.text_visibility:(N=r.value)==null?void 0:N.workout_visibility),T=z(()=>a.value?a.value.id===s.value:s.value==="new"),_=z(()=>u.getters[ce.GETTERS.USERS]);function f(){var b,C,y;if(a!=null&&a.value)return a.value.text||"";if(i.value.length>0){const D=i.value.filter(U=>U.username!==n.value.username);if(D.length>0)return D.map(U=>`@${U.username}`).join(" ")+" "}return(b=r.value)!=null&&b.user&&((C=r.value)==null?void 0:C.user.username)!==n.value.username?`@${(y=r.value)==null?void 0:y.user.username} `:""}function O(b){u.dispatch(ce.ACTIONS.GET_USERS,{per_page:5,q:b,with_following:"true"})}function A(b){E.value=b.value,d=QVe(b),d.usernameQuery?O(d.usernameQuery):u.dispatch(ce.ACTIONS.EMPTY_USERS)}function R(b,C,y){b.preventDefault(),b.stopPropagation();const D=`text${y?`-${y.id}`:""}`;if(d.position!==null&&d.usernameQuery){const U=ZVe(E.value,d.position,d.usernameQuery,C.username),P=document.getElementById(D);P&&P instanceof HTMLTextAreaElement&&(P.value=U,P.focus(),P.selectionStart=U.length,E.value=U)}u.dispatch(ce.ACTIONS.EMPTY_USERS)}function g(){A({value:"",selectionStart:0}),u.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}function I(){if(r.value)if(a!=null&&a.value&&a.value.id){const b={id:a.value.id,text:E.value,workout_id:r.value.id};u.dispatch(J.ACTIONS.EDIT_WORKOUT_COMMENT,b)}else{const b={text:E.value,text_visibility:c.value,workout_id:r.value.id};u.dispatch(J.ACTIONS.ADD_COMMENT,b),A({value:"",selectionStart:0})}}return ct(()=>{u.dispatch(ce.ACTIONS.EMPTY_USERS)}),(b,C)=>{const y=j("CustomTextArea"),D=j("Loader"),U=j("ErrorMessage");return h(),v("div",eHe,[p("form",{onSubmit:ve(I,["prevent"])},[p("div",tHe,[p("div",nHe,[p("label",aHe,S(b.$t("workouts.COMMENTS.ADD")),1),M(y,{id:"comment",class:"comment",name:m(o),input:E.value,required:!0,placeholder:b.$t("workouts.COMMENTS.ADD"),onUpdateValue:A},null,8,["name","input","placeholder"]),p("div",sHe,[C[1]||(C[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(b.$t("workouts.MARKDOWN_SYNTAX")),1)]),_.value.length>0?(h(),v("ul",iHe,[(h(!0),v(ue,null,be(_.value,P=>(h(),v("li",{key:P.username,tabindex:"0",onClick:F=>R(F,P,m(a)),onKeydown:Ye(F=>R(F,P,m(a)),["enter"])},[M(Qt,{user:P},null,8,["user"]),p("span",null,S(P.username),1)],40,oHe))),128))])):L("",!0)])]),p("div",rHe,[!m(a)&&m(r)&&m(r).workout_visibility?(h(),v("div",uHe,[p("label",lHe,S(b.$t("visibility_levels.VISIBILITY"))+": ",1),We(p("select",{id:"text_visibility","onUpdate:modelValue":C[0]||(C[0]=P=>c.value=P)},[(h(!0),v(ue,null,be(m(JVe)(m(r).workout_visibility),P=>(h(),v("option",{value:P,key:P},S(b.$t(`visibility_levels.COMMENT_LEVELS.${P}`)),9,cHe))),128))],512),[[Jt,c.value]])])):L("",!0),C[2]||(C[2]=p("div",{class:"spacer"},null,-1)),T.value?(h(),v("div",dHe,[M(D)])):(h(),v("div",EHe,[p("button",pHe,S(b.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(g,["prevent"])},S(b.$t("buttons.CANCEL")),1)]))]),m(l)?(h(),B(U,{key:0,message:m(l)},null,8,["message"])):L("",!0)],32)])}}}),RO=se(THe,[["__scopeId","data-v-96400748"]]),mHe={class:"report-form"},_He={class:"form-items"},fHe={class:"form-item"},hHe={for:"report"},SHe={class:"form-select-buttons"},AHe={key:0},OHe={key:1,class:"report-buttons"},IHe={class:"confirm",type:"submit"},gHe=X({__name:"ReportForm",props:{objectId:{},objectType:{}},setup(e){const t=e,{objectId:n,objectType:a}=fe(t),s=Le(),i={comment:"workouts.COMMENTS.REPORT",user:"user.REPORT",workout:"workouts.REPORT_WORKOUT"},o=Ie(""),r=z(()=>s.getters[te.GETTERS.ERROR_MESSAGES]),u=z(()=>s.getters[De.GETTERS.REPORT_STATUS]),l=z(()=>i[a.value]);function d(T){o.value=T.value}function E(){o.value="",s.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),s.commit(De.MUTATIONS.SET_REPORT_STATUS,null),a.value==="comment"?s.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}):a.value==="workout"?s.commit(J.MUTATIONS.SET_CURRENT_REPORTING,!1):s.commit(ce.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1)}function c(){s.dispatch(De.ACTIONS.SUBMIT_REPORT,{object_id:n.value,object_type:a.value,note:o.value})}return(T,_)=>{const f=j("CustomTextArea"),O=j("Loader"),A=j("ErrorMessage");return h(),v("div",mHe,[p("form",{onSubmit:ve(c,["prevent"])},[p("div",_He,[p("div",fHe,[p("label",hHe,S(T.$t(l.value)),1),M(f,{class:"report-textarea",name:"report",required:!0,placeholder:T.$t("common.REPORT_PLACEHOLDER"),onUpdateValue:d},null,8,["placeholder"])])]),p("div",SHe,[_[0]||(_[0]=p("div",{class:"spacer"},null,-1)),u.value==="loading"?(h(),v("div",AHe,[M(O)])):(h(),v("div",OHe,[p("button",IHe,S(T.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(E,["prevent"])},S(T.$t("buttons.CANCEL")),1)]))]),r.value?(h(),B(A,{key:0,message:r.value},null,8,["message"])):L("",!0)],32)])}}}),Wp=se(gHe,[["__scopeId","data-v-40798811"]]),RHe=X({__name:"Username",props:{user:{}},setup(e){const t=e,{user:n}=fe(t);return(a,s)=>{const i=j("router-link");return m(n).username?(h(),B(i,{key:0,class:"user-name",to:{name:a.$route.path.startsWith("/admin")?"UserFromAdmin":"User",params:{username:m(n).username}},title:m(n).username},{default:Y(()=>[x(S(m(n).username),1)]),_:1},8,["to","title"])):L("",!0)}}}),go=se(RHe,[["__scopeId","data-v-b000441f"]]),NHe=["id"],vHe={class:"comment-detail"},bHe={class:"comment-info"},CHe=["title"],PHe=["innerHTML"],DHe={key:1,class:"suspended info-box"},LHe={key:3,class:"comment-actions"},yHe=["disabled","title"],$He={key:0,class:"likes-count","aria-hidden":"true"},UHe=["title"],kHe=["title"],wHe=["title"],MHe=["title"],WHe={key:0,class:"likes-count","aria-hidden":"true"},FHe={key:6,class:"report-submitted"},zHe={class:"info-box"},xHe=X({__name:"Comment",props:{comment:{},workout:{default:null},authUser:{},commentsLoading:{},currentCommentEdition:{default:null},forNotification:{type:Boolean,default:!1},forAdmin:{type:Boolean,default:!1},displayAppeal:{type:Boolean,default:!1},hideSuspensionAppeal:{type:Boolean,default:!1},action:{default:null}},setup(e){const t=e,{action:n,authUser:a,comment:s,currentCommentEdition:i,forAdmin:o,forNotification:r,workout:u}=fe(t),l=ut(),d=Le(),{displayAppealForm:E}=Tp(),{displayOptions:c,locale:T}=qe(),_=z(()=>d.getters[De.GETTERS.REPORT_STATUS]),f=z(()=>l.params.commentId),O=z(()=>{var U,P,F,Z;return s.value.id===f.value||(((U=i.value)==null?void 0:U.type)==="delete"||((P=i.value)==null?void 0:P.type)==="report")&&((Z=(F=i.value)==null?void 0:F.comment)==null?void 0:Z.id)===s.value.id}),A=z(()=>{var U,P,F,Z;return s.value.user.username===(a==null?void 0:a.value.username)&&((U=n.value)==null?void 0:U.action_type)==="comment_suspension"&&(!n.value.appeal||((P=n.value.appeal)==null?void 0:P.approved)===!1||((F=n.value.appeal)==null?void 0:F.approved)===null&&!((Z=n.value.appeal)!=null&&Z.updated_at))&&s.value.suspended_at!==null&&s.value.suspension!==void 0&&E.value!==s.value.id}),R=z(()=>!r.value&&!s.value.suspended&&!g(a.value,s.value.user)&&!N()&&_.value!==`comment-${s.value.id}-created`);function g(U,P){return U&&U.username===P.username}function I(){var U,P,F;return((U=i.value)==null?void 0:U.type)==="edit"&&((F=(P=i.value)==null?void 0:P.comment)==null?void 0:F.id)===s.value.id}function N(){var U,P,F;return((U=i.value)==null?void 0:U.type)==="report"&&((F=(P=i.value)==null?void 0:P.comment)==null?void 0:F.id)===s.value.id}function b(U){d.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"delete",comment:U})}function C(U){d.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"report",comment:U}),d.commit(De.MUTATIONS.SET_REPORT_STATUS,null)}function y(U){d.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:U,comment:s.value}),setTimeout(()=>{const P=document.getElementById(`text-${s.value.id}`);P&&P.focus()},100)}function D(U){d.dispatch(U.liked?J.ACTIONS.UNDO_LIKE_COMMENT:J.ACTIONS.LIKE_COMMENT,U)}return Ce(()=>l.params.workoutId,()=>{d.commit(De.MUTATIONS.SET_REPORT_STATUS,null)}),ct(()=>d.commit(De.MUTATIONS.SET_REPORT_STATUS,null)),(U,P)=>{const F=j("router-link"),Z=j("VisibilityIcon");return h(),v("div",{class:"workout-comment",id:m(s).id},[M(Qt,{user:m(s).user},null,8,["user"]),p("div",vHe,[p("div",bHe,[M(go,{user:m(s).user},null,8,["user"]),P[5]||(P[5]=p("div",{class:"spacer"},null,-1)),M(F,{class:"comment-date",to:`${m(s).workout_id?`/workouts/${m(s).workout_id}`:""}/comments/${m(s).id}`,title:m($t)(m(s).created_at,m(c).timezone,m(c).dateFormat),onClick:P[0]||(P[0]=Oe=>U.$emit("commentLinkClicked"))},{default:Y(()=>[x(S(m(Ws)(new Date(m(s).created_at),new Date,{addSuffix:!0,locale:m(T)})),1)]),_:1},8,["to","title"]),m(s).modification_date?(h(),v("div",{key:0,class:"comment-edited",title:m($t)(m(s).modification_date,m(c).timezone,m(c).dateFormat)}," ("+S(U.$t("common.EDITED"))+") ",9,CHe)):L("",!0),M(Z,{visibility:m(s).text_visibility,"is-comment":!0},null,8,["visibility"])]),m(s).text_html?(h(),v(ue,{key:0},[I()?(h(),B(RO,{key:1,workout:m(u),comment:m(s),"comments-loading":U.commentsLoading,name:`text-${m(s).id}`,authUser:m(a)},null,8,["workout","comment","comments-loading","name","authUser"])):(h(),v("span",{key:0,class:Ae(["comment-text",{highlight:O.value}]),innerHTML:m(IO)(m(s).text_html)},null,10,PHe))],64)):L("",!0),m(s).suspended&&!m(s).suspension?(h(),v("div",DHe,[P[6]||(P[6]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(U.$t("workouts.COMMENTS.SUSPENDED_COMMENT_BY_ADMIN")),1)])):L("",!0),A.value&&m(n)&&m(s).suspended?(h(),B(EGe,{key:2,"hide-suspension-appeal":U.hideSuspensionAppeal,action:m(n),comment:m(s)},null,8,["hide-suspension-appeal","action","comment"])):L("",!0),m(a).username&&!m(o)?(h(),v("div",LHe,[!m(s).suspended&&!m(r)?(h(),v("button",{key:0,class:"transparent icon-button likes",onClick:P[1]||(P[1]=Oe=>m(r)?null:D(m(s))),disabled:m(r),title:`${U.$t(`workouts.${m(s).liked?"REMOVE_LIKE":"COMMENTS.LIKE_COMMENT"}`)} (${m(s).likes_count} ${U.$t("workouts.LIKES",m(s).likes_count)})`},[p("i",{class:Ae(["fa",{"fa-heart":m(s).likes_count>0,"fa-heart-o":m(s).likes_count===0,liked:m(s).liked}]),"aria-hidden":"true"},null,2),m(s).likes_count>0?(h(),v("span",$He,S(m(s).likes_count),1)):L("",!0)],8,yHe)):L("",!0),R.value?(h(),v("button",{key:1,class:"transparent icon-button",onClick:P[2]||(P[2]=Oe=>C(m(s))),title:U.$t("workouts.COMMENTS.REPORT")},P[7]||(P[7]=[p("i",{class:"fa fa-flag","aria-hidden":"true"},null,-1)]),8,UHe)):L("",!0),g(m(a),m(s).user)&&!m(r)?(h(),v("button",{key:2,class:"transparent icon-button",onClick:P[3]||(P[3]=()=>y("edit")),title:U.$t("workouts.COMMENTS.EDIT")},P[8]||(P[8]=[p("i",{class:"fa fa-edit","aria-hidden":"true"},null,-1)]),8,kHe)):L("",!0),g(m(a),m(s).user)&&!m(r)?(h(),v("button",{key:3,class:"transparent icon-button",onClick:P[4]||(P[4]=Oe=>b(m(s))),title:U.$t("workouts.COMMENTS.DELETE")},P[9]||(P[9]=[p("i",{class:"fa fa-trash","aria-hidden":"true"},null,-1)]),8,wHe)):L("",!0)])):L("",!0),m(a).username?L("",!0):(h(),v("div",{key:4,class:"comment-likes",title:`${m(s).likes_count} ${U.$t("workouts.LIKES",m(s).likes_count)}`},[p("i",{class:Ae(["fa",{"fa-heart":m(s).likes_count>0,"fa-heart-o":m(s).likes_count===0}]),"aria-hidden":"true"},null,2),m(s).likes_count>0?(h(),v("span",WHe,S(m(s).likes_count),1)):L("",!0)],8,MHe)),N()?(h(),B(Wp,{key:5,"object-id":m(s).id,"object-type":"comment"},null,8,["object-id"])):L("",!0),_.value===`comment-${m(s).id}-created`?(h(),v("div",FHe,[p("div",zHe,[p("span",null,[P[10]||(P[10]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(U.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0)])],8,NHe)}}}),Fp=se(xHe,[["__scopeId","data-v-9a13ce5d"]]),BHe={class:"alert-message"},GHe={key:0},VHe=["innerHTML"],HHe=X({__name:"AlertMessage",props:{message:{},param:{default:()=>""}},setup(e){const t=e,{message:n,param:a}=fe(t);return(s,i)=>{const o=j("i18n-t");return h(),v("div",BHe,[m(a)?(h(),v("span",GHe,[M(o,{keypath:m(n)},{default:Y(()=>[p("span",null,S(m(a)),1)]),_:1},8,["keypath"])])):(h(),v("span",{key:1,innerHTML:s.$t(m(n))},null,8,VHe)),Pt(s.$slots,"additionalMessage",{},void 0,!0)])}}}),KHe=se(HHe,[["__scopeId","data-v-fc0d2d13"]]),qHe={},jHe={class:"card"},YHe={class:"card-title"},XHe={class:"card-content"};function QHe(e,t){return h(),v("div",jHe,[p("div",YHe,[Pt(e.$slots,"title")]),p("div",XHe,[Pt(e.$slots,"content")])])}const NO=se(qHe,[["render",QHe]]),ZHe={class:"custom-textarea"},JHe=["id","name","maxLength","disabled","rows","required","placeholder"],eKe={class:"remaining-chars"},tKe=X({__name:"CustomTextArea",props:{name:{},charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""},rows:{default:2},required:{type:Boolean,default:!1},placeholder:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,a=t,{input:s}=fe(n),i=Ie(s.value?s.value:"");function o(r){const u=r.target;a("updateValue",{value:u.value,selectionStart:u.selectionStart})}return Ce(()=>n.input,r=>{i.value=r===null?"":r}),(r,u)=>(h(),v("div",ZHe,[We(p("textarea",{id:r.name,name:r.name,maxLength:r.charLimit,disabled:r.disabled,rows:r.rows,required:r.required,placeholder:r.placeholder,"onUpdate:modelValue":u[0]||(u[0]=l=>i.value=l),onInput:o},null,40,JHe),[[ot,i.value]]),p("div",eKe,S(r.$t("workouts.REMAINING_CHARS"))+": "+S(i.value.length)+"/"+S(r.charLimit),1)]))}}),vO=se(tKe,[["__scopeId","data-v-8d139e95"]]),vn={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},nKe={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},Yt=(e,t,n,a=3)=>{const s=vn[t],i=vn[n],o=e*s.multiplier*nKe[s.system][i.system]/i.multiplier;return a!==null?parseFloat(o.toFixed(a)):o},Zr=(e,t,n)=>{const a=n?vn[e].defaultTarget:e;return n?Yt(t,e,a,2):t},Eh=(e,t)=>{const n=t?e*1.8+32:e,a=t?" °F":"°C";return`${n===0?0:Number(n).toFixed(1)}${a}`},aKe=(e,t)=>{const n=t?e*2.2369363:e,a=t?" mph":"m/s";return`${n===0?0:Number(n).toFixed(1)}${a}`},sKe=X({__name:"Distance",props:{distance:{},unitFrom:{},useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:a,distance:s,speed:i,strong:o,unitFrom:r,useImperialUnits:u}=fe(t),l=z(()=>u.value?vn[r.value].defaultTarget:r.value),d=z(()=>u.value?Yt(s.value,r.value,l.value,n.value):parseFloat(s.value.toFixed(n.value)));return(E,c)=>(h(),v(ue,null,[p("span",{class:Ae(["distance",{strong:m(o)}])},S(d.value),3),c[0]||(c[0]=x(" "+S(" ")+" ")),m(a)?(h(),v("span",{key:0,class:Ae(["unit",{strong:m(o)}])},S(l.value)+S(m(i)?"/h":""),3)):L("",!0)],64))}}),iKe=se(sKe,[["__scopeId","data-v-3aadc3cb"]]),oKe={class:"dropdown-wrapper"},rKe=["aria-expanded","aria-label"],uKe=["aria-labelledby"],lKe=["id","onClick","onKeydown","onMouseover"],cKe=X({__name:"Dropdown",props:{options:{},selected:{},buttonLabel:{},listLabel:{},isMenuOpen:{type:Boolean}},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,{isMenuOpen:a,options:s,selected:i}=fe(n),o=t,r=ut(),u=Ie(!1),l=Ie(null),d=Ie(_(i.value));function E(){if(u.value)c();else{u.value=!0;const A=document.getElementById(`dropdown-item-${d.value}`);A==null||A.focus()}}function c(){var A;u.value=!1,d.value=_(i.value),(A=l.value)==null||A.focus()}function T(A){o("selected",A),u.value=!1}function _(A){const R=s.value.findIndex(g=>g.value===A);return R>=0?R:0}function f(A){let R=!1;u.value&&(A.key==="ArrowDown"&&(R=!0,d.value+=1,d.value>s.value.length&&(d.value=0)),A.key==="ArrowUp"&&(R=!0,d.value-=1,d.value<0&&(d.value=s.value.length-1)),A.key==="Home"&&(R=!0,d.value=0),A.key==="End"&&(R=!0,d.value=s.value.length-1),A.key==="Enter"&&(R=!0,T(s.value[d.value])),(A.key==="Escape"||A.key==="Tab")&&(R=A.key==="Escape",c())),R&&(A.stopPropagation(),A.preventDefault())}function O(A){d.value=A}return Ce(()=>r.path,()=>u.value=!1),Ce(()=>i.value,A=>d.value=_(A)),Ce(()=>a.value,A=>{A||c()}),mt(()=>{document.addEventListener("keydown",f)}),ct(()=>{document.removeEventListener("keydown",f)}),(A,R)=>(h(),v("div",oKe,[p("button",{"aria-controls":"dropdown-list","aria-expanded":u.value,"aria-haspopup":"true","aria-label":A.buttonLabel,class:"dropdown-selector transparent",onClick:R[0]||(R[0]=g=>E()),ref_key:"dropdownButton",ref:l},[Pt(A.$slots,"default",{},void 0,!0)],8,rKe),u.value?(h(),v("ul",{key:0,"aria-labelledby":A.listLabel,class:"dropdown-list",id:"dropdown-list",role:"menu"},[(h(!0),v(ue,null,be(m(s),(g,I)=>(h(),v("li",{class:Ae(["dropdown-item",{selected:g.value===m(i),focused:I===d.value}]),key:I,id:`dropdown-item-${I}`,tabindex:"-1",onClick:N=>T(g),onKeydown:Ye(N=>T(g),["enter"]),onMouseover:N=>O(I),role:"menuitem"},S(g.label),43,lKe))),128))],8,uKe)):L("",!0)]))}}),dKe=se(cKe,[["__scopeId","data-v-f0445cd3"]]),EKe={class:"error-message"},pKe={key:0},TKe={key:1},mKe={key:2},_Ke=X({__name:"ErrorMessage",props:{message:{}},setup(e){const t=e,{message:n}=fe(t);return(a,s)=>(h(),v("div",EKe,[Array.isArray(m(n))?(h(),v("ul",pKe,[(h(!0),v(ue,null,be(m(n),(i,o)=>(h(),v("li",{key:o},S(a.$t(i)),1))),128))])):typeof m(n)=="string"?(h(),v("div",TKe,S(a.$t(m(n)).replace("api.ERROR.","")),1)):(h(),v("div",mKe,S(a.$t(`equipments.ERRORS.${m(n).status}`,{equipmentId:m(n).equipmentId,equipmentLabel:m(n).equipmentLabel})),1))]))}}),fKe=se(_Ke,[["__scopeId","data-v-5d2995e8"]]),hKe={name:"Bike"},SKe={version:"1.1",id:"bike",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 35 35","xml:space":"preserve"};function AKe(e,t,n,a,s,i){return h(),v("svg",SKe,t[0]||(t[0]=[p("desc",{id:"BikeEquipmentDescription"},"bike",-1),p("g",null,[p("path",{d:`M25.8 14.32c-0.64 0-1.24 0.12-1.84 0.32l-1.52-3 2.6-3.88c0.28-0.4 0.12-1.32-0.72-1.32h-3.32c-0.48 0-0.84 - 0.36-0.84 0.84s0.36 0.84 0.84 0.84h1.76l-1.76 2.64h-9.68c-0.4 0-0.68 0.36-0.68 0.36v0 0 0 0l-2.56 - 3.76c-0.72-0.36-1.56-0.56-2.44-0.56-3.12 0-5.64 2.52-5.64 5.64s2.52 5.64 5.68 5.64c2.8 0 5.16-2.080 - 5.56-4.8h4.6c0.48 0 0.68-0.4 0.68-0.4v0l4.8-7.2 1.16 2.2c-1.4 1.040-2.32 2.68-2.32 4.56 0 3.12 2.52 5.64 5.64 - 5.64s5.64-2.52 5.64-5.64-2.56-5.64-5.64-5.64zM15.92 18.32l-3.2-5.92h7.12l-3.92 5.92zM11.24 13.2l3.16 - 5.92h-3.2c-0.2-1.28-0.84-2.44-1.76-3.28l1.8-2.64zM8.52 17.24c0.48 0.52 0.84 1.16 1 1.88h-2.28l1.28-1.88zM5.68 - 23.88c-2.16 0-3.96-1.76-3.96-3.96s1.76-3.92 3.96-3.92c0.52 0 1 0.12 1.48 0.28l-2.16 3.2c-0.36 0.44-0.040 1.28 - 0.68 1.28v0 0h3.84c-0.4 1.8-2 3.12-3.84 3.12zM25.8 23.88c-2.16 0-3.96-1.76-3.96-3.96 0-1.2 0.56-2.32 - 1.44-3.040l1.8 3.44c0.2 0.32 0.68 0.56 1.16 0.36 0.4-0.16 0.56-0.72 0.36-1.12l-1.8-3.4c0.32-0.080 0.68-0.16 - 1.040-0.16 2.16 0 3.96 1.76 3.96 3.96s-1.8 3.92-4 3.92zM9.8 9.4h3.080c0.48 0 0.84-0.36 - 0.84-0.84s-0.36-0.84-0.84-0.84h-3.080c-0.48 0-0.84 0.36-0.84 0.84-0.040 0.44 0.36 0.84 0.84 0.84z`})],-1)]))}const OKe=se(hKe,[["render",AKe]]),IKe={name:"BikeTrainer"},gKe={version:"1.1",id:"bike_trainer",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve",style:{"shape-rendering":"geometricPrecision","text-rendering":"geometricPrecision","image-rendering":"optimizeQuality","fill-rule":"evenodd","clip-rule":"evenodd"}};function RKe(e,t,n,a,s,i){return h(),v("svg",gKe,t[0]||(t[0]=[Pn(`bike trainer`,7)]))}const NKe=se(IKe,[["render",RKe]]),vKe={name:"Kayak_Boat"},bKe={id:"kayak",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"-200 -150 800 800","xml:space":"preserve"};function CKe(e,t,n,a,s,i){return h(),v("svg",bKe,t[0]||(t[0]=[p("desc",{id:"kayakBoatEquipmentDescription"},"kayak",-1),p("g",null,[p("g",null,[p("path",{d:`M506.376,55.175L458.322,7.122c-5.504-5.504-14.428-5.504-19.933,0l-30.985,30.985 - c-14.252,14.252-17.674,35.223-10.286,52.713c-1.12,0.678-2.183,1.483-3.15,2.45L91.981,395.257 - c-1.027,1.027-1.872,2.163-2.574,3.361c-17.508-7.434-38.522-4.024-52.798,10.25L5.623,439.852 - c-5.504,5.504-5.504,14.429,0,19.933l48.054,48.054c5.504,5.504,14.428,5.504,19.933,0l30.985-30.985 - c15.23-15.23,18.103-38.138,8.621-56.267c0.783-0.549,1.537-1.157,2.237-1.857L417.44,116.745 - c0.634-0.634,1.188-1.317,1.699-2.021c18.126,9.473,41.025,6.598,56.252-8.629l30.985-30.985 - C511.88,69.604,511.88,60.679,506.376,55.175z`})])],-1),p("g",null,[p("g",null,[p("path",{d:`M287.822,18.22C281.289,6.959,269.286,0.007,256.267,0c-13.02-0.008-25.057,6.925-31.591,18.186 - c-29.734,51.242-69.75,138.626-69.75,237.815c0,9.547,0.378,18.983,1.074,28.29l53.352-53.352v-47.247 - c0-25.894,20.992-46.886,46.886-46.886c13.039,0,24.831,5.326,33.329,13.917l40.982-40.982 - C317.405,73.151,301.526,41.842,287.822,18.22z`})])],-1),p("g",null,[p("g",null,[p("path",{d:`M356.238,224.889l-53.113,53.115v50.303c0,25.894-20.992,46.886-46.886,46.886c-13.817,0-26.235-5.979-34.816-15.488 - l-40.306,40.306c13.297,37.559,29.552,69.661,43.538,93.767c6.534,11.261,18.536,18.214,31.556,18.22s25.057-6.925,31.591-18.186 - c29.734-51.242,69.75-138.626,69.75-237.815C357.552,245.483,357.078,235.11,356.238,224.889z`})])],-1)]))}const PKe=se(vKe,[["render",CKe]]),DKe={name:"Shoes"},LKe={id:"shoes",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve"};function yKe(e,t,n,a,s,i){return h(),v("svg",LKe,t[0]||(t[0]=[Pn(`shoes`,4)]))}const $Ke=se(DKe,[["render",yKe]]),UKe={name:"Shoes"},kKe={id:"skis",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve"};function wKe(e,t,n,a,s,i){return h(),v("svg",kKe,t[0]||(t[0]=[p("desc",{id:"skisEquipmentDescription"},"skis",-1),p("path",{d:`m 105.01644,82.858537 c -0.75155,0 -1.40914,0.134433 -2.1607,0.373428 -1.52187,0.492925 -2.39554,1.127758 -3.400739,2.673751 - -1.01459,1.553454 -1.85068,4.040497 -2.16069,7.192229 -0.62942,6.296003 0.79852,14.996885 3.184669,23.511055 4.81929,17.02088 - 12.99235,33.25755 12.99235,33.25755 l 31.75279,62.51192 11.9308,-22.33103 28.18296,9.48509 -31.7528,-62.48952 c 0,0 -8.36096,-16.25161 - -19.82202,-31.129 -5.73054,-7.438695 -12.30656,-14.481551 -18.22498,-18.66396 -3.00618,-2.091199 -5.82448,-3.420599 -7.89123,-3.973273 - -1.03337,-0.283807 -1.87886,-0.41824 -2.63041,-0.41824 z m 144.48464,0.07468 c -0.75155,0 -1.59704,0.134434 -2.63042,0.41824 - -2.06674,0.552674 -4.88504,1.882085 -7.79728,3.973284 -6.01236,4.182398 -12.58839,11.217793 -18.31892,18.656489 -11.46107,14.87739 - -19.82202,31.12153 -19.82202,31.12153 l -14.56119,28.70918 20.94933,41.2265 2.34858,4.63051 31.47097,-61.69038 c 0,0 8.17306,-16.23667 - 12.96416,-33.27247 2.34858,-8.51417 3.75773,-17.222527 3.19408,-23.51853 -0.37578,-3.151743 -1.22127,-5.646237 -2.1607,-7.199702 - -1.03338,-1.553465 -1.87887,-2.188297 -3.4759,-2.681223 -0.75155,-0.238994 -1.40915,-0.373428 -2.16069,-0.373428 z m - 91.21884,119.325343 v 34.35542 h 24.42522 v -34.35542 z m 80.79115,0 v 34.35542 h 24.42522 v -34.35542 z m -255.33761,5.45205 - -12.02473,22.40571 7.98517,15.60931 11.93079,-22.40571 28.18296,9.48509 -7.89123,-15.60931 z m 16.90978,33.23514 -11.93079,22.33102 - 6.76391,13.36874 40.11375,-12.92063 -6.76391,-13.29406 z m -38.23488,6.57234 -8.36094,16.28148 19.91595,6.42297 z m - 199.62928,2.53931 v 153.85252 h -21.60693 v 13.44343 h 21.60693 v 17.17771 h 16.90978 v -17.17771 h 21.60693 V 403.90992 H 361.38742 - V 250.0574 Z m 80.79115,0 v 153.85252 h -21.60693 v 13.44343 h 21.60693 v 17.17771 h 16.90978 V 417.35335 H 463.7855 V 403.90992 - H 442.17857 V 250.0574 Z m -200.94449,26.13999 -40.0198,12.92062 10.52164,20.76263 40.11374,-12.92062 -4.88504,-9.63446 z m - -94.03714,0.0747 -10.61558,20.76262 40.0198,12.92063 8.45488,-16.58022 -2.25462,-4.48115 -0.65761,-1.34434 z m 110.94691,33.16045 - -40.0198,12.84594 55.61437,109.48923 40.0198,-12.92063 z m -127.95063,0.0373 -55.623763,109.33985 40.057384,12.92063 55.680129,-109.33986 z`},null,-1)]))}const MKe=se(UKe,[["render",wKe]]),WKe={name:"Shoes"},FKe={id:"shoes",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512","xml:space":"preserve",style:{"shape-rendering":"geometricPrecision","text-rendering":"geometricPrecision","image-rendering":"optimizeQuality","fill-rule":"evenodd","clip-rule":"evenodd"}};function zKe(e,t,n,a,s,i){return h(),v("svg",FKe,t[0]||(t[0]=[Pn(`snowshoes`,3)]))}const xKe=se(WKe,[["render",zKe]]),BKe=["title"],GKe=X({__name:"index",props:{equipmentTypeLabel:{},title:{}},setup(e){const t=e,{equipmentTypeLabel:n,title:a}=fe(t),{darkTheme:s}=qe();return(i,o)=>(h(),v("div",{class:"equipment-type-img",style:za({fill:m(s)?"#cfd0d0":"#2c3e50"}),title:m(a)},[m(n)==="Bike"?(h(),B(OKe,{key:0})):L("",!0),m(n)==="Bike Trainer"?(h(),B(NKe,{key:1})):L("",!0),m(n)==="Kayak_Boat"?(h(),B(PKe,{key:2})):L("",!0),m(n)==="Shoes"?(h(),B($Ke,{key:3})):L("",!0),m(n)==="Skis"?(h(),B(MKe,{key:4})):L("",!0),m(n)==="Snowshoes"?(h(),B(xKe,{key:5})):L("",!0)],12,BKe))}}),VKe={name:"CyclingSport"},HKe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"};function KKe(e,t,n,a,s,i){return h(),v("svg",HKe,t[0]||(t[0]=[p("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),p("g",null,[p("path",{d:`M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304 - c-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z`}),p("path",{d:`M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54 - c-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482 - c-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842 - c-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906 - c-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663 - c54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773 - c-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095 - l19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663 - C491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917 - c0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893 - c-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065 - C165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901 - C155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084 - c-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12 - c3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691 - c-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94 - c7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917 - c0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132 - c13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226 - c40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z`})],-1)]))}const qKe=se(VKe,[["render",KKe]]),jKe={name:"CyclingTransport"},YKe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function XKe(e,t,n,a,s,i){return h(),v("svg",YKe,t[0]||(t[0]=[p("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),p("g",{id:"g147"},[p("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),p("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1)]))}const QKe=se(jKe,[["render",XKe]]),ZKe={name:"CyclingTransport"},JKe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function eqe(e,t,n,a,s,i){return h(),v("svg",JKe,t[0]||(t[0]=[Pn(' silhouette of a person riding a bicycle for touring/trekking ',2)]))}const tqe=se(ZKe,[["render",eqe]]),nqe={name:"CyclingVirtual"},aqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function sqe(e,t,n,a,s,i){return h(),v("svg",aqe,t[0]||(t[0]=[Pn(' silhouette of a person riding a bicycle with virtual indicator ',4)]))}const iqe=se(nqe,[["render",sqe]]),oqe={name:"Hiking"},rqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"};function uqe(e,t,n,a,s,i){return h(),v("svg",rqe,t[0]||(t[0]=[p("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),p("g",null,[p("path",{d:`M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24 - c-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z`}),p("path",{d:`M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933 - c1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779 - c0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446 - l-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811 - c7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603 - c-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264 - c0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882 - l1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036 - C381.588,218.245,386.604,211.15,386.604,202.858z`})],-1)]))}const lqe=se(oqe,[["render",uqe]]),cqe={name:"MountainBiking"},dqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"};function Eqe(e,t,n,a,s,i){return h(),v("svg",dqe,t[0]||(t[0]=[p("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),p("g",null,[p("g",null,[p("path",{d:`M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539 - c-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z`}),p("path",{d:`M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271 - l76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201 - c0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997 - c17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285 - C102.205,73.858,91.112,77.243,87.517,89.072z`}),p("path",{d:`M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195 - c3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419 - c-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415 - c-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759 - c-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806 - c-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933 - c16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291 - c-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326 - v9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507 - c0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724 - l-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z`})])],-1)]))}const pqe=se(cqe,[["render",Eqe]]),Tqe={name:"MountainBikingElectric"},mqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"};function _qe(e,t,n,a,s,i){return h(),v("svg",mqe,t[0]||(t[0]=[Pn(' silhouette of a person riding an electric mountain bike ',18)]))}const fqe=se(Tqe,[["render",_qe]]),hqe={name:"Mountaineering"},Sqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"};function Aqe(e,t,n,a,s,i){return h(),v("svg",Sqe,t[0]||(t[0]=[Pn(` silhouette of a person doing mountaineering `,2)]))}const Oqe=se(hqe,[["render",Aqe]]),Iqe={name:"OpenWaterSwimming"},gqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 492.508 492.508",style:{"enable-background":"new 0 0 492.508 492.508"},"xml:space":"preserve"};function Rqe(e,t,n,a,s,i){return h(),v("svg",gqe,t[0]||(t[0]=[Pn(` silhouette of a person swimming in open water `,3)]))}const Nqe=se(Iqe,[["render",Rqe]]),vqe={name:"Paragliding"},bqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 170 170","xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function Cqe(e,t,n,a,s,i){return h(),v("svg",bqe,t[0]||(t[0]=[Pn('silhouette of a person paragliding',3)]))}const Pqe=se(vqe,[["render",Cqe]]),Dqe={name:"Rowing"},Lqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"};function yqe(e,t,n,a,s,i){return h(),v("svg",Lqe,t[0]||(t[0]=[p("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),p("g",null,[p("g",null,[p("path",{d:`M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43 - c2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914 - c8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0 - l47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993 - l-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923 - c-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09 - c-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451 - c-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592 - C39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737 - l-43.453,43.012h-14.2L272.63,248.727z`}),p("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1)]))}const $qe=se(Dqe,[["render",yqe]]),Uqe={name:"Running"},kqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"};function wqe(e,t,n,a,s,i){return h(),v("svg",kqe,t[0]||(t[0]=[p("desc",{id:"runningDescription"},"silhouette of a running person",-1),p("g",null,[p("path",{d:`M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0 - c-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z`}),p("path",{d:`M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556 - c-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921 - c-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4 - c-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109 - c2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057 - l26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039 - c13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279 - l19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329 - C420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z`})],-1)]))}const Mqe=se(Uqe,[["render",wqe]]),Wqe={name:"SkiingAlpine"},Fqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"};function zqe(e,t,n,a,s,i){return h(),v("svg",Fqe,t[0]||(t[0]=[p("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),p("g",null,[p("g",null,[p("path",{d:`M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604 - c2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229 - c-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15 - c15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187 - c0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19 - l-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709 - l-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087 - c-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737 - l102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175 - c0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199 - c-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z`}),p("path",{d:`M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668 - c15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z`})])],-1)]))}const xqe=se(Wqe,[["render",zqe]]),Bqe={name:"SkiingCrossCountry"},Gqe={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"};function Vqe(e,t,n,a,s,i){return h(),v("svg",Gqe,t[0]||(t[0]=[p("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),p("g",null,[p("path",{d:`M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959 - l12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559 - c-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855 - c-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531 - c2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317 - l-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727 - c-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188 - h161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457 - c5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184 - h-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844 - s27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z`})],-1)]))}const Hqe=se(Bqe,[["render",Vqe]]),Kqe={name:"Snowshoes"},qqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function jqe(e,t,n,a,s,i){return h(),v("svg",qqe,t[0]||(t[0]=[Pn('silhouette of a person with snowshoes',6)]))}const Yqe=se(Kqe,[["render",jqe]]),Xqe={name:"Swimrun"},Qqe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 492.508 492.508","xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function Zqe(e,t,n,a,s,i){return h(),v("svg",Qqe,t[0]||(t[0]=[Pn(' silhouette of a person swimming in open water and another silhouette of a person running ',4)]))}const Jqe=se(Xqe,[["render",Zqe]]),eje={name:"Trail"},tje={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"};function nje(e,t,n,a,s,i){return h(),v("svg",tje,t[0]||(t[0]=[p("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),p("g",null,[p("g",null,[p("path",{d:`M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775 - h-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634 - l-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609 - c-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102 - c-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165 - c-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161 - l35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836 - c-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187 - c18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188 - c-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694 - c-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135 - c-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27 - c12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z`}),p("path",{d:`M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983 - c-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z`})])],-1)]))}const aje=se(eje,[["render",nje]]),sje={name:"Walking"},ije={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function oje(e,t,n,a,s,i){return h(),v("svg",ije,t[0]||(t[0]=[Pn('silhouette of a walking person',3)]))}const rje=se(sje,[["render",oje]]),zp={"Cycling (Sport)":"#4c9792","Cycling (Trekking)":"#a8af88","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Mountaineering:"#48b3b7","Open Water Swimming":"#4058a4",Paragliding:"#c23c50",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Swimrun:"#3d9fc9",Trail:"#09a98a",Walking:"#838383"},uje=e=>{const t={};return e.map(n=>t[n.id]=n.color?n.color:zp[n.label]),t},lje=(e,t)=>{const n=e.translatedLabel.toLowerCase(),a=t.translatedLabel.toLowerCase();return n>a?1:ne.filter(s=>n==="all"?!0:a.includes(s.id)||s[n]).map(s=>({...s,translatedLabel:t(`sports.${s.label}.LABEL`)})).sort(lje),xp=(e,t)=>t.filter(n=>n.id===e.sport_id).map(n=>n.label)[0],Bp=(e,t)=>t.filter(n=>n.id===e.sport_id).map(n=>n.color)[0];function nn(){const e=Le(),{t}=yt(),n=Ut("sportColors"),a="#838383",s=Ie(!1),i=Ie(""),o=z(()=>e.getters[Ht.GETTERS.SPORTS]),r=z(()=>ia(o.value,t)),u=kt({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1,fromSport:!1});function l(_){u.is_active=_.target.checked}function d(_){s.value=_}function E(_){const f={...u};f.stopped_speed_threshold=_.imperial_units?Yt(u.stopped_speed_threshold,"mi","km",2):u.stopped_speed_threshold,e.dispatch(K.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,f)}function c(_,f=!1){e.dispatch(K.ACTIONS.RESET_USER_SPORT_PREFERENCES,{sportId:_,fromSport:f})}function T(_){return _?o.value.filter(f=>f.id===_.sport_id)[0]:null}return{defaultColor:a,defaultEquipmentId:i,displayModal:s,sportColors:n,sportPayload:u,sports:o,translatedSports:r,getWorkoutSport:T,resetSport:c,updateDisplayModal:d,updateIsActive:l,updateSport:E}}const cje=["title"],dje=X({__name:"index",props:{sportLabel:{},color:{},title:{default:""}},setup(e){const t=e,{color:n,sportLabel:a,title:s}=fe(t),{sportColors:i}=nn();return(o,r)=>(h(),v("div",{class:"sport-img",style:za({fill:m(n)?m(n):m(i)[m(a)]}),title:m(s)?m(s):o.$t(`sports.${m(a)}.LABEL`)},[m(a)==="Cycling (Sport)"?(h(),B(qKe,{key:0})):L("",!0),m(a)==="Cycling (Trekking)"?(h(),B(tqe,{key:1})):L("",!0),m(a)==="Cycling (Transport)"?(h(),B(QKe,{key:2})):L("",!0),m(a)==="Cycling (Virtual)"?(h(),B(iqe,{key:3})):L("",!0),m(a)==="Hiking"?(h(),B(lqe,{key:4})):L("",!0),m(a)==="Mountain Biking"?(h(),B(pqe,{key:5})):L("",!0),m(a)==="Mountain Biking (Electric)"?(h(),B(fqe,{key:6})):L("",!0),m(a)==="Mountaineering"?(h(),B(Oqe,{key:7})):L("",!0),m(a)==="Paragliding"?(h(),B(Pqe,{key:8})):L("",!0),m(a)==="Open Water Swimming"?(h(),B(Nqe,{key:9})):L("",!0),m(a)==="Rowing"?(h(),B($qe,{key:10})):L("",!0),m(a)==="Running"?(h(),B(Mqe,{key:11})):L("",!0),m(a)==="Skiing (Alpine)"?(h(),B(xqe,{key:12})):L("",!0),m(a)==="Skiing (Cross Country)"?(h(),B(Hqe,{key:13})):L("",!0),m(a)==="Snowshoes"?(h(),B(Yqe,{key:14})):L("",!0),m(a)==="Swimrun"?(h(),B(Jqe,{key:15})):L("",!0),m(a)==="Trail"?(h(),B(aje,{key:16})):L("",!0),m(a)==="Walking"?(h(),B(rje,{key:17})):L("",!0)],12,cje))}}),Eje={},pje={class:"loader"};function Tje(e,t){return h(),v("div",pje)}const wl=se(Eje,[["render",Tje],["__scopeId","data-v-8b613881"]]),mje={class:"custom-modal"},_je={key:0,class:"modal-message"},fje={key:1,class:"modal-message"},hje={key:2,class:"info-box"},Sje={key:4},Aje={key:5,class:"modal-buttons"},Oje=X({__name:"Modal",props:{title:{},message:{},strongMessage:{default:()=>""},loading:{type:Boolean,default:!1},warning:{default:()=>""},hideErrorMessage:{type:Boolean,default:!1}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,{title:a,message:s,strongMessage:i}=fe(n),o=t,{errorMessages:r}=qe();let u=null,l=null,d=null;function E(c){var T;(c.key==="Tab"||c.keyCode===9)&&(c.preventDefault(),((T=document.activeElement)==null?void 0:T.id)==="cancel-button"?u==null||u.focus():l==null||l.focus())}return mt(()=>{d=document.activeElement,l=document.getElementById("cancel-button"),u=document.getElementById("confirm-button"),l&&l.focus(),document.addEventListener("keydown",E)}),ct(()=>{document.removeEventListener("keydown",E),d==null||d.focus()}),(c,T)=>{const _=j("i18n-t"),f=j("ErrorMessage"),O=j("Loader"),A=j("Card");return h(),v("div",{id:"modal",role:"dialog",onClick:T[2]||(T[2]=ve(R=>o("cancelAction"),["self"]))},[p("div",mje,[M(A,null,{title:Y(()=>[x(S(m(a)),1)]),content:Y(()=>[m(i)?(h(),v("div",_je,[M(_,{keypath:m(s)},{default:Y(()=>[p("span",null,S(m(i)),1)]),_:1},8,["keypath"])])):(h(),v("div",fje,S(m(s)),1)),c.warning?(h(),v("div",hje,[T[3]||(T[3]=p("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),x(" "+S(c.warning),1)])):L("",!0),m(r)&&!c.hideErrorMessage?(h(),B(f,{key:3,message:m(r)},null,8,["message"])):L("",!0),c.loading?(h(),v("div",Sje,[M(O)])):(h(),v("div",Aje,[m(r)?L("",!0):(h(),v("button",{key:0,class:Ae(["confirm",{danger:c.warning}]),id:"confirm-button",onClick:T[0]||(T[0]=R=>o("confirmAction"))},S(c.$t("buttons.YES")),3)),p("button",{tabindex:"0",id:"cancel-button",class:"cancel",onClick:T[1]||(T[1]=R=>o("cancelAction"))},S(c.$t(`buttons.${m(r)?"CANCEL":"NO"}`)),1)]))]),_:1})])])}}}),Ije=se(Oje,[["__scopeId","data-v-9235de5f"]]),gje={class:"visibility"},Rje=["title"],Nje=X({__name:"VisibilityIcon",props:{visibility:{},isComment:{type:Boolean,default:!1}},setup(e){const t=e,{visibility:n,isComment:a}=fe(t);function s(i){switch(i){case"public":return"globe";case"followers_only":return"users";default:case"private":return"lock"}}return(i,o)=>(h(),v("span",gje,[p("i",{class:Ae(`fa fa-${s(m(n))}`),"aria-hidden":"true",title:i.$t(`visibility_levels.${m(a)?"COMMENT_":""}LEVELS.${m(n)}`)},null,10,Rje)]))}}),vje=[{target:KHe,name:"AlertMessage"},{target:NO,name:"Card"},{target:vO,name:"CustomTextArea"},{target:iKe,name:"Distance"},{target:dKe,name:"Dropdown"},{target:fKe,name:"ErrorMessage"},{target:wl,name:"Loader"},{target:Ije,name:"Modal"},{target:dje,name:"SportImage"},{target:GKe,name:"EquipmentTypeImage"},{target:Nje,name:"VisibilityIcon"},{target:Fp,name:"Comment"}],bje={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}},Cje=["bytes","KB","MB","GB","TB"],bO=e=>{if(!e)return{size:"0",suffix:"bytes"};const t=Math.floor(Math.log(e)/Math.log(1024)),n=(e/Math.pow(1024,t)).toFixed(1),a=Cje[t];return{size:n,suffix:a}},Qu=e=>{if(!e)return"0 bytes";const t=bO(e);return`${t.size}${t.suffix}`},Pje=e=>{const t=e/1048576;return!e&&0||+t.toFixed(2)},Dje={id:"admin-app",class:"admin-card"},Lje={for:"admin_contact"},yje=["value"],$je=["disabled"],Uje={for:"max_users"},kje=["disabled"],wje={class:"admin-help"},Mje={class:"info-box"},Wje={for:"max_single_file_size"},Fje=["disabled"],zje={for:"max_zip_file_size"},xje=["disabled"],Bje={for:"gpx_limit_import"},Gje=["disabled"],Vje={for:"stats_workouts_limit"},Hje=["disabled"],Kje={class:"admin-help"},qje={class:"info-box"},jje={class:"about-label",for:"about"},Yje={class:"textarea-description"},Xje=["innerHTML"],Qje={class:"privacy-policy-label",for:"privacy_policy"},Zje={class:"textarea-description"},Jje=["innerHTML"],eYe={key:5,class:"form-buttons"},tYe={class:"confirm",type:"submit"},nYe={key:6,class:"form-buttons"},aYe=X({__name:"AdminApplication",props:{edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=fe(t),a=gn(),s=Le(),{appConfig:i,errorMessages:o}=qe(),r=kt({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:"",stats_workouts_limit:0});function u(E){Object.keys(r).map(c=>{["max_single_file_size","max_zip_file_size"].includes(c)?r[c]=Pje(E[c]):["about","privacy_policy"].includes(c)?r[c]=E[c]!==null?E[c]:"":r[c]=E[c]})}function l(){u(i.value),s.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),a.push("/admin/application")}function d(){const E=Object.assign({},r);E.max_single_file_size*=1048576,E.max_zip_file_size*=1048576,s.dispatch(te.ACTIONS.UPDATE_APPLICATION_CONFIG,E)}return et(()=>{i.value&&u(i.value)}),(E,c)=>{const T=j("ErrorMessage"),_=j("Card");return h(),v("div",Dje,[M(_,null,{title:Y(()=>[x(S(E.$t("admin.APP_CONFIG.TITLE")),1)]),content:Y(()=>[p("form",{class:"admin-form",onSubmit:ve(d,["prevent"])},[p("label",Lje,[x(S(E.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),!m(n)&&!r.admin_contact?(h(),v("input",{key:0,class:"no-contact",value:E.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,yje)):We((h(),v("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":c[0]||(c[0]=f=>r.admin_contact=f),disabled:!m(n)},null,8,$je)),[[ot,r.admin_contact]])]),p("label",Uje,[x(S(E.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),We(p("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":c[1]||(c[1]=f=>r.max_users=f),disabled:!m(n)},null,8,kje),[[ot,r.max_users]])]),p("div",wje,[p("span",Mje,[c[10]||(c[10]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(E.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),p("label",Wje,[x(S(E.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),We(p("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":c[2]||(c[2]=f=>r.max_single_file_size=f),disabled:!m(n)},null,8,Fje),[[ot,r.max_single_file_size]])]),p("label",zje,[x(S(E.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),We(p("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":c[3]||(c[3]=f=>r.max_zip_file_size=f),disabled:!m(n)},null,8,xje),[[ot,r.max_zip_file_size]])]),p("label",Bje,[x(S(E.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),We(p("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":c[4]||(c[4]=f=>r.gpx_limit_import=f),disabled:!m(n)},null,8,Gje),[[ot,r.gpx_limit_import]])]),p("label",Vje,[x(S(E.$t("admin.APP_CONFIG.STATS_WORKOUTS_LIMIT_LABEL"))+": ",1),We(p("input",{id:"stats_workouts_limit",name:"stats_workouts_limit",type:"number",min:"0","onUpdate:modelValue":c[5]||(c[5]=f=>r.stats_workouts_limit=f),disabled:!m(n)},null,8,Hje),[[ot,r.stats_workouts_limit]])]),p("div",Kje,[p("span",qje,[c[11]||(c[11]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(E.$t("admin.APP_CONFIG.STATS_WORKOUTS_LIMIT_HELP")),1)])]),p("label",jje,S(E.$t("admin.ABOUT.TEXT"))+": ",1),p("span",Yje,S(E.$t("admin.ABOUT.DESCRIPTION")),1),m(n)?We((h(),v("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":c[6]||(c[6]=f=>r.about=f)},null,512)),[[ot,r.about]]):(h(),v("div",{key:1,innerHTML:r.about?m(Go)(r.about):E.$t("admin.NO_TEXT_ENTERED"),class:"textarea-content"},null,8,Xje)),p("label",Qje,S(Fe(E.$t("privacy_policy.TITLE")))+": ",1),p("span",Zje,S(E.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),m(n)?We((h(),v("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":c[7]||(c[7]=f=>r.privacy_policy=f)},null,512)),[[ot,r.privacy_policy]]):(h(),v("div",{key:3,innerHTML:r.privacy_policy?m(Go)(r.privacy_policy):E.$t("admin.NO_TEXT_ENTERED"),class:"textarea-content"},null,8,Jje)),m(o)?(h(),B(T,{key:4,message:m(o)},null,8,["message"])):L("",!0),m(n)?(h(),v("div",eYe,[p("button",tYe,S(E.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(l,["prevent"])},S(E.$t("buttons.CANCEL")),1)])):(h(),v("div",nYe,[p("button",{class:"confirm",onClick:c[8]||(c[8]=ve(f=>E.$router.push("/admin/application/edit"),["prevent"]))},S(E.$t("buttons.EDIT")),1),p("button",{class:"cancel",onClick:c[9]||(c[9]=ve(f=>E.$router.push("/admin"),["prevent"]))},S(E.$t("admin.BACK_TO_ADMIN")),1)]))],32)]),_:1})])}}}),ph=se(aYe,[["__scopeId","data-v-3a7598c9"]]),sYe=(e,t)=>{const n=e.translatedLabel.toLowerCase(),a=t.translatedLabel.toLowerCase();return n>a?1:ne.map(n=>({...n,translatedLabel:t(`equipment_types.${n.label}.LABEL`)})).sort(sYe),Gp=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:na?e.filter(i=>PO[i.equipment_type.label].includes(a.label)).filter(i=>n=="all"?!0:n=="withIncludedIds"&&s.includes(i.id)||i.is_active).map(i=>({...i,label:i.is_active?i.label:`${i.label} (${t("common.INACTIVE")})`})).sort(Gp):[],iYe={id:"admin-equipment-types",class:"admin-card"},oYe={class:"responsive-table"},rYe={class:"text-left"},uYe={class:"text-left equipment-type-action"},lYe={class:"text-center"},cYe={class:"cell-heading"},dYe={class:"equipment-type-label"},EYe={class:"cell-heading"},pYe={class:"text-center"},TYe={class:"cell-heading"},mYe={class:"equipment-type-action"},_Ye={class:"cell-heading"},fYe={class:"action-button"},hYe=["onClick"],SYe={key:0,class:"has-equipments"},AYe=X({__name:"AdminEquipmentTypes",setup(e){const t=Le(),{t:n}=yt(),{errorMessages:a}=qe(),s=z(()=>CO(t.getters[xe.GETTERS.EQUIPMENT_TYPES],n));function i(){t.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES)}function o(r,u){t.dispatch(xe.ACTIONS.UPDATE_EQUIPMENT_TYPE,{id:r,isActive:u})}return et(()=>i()),(r,u)=>{const l=j("EquipmentTypeImage"),d=j("ErrorMessage"),E=j("Card");return h(),v("div",iYe,[M(E,null,{title:Y(()=>[x(S(r.$t("admin.EQUIPMENT_TYPES.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:u[0]||(u[0]=ve(c=>r.$router.push("/admin"),["prevent"]))},S(r.$t("admin.BACK_TO_ADMIN")),1),p("div",oYe,[p("table",null,[p("thead",null,[p("tr",null,[u[2]||(u[2]=p("th",null,"#",-1)),p("th",null,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.IMAGE")),1),p("th",rYe,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.LABEL")),1),p("th",null,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.ACTIVE")),1),p("th",uYe,S(r.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(ue,null,be(s.value,c=>(h(),v("tr",{key:c.id},[p("td",lYe,[u[3]||(u[3]=p("span",{class:"cell-heading"},"id",-1)),x(" "+S(c.id),1)]),p("td",null,[p("span",cYe,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.IMAGE")),1),M(l,{title:c.translatedLabel,"equipment-type-label":c.label},null,8,["title","equipment-type-label"])]),p("td",dYe,[p("span",EYe,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.LABEL")),1),x(" "+S(c.translatedLabel),1)]),p("td",pYe,[p("span",TYe,S(r.$t("admin.EQUIPMENT_TYPES.TABLE.ACTIVE")),1),p("i",{class:Ae(`fa fa${c.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),p("td",mYe,[p("span",_Ye,S(r.$t("admin.ACTION")),1),p("div",fYe,[p("button",{class:Ae({danger:c.is_active}),onClick:T=>o(c.id,!c.is_active)},S(r.$t(`buttons.${c.is_active?"DIS":"EN"}ABLE`)),11,hYe),c.has_equipments?(h(),v("span",SYe,[u[4]||(u[4]=p("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)),x(" "+S(r.$t("admin.EQUIPMENT_TYPES.TABLE.HAS_EQUIPMENTS")),1)])):L("",!0)])])]))),128))])]),m(a)?(h(),B(d,{key:0,message:m(a)},null,8,["message"])):L("",!0),p("button",{onClick:u[1]||(u[1]=ve(c=>r.$router.push("/admin"),["prevent"]))},S(r.$t("admin.BACK_TO_ADMIN")),1)])]),_:1})])}}}),OYe=se(AYe,[["__scopeId","data-v-a3acbd9a"]]),IYe={class:"stat-card"},gYe={class:"stat-content box"},RYe={class:"stat-icon"},NYe={class:"stat-details"},vYe={class:"stat-huge"},bYe={class:"stat"},wa=X({__name:"StatCard",props:{icon:{},text:{},value:{}},setup(e){const t=e,{icon:n,text:a,value:s}=fe(t);return(i,o)=>(h(),v("div",IYe,[p("div",gYe,[p("div",RYe,[p("i",{class:Ae(["fa",`fa-${m(n)}`])},null,2)]),p("div",NYe,[p("div",vYe,S(m(s)),1),p("div",bYe,S(m(a)),1)])])]))}}),CYe={id:"user-stats"},PYe=X({__name:"AppStatsCards",props:{appStatistics:{}},setup(e){const t=e,{appStatistics:n}=fe(t),a=z(()=>bO(n.value.uploads_dir_size));return(s,i)=>(h(),v("div",CYe,[M(wa,{icon:"users",value:m(n).users,text:s.$t("user.ACTIVE_USER",m(n).users)},null,8,["value","text"]),M(wa,{icon:"tags",value:m(n).sports,text:s.$t("workouts.SPORT",m(n).sports)},null,8,["value","text"]),M(wa,{icon:"calendar",value:m(n).workouts,text:s.$t("workouts.WORKOUT",m(n).workouts)},null,8,["value","text"]),M(wa,{icon:"folder-open",value:a.value.size,text:a.value.suffix},null,8,["value","text"])]))}}),DYe={id:"admin-menu",class:"center-card"},LYe={class:"admin-menu description-list"},yYe={class:"application-config-details"},$Ye={class:"registration-status"},UYe={key:0,class:"email-sending-status"},kYe={class:"application-config-details"},wYe=X({__name:"AdminMenu",setup(e){const t=Le(),{appConfig:n}=qe(),{authUserHasAdminRights:a}=Ke(),s=z(()=>t.getters[te.GETTERS.APP_STATS]),i=z(()=>t.getters[De.GETTERS.UNRESOLVED_REPORTS_STATUS]);return et(()=>t.dispatch(De.ACTIONS.GET_UNRESOLVED_REPORTS_STATUS)),mt(()=>{const o=document.getElementById("adminLink");o&&o.focus()}),(o,r)=>{const u=j("router-link");return h(),v("div",DYe,[M(NO,null,{title:Y(()=>[x(S(o.$t("admin.ADMINISTRATION")),1)]),content:Y(()=>[M(PYe,{appStatistics:s.value},null,8,["appStatistics"]),p("div",LYe,[p("dl",null,[m(a)?(h(),v(ue,{key:0},[p("dt",null,[M(u,{id:"adminLink",to:"/admin/application"},{default:Y(()=>[x(S(o.$t("admin.APPLICATION")),1)]),_:1})]),p("dd",yYe,[x(S(o.$t("admin.UPDATE_APPLICATION_DESCRIPTION"))+" ",1),p("span",$Ye,S(o.$t(`admin.REGISTRATION_${m(n).is_registration_enabled?"ENABLED":"DISABLED"}`)),1),m(n).is_email_sending_enabled?L("",!0):(h(),v("span",UYe,[r[0]||(r[0]=p("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),x(" "+S(o.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),p("dt",null,[M(u,{to:"/admin/equipment-types"},{default:Y(()=>[x(S(Fe(o.$t("equipments.EQUIPMENT_TYPE",0))),1)]),_:1})]),p("dd",null,S(o.$t("admin.ENABLE_DISABLE_EQUIPMENT_TYPES")),1)],64)):L("",!0),p("dt",null,[M(u,{id:"adminLink",to:"/admin/reports"},{default:Y(()=>[x(S(o.$t("admin.APP_MODERATION.TITLE")),1)]),_:1})]),p("dd",kYe,[x(S(o.$t("admin.APP_MODERATION.DESCRIPTION"))+" ",1),i.value?(h(),B(u,{key:0,to:"/admin/reports?resolved=false"},{default:Y(()=>[x(S(o.$t("admin.APP_MODERATION.UNRESOLVED_REPORTS_EXIST")),1)]),_:1})):L("",!0)]),m(a)?(h(),v(ue,{key:1},[p("dt",null,[M(u,{to:"/admin/sports"},{default:Y(()=>[x(S(Fe(o.$t("workouts.SPORT",0))),1)]),_:1})]),p("dd",null,S(o.$t("admin.ENABLE_DISABLE_SPORTS")),1),p("dt",null,[M(u,{to:"/admin/users"},{default:Y(()=>[x(S(Fe(o.$t("user.USER",0))),1)]),_:1})]),p("dd",null,S(o.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)],64)):L("",!0)])])]),_:1})])}}}),MYe=se(wYe,[["__scopeId","data-v-18089d26"]]),WYe=["id"],FYe={class:"appeal-text"},zYe=["title"],xYe={class:"appeal-actions-buttons"},BYe={class:"small approve",value:"approve"},GYe={class:"small reject",value:"reject"},VYe={key:1,class:"automatically-approved"},HYe={key:2,class:"description-list"},KYe=["title"],qYe=X({__name:"AdminReportActionAppeal",props:{appeal:{},authUser:{}},emits:["updateAppeal","closeAppeal"],setup(e,{emit:t}){const n=e,{appeal:a,authUser:s}=fe(n),i=t,{errorMessages:o,locale:r}=qe(),u=Ie("");function l(c){c.preventDefault(),i("updateAppeal",{approved:c.submitter.value==="approve",appealId:a.value.id,reason:u.value})}function d(c){u.value=c.value}function E(){i("closeAppeal")}return(c,T)=>{const _=j("ErrorMessage"),f=j("i18n-t");return h(),v("div",{class:"appeal box",id:`appeal-${m(a).id}`},[p("div",FYe,S(m(a).text),1),p("span",{class:"appeal-date",title:m($t)(m(a).created_at,m(s).timezone,m(s).date_format)},S(m(Ws)(new Date(m(a).created_at),new Date,{addSuffix:!0,locale:m(r)})),9,zYe),m(a).updated_at===null?(h(),v(ue,{key:0},[m(a).approved===null?(h(),v("form",{key:0,onSubmit:ve(l,["prevent"]),class:"appeal-actions"},[M(vO,{name:"appeal-reason",required:!0,placeholder:c.$t("admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.UPDATE_APPEAL"),onUpdateValue:d},null,8,["placeholder"]),m(o)?(h(),B(_,{key:0,message:m(o)},null,8,["message"])):L("",!0),p("div",xYe,[p("button",BYe,S(c.$t("buttons.APPROVE")),1),p("button",GYe,S(c.$t("buttons.REJECT")),1),p("button",{class:"small reject",type:"button",onClick:E},S(c.$t("buttons.CANCEL")),1)])],32)):L("",!0)],64)):m(a).approved===null?(h(),v("div",VYe,S(c.$t("admin.APP_MODERATION.APPEAL.AUTOMATICALLY_APPROVED_BY_UNSUSPENSION")),1)):(h(),v("div",HYe,[M(f,{keypath:`admin.APP_MODERATION.APPEAL.${m(a).approved?"APPROVED":"REJECTED"}`,tag:"p"},{default:Y(()=>[p("span",{class:"report-action-date",title:m($t)(m(a).updated_at,m(s).timezone,m(s).date_format)},S(m(Ws)(new Date(m(a).updated_at),new Date,{addSuffix:!0,locale:m(r)})),9,KYe)]),_:1},8,["keypath"]),p("dl",null,[p("dt",null,S(c.$t("admin.APP_MODERATION.APPEAL.REASON_IS")),1),p("dd",null,S(m(a).reason),1)])]))],8,WYe)}}}),jYe=se(qYe,[["__scopeId","data-v-88ea8757"]]),YYe={id:"error"},XYe={class:"error-content"},QYe=X({__name:"Error",props:{title:{},message:{},buttonText:{},path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:a,message:s,path:i}=fe(t);return(o,r)=>(h(),v("div",YYe,[p("div",XYe,[p("h1",null,S(m(a)),1),p("p",null,S(m(s)),1),m(n)?(h(),v("button",{key:0,onClick:r[0]||(r[0]=u=>o.$router.push(m(i))),class:"upper"},S(m(n)),1)):L("",!0)])]))}}),ZYe=se(QYe,[["__scopeId","data-v-48ec856d"]]),Ui=X({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=fe(t),a=Ie(),s=Ie(!1);function i(){a.value=setTimeout(()=>{s.value=!0},500)}return mt(()=>i()),ct(()=>{a.value&&clearTimeout(a.value)}),(o,r)=>s.value?(h(),B(ZYe,{key:0,title:"404",message:o.$t(`error.NOT_FOUND.${m(n)}`),"button-text":o.$t("common.HOME")},null,8,["message","button-text"])):L("",!0)}}),JYe={key:0,class:"user-actions"},eXe={key:0,class:"blocked-user"},tXe={class:"blocked"},nXe={key:1,class:"actions-buttons"},aXe={key:2},sXe={key:3,class:"follows-you"},iXe={key:1,class:"user-actions"},oXe={class:"follows-you"},rXe=X({__name:"UserRelationshipActions",props:{authUser:{},user:{},from:{},displayFollowsYou:{type:Boolean,default:!1}},emits:["updatedUser"],setup(e,{emit:t}){const n=e,{authUser:a,from:s,user:i,displayFollowsYou:o}=fe(n),r=t,u=Le();function l(E,c){r("updatedUser",E),u.dispatch(ce.ACTIONS.UPDATE_RELATIONSHIP,{username:E,action:`${c?"un":""}follow`,from:s.value})}function d(E,c){r("updatedUser",E),u.dispatch(ce.ACTIONS.UPDATE_RELATIONSHIP,{username:E,action:`${c?"":"un"}block`,from:s.value})}return(E,c)=>(h(),v(ue,null,[m(i).username!==m(a).username?(h(),v("div",JYe,[m(i).blocked?(h(),v("div",eXe,[p("div",tXe,S(E.$t("user.RELATIONSHIPS.BLOCKED")),1),p("button",{onClick:c[0]||(c[0]=T=>d(m(i).username,!1))},S(E.$t("buttons.UNBLOCK")),1)])):m(i).is_followed_by!=="pending"?(h(),v("div",nXe,[p("button",{onClick:c[1]||(c[1]=T=>l(m(i).username,m(i).is_followed_by==="true")),class:Ae({danger:m(i).is_followed_by==="true"})},S(E.$t(`buttons.${m(i).is_followed_by==="true"?"UN":""}FOLLOW`)),3),p("button",{onClick:c[2]||(c[2]=T=>d(m(i).username,!0))},S(E.$t("buttons.BLOCK")),1)])):(h(),v("div",aXe,[p("button",{onClick:c[3]||(c[3]=T=>l(m(i).username,!0))},S(E.$t("buttons.CANCEL_FOLLOW_REQUEST")),1)])),m(o)&&m(i).follows==="true"&&m(s)!=="notifications"?(h(),v("div",sXe,S(E.$t("user.RELATIONSHIPS.FOLLOWS_YOU")),1)):L("",!0)])):L("",!0),m(i).username===m(a).username&&m(s)!=="userInfos"?(h(),v("div",iXe,[p("div",oXe,S(E.$t("user.YOU")),1)])):L("",!0)],64))}}),Zu=se(rXe,[["__scopeId","data-v-f72b5b8c"]]),uXe={class:"user-stats"},lXe={class:"user-stat"},cXe={class:"stat-number"},dXe={class:"stat-label"},EXe={class:"user-stat"},pXe={key:1,class:"stat-number"},TXe={class:"stat-label"},mXe={class:"user-stat"},_Xe={key:1,class:"stat-number"},fXe={class:"stat-label"},hXe=X({__name:"UserStats",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),{authUser:a}=Ke(),s=z(()=>a.value.username?n.value.username===a.value.username?!a.value.suspended_at:!0:!1);function i(o,r,u){return o.username===(r==null?void 0:r.username)&&u.includes("/profile")?"profile":`users/${o.username}`}return(o,r)=>{const u=j("router-link");return h(),v("div",uXe,[p("div",lXe,[p("span",cXe,S(m(n).nb_workouts),1),p("span",dXe,S(o.$t("workouts.WORKOUT",m(n).nb_workouts)),1)]),p("div",EXe,[s.value?(h(),B(u,{key:0,to:`/${i(m(n),m(a),o.$route.path)}/following`,class:"stat-number"},{default:Y(()=>[x(S(m(n).following),1)]),_:1},8,["to"])):(h(),v("span",pXe,S(m(n).following),1)),p("span",TXe,S(o.$t("user.RELATIONSHIPS.FOLLOWING",m(n).following)),1)]),p("div",mXe,[s.value?(h(),B(u,{key:0,to:`/${i(m(n),m(a),o.$route.path)}/followers`,class:"stat-number"},{default:Y(()=>[x(S(m(n).followers),1)]),_:1},8,["to"])):(h(),v("span",_Xe,S(m(n).followers),1)),p("span",fXe,S(o.$t("user.RELATIONSHIPS.FOLLOWER",m(n).followers)),1)])])}}}),Vp=se(hXe,[["__scopeId","data-v-9af0bb02"]]),SXe={class:"box"},AXe={class:"user-card"},OXe={class:"user-header"},IXe={class:"stats-role"},gXe={key:0,class:"role"},RXe={class:"user-role"},NXe=X({__name:"UserCard",props:{authUser:{},user:{},updatedUser:{},from:{},hideRelationship:{type:Boolean}},emits:["updatedUserRelationship"],setup(e,{emit:t}){const n=e,{authUser:a,from:s,hideRelationship:i,updatedUser:o,user:r}=fe(n),u=ut(),{authUserHasModeratorRights:l}=Ke(),d=t,{errorMessages:E}=qe(),c=z(()=>r.value.suspended_at?$t(r.value.suspended_at,a.value.timezone,a.value.date_format):null),T=z(()=>{var O;return l.value&&u.params.reportId!=((O=r.value.suspension_report_id)==null?void 0:O.toString())}),_=z(()=>r.value.role!=="user"?`user.ROLES.${r.value.role}`:"");function f(O){d("updatedUserRelationship",O)}return(O,A)=>{const R=j("router-link"),g=j("AlertMessage"),I=j("i18n-t"),N=j("ErrorMessage");return h(),v("div",SXe,[p("div",AXe,[p("div",OXe,[M(Qt,{user:m(r)},null,8,["user"]),M(R,{class:"user-name",to:O.$route.path.startsWith("/admin")?`/admin/users/${m(r).username}`:`/users/${m(r).username}?from=users`,title:m(r).username},{default:Y(()=>[x(S(m(r).username),1)]),_:1},8,["to","title"])]),p("div",IXe,[M(Vp,{user:m(r)},null,8,["user"]),_.value?(h(),v("div",gXe,[p("div",RXe,S(O.$t(_.value)),1)])):L("",!0)])]),m(i)!==!0?(h(),B(Zu,{key:0,authUser:m(a),user:m(r),from:m(s)?m(s):"userCard",displayFollowsYou:!0,onUpdatedUser:f},null,8,["authUser","user","from"])):L("",!0),"is_active"in m(r)&&!m(r).is_active?(h(),B(g,{key:1,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})):L("",!0),"suspended_at"in m(r)&&m(r).suspended_at!==null?(h(),B(g,{key:2,message:"user.ACCOUNT_SUSPENDED_AT",param:c.value},mi({_:2},[T.value?{name:"additionalMessage",fn:Y(()=>[M(I,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[M(R,{to:`/admin/reports/${m(r).suspension_report_id}`},{default:Y(()=>[x(" #"+S(m(r).suspension_report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1032,["param"])):L("",!0),m(E)&&(m(o)&&m(o)===m(r).username||!m(o))?(h(),B(N,{key:3,message:m(E)},null,8,["message"])):L("",!0)])}}}),Hp=se(NXe,[["__scopeId","data-v-45957e2b"]]),LO="/img/workouts/mountains.svg",vXe=["alt"],yO=X({__name:"StaticMap",props:{workout:{},displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=fe(t),a=`${nr()}workouts/map/${t.workout.map}`;return(s,i)=>{const o=j("router-link");return h(),v("div",{class:Ae(["static-map",{"display-hover":m(n)}])},[m(n)?(h(),v("img",{key:0,src:a,alt:s.$t("workouts.WORKOUT_MAP")},null,8,vXe)):(h(),B(o,{key:1,class:"bg-map-image",to:{name:"Workout",params:{workoutId:s.workout.id}},style:za({backgroundImage:`url(${a})`}),"aria-label":s.$t("workouts.WORKOUT_MAP"),onClick:i[0]||(i[0]=r=>s.$emit("workoutLinkClicked"))},null,8,["to","style","aria-label"])),i[1]||(i[1]=p("div",{class:"map-attribution"},[p("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," © OpenStreetMap ")],-1))],2)}}}),bXe={class:"timeline-workout workout-card"},CXe={class:"box"},PXe={class:"workout-card-title"},DXe={class:"workout-user-date"},LXe={class:"workout-user"},yXe={class:"workout-date-visibility"},$Xe=["datetime","title"],UXe={class:"workout-map"},kXe={class:"no-map"},wXe={class:"img"},MXe={class:"data"},WXe={key:0},FXe={class:"data"},zXe={key:0,class:"data elevation"},xXe=["alt"],BXe={class:"data-values"},GXe={key:1,class:"data altitude"},VXe={class:"data-values"},HXe=X({__name:"WorkoutCard",props:{user:{},useImperialUnits:{type:Boolean},dateFormat:{},timezone:{},workout:{default:()=>({})},sport:{default:()=>({})}},emits:["workoutLinkClicked"],setup(e,{emit:t}){const n=e,{dateFormat:a,sport:s,timezone:i,user:o,useImperialUnits:r,workout:u}=fe(n),{locale:l}=qe(),d=t,E=z(()=>$t(u.value.workout_date,i.value,a.value));function c(f){return f.with_gpx&&f.min_alt!==null&&f.max_alt!==null}function T(f){return f.ascent!==null&&f.descent!==null}function _(f){f.id&&(lt.push({name:"Workout",params:{workoutId:f.id}}),d("workoutLinkClicked"))}return(f,O)=>{var N;const A=j("router-link"),R=j("VisibilityIcon"),g=j("SportImage"),I=j("Distance");return h(),v("div",bXe,[p("div",CXe,[p("div",PXe,[p("div",DXe,[p("div",LXe,[M(Qt,{user:m(o)},null,8,["user"]),M(go,{user:m(o)},null,8,["user"])]),m(u).id?(h(),B(A,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:m(u).id}},onClick:O[0]||(O[0]=b=>f.$emit("workoutLinkClicked"))},{default:Y(()=>[x(S(m(u).title),1)]),_:1},8,["to"])):L("",!0),p("div",yXe,[m(u).workout_date&&m(o)?(h(),v("time",{key:0,class:"workout-date",datetime:E.value,title:E.value},S(m(Ws)(new Date(m(u).workout_date),new Date,{addSuffix:!0,locale:m(l)})),9,$Xe)):L("",!0),m(u).workout_visibility?(h(),B(R,{key:1,visibility:m(u).workout_visibility},null,8,["visibility"])):L("",!0)])])]),p("div",UXe,[m(u).with_gpx?(h(),B(yO,{key:0,workout:m(u),onWorkoutLinkClicked:O[1]||(O[1]=b=>f.$emit("workoutLinkClicked"))},null,8,["workout"])):m(u).id?(h(),B(A,{key:1,to:{name:"Workout",params:{workoutId:m(u).id}},onClick:O[2]||(O[2]=b=>f.$emit("workoutLinkClicked"))},{default:Y(()=>[p("div",kXe,S(f.$t("workouts.NO_MAP")),1)]),_:1},8,["to"])):L("",!0)]),p("div",{class:Ae(["workout-data",{"without-elevation":!c(m(u))}]),onClick:O[3]||(O[3]=b=>_(m(u)))},[p("div",wXe,[(N=m(s))!=null&&N.label?(h(),B(g,{key:0,"sport-label":m(s).label,color:m(s).color},null,8,["sport-label","color"])):L("",!0)]),p("div",MXe,[O[4]||(O[4]=p("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)),m(u)?(h(),v("span",WXe,S(m(u).moving),1)):L("",!0)]),p("div",FXe,[O[5]||(O[5]=p("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)),m(u).id?(h(),B(I,{key:0,distance:m(u).distance,digits:3,unitFrom:"km",useImperialUnits:m(r)},null,8,["distance","useImperialUnits"])):L("",!0)]),c(m(u))?(h(),v("div",zXe,[p("img",{class:"mountains",src:LO,alt:f.$t("workouts.ELEVATION")},null,8,xXe),p("div",BXe,[m(u).id?(h(),B(I,{key:0,distance:m(u).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:m(r)},null,8,["distance","useImperialUnits"])):L("",!0),O[6]||(O[6]=x("/ ")),m(u).id?(h(),B(I,{key:1,distance:m(u).max_alt,unitFrom:"m",useImperialUnits:m(r)},null,8,["distance","useImperialUnits"])):L("",!0)])])):L("",!0),T(m(u))?(h(),v("div",GXe,[O[9]||(O[9]=p("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)),p("div",VXe,[O[7]||(O[7]=x(" +")),m(u).id?(h(),B(I,{key:0,distance:m(u).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:m(r)},null,8,["distance","useImperialUnits"])):L("",!0),O[8]||(O[8]=x("/- ")),m(u).id?(h(),B(I,{key:1,distance:m(u).descent,unitFrom:"m",useImperialUnits:m(r)},null,8,["distance","useImperialUnits"])):L("",!0)])])):L("",!0)],2)])])}}}),Vo=se(HXe,[["__scopeId","data-v-9f1da2f4"]]),KXe={key:0,class:"report-loading"},qXe={key:0,id:"admin-report",class:"admin-card"},jXe={key:0,class:"report-status"},YXe={class:"report-data"},XXe={class:"report-detail"},QXe={key:1,class:"deleted-object"},ZXe={key:2,class:"deleted-object"},JXe={key:1,class:"deleted-object"},eQe={key:2,class:"deleted-object"},tQe={key:1,class:"deleted-object"},nQe={key:1,class:"deleted-object"},aQe={class:"report-info"},sQe={key:0,class:"report-comment-user"},iQe={key:1,class:"deleted-object"},oQe={key:0},rQe={key:1},uQe={key:2},lQe={key:3},cQe={class:"resolver-user"},dQe={key:4},EQe={key:5},pQe={key:0,class:"report-comment"},TQe={class:"report-comment-info"},mQe={class:"report-comment-user"},_Qe=["title"],fQe={class:"report-comment-comment"},hQe={key:1,class:"report-action"},SQe=["title"],AQe=["onClick"],OQe={key:0,class:"report-action-note"},IQe={key:0,class:"no-notes"},gQe={key:0,class:"comment-textarea"},RQe={for:"report-comment"},NQe={class:"comment-buttons"},vQe=["disabled"],bQe=["disabled"],CQe={class:"action-loading"},PQe={key:0,class:"fa fa-spinner fa-pulse","aria-hidden":"true"},DQe={key:1,class:"actions-buttons"},LQe={key:1,class:"container"},yQe={key:2,class:"container"},$Qe=X({__name:"AdminReport",setup(e){const t=ut(),n=gn(),a=Le(),{t:s}=yt(),{errorMessages:i,locale:o}=qe(),{authUser:r,authUserSuccess:u,dateFormat:l}=Ke(),{sports:d}=nn(),E=Ie(""),c=Ie(null),T=Ie(""),_=Ie([]),f=z(()=>a.getters[De.GETTERS.REPORT]),O=z(()=>f.value.reported_comment||f.value.reported_workout),A=z(()=>a.getters[De.GETTERS.REPORT_LOADING]),R=z(()=>a.getters[De.GETTERS.REPORT_UPDATE_LOADING]),g=Ie(!1),I=z(()=>we()),N=z(()=>c.value!==null&&["ADD_COMMENT","MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(c.value)),b=z(()=>{var Q,Se;return(Q=f.value.reported_user)!=null&&Q.suspended_at?$t((Se=f.value.reported_user)==null?void 0:Se.suspended_at,r.value.timezone,r.value.date_format):null}),C=z(()=>{var Q,Se;return t.params.reportId!=((Se=(Q=f.value.reported_user)==null?void 0:Q.suspension_report_id)==null?void 0:Se.toString())});function y(){a.dispatch(De.ACTIONS.GET_REPORT,{reportId:+t.params.reportId,loader:"REPORT"})}function D(Q=null){Te(),c.value=Q,g.value=!0}function U(Q){E.value=Q.value}function P(){g.value=!1,E.value="",c.value=null,a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)}function F(){const Q={reportId:f.value.id,comment:E.value};c.value&&["MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(c.value)&&(Q.resolved=c.value==="MARK_AS_RESOLVED"),a.dispatch(De.ACTIONS.UPDATE_REPORT,Q)}function Z(){switch(c.value){case"SEND_WARNING_EMAIL":He();break;case"SUSPEND_ACCOUNT":case"SUSPEND_CONTENT":Pe("suspension");break;case"UNSUSPEND_ACCOUNT":ee();break;case"UNSUSPEND_CONTENT":Ee();break;default:return F()}}function Oe(){switch(c.value){case"MARK_AS_RESOLVED":return`admin.APP_MODERATION.ACTIONS.${c.value}`;default:return"buttons.SUBMIT"}}function ee(){if(f.value.reported_user&&c.value){const Se={action_type:`user_${c.value==="SUSPEND_ACCOUNT"?"":"un"}suspension`,report_id:f.value.id,username:f.value.reported_user.username};E.value&&(Se.reason=E.value),a.dispatch(De.ACTIONS.SUBMIT_ADMIN_ACTION,Se)}}function Ee(){var Q;if(O.value&&c.value){const me={action_type:`${f.value.reported_comment?"comment":"workout"}_${(Q=c.value)!=null&&Q.startsWith("SUSPEND")?"":"un"}suspension`,report_id:f.value.id};f.value.reported_comment?me.comment_id=f.value.reported_comment.id:f.value.reported_workout&&(me.workout_id=f.value.reported_workout.id),E.value&&(me.reason=E.value),a.dispatch(De.ACTIONS.SUBMIT_ADMIN_ACTION,me)}}function _e(){Pe(""),c.value==="SUSPEND_CONTENT"?Ee():ee()}function Pe(Q){T.value=Q,Q!==""&&a.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function He(){var Se;const Q={action_type:"user_warning",report_id:f.value.id,username:(Se=f.value.reported_user)==null?void 0:Se.username};E.value&&(Q.reason=E.value),a.dispatch(De.ACTIONS.SUBMIT_ADMIN_ACTION,Q)}function Je(){n.go(-1),a.commit(De.MUTATIONS.EMPTY_REPORT)}function Ve(Q){return $t(Q,r.value.timezone,r.value.date_format)}function _t(Q,Se){return To(new Date(Q.created_at),new Date(Se.created_at))}function we(){return!f.value.report_actions&&!f.value.comments?[]:[...f.value.report_actions,...f.value.comments].sort(_t)}function ae(Q){_.value.includes(Q)?(_.value.splice(_.value.indexOf(Q),1),a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)):_.value.push(Q)}function ke(Q){a.dispatch(De.ACTIONS.PROCESS_APPEAL,{...Q,reportId:f.value.id})}function pt(){var ie,k;const Q=(ie=c.value)!=null&&ie.includes("SUSPEND")?(k=c.value)==null?void 0:k.split("_")[0]:c.value,Se=s(`admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.${Q}`);let me="";return Q&&(me=["ADD_COMMENT","MARK_AS_RESOLVED","MARK_AS_UNRESOLVED"].includes(Q)?"":` ${s("admin.APP_MODERATION.TEXTAREA_PLACEHOLDER.INFORMATION_VISIBLE_TO_USER")}`),`${Se}${me}`}function Te(){a.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),_.value=[]}return Ce(()=>f.value.comments,()=>{g.value=!1,E.value=""}),Ce(()=>t.params.reportId,()=>{y()}),Ce(()=>u.value,Q=>{Q&&Pe("")}),et(async()=>y()),ct(()=>a.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1)),(Q,Se)=>{var oe;const me=j("Modal"),ie=j("router-link"),k=j("i18n-t"),w=j("AlertMessage"),G=j("Card"),re=j("CustomTextArea"),pe=j("ErrorMessage");return A.value?(h(),v("div",KXe,[M(wl)])):(h(),v(ue,{key:1},[(oe=f.value)!=null&&oe.id?(h(),v("div",qXe,[T.value&&f.value.reported_user?(h(),B(me,{key:0,title:Q.$t("common.CONFIRMATION"),message:`admin.CONFIRM_${c.value}`,strongMessage:f.value.reported_user.username,onConfirmAction:_e,onCancelAction:Se[0]||(Se[0]=$=>Pe("")),onKeydown:Se[1]||(Se[1]=Ye($=>Pe(""),["esc"]))},null,8,["title","message","strongMessage"])):L("",!0),M(G,null,{title:Y(()=>[x(S(Q.$t("admin.APP_MODERATION.REPORT"))+" #"+S(f.value.id)+" ",1),f.value.resolved?(h(),v("span",jXe," ("+S(Q.$t("admin.APP_MODERATION.RESOLVED.TRUE"))+") ",1)):L("",!0)]),content:Y(()=>[p("div",YXe,[p("div",XXe,[M(G,{class:"report-detail-card"},{title:Y(()=>[x(S(Q.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1)]),content:Y(()=>{var $,W,V;return[f.value.object_type==="comment"?(h(),v(ue,{key:0},[f.value.reported_comment?(h(),B(Fp,{key:0,"auth-user":m(r),comment:f.value.reported_comment,"comments-loading":null,"for-admin":!0},null,8,["auth-user","comment"])):(h(),v("span",QXe,S(Q.$t("admin.DELETED_COMMENT")),1)),f.value.reported_user?L("",!0):(h(),v("span",ZXe," ("+S(Q.$t("admin.DELETED_USER").toLocaleLowerCase())+") ",1))],64)):L("",!0),f.value.object_type==="workout"?(h(),v(ue,{key:1},[f.value.reported_workout?(h(),B(Vo,{workout:f.value.reported_workout,sport:m(d).filter(q=>{var Re;return q.id===((Re=f.value.reported_workout)==null?void 0:Re.sport_id)})[0],user:f.value.reported_workout.user,useImperialUnits:m(r).imperial_units,dateFormat:m(l),timezone:m(r).timezone,key:f.value.reported_workout.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"])):(h(),v("span",JXe,S(Q.$t("admin.DELETED_WORKOUT")),1)),f.value.reported_user?(W=($=f.value.reported_workout)==null?void 0:$.suspension)!=null&&W.report_id?(h(),B(w,{key:3,message:"workouts.SUSPENDED_BY_ADMIN"},mi({_:2},[f.value.reported_workout.suspension.report_id!==parseInt(m(t).params.reportId)?{name:"additionalMessage",fn:Y(()=>[M(k,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[M(ie,{to:`/admin/reports/${f.value.reported_workout.suspension.report_id}`},{default:Y(()=>[x(" #"+S(f.value.reported_workout.suspension.report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1024)):L("",!0):(h(),v("span",eQe," ("+S(Q.$t("admin.DELETED_USER").toLocaleLowerCase())+") ",1))],64)):L("",!0),f.value.object_type==="user"?(h(),v(ue,{key:2},[f.value.reported_user?(h(),B(Hp,{key:0,authUser:m(r),user:f.value.reported_user,hideRelationship:!0},null,8,["authUser","user"])):(h(),v("span",tQe,S(Q.$t("admin.DELETED_USER")),1))],64)):((V=f.value.reported_user)==null?void 0:V.suspended_at)!==null?(h(),B(w,{key:3,message:"user.ACCOUNT_SUSPENDED_AT",param:b.value},mi({_:2},[C.value?{name:"additionalMessage",fn:Y(()=>[M(k,{keypath:"common.SEE_REPORT"},{default:Y(()=>{var q;return[M(ie,{to:`/admin/reports/${(q=f.value.reported_user)==null?void 0:q.suspension_report_id}`},{default:Y(()=>{var Re;return[x(S((Re=f.value.reported_user)==null?void 0:Re.suspension_report_id),1)]}),_:1},8,["to"])]}),_:1})]),key:"0"}:void 0]),1032,["param"])):L("",!0)]}),_:1}),M(G,{class:"report-detail-card"},{title:Y(()=>[x(S(Q.$t("admin.APP_MODERATION.REPORT_NOTE"))+" ",1),f.value.reported_by?(h(),v(ue,{key:0},[M(ie,{class:"link-with-image",to:`/admin/users/${f.value.reported_by.username}`},{default:Y(()=>[x(S(f.value.reported_by.username),1)]),_:1},8,["to"]),x(" ("+S(Q.$t("admin.APP_MODERATION.REPORTER"))+") ",1)],64)):(h(),v("span",nQe,S(Q.$t("admin.DELETED_USER").toLocaleLowerCase()),1))]),content:Y(()=>[x(S(f.value.note),1)]),_:1})]),p("dl",aQe,[p("dt",null,S(Q.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))+":",1),p("dd",null,S(Ve(f.value.created_at)),1),p("dt",null,S(Q.$t("admin.APP_MODERATION.REPORTED_BY"))+":",1),p("dd",null,[f.value.reported_by?(h(),v("div",sQe,[M(Qt,{user:f.value.reported_by},null,8,["user"]),M(go,{user:f.value.reported_by},null,8,["user"])])):(h(),v("span",iQe,S(Q.$t("admin.DELETED_USER")),1))]),p("dt",null,S(Q.$t("admin.APP_MODERATION.STATUS"))+":",1),p("dd",null,S(Q.$t(`admin.APP_MODERATION.RESOLVED.${f.value.resolved?"TRUE":"FALSE"}`)),1),f.value.resolved_at?(h(),v("dt",oQe,S(Q.$t("admin.APP_MODERATION.RESOLVED_AT"))+": ",1)):L("",!0),f.value.resolved_at?(h(),v("dd",rQe,[p("time",null,S(Ve(f.value.resolved_at)),1)])):L("",!0),f.value.resolved_by?(h(),v("dt",uQe,S(Q.$t("admin.APP_MODERATION.RESOLVED_BY"))+": ",1)):L("",!0),f.value.resolved_by?(h(),v("dd",lQe,[p("div",cQe,[M(Qt,{user:f.value.resolved_by},null,8,["user"]),M(go,{user:f.value.resolved_by},null,8,["user"])])])):L("",!0),f.value.updated_at?(h(),v("dt",dQe,S(Q.$t("common.LAST_UPDATED_ON"))+": ",1)):L("",!0),f.value.updated_at?(h(),v("dd",EQe,[p("time",null,S(Ve(f.value.updated_at)),1)])):L("",!0)])]),M(G,{class:"report-action-and-comments"},{title:Y(()=>[x(S(Q.$t("admin.APP_MODERATION.NOTES_AND_ACTIONS")),1)]),content:Y(()=>[(h(!0),v(ue,null,be(I.value,$=>(h(),v("div",{key:$.id},["comment"in $&&!("action_type"in $)?(h(),v("div",pQe,[p("div",TQe,[p("div",mQe,[M(Qt,{user:$.user},null,8,["user"]),M(go,{user:$.user},null,8,["user"])]),p("div",{class:"report-comment-date",title:Ve($.created_at)},S(m(Ws)(new Date($.created_at),new Date,{addSuffix:!0,locale:m(o)})),9,_Qe)]),p("div",fQe,S($.comment),1)])):L("",!0),"action_type"in $?(h(),v("div",hQe,[p("div",null,[Se[7]||(Se[7]=x(" • ")),M(k,{keypath:`admin.APP_MODERATION.REPORT_ACTIONS.${$.action_type}`},{default:Y(()=>[$.action_type.startsWith("user_")&&$.user?(h(),B(ie,{key:0,class:"user-name",to:`/admin/users/${$.user.username}`,title:$.user.username},{default:Y(()=>[x(S($.user.username),1)]),_:2},1032,["to","title"])):L("",!0),M(ie,{class:"user-name",to:`/admin/users/${$.moderator.username}`,title:$.moderator.username},{default:Y(()=>[x(S($.moderator.username),1)]),_:2},1032,["to","title"]),p("span",{class:"report-action-date",title:Ve($.created_at)},S(m(Ws)(new Date($.created_at),new Date,{addSuffix:!0,locale:m(o)})),9,SQe)]),_:2},1032,["keypath"]),$.appeal?(h(),v("button",{key:0,class:"appeal-button small transparent",onClick:W=>ae($.appeal.id)},S(Q.$t(`admin.APP_MODERATION.APPEAL.${_.value.includes($.appeal.id)?"HIDE":"SEE"}`)),9,AQe)):L("",!0)]),$.reason?(h(),v("div",OQe,[p("span",null,S(Q.$t("admin.APP_MODERATION.REASON"))+":",1),x(" "+S($.reason),1)])):L("",!0),$.appeal&&_.value.includes($.appeal.id)?(h(),B(jYe,{key:1,appeal:$.appeal,"auth-user":m(r),onUpdateAppeal:ke,onCloseAppeal:W=>ae($.appeal.id)},null,8,["appeal","auth-user","onCloseAppeal"])):L("",!0)])):L("",!0)]))),128)),I.value.length==0?(h(),v("div",IQe,S(Q.$t("common.NO_NOTES")),1)):L("",!0)]),_:1}),M(G,{class:"report-detail-card"},{title:Y(()=>[x(S(Q.$t("admin.ACTION",0)),1)]),content:Y(()=>[g.value?(h(),v("div",gQe,[p("form",{onSubmit:ve(Z,["prevent"])},[p("label",RQe,S(Q.$t(`admin.APP_MODERATION.ACTIONS.${c.value}`)),1),M(re,{class:"report-comment-textarea",name:"report-comment",required:N.value,placeholder:pt(),disabled:R.value,onUpdateValue:U},null,8,["required","placeholder","disabled"]),p("div",NQe,[p("button",{class:"confirm",type:"submit",disabled:R.value},S(Q.$t(Oe())),9,vQe),p("button",{class:"cancel",onClick:ve(P,["prevent"]),disabled:R.value},S(Q.$t("buttons.CANCEL")),9,bQe),p("div",CQe,[R.value?(h(),v("i",PQe)):L("",!0)])]),m(i)?(h(),B(pe,{key:0,message:m(i)},null,8,["message"])):L("",!0)],32)])):(h(),v("div",DQe,[p("button",{onClick:Se[2]||(Se[2]=$=>D("ADD_COMMENT"))},S(Q.$t("admin.APP_MODERATION.ACTIONS.ADD_COMMENT")),1),!f.value.resolved&&f.value.reported_user&&!f.value.is_reported_user_warned?(h(),v("button",{key:0,onClick:Se[3]||(Se[3]=$=>D("SEND_WARNING_EMAIL"))},S(Q.$t("admin.APP_MODERATION.ACTIONS.SEND_WARNING_EMAIL")),1)):L("",!0),!f.value.resolved&&O.value?(h(),v("button",{key:1,class:Ae({danger:O.value.suspended_at===null}),onClick:Se[4]||(Se[4]=$=>D(`${O.value.suspended_at===null?"":"UN"}SUSPEND_CONTENT`))},S(Q.$t(`admin.APP_MODERATION.ACTIONS.${O.value.suspended_at===null?"":"UN"}SUSPEND_CONTENT`)),3)):L("",!0),!f.value.resolved&&f.value.reported_user?(h(),v("button",{key:2,class:Ae({danger:f.value.reported_user.suspended_at===null}),onClick:Se[5]||(Se[5]=$=>D(`${f.value.reported_user.suspended_at?"UN":""}SUSPEND_ACCOUNT`))},S(Q.$t(`admin.APP_MODERATION.ACTIONS.${f.value.reported_user.suspended_at?"UN":""}SUSPEND_ACCOUNT`)),3)):L("",!0),p("button",{onClick:Se[6]||(Se[6]=$=>D(`MARK_AS_${f.value.resolved?"UN":""}RESOLVED`))},S(Q.$t(`admin.APP_MODERATION.ACTIONS.MARK_AS_${f.value.resolved?"UN":""}RESOLVED`)),1)]))]),_:1}),p("button",{onClick:ve(Je,["prevent"])},S(Q.$t("buttons.BACK")),1)]),_:1})])):A.value?(h(),v("div",LQe)):(h(),v("div",yQe,[M(Ui,{target:"REPORT"})]))],64))}}}),UQe=se($Qe,[["__scopeId","data-v-e9598d83"]]),kQe={class:"table-selects"},wQe=["value"],MQe=["value"],WQe=["value"],FQe=["value"],zQe=["value"],xQe=["value"],Kp=X({__name:"FilterSelects",props:{order_by:{},query:{},sort:{},message:{}},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:a,query:s,sort:i,message:o}=fe(n),r=t,u=[10,25,50,100];function l(d){r("updateSelect",d.target.id,d.target.value)}return(d,E)=>(h(),v("div",kQe,[p("label",null,[x(S(d.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),p("select",{name:"order_by",id:"order_by",value:m(s).order_by,onChange:l},[(h(!0),v(ue,null,be(m(a),c=>(h(),v("option",{value:c,key:c},S(d.$t(`${m(o)}.${c.toUpperCase()}`)),9,MQe))),128))],40,wQe)]),p("label",null,[x(S(d.$t("common.SELECTS.ORDER.LABEL"))+": ",1),p("select",{name:"order",id:"order",value:m(s).order,onChange:l},[(h(!0),v(ue,null,be(m(i),c=>(h(),v("option",{value:c,key:c},S(d.$t(`common.SELECTS.ORDER.${c.toUpperCase()}`)),9,FQe))),128))],40,WQe)]),Pt(d.$slots,"additionalFilters"),p("label",null,[x(S(d.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),p("select",{name:"per_page",id:"per_page",value:m(s).per_page,onChange:l},[(h(),v(ue,null,be(u,c=>p("option",{value:c,key:c},S(c),9,xQe)),64))],40,zQe)])]))}}),Ml=["asc","desc"],Wl=1,BQe=10,Ho=(e,t)=>e&&typeof e=="string"&&+e>0?+e:t,Th=(e,t,n)=>e&&typeof e=="string"&&t.includes(e)?e:n,vi=(e,t,n,a)=>{const i=(a||{}).defaultSort||"asc",o={};return o.page=Ho(e.page,Wl),o.per_page=Ho(e.per_page,BQe),o.order=Th(e.order,Ml,i),o.order_by=Th(e.order_by,t,n),typeof e.q=="string"?o.q=e.q:delete o.q,typeof e.notes=="string"?o.notes=e.notes:delete o.notes,typeof e.description=="string"?o.description=e.description:delete o.description,typeof e.object_type=="string"?o.object_type=e.object_type:delete o.object_type,typeof e.resolved=="string"?o.resolved=e.resolved:delete o.resolved,o},GQe=["equipment_id","from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id","title"],Js=(e,t=1)=>Array.from({length:e-t+1},(n,a)=>t+a),VQe=(e,t)=>{if(e<0)return[];if(e<9)return Js(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(Js(t+2,3)):(n=n.concat(["..."]),t=e-2&&+n[n.length-1]{const u=j("router-link");return h(),v("nav",HQe,[p("ul",KQe,[p("li",{class:Ae(["page-prev",{disabled:!m(n).has_prev}])},[M(u,{class:"page-link",to:{path:m(a),query:i(m(n).page,-1)},disabled:!m(n).has_prev,tabindex:m(n).has_prev?0:-1},{default:Y(({navigate:l})=>[Pt(o.$slots,"default",{onClick:d=>m(n).has_next?l:null},()=>[x(S(o.$t("common.PREVIOUS"))+" ",1),r[0]||(r[0]=p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))],!0)]),_:3},8,["to","disabled","tabindex"])],2),(h(!0),v(ue,null,be(m(VQe)(m(n).pages,m(n).page),l=>(h(),v("li",{key:l,class:Ae(["page",{active:l===m(n).page}])},[l==="..."?(h(),v("span",qQe," ... ")):(h(),B(u,{key:1,class:"page-link",to:{path:m(a),query:i(+l)}},{default:Y(()=>[x(S(l),1)]),_:2},1032,["to"]))],2))),128)),p("li",{class:Ae(["page-next",{disabled:!m(n).has_next}])},[M(u,{class:"page-link",to:{path:m(a),query:i(m(n).page,1)},disabled:!m(n).has_next,tabindex:m(n).has_next?0:-1},{default:Y(({navigate:l})=>[Pt(o.$slots,"default",{onClick:d=>m(n).has_next?l:null},()=>[x(S(o.$t("common.NEXT"))+" ",1),r[1]||(r[1]=p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1))],!0)]),_:3},8,["to","disabled","tabindex"])],2)])])}}}),oa=se(jQe,[["__scopeId","data-v-d7c0bddb"]]),YQe={id:"admin-reports",class:"admin-card"},XQe=["value"],QQe=["value"],ZQe=["value"],JQe={value:"true"},eZe={value:"false"},tZe={key:0,class:"no-reports"},nZe={key:1,class:"responsive-table"},aZe={class:"left-text"},sZe={class:"left-text"},iZe={class:"left-text"},oZe={class:"left-text"},rZe={class:"left-text"},uZe={class:"left-text"},lZe={class:"left-text"},cZe={class:"cell-heading"},dZe={key:1,class:"deleted-object"},EZe={class:"cell-heading"},pZe={key:0},TZe={class:"cell-heading"},mZe={key:1,class:"deleted-object"},_Ze={class:"cell-heading"},fZe={class:"cell-heading"},hZe={class:"cell-heading"},SZe={key:0},AZe=["onClick"],mh=20,_h="created_at",OZe=X({__name:"AdminReports",setup(e){const t=ut(),n=gn(),a=Le(),{errorMessages:s}=qe(),{authUser:i}=Ke(),o=["created_at","updated_at"],r={comment:"workouts.COMMENTS.COMMENT",user:"user.USER",workout:"workouts.WORKOUT"};let u=kt(vi(t.query,o,_h,{defaultSort:"desc"}));const l=z(()=>a.getters[De.GETTERS.REPORTS]),d=z(()=>a.getters[De.GETTERS.REPORTS_PAGINATION]);function E(R){a.dispatch(De.ACTIONS.GET_REPORTS,R)}function c(R){const g=R.target;g.value?u.object_type=g.value:delete u.object_type,n.push({path:"/admin/reports",query:u})}function T(R){const g=R.target;g.value?u.resolved=g.value:delete u.resolved,n.push({path:"/admin/reports",query:u})}function _(R,g){u[R]=g,R==="per_page"&&(u.page=1),n.push({path:"/admin/reports",query:u})}function f(R){return $t(R,i.value.timezone,i.value.date_format)}function O(R){return R=="user.USER"?"user.USER_PROFILE":R}function A(R){var I,N;let g;switch(R.object_type){case"workout":g=(I=R.reported_workout)==null?void 0:I.title;break;case"comment":g=((N=R.reported_comment)==null?void 0:N.text)||"";break;default:g=""}return g?g.length>mh?`${g.substring(0,mh-1)}…`:g:""}return Ce(()=>t.query,R=>{u=vi(R,o,_h,{query:u}),E(u)}),et(()=>E(u)),(R,g)=>{const I=j("router-link"),N=j("ErrorMessage"),b=j("Card");return h(),v("div",YQe,[M(b,null,{title:Y(()=>[x(S(R.$t("admin.APP_MODERATION.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:g[0]||(g[0]=ve(C=>R.$router.push("/admin"),["prevent"]))},S(R.$t("admin.BACK_TO_ADMIN")),1),M(Kp,{sort:m(Ml),order_by:o,query:m(u),message:"admin.APP_MODERATION.ORDER_BY",onUpdateSelect:_},{additionalFilters:Y(()=>[p("label",null,[x(S(R.$t("common.TYPE"))+": ",1),p("select",{name:"object_type",id:"object_type",value:m(u).object_type,onChange:c},[g[2]||(g[2]=p("option",{value:""},null,-1)),(h(!0),v(ue,null,be(Object.keys(r),C=>(h(),v("option",{value:C,key:C},S(R.$t(r[C])),9,QQe))),128))],40,XQe)]),p("label",null,[x(S(R.$t("admin.APP_MODERATION.STATUS"))+": ",1),p("select",{name:"resolved",id:"resolved",value:m(u).resolved,onChange:T},[g[3]||(g[3]=p("option",{value:""},null,-1)),p("option",JQe,S(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("option",eZe,S(R.$t("admin.APP_MODERATION.RESOLVED.FALSE")),1)],40,ZQe)])]),_:1},8,["sort","query"]),l.value.length===0?(h(),v("div",tZe,S(R.$t("admin.APP_MODERATION.NO_REPORTS_FOUND")),1)):(h(),v("div",nZe,[p("table",null,[p("thead",null,[p("tr",null,[g[4]||(g[4]=p("th",{class:"left-text"},"#",-1)),p("th",aZe,S(R.$t("admin.APP_MODERATION.REPORTED_USER")),1),p("th",sZe,S(R.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1),p("th",iZe,S(R.$t("admin.APP_MODERATION.REPORTED_BY")),1),p("th",oZe,S(Fe(R.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))),1),p("th",rZe,S(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("th",uZe,S(Fe(R.$t("common.LAST_UPDATED_ON"))),1),p("th",lZe,S(R.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(ue,null,be(l.value,C=>(h(),v("tr",{key:C.created_at},[p("td",null,[M(I,{to:`/admin/reports/${C.id}`},{default:Y(()=>[x(S(C.id),1)]),_:2},1032,["to"])]),p("td",null,[p("span",cZe,S(R.$t("admin.APP_MODERATION.REPORTED_USER")),1),C.reported_user?(h(),B(I,{key:0,class:"link-with-image",to:`/admin/users/${C.reported_user.username}`},{default:Y(()=>[M(Qt,{user:C.reported_user},null,8,["user"]),x(" "+S(C.reported_user.username),1)]),_:2},1032,["to"])):(h(),v("span",dZe,S(R.$t("admin.DELETED_USER")),1))]),p("td",null,[p("span",EZe,S(R.$t("admin.APP_MODERATION.REPORTED_CONTENT")),1),x(" "+S(R.$t(O(r[C.object_type])))+" ",1),A(C)?(h(),v("span",pZe," ("+S(A(C))+") ",1)):L("",!0)]),p("td",null,[p("span",TZe,S(R.$t("admin.APP_MODERATION.REPORTED_BY")),1),C.reported_by?(h(),B(I,{key:0,class:"link-with-image",to:`/admin/users/${C.reported_by.username}`},{default:Y(()=>[M(Qt,{user:C.reported_by},null,8,["user"]),x(" "+S(C.reported_by.username),1)]),_:2},1032,["to"])):(h(),v("span",mZe,S(R.$t("admin.DELETED_USER")),1))]),p("td",null,[p("span",_Ze,S(Fe(R.$t("admin.APP_MODERATION.ORDER_BY.CREATED_AT"))),1),p("time",null,S(f(C.created_at)),1)]),p("td",null,[p("span",fZe,S(R.$t("admin.APP_MODERATION.RESOLVED.TRUE")),1),p("i",{class:Ae(`fa fa${C.resolved?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",null,[p("span",hZe,S(Fe(R.$t("common.LAST_UPDATED_ON"))),1),C.updated_at?(h(),v("time",SZe,S(f(C.updated_at)),1)):L("",!0)]),p("td",null,[p("button",{onClick:y=>R.$router.push(`/admin/reports/${C.id}`)},S(R.$t("admin.APP_MODERATION.VIEW_REPORT")),9,AZe)])]))),128))])]),d.value.page?(h(),B(oa,{key:0,path:"/admin/users",pagination:d.value,query:m(u)},null,8,["pagination","query"])):L("",!0),m(s)?(h(),B(N,{key:1,message:m(s)},null,8,["message"])):L("",!0),p("button",{onClick:g[1]||(g[1]=ve(C=>R.$router.push("/admin"),["prevent"]))},S(R.$t("admin.BACK_TO_ADMIN")),1)]))]),_:1})])}}}),IZe=se(OZe,[["__scopeId","data-v-88c1fd48"]]),gZe={id:"admin-sports",class:"admin-card"},RZe={class:"responsive-table"},NZe={class:"text-left"},vZe={class:"text-left sport-action"},bZe={class:"text-center"},CZe={class:"cell-heading"},PZe={class:"sport-label"},DZe={class:"cell-heading"},LZe={class:"text-center"},yZe={class:"cell-heading"},$Ze={class:"sport-action"},UZe={class:"cell-heading"},kZe={class:"action-button"},wZe=["onClick"],MZe={key:0,class:"has-workouts"},WZe=X({__name:"AdminSports",setup(e){const t=Le(),{errorMessages:n}=qe(),{translatedSports:a}=nn();function s(i,o){t.dispatch(Ht.ACTIONS.UPDATE_SPORTS,{id:i,isActive:o})}return et(()=>t.dispatch(Ht.ACTIONS.GET_SPORTS,!0)),(i,o)=>{const r=j("SportImage"),u=j("ErrorMessage"),l=j("Card");return h(),v("div",gZe,[M(l,null,{title:Y(()=>[x(S(i.$t("admin.SPORTS.TITLE")),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:o[0]||(o[0]=ve(d=>i.$router.push("/admin"),["prevent"]))},S(i.$t("admin.BACK_TO_ADMIN")),1),p("div",RZe,[p("table",null,[p("thead",null,[p("tr",null,[o[2]||(o[2]=p("th",null,"#",-1)),p("th",null,S(i.$t("admin.SPORTS.TABLE.IMAGE")),1),p("th",NZe,S(i.$t("admin.SPORTS.TABLE.LABEL")),1),p("th",null,S(i.$t("admin.SPORTS.TABLE.ACTIVE")),1),p("th",vZe,S(i.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(ue,null,be(m(a),d=>(h(),v("tr",{key:d.id},[p("td",bZe,[o[3]||(o[3]=p("span",{class:"cell-heading"},"id",-1)),x(" "+S(d.id),1)]),p("td",null,[p("span",CZe,S(i.$t("admin.SPORTS.TABLE.IMAGE")),1),M(r,{title:d.translatedLabel,"sport-label":d.label,color:d.color},null,8,["title","sport-label","color"])]),p("td",PZe,[p("span",DZe,S(i.$t("admin.SPORTS.TABLE.LABEL")),1),x(" "+S(d.translatedLabel),1)]),p("td",LZe,[p("span",yZe,S(i.$t("admin.SPORTS.TABLE.ACTIVE")),1),p("i",{class:Ae(`fa fa${d.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),p("td",$Ze,[p("span",UZe,S(i.$t("admin.ACTION")),1),p("div",kZe,[p("button",{class:Ae({danger:d.is_active}),onClick:E=>s(d.id,!d.is_active)},S(i.$t(`buttons.${d.is_active?"DIS":"EN"}ABLE`)),11,wZe),d.has_workouts?(h(),v("span",MZe,[o[4]||(o[4]=p("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)),x(" "+S(i.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):L("",!0)])])]))),128))])]),m(n)?(h(),B(u,{key:0,message:m(n)},null,8,["message"])):L("",!0),p("button",{onClick:o[1]||(o[1]=ve(d=>i.$router.push("/admin"),["prevent"]))},S(i.$t("admin.BACK_TO_ADMIN")),1)])]),_:1})])}}}),FZe=se(WZe,[["__scopeId","data-v-f6f9d907"]]),zZe={class:"users-filters"},xZe={class:"search-username"},BZe=["placeholder"],GZe=X({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=t,a=ut(),s=Ie(a.query.q?a.query.q:"");function i(){s.value!==""&&n("filterOnUsername",s)}function o(){s.value="",n("filterOnUsername",s.value)}return(r,u)=>(h(),v("div",zZe,[p("div",xZe,[We(p("input",{id:"username",name:"username","onUpdate:modelValue":u[0]||(u[0]=l=>s.value=l),onKeyup:Ye(i,["enter"]),placeholder:r.$t("user.FILTER_ON_USERNAME")},null,40,BZe),[[ot,s.value,void 0,{trim:!0}]]),s.value!==""?(h(),v("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:o})):L("",!0)]),p("i",{class:Ae(["fa fa-search",{"fa-disabled":s.value===""}]),"aria-hidden":"true",onClick:i},null,2)]))}}),$O=se(GZe,[["__scopeId","data-v-359360da"]]),VZe={id:"admin-users",class:"admin-card"},HZe={key:0,class:"no-users"},KZe={key:1,class:"responsive-table"},qZe={class:"left-text"},jZe={class:"left-text"},YZe={class:"cell-heading"},XZe={class:"cell-heading"},QZe={class:"cell-heading"},ZZe={class:"text-center"},JZe={class:"cell-heading"},eJe={class:"text-center"},tJe={class:"cell-heading"},nJe={class:"text-center"},aJe={class:"cell-heading"},sJe={class:"text-center"},iJe={class:"cell-heading"},oJe={class:"text-center"},rJe={class:"cell-heading"},uJe={class:"roles"},lJe={key:0,class:"roles-buttons"},cJe=["onClick"],dJe={key:1},EJe=["disabled","onClick"],fh="created_at",pJe=X({__name:"AdminUsers",setup(e){const t=Le(),n=ut(),a=gn(),{errorMessages:s}=qe(),{authUser:i}=Ke(),o=["is_active","role","created_at","username","workouts_count"];let r=kt(vi(n.query,o,fh));const u=z(()=>t.getters[ce.GETTERS.USERS]),l=z(()=>t.getters[ce.GETTERS.USERS_PAGINATION]),d=z(()=>t.getters[ce.GETTERS.USERS_IS_SUCCESS]),E=Ie("");function c(g){t.dispatch(ce.ACTIONS.GET_USERS_FOR_ADMIN,g)}function T(g){A("q",g.value)}function _(g){return E.value===g}function f(g){switch(g){case"admin":return["moderator","user"];case"moderator":return["admin","user"];case"user":return["admin","moderator"];default:return[]}}function O(g,I){t.dispatch(ce.ACTIONS.UPDATE_USER,{username:g,role:I})}function A(g,I){r[g]=I,g==="per_page"&&(r.page=1),a.push({path:"/admin/users",query:r})}function R(g){return g.username===i.value.username||g.suspended_at!==null||g.role==="owner"}return Ce(()=>n.query,g=>{r=vi(g,o,fh,{query:r}),c(r)}),Ce(()=>d.value,g=>{g&&(E.value="")}),et(()=>c(r)),ct(()=>{t.dispatch(ce.ACTIONS.EMPTY_USERS),t.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(g,I)=>{const N=j("router-link"),b=j("ErrorMessage"),C=j("Card");return h(),v("div",VZe,[M(C,null,{title:Y(()=>[x(S(Fe(g.$t("user.USER",0))),1)]),content:Y(()=>[p("button",{class:"top-button",onClick:I[0]||(I[0]=ve(y=>g.$router.push("/admin"),["prevent"]))},S(g.$t("admin.BACK_TO_ADMIN")),1),M($O,{onFilterOnUsername:T}),M(Kp,{sort:m(Ml),order_by:o,query:m(r),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:A},null,8,["sort","query"]),u.value.length===0?(h(),v("div",HZe,S(g.$t("user.NO_USERS_FOUND")),1)):(h(),v("div",KZe,[p("table",null,[p("thead",null,[p("tr",null,[I[3]||(I[3]=p("th",null,"#",-1)),p("th",qZe,S(g.$t("user.USERNAME")),1),p("th",jZe,S(g.$t("user.PROFILE.REGISTRATION_DATE")),1),p("th",null,S(Fe(g.$t("workouts.WORKOUT",0))),1),p("th",null,S(g.$t("admin.ACTIVE")),1),p("th",null,S(g.$t("user.ROLE")),1),p("th",null,S(g.$t("user.SUSPENDED")),1),p("th",null,S(g.$t("admin.ACTION")),1)])]),p("tbody",null,[(h(!0),v(ue,null,be(u.value,y=>(h(),v("tr",{key:y.username},[p("td",null,[p("span",YZe,S(g.$t("user.PROFILE.PICTURE")),1),M(Qt,{user:y},null,8,["user"])]),p("td",null,[p("span",XZe,S(g.$t("user.USERNAME")),1),M(N,{to:`/admin/users/${y.username}`},{default:Y(()=>[x(S(y.username),1)]),_:2},1032,["to"]),m(s)&&E.value===y.username?(h(),B(b,{key:0,message:m(s)},null,8,["message"])):L("",!0)]),p("td",null,[p("span",QZe,S(g.$t("user.PROFILE.REGISTRATION_DATE")),1),p("time",null,S(m($t)(y.created_at,m(i).timezone,m(i).date_format)),1)]),p("td",ZZe,[p("span",JZe,S(Fe(g.$t("workouts.WORKOUT",0))),1),x(" "+S(y.nb_workouts),1)]),p("td",eJe,[p("span",tJe,S(g.$t("admin.ACTIVE")),1),p("i",{class:Ae(`fa fa${y.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",nJe,[p("span",aJe,S(g.$t("user.ROLE")),1),x(" "+S(g.$t(`user.ROLES.${y.role}`)),1)]),p("td",sJe,[p("span",iJe,S(g.$t("user.SUSPENDED")),1),p("i",{class:Ae(`fa fa${y.suspended_at!==null?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),p("td",oJe,[p("span",rJe,S(g.$t("admin.ACTION")),1),p("div",uJe,[_(y.username)?(h(),v("div",lJe,[(h(!0),v(ue,null,be(f(y.role),D=>(h(),v("button",{class:Ae({danger:y.role==="admin"||D==="user"}),key:D,onClick:U=>O(y.username,D)},S(g.$t(`admin.USERS.TABLE.CHANGE_TO_${D.toUpperCase()}`)),11,cJe))),128)),p("button",{onClick:I[1]||(I[1]=D=>E.value="")},S(g.$t("buttons.CANCEL")),1)])):(h(),v("div",dJe,[p("button",{disabled:R(y),onClick:D=>E.value=y.username},S(g.$t("admin.USERS.TABLE.CHANGE_ROLE")),9,EJe)]))])])]))),128))])]),l.value.page?(h(),B(oa,{key:0,path:"/admin/users",pagination:l.value,query:m(r)},null,8,["pagination","query"])):L("",!0),E.value===""&&m(s)?(h(),B(b,{key:1,message:m(s)},null,8,["message"])):L("",!0),p("button",{onClick:I[2]||(I[2]=ve(y=>g.$router.push("/admin"),["prevent"]))},S(g.$t("admin.BACK_TO_ADMIN")),1)]))]),_:1})])}}}),TJe=se(pJe,[["__scopeId","data-v-4934ef0c"]]),mJe={class:"box"},_Je={class:"user-header"},fJe={key:0,class:"follows-you"},hJe={key:1,class:"follows-you"},SJe={class:"user-details"},AJe={class:"user-name"},OJe={key:2,class:"user-role"},IJe=X({__name:"UserHeader",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=ut(),{displayOptions:s}=qe(),{authUser:i,authUserHasModeratorRights:o}=Ke(),r=z(()=>n.value.suspended_at?$t(n.value.suspended_at,s.value.timezone,s.value.dateFormat):""),u=z(()=>n.value.suspended_at!==null&&a.name!=="AuthUserAccountSuspension"&&n.value.username===(i==null?void 0:i.value.username)),l=z(()=>o.value&&n.value.suspension_report_id!==void 0),d=z(()=>n.value.role!=="user"?`user.ROLES.${n.value.role}`:"");return(E,c)=>{const T=j("router-link"),_=j("i18n-t"),f=j("AlertMessage");return h(),v("div",mJe,[p("div",_Je,[m(n).follows==="true"?(h(),v("div",fJe,S(E.$t("user.RELATIONSHIPS.FOLLOWS_YOU")),1)):m(n).username===m(i).username&&!E.$route.path.startsWith("/profile")?(h(),v("div",hJe,S(E.$t("user.YOU")),1)):L("",!0),M(Qt,{user:m(n)},null,8,["user"]),p("div",SJe,[p("div",AJe,S(m(n).username),1),M(Vp,{user:m(n)},null,8,["user"])]),d.value?(h(),v("div",OJe,S(E.$t(d.value)),1)):L("",!0)]),"suspended_at"in m(n)&&m(n).suspended_at!==null?(h(),B(f,{key:0,message:"user.ACCOUNT_SUSPENDED_AT",param:r.value},mi({_:2},[u.value||l.value?{name:"additionalMessage",fn:Y(()=>[u.value?(h(),B(T,{key:0,to:"/profile/suspension",class:"appeal-link"},{default:Y(()=>[x(S(E.$t("user.APPEAL")),1)]),_:1})):L("",!0),l.value?(h(),B(_,{key:1,keypath:"common.SEE_REPORT"},{default:Y(()=>[M(T,{to:`/admin/reports/${m(n).suspension_report_id}`},{default:Y(()=>[x(S(m(n).suspension_report_id),1)]),_:1},8,["to"])]),_:1})):L("",!0)]),key:"0"}:void 0]),1032,["param"])):L("",!0)])}}}),UO=se(IJe,[["__scopeId","data-v-12bd7069"]]),gJe={class:"profile-tabs"},RJe={class:"profile-tabs-links"},_E=X({__name:"UserProfileTabs",props:{tabs:{},selectedTab:{},edition:{type:Boolean}},setup(e){const t=e,{edition:n,selectedTab:a,tabs:s}=fe(t);mt(()=>{const o=document.getElementById(`tab-${s.value[0]}`);o&&o.focus()});function i(o){switch(o){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${o.toLocaleLowerCase()}`;case"APPS":case"BLOCKED-USERS":case"EQUIPMENTS":case"FOLLOW-REQUESTS":case"MODERATION":case"PREFERENCES":case"SPORTS":return`/profile${n.value?"/edit":""}/${o.toLocaleLowerCase()}`;default:case"PROFILE":return`/profile${n.value?"/edit":""}`}}return(o,r)=>{const u=j("router-link");return h(),v("div",gJe,[p("div",RJe,[(h(!0),v(ue,null,be(m(s),l=>(h(),B(u,{class:Ae(["profile-tab",{selected:l===m(a)}]),to:i(l),key:l},{default:Y(()=>[x(S(o.$t(`user.PROFILE.TABS.${l}`)),1)]),_:2},1032,["class","to"]))),128))])])}}}),NJe={id:"user-profile"},vJe={class:"box"},bJe=X({__name:"index",props:{user:{},tab:{}},setup(e){const t=e,{user:n,tab:a}=fe(t),s=Le(),i=z(()=>s.getters[K.GETTERS.IS_SUSPENDED]),o=z(()=>i.value?["PROFILE","PREFERENCES","SPORTS","EQUIPMENTS","APPS","MODERATION"]:["PROFILE","PREFERENCES","SPORTS","EQUIPMENTS","APPS"]),r=z(()=>i.value?[]:["FOLLOW-REQUESTS","BLOCKED-USERS","MODERATION"]);return(u,l)=>{const d=j("router-view");return h(),v("div",NJe,[M(UO,{user:m(n)},null,8,["user"]),p("div",vJe,[M(_E,{tabs:o.value,selectedTab:m(a),edition:!1},null,8,["tabs","selectedTab"]),M(_E,{tabs:r.value,selectedTab:m(a),edition:!1},null,8,["tabs","selectedTab"]),M(d,{user:m(n)},null,8,["user"])])])}}}),CJe=se(bJe,[["__scopeId","data-v-4b475df4"]]),PJe={id:"user-moderation-detail"},DJe={id:"user-reports",class:"description-list"},LJe={key:0,id:"user-sanctions"},yJe={key:0},$Je={class:"last-sanctions"},UJe=X({__name:"UserAdminReports",props:{authUser:{},user:{}},setup(e){const t=e,{authUser:n,user:a}=fe(t),s=ut(),i=Le();let o=kt(d(s.query));const r=z(()=>i.getters[ce.GETTERS.USER_SANCTIONS]),u=z(()=>i.getters[ce.GETTERS.USER_SANCTIONS_LOADING]),l=z(()=>i.getters[ce.GETTERS.USER_SANCTIONS_PAGINATION]);function d(T){const _={};return T.page&&(_.page=Ho(T.page,Wl)),_}function E(T){if(T.updated_at)switch(T.approved){case!0:return"APPROVED";case!1:return"REJECTED";default:return"IN_PROGRESS"}return"IN_PROGRESS"}function c(T){i.dispatch(ce.ACTIONS.GET_USER_SANCTIONS,{username:a.value.username,...T})}return Ce(()=>s.query,async T=>{o=d(T),c(o)}),et(()=>c({})),ct(()=>i.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS,[])),(T,_)=>{const f=j("router-link");return h(),v("div",PJe,[p("div",DJe,[p("dl",null,[p("dt",null,S(T.$t("user.PROFILE.CREATED_REPORTS"))+":",1),p("dd",null,S(m(a).created_reports_count),1),p("dt",null,S(T.$t("user.PROFILE.REPORTS_FROM_OTHER_USERS"))+":",1),p("dd",null,S(m(a).reported_count),1)])]),m(a).sanctions_count?(h(),v("div",LJe,[p("strong",null,S(T.$t("user.PROFILE.LATEST_SANCTIONS_RECEIVED"))+":",1),p("div",null,S(T.$t("user.PROFILE.USER_RECEIVED_SANCTIONS",{count:m(a).sanctions_count})),1),u.value?(h(),v("div",yJe,[M(wl)])):(h(),v(ue,{key:1},[p("ul",$Je,[(h(!0),v(ue,null,be(r.value,O=>(h(),v("li",{key:O.id},[p("div",null,[x(S(T.$t(`user.PROFILE.SANCTIONS.${O.action_type}`,{date:m($t)(O.created_at,m(n).timezone,m(n).date_format)}))+" ",1),O.appeal?(h(),v("span",{key:0,class:Ae(["info-box appeal",{approved:E(O.appeal)==="APPROVED",rejected:E(O.appeal)==="REJECTED"}])},[p("i",{class:Ae(["fa",{"fa-info-circle":E(O.appeal)!=="REJECTED","fa-times":E(O.appeal)==="REJECTED"}]),"aria-hidden":"true"},null,2),x(" "+S(T.$t(`user.APPEAL_${E(O.appeal)}`)),1)],2)):L("",!0)]),M(f,{to:`/admin/reports/${O.report_id}`},{default:Y(()=>[x(S(T.$t("admin.APP_MODERATION.VIEW_REPORT"))+" #"+S(O.report_id),1)]),_:2},1032,["to"])]))),128))]),M(oa,{pagination:l.value,path:`/admin/users/${m(a).username}`,query:m(o)},null,8,["pagination","path","query"])],64))])):L("",!0)])}}}),kJe=se(UJe,[["__scopeId","data-v-bfe7e915"]]),wJe={id:"user-infos",class:"description-list"},MJe={key:1,class:"info-box success-message"},WJe={key:4,class:"email-form form-box"},FJe={class:"form-items",for:"email"},zJe={class:"form-items",for:"email"},xJe={class:"form-buttons"},BJe={class:"confirm",type:"submit"},GJe={key:5},VJe={key:0},HJe={key:1},KJe={key:2},qJe={key:3},jJe={key:4},YJe={key:5},XJe={key:6},QJe={key:7},ZJe={key:8},JJe={key:9},eet={key:10},tet={key:11,class:"user-bio"},net={key:0,class:"report-submitted"},aet={class:"info-box"},set={key:0},iet={key:0,class:"profile-buttons"},oet={key:1,class:"profile-buttons"},ret=X({__name:"UserInfos",props:{user:{},authUser:{},fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,{authUser:n,user:a,fromAdmin:s}=fe(t),i=Le(),{appConfig:o,appLanguage:r,displayOptions:u,errorMessages:l}=qe(),{authUserHasModeratorRights:d,authUserHasAdminRights:E,isAuthenticated:c}=Ke(),T=Ie(""),_=Ie(!1),f=Ie(!1),O=Ie(""),A=Ie(""),R=z(()=>i.getters[ce.GETTERS.USER_CURRENT_REPORTING]),g=z(()=>i.getters[De.GETTERS.REPORT_STATUS]),I=z(()=>a.value.created_at?$t(a.value.created_at,u.value.timezone,u.value.dateFormat):""),N=z(()=>a.value.birth_date?On(new Date(a.value.birth_date),`${fs(u.value.dateFormat,r.value)}`,{locale:zs[r.value]}):""),b=z(()=>i.getters[ce.GETTERS.USERS_IS_SUCCESS]);function C(Ee){T.value=Ee,Ee!==""&&i.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function y(Ee){i.dispatch(ce.ACTIONS.DELETE_USER_ACCOUNT,{username:Ee})}function D(Ee){A.value="password-reset",i.dispatch(ce.ACTIONS.UPDATE_USER,{username:Ee,resetPassword:!0})}function U(Ee){i.dispatch(ce.ACTIONS.UPDATE_USER,{username:Ee,activate:!0})}function P(){Oe(),O.value=a.value.email_to_confirm?a.value.email_to_confirm:"",f.value=!0,A.value="email-update"}function F(){O.value="",f.value=!1}function Z(Ee){i.dispatch(ce.ACTIONS.UPDATE_USER,{username:Ee,new_email:O.value})}function Oe(){i.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1),i.commit(ce.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1),i.commit(De.MUTATIONS.SET_REPORT_STATUS,null),A.value=""}function ee(){i.commit(ce.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!0)}return Ce(()=>b.value,Ee=>{Ee&&(C(""),F())}),ct(()=>Oe()),(Ee,_e)=>{var Ve,_t,we,ae,ke,pt,Te;const Pe=j("Modal"),He=j("AlertMessage"),Je=j("ErrorMessage");return h(),v("div",wJe,[T.value?(h(),B(Pe,{key:0,title:Ee.$t("common.CONFIRMATION"),message:T.value==="delete"?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:m(a).username,onConfirmAction:_e[0]||(_e[0]=Q=>T.value==="delete"?y(m(a).username):D(m(a).username)),onCancelAction:_e[1]||(_e[1]=Q=>C("")),onKeydown:_e[2]||(_e[2]=Ye(Q=>C(""),["esc"]))},null,8,["title","message","strongMessage"])):L("",!0),b.value?(h(),v("div",MJe,S(Ee.$t(`admin.${A.value==="password-reset"?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):L("",!0),m(d)&&!m(a).is_active?(h(),B(He,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})):L("",!0),m(l)&&!R.value?(h(),B(Je,{key:3,message:m(l)},null,8,["message"])):L("",!0),f.value?(h(),v("div",WJe,[p("form",{class:Ae({errors:_.value}),onSubmit:_e[5]||(_e[5]=ve(Q=>Z(m(a).username),["prevent"]))},[p("label",FJe,[x(S(Ee.$t("admin.CURRENT_EMAIL"))+" ",1),We(p("input",{id:"email",type:"email","onUpdate:modelValue":_e[3]||(_e[3]=Q=>m(a).email=Q),disabled:""},null,512),[[ot,m(a).email]])]),p("label",zJe,[x(S(Ee.$t("admin.NEW_EMAIL"))+"* ",1),We(p("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":_e[4]||(_e[4]=Q=>O.value=Q)},null,512),[[ot,O.value]])]),p("div",xJe,[p("button",BJe,S(Ee.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:ve(F,["prevent"])},S(Ee.$t("buttons.CANCEL")),1)])],34)])):(h(),v("div",GJe,[p("dl",null,[p("dt",null,S(Ee.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),p("dd",null,[p("time",null,S(I.value),1)]),m(c)?(h(),v(ue,{key:0},[m(s)?(h(),v("dt",VJe,S(Ee.$t("user.EMAIL"))+":",1)):L("",!0),m(s)?(h(),v("dd",HJe,S(m(a).email),1)):L("",!0),m(a).first_name?(h(),v("dt",KJe,S(Ee.$t("user.PROFILE.FIRST_NAME"))+":",1)):L("",!0),m(a).first_name?(h(),v("dd",qJe,S(m(a).first_name),1)):L("",!0),m(a).last_name?(h(),v("dt",jJe,S(Ee.$t("user.PROFILE.LAST_NAME"))+":",1)):L("",!0),m(a).last_name?(h(),v("dd",YJe,S(m(a).last_name),1)):L("",!0),N.value?(h(),v("dt",XJe,S(Ee.$t("user.PROFILE.BIRTH_DATE"))+":",1)):L("",!0),N.value?(h(),v("dd",QJe,[p("time",null,S(N.value),1)])):L("",!0),m(a).location?(h(),v("dt",ZJe,S(Ee.$t("user.PROFILE.LOCATION"))+":",1)):L("",!0),m(a).location?(h(),v("dd",JJe,S(m(a).location),1)):L("",!0),m(a).bio?(h(),v("dt",eet,S(Ee.$t("user.PROFILE.BIO"))+":",1)):L("",!0),m(a).bio?(h(),v("dd",tet,S(m(a).bio),1)):L("",!0)],64)):L("",!0)]),g.value===`user-${m(a).username}-created`?(h(),v("div",net,[p("div",aet,[p("span",null,[_e[12]||(_e[12]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(Ee.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0),R.value?(h(),B(Wp,{key:1,"object-id":m(a).username,"object-type":"user"},null,8,["object-id"])):(h(),v(ue,{key:2},[m(n)&&m(d)&&m(s)?(h(),v("div",set,[M(kJe,{authUser:m(n),user:m(a)},null,8,["authUser","user"])])):L("",!0),m(c)?(h(),v(ue,{key:1},[m(s)?(h(),v("div",iet,[m(a).role!=="owner"&&m(E)?(h(),v(ue,{key:0},[((Ve=m(n))==null?void 0:Ve.username)!==m(a).username?(h(),v("button",{key:0,class:"danger",onClick:_e[6]||(_e[6]=ve(Q=>C("delete"),["prevent"]))},S(Ee.$t("admin.DELETE_USER")),1)):L("",!0),m(a).is_active?L("",!0):(h(),v("button",{key:1,onClick:_e[7]||(_e[7]=ve(Q=>U(m(a).username),["prevent"]))},S(Ee.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),((_t=m(n))==null?void 0:_t.username)!==m(a).username?(h(),v("button",{key:2,onClick:ve(P,["prevent"])},S(Ee.$t("admin.UPDATE_USER_EMAIL")),1)):L("",!0),((we=m(n))==null?void 0:we.username)!==m(a).username&&m(o).is_email_sending_enabled?(h(),v("button",{key:3,onClick:_e[8]||(_e[8]=ve(Q=>C("reset"),["prevent"]))},S(Ee.$t("admin.RESET_USER_PASSWORD")),1)):L("",!0),(ae=m(n))!=null&&ae.username?(h(),B(Zu,{key:4,authUser:m(n),user:m(a),from:"userInfos"},null,8,["authUser","user"])):L("",!0)],64)):L("",!0),p("button",{onClick:_e[9]||(_e[9]=Q=>Ee.$router.go(-1))},S(Ee.$t("buttons.BACK")),1)])):(h(),v("div",oet,[Ee.$route.path==="/profile"||m(a).username===((ke=m(n))==null?void 0:ke.username)?(h(),v("button",{key:0,onClick:_e[10]||(_e[10]=Q=>Ee.$router.push("/profile/edit"))},S(Ee.$t("user.PROFILE.EDIT")),1)):L("",!0),(pt=m(n))!=null&&pt.username?(h(),B(Zu,{key:1,authUser:m(n),user:m(a),from:"userInfos"},null,8,["authUser","user"])):L("",!0),Ee.$route.name==="User"&&m(a).username!==((Te=m(n))==null?void 0:Te.username)&&m(a).suspended_at===null&&g.value!==`user-${m(a).username}-created`?(h(),v("button",{key:2,onClick:ee},S(Ee.$t("user.REPORT")),1)):L("",!0),p("button",{onClick:_e[11]||(_e[11]=Q=>Ee.$router.go(-1))},S(Ee.$t("buttons.BACK")),1)]))],64)):L("",!0)],64))]))])}}}),kO=se(ret,[["__scopeId","data-v-7c182b65"]]),uet={id:"user-preferences",class:"description-list"},cet={class:"preferences-section"},det={class:"preferences-section"},Eet={class:"preferences-section"},pet={class:"info-box raw-speed-help"},Tet={class:"profile-buttons"},met=X({__name:"UserPreferences",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),{dateFormat:a,timezone:s}=Ke(),i=z(()=>n.value.language&&n.value.language in pi?pi[n.value.language]:pi.en),o=z(()=>n.value.weekm?"MONDAY":"SUNDAY"),r=z(()=>n.value.display_ascent?"DISPLAYED":"HIDDEN"),u=z(()=>n.value.use_dark_mode===!0?"DARK":n.value.use_dark_mode===!1?"LIGHT":"DEFAULT");return(l,d)=>(h(),v("div",uet,[p("div",cet,S(l.$t("user.PROFILE.INTERFACE")),1),p("dl",null,[p("dt",null,S(l.$t("user.PROFILE.LANGUAGE"))+":",1),p("dd",null,S(i.value),1),p("dt",null,S(l.$t("user.PROFILE.THEME_MODE.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.THEME_MODE.VALUES.${u.value}`)),1),p("dt",null,S(l.$t("user.PROFILE.TIMEZONE"))+":",1),p("dd",null,S(m(s)),1),p("dt",null,S(l.$t("user.PROFILE.DATE_FORMAT"))+":",1),p("dd",null,S(m(a)),1),p("dt",null,S(l.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.${o.value}`)),1)]),p("div",det,S(l.$t("user.PROFILE.TABS.ACCOUNT")),1),p("dl",null,[p("dt",null,S(l.$t("user.PROFILE.FOLLOW_REQUESTS_APPROVAL.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.FOLLOW_REQUESTS_APPROVAL.${m(n).manually_approves_followers?"MANUALLY":"AUTOMATICALLY"}`)),1),p("dt",null,S(l.$t("user.PROFILE.PROFILE_IN_USERS_DIRECTORY.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.PROFILE_IN_USERS_DIRECTORY.${m(n).hide_profile_in_users_directory?"HIDDEN":"DISPLAYED"}`)),1)]),p("div",Eet,S(l.$t("workouts.WORKOUT",0)),1),p("dl",null,[p("dt",null,S(l.$t("user.PROFILE.UNITS.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.UNITS.${m(n).imperial_units?"IMPERIAL":"METRIC"}`)),1),p("dt",null,S(l.$t("user.PROFILE.ASCENT_DATA"))+":",1),p("dd",null,S(l.$t(`common.${r.value}`)),1),p("dt",null,S(l.$t("user.PROFILE.ELEVATION_CHART_START.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.ELEVATION_CHART_START.${m(n).start_elevation_at_zero?"ZERO":"MIN_ALT"}`)),1),p("dt",null,S(l.$t("user.PROFILE.USE_RAW_GPX_SPEED.LABEL"))+":",1),p("dd",null,S(l.$t(`user.PROFILE.USE_RAW_GPX_SPEED.${m(n).use_raw_gpx_speed?"RAW_SPEED":"FILTERED_SPEED"}`)),1),p("div",pet,[p("span",null,[d[2]||(d[2]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(l.$t("user.PROFILE.USE_RAW_GPX_SPEED.HELP")),1)])])]),p("dl",null,[p("dt",null,S(l.$t("visibility_levels.WORKOUTS_VISIBILITY"))+":",1),p("dd",null,S(l.$t(`visibility_levels.LEVELS.${m(n).workouts_visibility}`)),1),p("dt",null,S(l.$t("visibility_levels.ANALYSIS_VISIBILITY"))+":",1),p("dd",null,S(l.$t(`visibility_levels.LEVELS.${m(n).analysis_visibility}`)),1),p("dt",null,S(l.$t("visibility_levels.MAP_VISIBILITY"))+":",1),p("dd",null,S(l.$t(`visibility_levels.LEVELS.${m(n).map_visibility}`)),1)]),p("div",Tet,[p("button",{onClick:d[0]||(d[0]=E=>l.$router.push("/profile/edit/preferences"))},S(l.$t("user.PROFILE.EDIT_PREFERENCES")),1),p("button",{onClick:d[1]||(d[1]=E=>l.$router.push("/"))},S(l.$t("common.HOME")),1)])]))}}),_et=se(met,[["__scopeId","data-v-545b27a5"]]),fet={class:"users-list"},het={key:0},Aet={class:"user-name"},Oet={key:0,class:"blocked-user"},Iet=["onClick"],get={key:1,class:"follow-requests-list-actions"},Ret=["onClick"],Net=["onClick"],vet={key:1,class:"no-users-list"},bet={class:"profile-buttons"},Cet=X({__name:"UsersList",props:{itemType:{}},setup(e){const t=e,{itemType:n}=fe(t),a=ut(),s=Le(),i={page:1},o=z(()=>s.getters[K.GETTERS[n.value==="follow-requests"?"FOLLOW_REQUESTS":"BLOCKED_USERS"]]),r=z(()=>s.getters[ce.GETTERS.USERS_PAGINATION]);function u(c){s.dispatch(K.ACTIONS[n.value==="follow-requests"?"GET_FOLLOW_REQUESTS":"GET_BLOCKED_USERS"],c)}function l(c,T){s.dispatch(K.ACTIONS.UPDATE_FOLLOW_REQUESTS,{username:c,action:T,getFollowRequests:!0})}function d(c,T){const _={username:c,action:"unblock",from:n.value,payload:E(a.query)};s.dispatch(ce.ACTIONS.UPDATE_RELATIONSHIP,_)}function E(c){return i.page=c.page?+c.page:1,i}return Ce(()=>a.query,c=>{a.path==="/profile/follow-requests"&&s.dispatch(K.ACTIONS.GET_FOLLOW_REQUESTS,E(c)),a.path==="/profile/blocked-users"&&s.dispatch(K.ACTIONS.GET_BLOCKED_USERS,E(c))}),et(()=>u(E(a.query))),ct(()=>{s.commit(K.MUTATIONS[n.value==="follow-requests"?"UPDATE_FOLLOW_REQUESTS":"UPDATE_BLOCKED_USERS"],[])}),(c,T)=>{const _=j("router-link");return h(),v("div",fet,[o.value.length>0?(h(),v("div",het,[(h(!0),v(ue,null,be(o.value,f=>(h(),v("div",{key:f.username,class:"box item"},[M(Qt,{user:f},null,8,["user"]),p("div",Aet,[M(_,{to:`/users/${f.username}?from=users`},{default:Y(()=>[x(S(f.username),1)]),_:2},1032,["to"])]),f.blocked?(h(),v("div",Oet,[p("button",{onClick:O=>d(f.username)},S(c.$t("buttons.UNBLOCK")),9,Iet)])):(h(),v("div",get,[p("button",{onClick:O=>l(f.username,"accept")},[T[1]||(T[1]=p("i",{class:"fa fa-check","aria-hidden":"true"},null,-1)),x(" "+S(c.$t("buttons.ACCEPT")),1)],8,Ret),p("button",{onClick:O=>l(f.username,"reject"),class:"danger"},[T[2]||(T[2]=p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)),x(" "+S(c.$t("buttons.REJECT")),1)],8,Net)]))]))),128))])):(h(),v("p",vet,S(c.$t(m(n)==="follow-requests"?"user.RELATIONSHIPS.NO_FOLLOW_REQUESTS":"user.NO_USERS_FOUND")),1)),r.value.total>0?(h(),B(oa,{key:2,path:`/profile/${m(n)}`,pagination:r.value,query:{}},null,8,["path","pagination"])):L("",!0),p("div",bet,[p("button",{onClick:T[0]||(T[0]=f=>c.$router.push("/"))},S(c.$t("common.HOME")),1)])])}}}),hh=se(Cet,[["__scopeId","data-v-b29d1311"]]),Pet={id:"user-profile-edition",class:"center-card"},Det=X({__name:"index",props:{user:{},tab:{}},setup(e){const t=e,{user:n,tab:a}=fe(t),{isAuthUserSuspended:s}=Ke(),i=z(()=>s.value?["PROFILE","ACCOUNT","PICTURE","PREFERENCES","PRIVACY-POLICY"]:["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","EQUIPMENTS","PRIVACY-POLICY"]);return(o,r)=>{const u=j("router-view"),l=j("Card");return h(),v("div",Pet,[M(l,null,{title:Y(()=>[x(S(o.$t(`user.PROFILE.${m(a)}_EDITION`)),1)]),content:Y(()=>[M(_E,{tabs:i.value,selectedTab:m(a),edition:!0},null,8,["tabs","selectedTab"]),M(u,{user:m(n)},null,8,["user"])]),_:1})])}}}),Ro=new Map,Let=e=>{const{method:t,url:n,params:a={},data:s={}}=e;return[t,n,JSON.stringify(a),JSON.stringify(s)].join("")},bi=e=>{const t=Let(e);if(Ro.has(t)){const n=Ro.get(t)||{};n==null||n.abort(),Ro.delete(t)}return t},as=Gt.create({baseURL:nr()});as.interceptors.request.use(e=>{const t=new AbortController;e.signal=t.signal;const n=bi(e);return Ro.set(n,t),e},e=>Promise.reject(e));as.interceptors.response.use(e=>(bi(e.config),e),e=>(e.message!=="canceled"&&e.response&&bi(e.response.config),Promise.reject(e)));const wO=(e,t)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`users/${t.username}`).then(n=>{n.status===204?t.fromAdmin?lt.push("/admin/users"):e.dispatch(K.ACTIONS.LOGOUT).then(()=>lt.push("/")):ne(e,null)}).catch(n=>ne(e,n))},Sh=(e,t,n=!1)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!0),n&&(t.with_inactive="true",t.with_hidden="true",t.with_suspended="true"),Ne.get("users",{params:t}).then(a=>{a.data.status==="success"?(e.commit(ce.MUTATIONS.UPDATE_USERS,a.data.data.users),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,a.data.pagination)):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!1))},yet={[ce.ACTIONS.EMPTY_USER](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USER,{})},[ce.ACTIONS.EMPTY_USERS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USERS,[]),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[ce.ACTIONS.EMPTY_RELATIONSHIPS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USER_RELATIONSHIPS,[]),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[ce.ACTIONS.GET_USER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.get(`users/${t}`).then(n=>{n.data.status==="success"?e.commit(ce.MUTATIONS.UPDATE_USER,n.data.data.users[0]):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ce.ACTIONS.GET_USER_SANCTIONS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING,!0);const{username:n,...a}=t;Ne.get(`users/${n}/sanctions`,{params:a}).then(s=>{s.data.status==="success"?(e.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS,s.data.data.sanctions),e.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS_PAGINATION,s.data.pagination)):ne(e,null)}).catch(s=>ne(e,s)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING,!1))},[ce.ACTIONS.GET_USER_WORKOUTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING,!0),Ne.get(`users/${t}/workouts`).then(n=>{n.data.status==="success"?e.commit(ce.MUTATIONS.UPDATE_USER_WORKOUTS,n.data.data.workouts):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING,!1))},[ce.ACTIONS.GET_USERS](e,t){Sh(e,t,!1)},[ce.ACTIONS.GET_USERS_FOR_ADMIN](e,t){Sh(e,t,!0)},[ce.ACTIONS.UPDATE_USER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};t.role!==void 0&&(n.role=t.role),t.resetPassword&&(n.reset_password=t.resetPassword),"activate"in t&&t.activate!==void 0&&(n.activate=t.activate),t.new_email!==void 0&&(n.new_email=t.new_email),Ne.patch(`users/${t.username}`,n).then(a=>{a.data.status==="success"?(e.commit(ce.MUTATIONS.UPDATE_USER_IN_USERS,a.data.data.users[0]),(t.resetPassword||t.new_email||t.role)&&e.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(ce.MUTATIONS.UPDATE_USER,a.data.data.users[0])):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ce.ACTIONS.UPDATE_RELATIONSHIP](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.post(`users/${t.username}/${t.action}`).then(n=>{n.data.status==="success"?Ne.get(`users/${t.username}`).then(a=>{if(a.data.status==="success"){if(t.from==="blocked-users"){e.dispatch(K.ACTIONS.GET_BLOCKED_USERS,t.payload);return}e.commit(t.from==="userInfos"?ce.MUTATIONS.UPDATE_USER:t.from==="userCard"?ce.MUTATIONS.UPDATE_USER_IN_USERS:ce.MUTATIONS.UPDATE_USER_IN_RELATIONSHIPS,a.data.data.users[0]),e.dispatch(K.ACTIONS.GET_USER_PROFILE)}else ne(e,null)}):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ce.ACTIONS.GET_RELATIONSHIPS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!0),Ne.get(`users/${t.username}/${t.relationship}`,{params:{page:t.page}}).then(n=>{n.data.status==="success"?(e.commit(ce.MUTATIONS.UPDATE_USER_RELATIONSHIPS,n.data.data[t.relationship]),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(ce.MUTATIONS.UPDATE_USERS_LOADING,!1))},[ce.ACTIONS.DELETE_USER_ACCOUNT](e,t){wO(e,{username:t.username,fromAdmin:!0})}},$r=e=>{localStorage.removeItem("authToken"),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Mt.MUTATIONS.EMPTY_USER_STATS),e.commit(Mt.MUTATIONS.EMPTY_USER_SPORT_STATS),e.commit(K.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(K.MUTATIONS.UPDATE_FOLLOW_REQUESTS,[]),e.commit(ce.MUTATIONS.UPDATE_USERS,[]),e.commit(J.MUTATIONS.EMPTY_WORKOUTS),e.commit(J.MUTATIONS.EMPTY_WORKOUT),lt.push("/login")},$et={[K.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[K.GETTERS.IS_AUTHENTICATED]&&(e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(K.ACTIONS.GET_USER_PROFILE,!0)),!window.localStorage.authToken&&e.getters[K.GETTERS.IS_AUTHENTICATED]&&$r(e)},[K.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/account/confirm",{token:t.token}).then(n=>{if(n.data.status==="success"){const a=n.data.auth_token;window.localStorage.setItem("authToken",a),e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,a),e.dispatch(K.ACTIONS.GET_USER_PROFILE).then(()=>lt.push("/"))}else ne(e,null)}).catch(n=>{ne(e,n)})},[K.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),as.post("/auth/email/update",{token:t.token}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(K.ACTIONS.GET_USER_PROFILE).then(()=>lt.push("/profile/edit/account")),lt.push("/profile/edit/account")):ne(e,null)}).catch(n=>{ne(e,n)})},[K.ACTIONS.GET_USER_PROFILE](e,t=!1){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("auth/profile").then(n=>{if(n.data.status==="success"){const a=e.getters[K.GETTERS.IS_PROFILE_NOT_LOADED];e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),e.commit(ce.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data),(a||t)&&(n.data.data.language&&e.dispatch(te.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.commit(te.MUTATIONS.UPDATE_DARK_MODE,n.data.data.use_dark_mode)),e.commit(te.MUTATIONS.UPDATE_DISPLAY_OPTIONS,n.data.data),e.dispatch(Ht.ACTIONS.GET_SPORTS),e.dispatch(xe.ACTIONS.GET_EQUIPMENTS),e.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES),n.data.data.suspended_at===null?kn.dispatch(Et.ACTIONS.GET_UNREAD_STATUS):!lt.currentRoute.value.path.startsWith("/profile")&&!lt.currentRoute.value.meta.allowedToSuspendedUser&<.push("/profile")}else ne(e,null),$r(e)}).catch(n=>{n.message!=="canceled"&&(ne(e,n),$r(e))})},[K.ACTIONS.GET_ACCOUNT_SUSPENSION](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("auth/account/suspension").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_ACCOUNT_SUSPENSION,t.data.user_suspension):ne(e,null)}).catch(t=>{t.message!=="canceled"&&ne(e,t)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.GET_FOLLOW_REQUESTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("follow-requests",{params:t}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_FOLLOW_REQUESTS,n.data.data.follow_requests),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),as.post(`/auth/${t.actionType}`,t.formData).then(n=>{if(n.data.status==="success")if(t.actionType==="login"){const a=n.data.auth_token;window.localStorage.setItem("authToken",a),e.commit(K.MUTATIONS.UPDATE_AUTH_TOKEN,a),e.dispatch(K.ACTIONS.GET_USER_PROFILE,!0).then(()=>lt.push(typeof t.redirectUrl=="string"?t.redirectUrl:"/"))}else lt.push("/login").then(()=>e.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0));else ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.LOGOUT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/logout").then(t=>{t.data.status==="success"?$r(e):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.APPEAL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n=t.actionType==="user_suspension"?"auth/account/suspension/appeal":`auth/account/sanctions/${t.actionId}/appeal`;Ne.post(n,{text:t.text}).then(a=>{a.data.status==="success"?e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0):ne(e,null)}).catch(a=>{a.message!=="canceled"&&ne(e,a)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_FOLLOW_REQUESTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post(`follow-requests/${t.username}/${t.action}`).then(n=>{n.data.status==="success"?t.getFollowRequests&&e.dispatch(K.ACTIONS.GET_FOLLOW_REQUESTS).then(()=>e.dispatch(K.ACTIONS.GET_USER_PROFILE)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.post("auth/profile/edit",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),lt.push("/profile")):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),Ne.patch("auth/profile/edit/account",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!0)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.post("auth/profile/edit/preferences",t).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(te.MUTATIONS.UPDATE_DISPLAY_OPTIONS,n.data.data),e.commit(te.MUTATIONS.UPDATE_DARK_MODE,n.data.data.use_dark_mode),e.dispatch(te.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then(()=>lt.push("/profile/preferences"))):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.delete(`auth/profile/reset/sports/${t.sportId}`).then(n=>{n.status===204?(e.dispatch(Ht.ACTIONS.GET_SPORTS),t.fromSport&<.push(`/profile/sports/${t.sportId}`)):ne(e,null)}).catch(n=>{ne(e,n),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)})},[K.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0);const{fromSport:n,...a}=t;Ne.post("auth/profile/edit/sports",a).then(s=>{s.data.status==="success"?(e.dispatch(Ht.ACTIONS.GET_SPORTS),n&<.push(`/profile/sports/${a.sport_id}`)):ne(e,null)}).catch(s=>{ne(e,s),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)})},[K.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),Ne.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then(a=>{a.data.status==="success"?e.dispatch(K.ACTIONS.GET_USER_PROFILE).then(()=>lt.push("/profile")):ne(e,null)}).catch(a=>ne(e,a)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.DELETE_ACCOUNT](e,t){wO(e,t)},[K.ACTIONS.DELETE_PICTURE](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.delete("auth/picture").then(t=>{t.status===204?e.dispatch(K.ACTIONS.GET_USER_PROFILE).then(()=>lt.push("/profile")):ne(e,null)}).catch(t=>ne(e,t)).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/password/reset-request",t).then(n=>{n.data.status==="success"?lt.push("/password-reset/sent"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/account/resend-confirmation",t).then(n=>{n.data.status==="success"?lt.push("/account-confirmation/email-sent"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),as.post("auth/password/update",t).then(n=>{n.data.status==="success"?lt.push("/password-reset/password-updated"):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.ACCEPT_PRIVACY_POLICY](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/account/privacy-policy",{accepted_policy:t}).then(n=>{n.data.status==="success"?e.dispatch(K.ACTIONS.GET_USER_PROFILE).then(()=>lt.push("/profile")):ne(e,null)}).catch(n=>ne(e,n))},[K.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("auth/account/export/request").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_EXPORT_REQUEST,t.data.request):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("auth/account/export").then(t=>{t.data.status==="success"?e.commit(K.MUTATIONS.SET_EXPORT_REQUEST,t.data.request):ne(e,null)}).catch(t=>ne(e,t))},[K.ACTIONS.GET_BLOCKED_USERS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get("auth/blocked-users",{params:t}).then(n=>{n.data.status==="success"?(e.commit(K.MUTATIONS.UPDATE_BLOCKED_USERS,n.data.blocked_users),e.commit(ce.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))},[K.ACTIONS.GET_USER_SANCTION](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!0),Ne.get(`auth/account/sanctions/${t}`).then(n=>{n.data.status==="success"?e.commit(K.MUTATIONS.SET_USER_SANCTION,n.data.sanction):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)}).finally(()=>e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1))}},Uet={[K.GETTERS.AUTH_TOKEN]:e=>e.authToken,[K.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[K.GETTERS.BLOCKED_USERS]:e=>e.blockedUsers,[K.GETTERS.FOLLOW_REQUESTS]:e=>e.followRequests,[K.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[K.GETTERS.IS_AUTHENTICATED]:e=>e.authToken!==null,[K.GETTERS.HAS_ADMIN_RIGHTS]:e=>e.authUserProfile&&["admin","owner"].includes(e.authUserProfile.role),[K.GETTERS.HAS_MODERATOR_RIGHTS]:e=>e.authUserProfile&&["admin","moderator","owner"].includes(e.authUserProfile.role),[K.GETTERS.HAS_OWNER_RIGHTS]:e=>e.authUserProfile&&e.authUserProfile.role==="owner",[K.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[K.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[K.GETTERS.IS_SUSPENDED]:e=>e.authUserProfile&&e.authUserProfile.suspended_at!==null,[K.GETTERS.IS_PROFILE_LOADED]:e=>{var t;return((t=e.authUserProfile)==null?void 0:t.username)!==void 0},[K.GETTERS.USER_LOADING]:e=>e.loading,[K.GETTERS.IS_PROFILE_NOT_LOADED]:e=>e.authUserProfile.username===void 0,[K.GETTERS.ACCOUNT_SUSPENSION]:e=>e.userReportAction,[K.GETTERS.USER_SANCTION]:e=>e.userReportAction},ket={[K.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[K.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[K.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[K.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[K.MUTATIONS.UPDATE_FOLLOW_REQUESTS](e,t){e.followRequests=t},[K.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t},[K.MUTATIONS.SET_EXPORT_REQUEST](e,t){e.exportRequest=t},[K.MUTATIONS.UPDATE_BLOCKED_USERS](e,t){e.blockedUsers=t},[K.MUTATIONS.SET_ACCOUNT_SUSPENSION](e,t){e.userReportAction=t},[K.MUTATIONS.SET_USER_SANCTION](e,t){e.userReportAction=t}},wet={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null,followRequests:[],blockedUsers:[],userReportAction:{}},Met={state:wet,actions:$et,getters:Uet,mutations:ket},Wet={[xe.ACTIONS.ADD_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("equipments",{description:t.description,equipment_type_id:t.equipmentTypeId,label:t.label,default_for_sport_ids:t.defaultForSportIds}).then(n=>{if(n.data.status==="created"){if(n.data.data.equipments.length>0){const a=n.data.data.equipments[0];e.commit(xe.MUTATIONS.ADD_EQUIPMENT,a),lt.push(`/profile/equipments/${a.id}`)}e.dispatch(Ht.ACTIONS.GET_SPORTS),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)}else ne(e,null)}).catch(n=>ne(e,n))},[xe.ACTIONS.DELETE_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`equipments/${t.id}${t.force?"?force":""}`).then(()=>{e.commit(xe.MUTATIONS.REMOVE_EQUIPMENT,t.id),e.dispatch(Ht.ACTIONS.GET_SPORTS),lt.push("/profile/equipments")}).catch(n=>ne(e,n))},[xe.ACTIONS.GET_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`equipments/${t}`).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]):ne(e,null)}).catch(n=>ne(e,n))},[xe.ACTIONS.GET_EQUIPMENTS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("equipments").then(t=>{t.data.status==="success"?e.commit(xe.MUTATIONS.SET_EQUIPMENTS,t.data.data.equipments):ne(e,null)}).catch(t=>ne(e,t))},[xe.ACTIONS.GET_EQUIPMENT_TYPES](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("equipment-types").then(t=>{t.data.status==="success"?(e.commit(xe.MUTATIONS.SET_EQUIPMENT_TYPES,t.data.data.equipment_types),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)):ne(e,null)}).catch(t=>ne(e,t))},[xe.ACTIONS.REFRESH_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.post(`equipments/${t}/refresh`).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&(e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]),lt.push(`/profile/equipments/${t}`)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))},[xe.ACTIONS.UPDATE_EQUIPMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.patch(`equipments/${t.id}`,{description:t.description,equipment_type_id:t.equipmentTypeId,is_active:t.isActive,label:t.label,default_for_sport_ids:t.defaultForSportIds}).then(n=>{n.data.status==="success"?n.data.data.equipments.length>0&&(e.commit(xe.MUTATIONS.UPDATE_EQUIPMENT,n.data.data.equipments[0]),e.dispatch(Ht.ACTIONS.GET_SPORTS),lt.push(`/profile/equipments/${t.id}`)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))},[xe.ACTIONS.UPDATE_EQUIPMENT_TYPE](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(xe.MUTATIONS.SET_LOADING,!0),Ne.patch(`equipment-types/${t.id}`,{is_active:t.isActive}).then(n=>{n.data.status==="success"?e.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(xe.MUTATIONS.SET_LOADING,!1))}},Fet={[xe.GETTERS.EQUIPMENTS]:e=>e.equipments,[xe.GETTERS.EQUIPMENT_TYPES]:e=>e.equipmentTypes,[xe.GETTERS.LOADING]:e=>e.loading},zet={[xe.MUTATIONS.ADD_EQUIPMENT](e,t){e.equipments.push(t)},[xe.MUTATIONS.REMOVE_EQUIPMENT](e,t){e.equipments=e.equipments.filter(n=>n.id!=t)},[xe.MUTATIONS.SET_EQUIPMENTS](e,t){e.equipments=t},[xe.MUTATIONS.SET_EQUIPMENT_TYPES](e,t){e.equipmentTypes=t},[xe.MUTATIONS.SET_LOADING](e,t){e.loading=t},[xe.MUTATIONS.UPDATE_EQUIPMENT](e,t){const n=e.equipments.findIndex(a=>a.id===t.id);n!==-1&&(e.equipments[n]=t)}},xet={equipments:[],equipmentTypes:[],loading:!1},Bet={state:xet,actions:Wet,getters:Fet,mutations:zet},Get={[Et.ACTIONS.GET_UNREAD_STATUS](e){Ne.get("notifications/unread").then(t=>{t.data.status==="success"&&e.commit(Et.MUTATIONS.UPDATE_UNREAD_STATUS,t.data.unread)}).catch(t=>ne(e,t))},[Et.ACTIONS.GET_NOTIFICATION_TYPES](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("notifications/types",{params:t}).then(n=>{n.data.status==="success"?e.commit(Et.MUTATIONS.UPDATE_TYPES,n.data.notification_types):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})},[Et.ACTIONS.GET_NOTIFICATIONS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("notifications",{params:t}).then(n=>{n.data.status==="success"?(e.commit(Et.MUTATIONS.UPDATE_NOTIFICATIONS,n.data.notifications),e.commit(Et.MUTATIONS.UPDATE_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})},[Et.ACTIONS.MARK_ALL_AS_READ](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n={};t.type&&(n.type=t.type),Ne.post("notifications/mark-all-as-read",n).then(a=>{a.data.status==="success"?(e.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,t),e.dispatch(Et.ACTIONS.GET_UNREAD_STATUS)):ne(e,null)}).catch(a=>{a.message!=="canceled"&&ne(e,a)})},[Et.ACTIONS.UPDATE_STATUS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch(`notifications/${t.notificationId}`,{read_status:t.markedAsRead}).then(n=>{n.data.status==="success"?(e.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,t.currentQuery),e.dispatch(Et.ACTIONS.GET_UNREAD_STATUS)):ne(e,null)}).catch(n=>{n.message!=="canceled"&&ne(e,n)})}},Vet={[Et.GETTERS.NOTIFICATIONS]:e=>e.notifications,[Et.GETTERS.PAGINATION]:e=>e.pagination,[Et.GETTERS.TYPES]:e=>e.types,[Et.GETTERS.UNREAD_STATUS]:e=>e.unread},Het={[Et.MUTATIONS.UPDATE_NOTIFICATIONS](e,t){e.notifications=t},[Et.MUTATIONS.UPDATE_PAGINATION](e,t){e.pagination=t},[Et.MUTATIONS.UPDATE_TYPES](e,t){e.types=t},[Et.MUTATIONS.UPDATE_UNREAD_STATUS](e,t){e.unread=t},[Et.MUTATIONS.EMPTY_NOTIFICATIONS](e){e.notifications=[],e.pagination={}}},Ket={notifications:[],unread:!1,pagination:{},types:[]},qet={state:Ket,actions:Get,getters:Vet,mutations:Het},Ah=(e,t)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(t).then(n=>{n.data.status==="success"?e.commit(st.MUTATIONS.SET_CLIENT,n.data.data.client):ne(e,null)}).catch(n=>ne(e,n))},jet={[st.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),Ne.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then(a=>{a.status==200&&a.data.redirect_url?window.location.href=a.data.redirect_url:ne(e,null)}).catch(a=>ne(e,a))},[st.ACTIONS.CREATE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post("oauth/apps",t).then(n=>{n.data.status==="created"?(e.commit(st.MUTATIONS.SET_CLIENT,n.data.data.client),lt.push(`/profile/apps/${n.data.data.client.id}/created`)):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.DELETE_CLIENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.delete(`oauth/apps/${t}`).then(n=>{n.status===204?e.dispatch(st.ACTIONS.GET_CLIENTS).then(()=>lt.push("/profile/apps")):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){Ah(e,`oauth/apps/${t}`)},[st.ACTIONS.GET_CLIENT_BY_ID](e,t){Ah(e,`oauth/apps/${t}/by_id`)},[st.ACTIONS.GET_CLIENTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("oauth/apps",{params:t}).then(n=>{n.data.status==="success"?(e.commit(st.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(st.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n))},[st.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),Ne.post(`oauth/apps/${t}/revoke`).then(n=>{n.data.status==="success"?e.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):ne(e,null)}).catch(n=>ne(e,n))}},Yet={[st.GETTERS.CLIENT]:e=>e.client,[st.GETTERS.CLIENTS]:e=>e.clients,[st.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[st.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},Xet={[st.MUTATIONS.SET_CLIENT](e,t){e.client=t},[st.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[st.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[st.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[st.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},Qet={client:{},clients:[],pagination:{},revocationSuccessful:!1},Zet={state:Qet,actions:jet,getters:Yet,mutations:Xet},Jet={[De.ACTIONS.EMPTY_REPORTS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(De.MUTATIONS.EMPTY_REPORT),e.commit(De.MUTATIONS.SET_REPORTS,[]),e.commit(De.MUTATIONS.SET_REPORTS_PAGINATION,{})},[De.ACTIONS.GET_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(De.MUTATIONS[`SET_${t.loader}_LOADING`],!0),Ne.get(`reports/${t.reportId}`).then(n=>{n.data.status==="success"?e.commit(De.MUTATIONS.SET_REPORT,n.data.report):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(De.MUTATIONS[`SET_${t.loader}_LOADING`],!1))},[De.ACTIONS.GET_REPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("reports",{params:t}).then(n=>{n.data.status==="success"?(e.commit(De.MUTATIONS.SET_REPORTS,n.data.reports),e.commit(De.MUTATIONS.SET_REPORTS_PAGINATION,n.data.pagination)):ne(e,null)}).catch(n=>ne(e,n))},[De.ACTIONS.PROCESS_APPEAL](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const{appealId:n,reportId:a,...s}=t;Ne.patch(`appeals/${n}`,s).then(i=>{i.data.status==="success"?e.dispatch(De.ACTIONS.GET_REPORT,{reportId:a,loader:"REPORT_UPDATE"}):ne(e,null)}).catch(i=>{ne(e,i)})},[De.ACTIONS.SUBMIT_ADMIN_ACTION](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!1),e.commit(De.MUTATIONS.SET_REPORT_UPDATE_LOADING,!0);const{report_id:n,...a}=t;Ne.post(`reports/${n}/actions`,a).then(s=>{s.data.status==="success"?(e.commit(De.MUTATIONS.SET_REPORT,s.data.report),e.commit(ce.MUTATIONS.UPDATE_IS_SUCCESS,!0)):ne(e,null)}).catch(s=>{ne(e,s)}).finally(()=>e.commit(De.MUTATIONS.SET_REPORT_UPDATE_LOADING,!1))},[De.ACTIONS.SUBMIT_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(De.MUTATIONS.SET_REPORT_STATUS,"loading"),Ne.post("reports",t).then(n=>{n.data.status==="created"?(e.commit(De.MUTATIONS.SET_REPORT_STATUS,`${t.object_type}-${t.object_id}-created`),t.object_type==="comment"&&e.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}),t.object_type==="workout"&&e.commit(J.MUTATIONS.SET_CURRENT_REPORTING,!1),t.object_type==="user"&&e.commit(ce.MUTATIONS.UPDATE_USER_CURRENT_REPORTING,!1)):(e.commit(De.MUTATIONS.SET_REPORT_STATUS,null),ne(e,null))}).catch(n=>{ne(e,n),e.commit(De.MUTATIONS.SET_REPORT_STATUS,null)})},[De.ACTIONS.UPDATE_REPORT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(De.MUTATIONS.SET_REPORT_UPDATE_LOADING,!0);const{reportId:n,...a}=t;Ne.patch(`reports/${n}`,a).then(s=>{s.data.status==="success"?e.commit(De.MUTATIONS.SET_REPORT,s.data.report):(e.commit(De.MUTATIONS.SET_REPORT_STATUS,null),ne(e,null))}).catch(s=>{ne(e,s),e.commit(De.MUTATIONS.SET_REPORT_STATUS,null)}).finally(()=>e.commit(De.MUTATIONS.SET_REPORT_UPDATE_LOADING,!1))},[De.ACTIONS.GET_UNRESOLVED_REPORTS_STATUS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("reports/unresolved").then(t=>{t.data.status==="success"?e.commit(De.MUTATIONS.SET_UNRESOLVED_REPORTS_STATUS,t.data.unresolved):ne(e,null)}).catch(t=>ne(e,t))}},ett={[De.GETTERS.UNRESOLVED_REPORTS_STATUS]:e=>e.unresolved,[De.GETTERS.REPORT]:e=>e.report,[De.GETTERS.REPORT_LOADING]:e=>e.reportLoading,[De.GETTERS.REPORT_STATUS]:e=>e.reportStatus,[De.GETTERS.REPORT_UPDATE_LOADING]:e=>e.reportUpdateLoading,[De.GETTERS.REPORTS]:e=>e.reports,[De.GETTERS.REPORTS_PAGINATION]:e=>e.pagination},ttt={[De.MUTATIONS.EMPTY_REPORT](e){e.report={}},[De.MUTATIONS.SET_REPORT](e,t){e.report=t},[De.MUTATIONS.SET_REPORT_LOADING](e,t){e.reportLoading=t},[De.MUTATIONS.SET_REPORT_STATUS](e,t){e.reportStatus=t},[De.MUTATIONS.SET_REPORT_UPDATE_LOADING](e,t){e.reportUpdateLoading=t},[De.MUTATIONS.SET_REPORTS](e,t){e.reports=t},[De.MUTATIONS.SET_REPORTS_PAGINATION](e,t){e.pagination=t},[De.MUTATIONS.SET_UNRESOLVED_REPORTS_STATUS](e,t){e.unresolved=t}},ntt={unresolved:!1,report:{},reports:[],pagination:{},reportStatus:null,reportLoading:!1,reportUpdateLoading:!1},att={state:ntt,actions:Jet,getters:ett,mutations:ttt},{locale:stt}=$i.global,itt={[te.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(te.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),Ne.get("config").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):ne(e,null)}).catch(t=>ne(e,t)).finally(()=>e.commit(te.MUTATIONS.UPDATE_APPLICATION_LOADING,!1))},[te.ACTIONS.GET_APPLICATION_STATS](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("stats/all").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):ne(e,null)}).catch(t=>ne(e,t))},[te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get("config").then(t=>{t.data.status==="success"?e.commit(te.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,t.data.data):ne(e,null)}).catch(t=>ne(e,t))},[te.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch("config",t).then(n=>{n.data.status==="success"?(e.commit(te.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),lt.push("/admin/application")):ne(e,null)}).catch(n=>ne(e,n))},[te.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){var n;(n=document.querySelector("html"))==null||n.setAttribute("lang",t),e.commit(te.MUTATIONS.UPDATE_LANG,t),stt.value=t}},ott={[te.GETTERS.APP_CONFIG]:e=>e.application.config,[te.GETTERS.APP_LOADING]:e=>e.appLoading,[te.GETTERS.APP_STATS]:e=>e.application.statistics,[te.GETTERS.DARK_MODE]:e=>e.darkMode,[te.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[te.GETTERS.LANGUAGE]:e=>e.language,[te.GETTERS.LOCALE]:e=>e.locale,[te.GETTERS.DISPLAY_OPTIONS]:e=>e.application.displayOptions},rtt={[te.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[te.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[te.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[te.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[te.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,t){e.application.config.privacy_policy=t.privacy_policy,e.application.config.privacy_policy_date=t.privacy_policy_date},[te.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[te.MUTATIONS.UPDATE_LANG](e,t){t in zs?(e.language=t,e.locale=zs[t]):(e.language="en",e.locale=or)},[te.MUTATIONS.UPDATE_DARK_MODE](e,t){e.darkMode=t},[te.MUTATIONS.UPDATE_DISPLAY_OPTIONS](e,t){e.application.displayOptions={...e.application.displayOptions,dateFormat:t.date_format,displayAscent:t.display_ascent,timezone:t.timezone,useImperialUnits:t.imperial_units}}},utt={root:!0,language:"en",locale:or,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0},displayOptions:{dateFormat:"MM/dd/yyyy",displayAscent:!0,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris",useImperialUnits:!1}},appLoading:!1,darkMode:null},ltt={[Ht.ACTIONS.GET_SPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`sports${t?"?check_workouts=true":""}`).then(n=>{n.data.status==="success"?(e.commit(Ht.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(K.MUTATIONS.UPDATE_USER_LOADING,!1)):ne(e,null)}).catch(n=>ne(e,n))},[Ht.ACTIONS.UPDATE_SPORTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.patch(`sports/${t.id}`,{is_active:t.isActive}).then(n=>{n.data.status==="success"?e.dispatch(Ht.ACTIONS.GET_SPORTS):ne(e,null)}).catch(n=>ne(e,n))}},ctt={[Ht.GETTERS.SPORTS]:e=>e.sports},dtt={[Ht.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},Ett={sports:[]},ptt={state:Ett,actions:ltt,getters:ctt,mutations:dtt},Ttt={[Mt.ACTIONS.GET_USER_STATS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`stats/${t.username}/by_time`,{params:t.params}).then(n=>{n.data.status==="success"?e.commit(Mt.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):ne(e,null)}).catch(n=>ne(e,n))},[Mt.ACTIONS.GET_USER_SPORT_STATS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(Mt.MUTATIONS.UPDATE_STATS_LOADING,!0),Ne.get(`stats/${t.username}/by_sport`,{params:{sport_id:t.sportId}}).then(n=>{n.data.status==="success"?(e.commit(Mt.MUTATIONS.UPDATE_USER_SPORT_STATS,n.data.data.statistics),e.commit(Mt.MUTATIONS.UPDATE_TOTAL_WORKOUTS,n.data.data.total_workouts)):ne(e,null)}).catch(n=>ne(e,n)).finally(()=>e.commit(Mt.MUTATIONS.UPDATE_STATS_LOADING,!1))}},mtt={[Mt.GETTERS.USER_SPORT_STATS]:e=>e.sportStatistics,[Mt.GETTERS.USER_STATS]:e=>e.statistics,[Mt.GETTERS.STATS_LOADING]:e=>e.loading,[Mt.GETTERS.TOTAL_WORKOUTS]:e=>e.totalWorkouts},_tt={[Mt.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[Mt.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}},[Mt.MUTATIONS.EMPTY_USER_SPORT_STATS](e){e.sportStatistics={},e.totalWorkouts=0},[Mt.MUTATIONS.UPDATE_USER_SPORT_STATS](e,t){e.sportStatistics=t},[Mt.MUTATIONS.UPDATE_STATS_LOADING](e,t){e.loading=t},[Mt.MUTATIONS.UPDATE_TOTAL_WORKOUTS](e,t){e.totalWorkouts=t}},ftt={statistics:{},sportStatistics:{},totalWorkouts:0,loading:!1},htt={state:ftt,actions:Ttt,getters:mtt,mutations:_tt},Stt={[ce.GETTERS.USER]:e=>e.user,[ce.GETTERS.USER_CURRENT_REPORTING]:e=>e.currentReporting,[ce.GETTERS.USER_RELATIONSHIPS]:e=>e.user_relationships,[ce.GETTERS.USER_SANCTIONS]:e=>e.userSanctions.sanctions,[ce.GETTERS.USER_SANCTIONS_LOADING]:e=>e.userSanctions.loading,[ce.GETTERS.USER_SANCTIONS_PAGINATION]:e=>e.userSanctions.pagination,[ce.GETTERS.USER_WORKOUTS]:e=>e.userWorkouts.workouts,[ce.GETTERS.USER_WORKOUTS_LOADING]:e=>e.userWorkouts.loading,[ce.GETTERS.USERS]:e=>e.users,[ce.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[ce.GETTERS.USERS_LOADING]:e=>e.loading,[ce.GETTERS.USERS_PAGINATION]:e=>e.pagination},Att={[ce.MUTATIONS.UPDATE_USER](e,t){e.user=t},[ce.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map(n=>n.username===t.username?t:n)},[ce.MUTATIONS.UPDATE_USER_IN_RELATIONSHIPS](e,t){e.user_relationships=e.user_relationships.map(n=>n.username===t.username?t:n)},[ce.MUTATIONS.UPDATE_USER_RELATIONSHIPS](e,t){e.user_relationships=t},[ce.MUTATIONS.UPDATE_USER_SANCTIONS](e,t){e.userSanctions.sanctions=t},[ce.MUTATIONS.UPDATE_USER_SANCTIONS_LOADING](e,t){e.userSanctions.loading=t},[ce.MUTATIONS.UPDATE_USER_SANCTIONS_PAGINATION](e,t){e.userSanctions.pagination=t},[ce.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[ce.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[ce.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[ce.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[ce.MUTATIONS.UPDATE_USER_CURRENT_REPORTING](e,t){e.currentReporting=t},[ce.MUTATIONS.UPDATE_USER_WORKOUTS](e,t){e.userWorkouts.workouts=t},[ce.MUTATIONS.UPDATE_USER_WORKOUTS_LOADING](e,t){e.userWorkouts.loading=t}},Ott={user:{},userSanctions:{sanctions:[],loading:!1,pagination:{}},userWorkouts:{workouts:[],loading:!1},user_relationships:[],users:[],loading:!1,isSuccess:!1,pagination:{},currentReporting:!1},Itt={state:Ott,actions:yet,getters:Stt,mutations:Att},Ur=(e,t,n)=>{e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(n.match("TIMELINE")?"timeline":"workouts",{params:t}).then(a=>{a.data.status==="success"?(e.commit(J.MUTATIONS[n],a.data.data.workouts),[Ma.SET_USER_WORKOUTS,Ma.SET_TIMELINE_WORKOUTS,Ma.ADD_TIMELINE_WORKOUTS].includes(n)&&e.commit(J.MUTATIONS.SET_WORKOUTS_PAGINATION,a.data.pagination)):ne(e,null)}).catch(a=>ne(e,a))},MO=(e,t,n)=>{n?e.dispatch(J.ACTIONS.GET_WORKOUT_COMMENTS,n):e.dispatch(J.ACTIONS.GET_WORKOUT_COMMENT,t)},Oh=(e,t,n=!1)=>{Ne.post(`comments/${t.id}/like${n?"/undo":""}`).then(a=>{a.data.status==="success"&&MO(e,t.id,t.workout_id)}).catch(a=>{ne(e,a)})},Ih=(e,t,n=!1)=>{Ne.post(`workouts/${t}/like${n?"/undo":""}`).then(a=>{a.data.status==="success"&&e.commit(J.MUTATIONS.SET_WORKOUT,a.data.data.workouts[0])}).catch(a=>{ne(e,a)})},gtt={[J.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(J.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),Ur(e,t,Ma.SET_CALENDAR_WORKOUTS)},[J.ACTIONS.GET_AUTH_USER_WORKOUTS](e,t){Ur(e,t,Ma.SET_USER_WORKOUTS)},[J.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){Ur(e,t,Ma.SET_TIMELINE_WORKOUTS)},[J.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){Ur(e,t,Ma.ADD_TIMELINE_WORKOUTS)},[J.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";Ne.get(`workouts/${t.workoutId}`).then(a=>{const s=a.data.data.workouts[0];if(a.data.status==="success"){if(t.segmentId&&(s.segments.length===0||!s.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(J.MUTATIONS.SET_WORKOUT,a.data.data.workouts[0]),a.data.data.workouts[0].with_analysis&&Ne.get(`workouts/${t.workoutId}/chart_data${n}`).then(i=>{i.data.status==="success"&&e.commit(J.MUTATIONS.SET_WORKOUT_CHART_DATA,i.data.data.chart_data)}),a.data.data.workouts[0].with_gpx&&Ne.get(`workouts/${t.workoutId}/gpx${n}`).then(i=>{i.data.status==="success"&&e.commit(J.MUTATIONS.SET_WORKOUT_GPX,i.data.data.gpx)}),t.segmentId||e.dispatch(J.ACTIONS.GET_WORKOUT_COMMENTS,a.data.data.workouts[0].id)}else e.commit(J.MUTATIONS.EMPTY_WORKOUT),ne(e,null)}).catch(a=>{e.commit(J.MUTATIONS.EMPTY_WORKOUT),ne(e,a)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!1))},[J.ACTIONS.DELETE_WORKOUT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.delete(`workouts/${t.workoutId}`).then(()=>{e.commit(J.MUTATIONS.EMPTY_WORKOUT),e.dispatch(K.ACTIONS.GET_USER_PROFILE),lt.push("/")}).catch(n=>{ne(e,n)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!1))},[J.ACTIONS.EDIT_WORKOUT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.patch(`workouts/${t.workoutId}`,t.data).then(()=>{e.dispatch(K.ACTIONS.GET_USER_PROFILE),e.dispatch(J.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then(()=>{lt.push({name:"Workout",params:{workoutId:t.workoutId}})})}).catch(n=>{ne(e,n)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!1))},[J.ACTIONS.EDIT_WORKOUT_CONTENT](e,t){e.commit(J.MUTATIONS.SET_WORKOUT_CONTENT_LOADING,!0),e.commit(J.MUTATIONS.SET_WORKOUT_CONTENT_TYPE,t.contentType),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES);const n={[t.contentType==="NOTES"?"notes":"description"]:t.content};Ne.patch(`workouts/${t.workoutId}`,n).then(a=>{const s=a.data.data.workouts[0];e.commit(J.MUTATIONS.SET_WORKOUT_CONTENT,s)}).catch(a=>{ne(e,a)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_CONTENT_LOADING,!1))},[J.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=t.notes.replace(/"/g,'\\"'),a=t.description.replace(/"/g,'\\"'),s=t.title.replace(/"/g,'\\"'),i=new FormData;i.append("file",t.file),i.append("data",`{"sport_id": ${t.sport_id}, "notes": "${n}", "description": "${a}", "title": "${s}", "equipment_ids": [${t.equipment_ids.map(o=>`"${o}"`).join(",")}], "workout_visibility": "${t.workout_visibility}", "map_visibility": "${t.map_visibility}"}`),Ne.post("workouts",i,{headers:{"content-type":"multipart/form-data"}}).then(o=>{if(o.data.status==="created"){e.dispatch(K.ACTIONS.GET_USER_PROFILE);const r=o.data.data.workouts[0];lt.push(o.data.data.workouts.length===1?`/workouts/${r.id}`:"/")}}).catch(o=>{ne(e,o)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!1))},[J.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!0),Ne.post("workouts/no_gpx",t).then(n=>{if(n.data.status==="created"){e.dispatch(K.ACTIONS.GET_USER_PROFILE);const a=n.data.data.workouts[0];lt.push(`/workouts/${a.id}`)}}).catch(n=>{ne(e,n)}).finally(()=>e.commit(J.MUTATIONS.SET_WORKOUT_LOADING,!1))},[J.ACTIONS.ADD_COMMENT](e,t){e.commit(J.MUTATIONS.SET_COMMENT_LOADING,"new");const n={text:t.text,text_visibility:t.text_visibility};e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.post(`/workouts/${t.workout_id}/comments`,n).then(a=>{a.data.status==="created"?(e.dispatch(J.ACTIONS.GET_WORKOUT_COMMENTS,t.workout_id),e.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})):ne(e,null)}).catch(a=>{ne(e,a),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null)})},[J.ACTIONS.GET_WORKOUT_COMMENT](e,t){e.commit(J.MUTATIONS.SET_COMMENT_LOADING,"loading"),e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`/comments/${t}`).then(n=>{n.data.status==="success"?(e.commit(J.MUTATIONS.SET_WORKOUT_COMMENTS,[n.data.comment]),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null)):ne(e,null)}).catch(n=>{ne(e,n)}).finally(()=>e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null))},[J.ACTIONS.GET_WORKOUT_COMMENTS](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),Ne.get(`/workouts/${t}/comments`).then(n=>{n.data.status==="success"?(e.commit(J.MUTATIONS.SET_WORKOUT_COMMENTS,n.data.data.comments),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null)):ne(e,null)}).catch(n=>{ne(e,n.status===500?null:n,"error when getting comments")}).finally(()=>e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null))},[J.ACTIONS.DELETE_WORKOUT_COMMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,"delete"),Ne.delete(`comments/${t.commentId}`).then(n=>{n.status===204&&(t.workoutId?e.dispatch(J.ACTIONS.GET_WORKOUT_COMMENTS,t.workoutId):lt.push("/"))}).catch(n=>{ne(e,n)})},[J.ACTIONS.EDIT_WORKOUT_COMMENT](e,t){e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,t.id),Ne.patch(`comments/${t.id}`,{text:t.text}).then(n=>{n.data.status==="success"&&(MO(e,t.id,t.workout_id),e.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{}))}).catch(n=>{ne(e,n),e.commit(J.MUTATIONS.SET_COMMENT_LOADING,null)})},[J.ACTIONS.LIKE_COMMENT](e,t){Oh(e,t)},[J.ACTIONS.UNDO_LIKE_COMMENT](e,t){Oh(e,t,!0)},[J.ACTIONS.LIKE_WORKOUT](e,t){Ih(e,t)},[J.ACTIONS.UNDO_LIKE_WORKOUT](e,t){Ih(e,t,!0)},[J.ACTIONS.MAKE_APPEAL](e,t){const n=`${t.objectType}_${t.objectId}`;e.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(J.MUTATIONS.SET_APPEAL_LOADING,n),e.commit(J.MUTATIONS.SET_SUCCESS,null),Ne.post(`${t.objectType}s/${t.objectId}/suspension/appeal`,{text:t.text}).then(a=>{a.data.status==="success"&&e.commit(J.MUTATIONS.SET_SUCCESS,n)}).catch(a=>{ne(e,a)}).finally(()=>e.commit(J.MUTATIONS.SET_APPEAL_LOADING,null))}},Rtt={[J.GETTERS.APPEAL_LOADING]:e=>e.appealLoading,[J.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[J.GETTERS.CURRENT_REPORTING]:e=>e.workoutData.currentReporting,[J.GETTERS.SUCCESS]:e=>e.success,[J.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[J.GETTERS.AUTH_USER_WORKOUTS]:e=>e.user_workouts,[J.GETTERS.WORKOUT_CONTENT_EDITION]:e=>e.workoutContent,[J.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[J.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},Ntt={[J.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[J.MUTATIONS.SET_APPEAL_LOADING](e,t){e.appealLoading=t},[J.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[J.MUTATIONS.SET_SUCCESS](e,t){e.success=t},[J.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[J.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[J.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[J.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[J.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[J.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[J.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[J.MUTATIONS.SET_WORKOUT_CONTENT](e,t){e.workoutData.workout=t},[J.MUTATIONS.SET_WORKOUT_CONTENT_LOADING](e,t){e.workoutContent.loading=t},[J.MUTATIONS.SET_WORKOUT_CONTENT_TYPE](e,t){e.workoutContent.contentType=t},[J.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[J.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[J.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[],comments:[],commentsLoading:null,currentCommentEdition:{},currentReporting:!1}},[J.MUTATIONS.SET_WORKOUT_COMMENTS](e,t){e.workoutData.comments=t},[J.MUTATIONS.ADD_WORKOUT_COMMENT](e,t){e.workoutData.comments.push(t)},[J.MUTATIONS.SET_COMMENT_LOADING](e,t){e.workoutData.commentsLoading=t},[J.MUTATIONS.SET_CURRENT_COMMENT_EDITION](e,t){e.workoutData.currentCommentEdition=t},[J.MUTATIONS.SET_CURRENT_REPORTING](e,t){e.workoutData.currentReporting=t}},vtt={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[],comments:[],commentsLoading:null,currentCommentEdition:{},currentReporting:!1},workoutContent:{loading:!1,contentType:""},success:null,appealLoading:null},btt={state:vtt,actions:gtt,getters:Rtt,mutations:Ntt},Ctt={authUserModule:Met,equipmentModule:Bet,notificationsModule:qet,oAuthModule:Zet,reportsModule:att,sportsModule:ptt,statsModule:htt,usersModule:Itt,workoutsModule:btt},Ptt={state:utt,actions:itt,getters:ott,mutations:rtt,modules:Ctt},kn=g2(Ptt),Ne=Gt.create({baseURL:nr()});Ne.interceptors.request.use(e=>{const t=new AbortController;e.signal=t.signal;const n=bi(e);Ro.set(n,t);const a=kn.getters[K.GETTERS.AUTH_TOKEN];if(a){const s=`Bearer ${a}`;e.headers&&e.headers.Authorization!==s&&(e.headers.Authorization=`Bearer ${a}`)}return e},e=>Promise.reject(e));Ne.interceptors.response.use(e=>(bi(e.config),e),e=>(e.message!=="canceled"&&e.response&&bi(e.response.config),Promise.reject(e)));const fE=(e,t)=>e.push.apply(e,t),Ci=e=>e.sort((t,n)=>t.i-n.i||t.j-n.j),gh=e=>{const t={};let n=1;return e.forEach(a=>{t[a]=n,n+=1}),t};var Dtt={4:[[1,2],[2,3]],5:[[1,3],[2,3],[2,4]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]};const Rh=2050,Nh=1e3,Ltt=Dtt,ytt=10,$tt=1e4,WO=10,FO=50,zO=20,xO=/^[A-Z\xbf-\xdf][^A-Z\xbf-\xdf]+$/,Utt=/^[^A-Z\xbf-\xdf]+[A-Z\xbf-\xdf]$/,ktt=/^[A-Z\xbf-\xdf]+$/,BO=/^[^a-z\xdf-\xff]+$/,wtt=/^[a-z\xdf-\xff]+$/,Mtt=/^[^A-Z\xbf-\xdf]+$/,Wtt=/[a-z\xdf-\xff]/,Ftt=/[A-Z\xbf-\xdf]/,ztt=/[^A-Za-z\xbf-\xdf]/gi,xtt=/^\d+$/,qp=new Date().getFullYear(),Btt={recentYear:/19\d\d|200\d|201\d|202\d/g},GO=[" ",",",";",":","|","/","\\","_",".","-"],Gtt=GO.length;class Vtt{match({password:t}){const n=[...this.getMatchesWithoutSeparator(t),...this.getMatchesWithSeparator(t)],a=this.filterNoise(n);return Ci(a)}getMatchesWithSeparator(t){const n=[],a=/^(\d{1,4})([\s/\\_.-])(\d{1,2})\2(\d{1,4})$/;for(let s=0;s<=Math.abs(t.length-6);s+=1)for(let i=s+5;i<=s+9&&!(i>=t.length);i+=1){const o=t.slice(s,+i+1||9e9),r=a.exec(o);if(r!=null){const u=this.mapIntegersToDayMonthYear([parseInt(r[1],10),parseInt(r[3],10),parseInt(r[4],10)]);u!=null&&n.push({pattern:"date",token:o,i:s,j:i,separator:r[2],year:u.year,month:u.month,day:u.day})}}return n}getMatchesWithoutSeparator(t){const n=[],a=/^\d{4,8}$/,s=i=>Math.abs(i.year-qp);for(let i=0;i<=Math.abs(t.length-4);i+=1)for(let o=i+3;o<=i+7&&!(o>=t.length);o+=1){const r=t.slice(i,+o+1||9e9);if(a.exec(r)){const u=[],l=r.length;if(Ltt[l].forEach(([E,c])=>{const T=this.mapIntegersToDayMonthYear([parseInt(r.slice(0,E),10),parseInt(r.slice(E,c),10),parseInt(r.slice(c),10)]);T!=null&&u.push(T)}),u.length>0){let E=u[0],c=s(u[0]);u.slice(1).forEach(T=>{const _=s(T);_{let a=!1;const s=t.length;for(let i=0;i=n.j){a=!0;break}}return!a})}mapIntegersToDayMonthYear(t){if(t[1]>31||t[1]<=0)return null;let n=0,a=0,s=0;for(let i=0,o=t.length;i99&&rRh)return null;r>31&&(a+=1),r>12&&(n+=1),r<=0&&(s+=1)}return a>=2||n===3||s>=2?null:this.getDayMonth(t)}getDayMonth(t){const n=[[t[2],t.slice(0,2)],[t[0],t.slice(1,3)]],a=n.length;for(let s=0;s=1&&i<=31&&o>=1&&o<=12)return{day:i,month:o}}return null}twoToFourDigitYear(t){return t>99?t:t>50?t+1900:t+2e3}}const ya=new Uint32Array(65536),Htt=(e,t)=>{const n=e.length,a=t.length,s=1<{const n=t.length,a=e.length,s=[],i=[],o=Math.ceil(n/32),r=Math.ceil(a/32);for(let _=0;_>>R&1,N=s[R/32|0]>>>R&1,b=g|_,C=((g|N)&f)+f^f|g|N;let y=_|~(C|f),D=f&C;y>>>31^I&&(i[R/32|0]^=1<>>31^N&&(s[R/32|0]^=1<>>_&1,A=s[_/32|0]>>>_&1,R=f|l,g=((f|A)&d)+d^d|f|A;let I=l|~(g|d),N=d&g;T+=I>>>a-1&1,T-=N>>>a-1&1,I>>>31^O&&(i[_/32|0]^=1<<_),N>>>31^A&&(s[_/32|0]^=1<<_),I=I<<1|O,N=N<<1|A,d=N|~(R|I),l=I&R}for(let _=E;_{if(e.length{const a=e.length<=t.length,s=e.length<=n;return a||s?Math.ceil(e.length/4):n},Ytt=(e,t,n)=>{let a=0;const s=Object.keys(t).find(i=>{const o=jtt(e,i,n);if(Math.abs(e.length-i.length)>o)return!1;const r=qtt(e,i),u=r<=o;return u&&(a=r),u});return s?{levenshteinDistance:a,levenshteinDistanceEntry:s}:{}};var vh={a:["4","@"],b:["8"],c:["(","{","[","<"],d:["6","|)"],e:["3"],f:["#"],g:["6","9","&"],h:["#","|-|"],i:["1","!","|"],k:["<","|<"],l:["!","1","|","7"],m:["^^","nn","2n","/\\\\/\\\\"],n:["//"],o:["0","()"],q:["9"],u:["|_|"],s:["$","5"],t:["+","7"],v:["<",">","/"],w:["^/","uu","vv","2u","2v","\\\\/\\\\/"],x:["%","><"],z:["2"]},ud={warnings:{straightRow:"straightRow",keyPattern:"keyPattern",simpleRepeat:"simpleRepeat",extendedRepeat:"extendedRepeat",sequences:"sequences",recentYears:"recentYears",dates:"dates",topTen:"topTen",topHundred:"topHundred",common:"common",similarToCommon:"similarToCommon",wordByItself:"wordByItself",namesByThemselves:"namesByThemselves",commonNames:"commonNames",userInputs:"userInputs",pwned:"pwned"},suggestions:{l33t:"l33t",reverseWords:"reverseWords",allUppercase:"allUppercase",capitalization:"capitalization",dates:"dates",recentYears:"recentYears",associatedYears:"associatedYears",sequences:"sequences",repeated:"repeated",longerKeyboardPattern:"longerKeyboardPattern",anotherWord:"anotherWord",useWords:"useWords",noNeed:"noNeed",pwned:"pwned"},timeEstimation:{ltSecond:"ltSecond",second:"second",seconds:"seconds",minute:"minute",minutes:"minutes",hour:"hour",hours:"hours",day:"day",days:"days",month:"month",months:"months",year:"year",years:"years",centuries:"centuries"}};class Ko{constructor(t=[]){this.parents=t,this.children=new Map}addSub(t,...n){const a=t.charAt(0);this.children.has(a)||this.children.set(a,new Ko([...this.parents,a]));let s=this.children.get(a);for(let i=1;i(Object.entries(e).forEach(([n,a])=>{a.forEach(s=>{t.addSub(s,n)})}),t);class Xtt{constructor(){this.matchers={},this.l33tTable=vh,this.trieNodeRoot=bh(vh,new Ko),this.dictionary={userInputs:[]},this.rankedDictionaries={},this.rankedDictionariesMaxWordSize={},this.translations=ud,this.graphs={},this.useLevenshteinDistance=!1,this.levenshteinThreshold=2,this.l33tMaxSubstitutions=100,this.maxLength=256,this.setRankedDictionaries()}setOptions(t={}){t.l33tTable&&(this.l33tTable=t.l33tTable,this.trieNodeRoot=bh(t.l33tTable,new Ko)),t.dictionary&&(this.dictionary=t.dictionary,this.setRankedDictionaries()),t.translations&&this.setTranslations(t.translations),t.graphs&&(this.graphs=t.graphs),t.useLevenshteinDistance!==void 0&&(this.useLevenshteinDistance=t.useLevenshteinDistance),t.levenshteinThreshold!==void 0&&(this.levenshteinThreshold=t.levenshteinThreshold),t.l33tMaxSubstitutions!==void 0&&(this.l33tMaxSubstitutions=t.l33tMaxSubstitutions),t.maxLength!==void 0&&(this.maxLength=t.maxLength)}setTranslations(t){if(this.checkCustomTranslations(t))this.translations=t;else throw new Error("Invalid translations object fallback to keys")}checkCustomTranslations(t){let n=!0;return Object.keys(ud).forEach(a=>{if(a in t){const s=a;Object.keys(ud[s]).forEach(i=>{i in t[s]||(n=!1)})}else n=!1}),n}setRankedDictionaries(){const t={},n={};Object.keys(this.dictionary).forEach(a=>{t[a]=gh(this.dictionary[a]),n[a]=this.getRankedDictionariesMaxWordSize(this.dictionary[a])}),this.rankedDictionaries=t,this.rankedDictionariesMaxWordSize=n}getRankedDictionariesMaxWordSize(t){const n=t.map(a=>typeof a!="string"?a.toString().length:a.length);return n.length===0?0:n.reduce((a,s)=>Math.max(a,s),-1/0)}buildSanitizedRankedDictionary(t){const n=[];return t.forEach(a=>{const s=typeof a;(s==="string"||s==="number"||s==="boolean")&&n.push(a.toString().toLowerCase())}),gh(n)}extendUserInputsDictionary(t){this.dictionary.userInputs||(this.dictionary.userInputs=[]);const n=[...this.dictionary.userInputs,...t];this.rankedDictionaries.userInputs=this.buildSanitizedRankedDictionary(n),this.rankedDictionariesMaxWordSize.userInputs=this.getRankedDictionariesMaxWordSize(n)}addMatcher(t,n){this.matchers[t]?console.info(`Matcher ${t} already exists`):this.matchers[t]=n}}const Ge=new Xtt;class Qtt{constructor(t){this.defaultMatch=t}match({password:t}){const n=t.split("").reverse().join("");return this.defaultMatch({password:n}).map(a=>({...a,token:a.token.split("").reverse().join(""),reversed:!0,i:t.length-1-a.j,j:t.length-1-a.i}))}}class Ztt{constructor({substr:t,limit:n,trieRoot:a}){this.buffer=[],this.finalPasswords=[],this.substr=t,this.limit=n,this.trieRoot=a}getAllPossibleSubsAtIndex(t){const n=[];let a=this.trieRoot;for(let s=t;s=this.limit)return;if(a===this.substr.length){t===n&&this.finalPasswords.push({password:this.buffer.join(""),changes:i});return}const u=[...this.getAllPossibleSubsAtIndex(a)];let l=!1;for(let d=a+u.length-1;d>=a;d-=1){const E=u[d-a];if(E.isTerminal()){if(o===E.parents.join("")&&r>=3)continue;l=!0;const c=E.subs;for(const T of c){this.buffer.push(T);const _=i.concat({i:s,letter:T,substitution:E.parents.join("")});if(this.helper({onlyFullSub:t,isFullSub:n,index:d+1,subIndex:s+T.length,changes:_,lastSubLetter:E.parents.join(""),consecutiveSubCount:o===E.parents.join("")?r+1:1}),this.buffer.pop(),this.finalPasswords.length>=this.limit)return}}}if(!t||!l){const d=this.substr.charAt(a);this.buffer.push(d),this.helper({onlyFullSub:t,isFullSub:n&&!l,index:a+1,subIndex:s+1,changes:i,lastSubLetter:o,consecutiveSubCount:r}),this.buffer.pop()}}getAll(){return this.helper({onlyFullSub:!0,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.helper({onlyFullSub:!1,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.finalPasswords}}const Jtt=(e,t,n)=>new Ztt({substr:e,limit:t,trieRoot:n}).getAll(),ent=(e,t,n)=>{const s=e.changes.filter(l=>l.il-d.letter.length+d.substitution.length,t),i=e.changes.filter(l=>l.i>=t&&l.i<=n),o=i.reduce((l,d)=>l-d.letter.length+d.substitution.length,n-t+s),r=[],u=[];return i.forEach(l=>{r.findIndex(E=>E.letter===l.letter&&E.substitution===l.substitution)<0&&(r.push({letter:l.letter,substitution:l.substitution}),u.push(`${l.substitution} -> ${l.letter}`))}),{i:s,j:o,subs:r,subDisplay:u.join(", ")}};class tnt{constructor(t){this.defaultMatch=t}isAlreadyIncluded(t,n){return t.some(a=>Object.entries(a).every(([s,i])=>s==="subs"||i===n[s]))}match({password:t}){const n=[],a=Jtt(t,Ge.l33tMaxSubstitutions,Ge.trieNodeRoot);let s=!1,i=!0;return a.forEach(o=>{if(s)return;const r=this.defaultMatch({password:o.password,useLevenshtein:i});i=!1,r.forEach(u=>{s||(s=u.i===0&&u.j===t.length-1);const l=ent(o,u.i,u.j),d=t.slice(l.i,+l.j+1||9e9),E={...u,l33t:!0,token:d,...l},c=this.isAlreadyIncluded(n,E);d.toLowerCase()!==u.matchedWord&&!c&&n.push(E)})}),n.filter(o=>o.token.length>1)}}class nnt{constructor(){this.l33t=new tnt(this.defaultMatch),this.reverse=new Qtt(this.defaultMatch)}match({password:t}){const n=[...this.defaultMatch({password:t}),...this.reverse.match({password:t}),...this.l33t.match({password:t})];return Ci(n)}defaultMatch({password:t,useLevenshtein:n=!0}){const a=[],s=t.length,i=t.toLowerCase();return Object.keys(Ge.rankedDictionaries).forEach(o=>{const r=Ge.rankedDictionaries[o],u=Ge.rankedDictionariesMaxWordSize[o],l=Math.min(u,s);for(let d=0;d{const i=n[s];i.lastIndex=0;let o;for(;o=i.exec(t);)if(o){const r=o[0];a.push({pattern:"regex",token:r,i:o.index,j:o.index+o[0].length-1,regexName:s,regexMatch:o})}}),Ci(a)}}var qs={nCk(e,t){let n=e;if(t>n)return 0;if(t===0)return 1;let a=1;for(let s=1;s<=t;s+=1)a*=n,a/=s,n-=1;return a},log10(e){return e===0?0:Math.log(e)/Math.log(10)},log2(e){return Math.log(e)/Math.log(2)},factorial(e){let t=1;for(let n=2;n<=e;n+=1)t*=n;return t}},snt=({token:e})=>{let t=ytt**e.length;t===Number.POSITIVE_INFINITY&&(t=Number.MAX_VALUE);let n;return e.length===1?n=WO+1:n=FO+1,Math.max(t,n)},int=({year:e,separator:t})=>{let a=Math.max(Math.abs(e-qp),zO)*365;return t&&(a*=4),a};const ont=e=>{const t=e.split(""),n=t.filter(o=>o.match(Ftt)).length,a=t.filter(o=>o.match(Wtt)).length;let s=0;const i=Math.min(n,a);for(let o=1;o<=i;o+=1)s+=qs.nCk(n+a,o);return s};var rnt=e=>{const t=e.replace(ztt,"");if(t.match(Mtt)||t.toLowerCase()===t)return 1;const n=[xO,Utt,BO],a=n.length;for(let s=0;s{let n=0,a=e.indexOf(t);for(;a>=0;)n+=1,a=e.indexOf(t,a+t.length);return n},unt=({sub:e,token:t})=>{const n=t.toLowerCase(),a=Ch(n,e.substitution),s=Ch(n,e.letter);return{subbedCount:a,unsubbedCount:s}};var lnt=({l33t:e,subs:t,token:n})=>{if(!e)return 1;let a=1;return t.forEach(s=>{const{subbedCount:i,unsubbedCount:o}=unt({sub:s,token:n});if(i===0||o===0)a*=2;else{const r=Math.min(o,i);let u=0;for(let l=1;l<=r;l+=1)u+=qs.nCk(o+i,l);a*=u}}),a},cnt=({rank:e,reversed:t,l33t:n,subs:a,token:s,dictionaryName:i})=>{const o=e,r=rnt(s),u=lnt({l33t:n,subs:a,token:s}),l=t&&2||1;let d;return i==="diceware"?d=6**5/2:d=o*r*u*l,{baseGuesses:o,uppercaseVariations:r,l33tVariations:u,calculation:d}},dnt=({regexName:e,regexMatch:t,token:n})=>{const a={alphaLower:26,alphaUpper:26,alpha:52,alphanumeric:62,digits:10,symbols:33};if(e in a)return a[e]**n.length;switch(e){case"recentYear":return Math.max(Math.abs(parseInt(t[0],10)-qp),zO)}return 0},Ent=({baseGuesses:e,repeatCount:t})=>e*t,pnt=({token:e,ascending:t})=>{const n=e.charAt(0);let a=0;return["a","A","z","Z","0","1","9"].includes(n)?a=4:n.match(/\d/)?a=10:a=26,t||(a*=2),a*e.length};const Tnt=e=>{let t=0;return Object.keys(e).forEach(n=>{const a=e[n];t+=a.filter(s=>!!s).length}),t/=Object.entries(e).length,t},mnt=({token:e,graph:t,turns:n})=>{const a=Object.keys(Ge.graphs[t]).length,s=Tnt(Ge.graphs[t]);let i=0;const o=e.length;for(let r=2;r<=o;r+=1){const u=Math.min(n,r-1);for(let l=1;l<=u;l+=1)i+=qs.nCk(r-1,l-1)*a*s**l}return i};var _nt=({graph:e,token:t,shiftedCount:n,turns:a})=>{let s=mnt({token:t,graph:e,turns:a});if(n){const i=t.length-n;if(n===0||i===0)s*=2;else{let o=0;for(let r=1;r<=Math.min(n,i);r+=1)o+=qs.nCk(n+i,r);s*=o}}return Math.round(s)},fnt=()=>Gtt;const hnt=(e,t)=>{let n=1;return e.token.lengthPh[e]?Ph[e](t):Ge.matchers[e]&&"scoring"in Ge.matchers[e]?Ge.matchers[e].scoring(t):0;var Ant=(e,t)=>{const n={};if("guesses"in e&&e.guesses!=null)return e;const a=hnt(e,t),s=Snt(e.pattern,e);let i=0;typeof s=="number"?i=s:e.pattern==="dictionary"&&(i=s.calculation,n.baseGuesses=s.baseGuesses,n.uppercaseVariations=s.uppercaseVariations,n.l33tVariations=s.l33tVariations);const o=Math.max(i,a);return{...e,...n,guesses:o,guessesLog10:qs.log10(o)}};const Un={password:"",optimal:{},excludeAdditive:!1,separatorRegex:void 0,fillArray(e,t){const n=[];for(let a=0;a1&&(s*=this.optimal.pi[a.i-1][t-1]);let i=qs.factorial(t)*s;this.excludeAdditive||(i+=$tt**(t-1));let o=!1;Object.keys(this.optimal.g[n]).forEach(r=>{const u=this.optimal.g[n][r];parseInt(r,10)<=t&&u<=i&&(o=!0)}),o||(this.optimal.g[n][t]=i,this.optimal.m[n][t]=a,this.optimal.pi[n][t]=s)},bruteforceUpdate(e){let t=this.makeBruteforceMatch(0,e);this.update(t,1);for(let n=1;n<=e;n+=1){t=this.makeBruteforceMatch(n,e);const a=this.optimal.m[n-1];Object.keys(a).forEach(s=>{a[s].pattern!=="bruteforce"&&this.update(t,parseInt(s,10)+1)})}},unwind(e){const t=[];let n=e-1,a=0,s=1/0;const i=this.optimal.g[n];for(i&&Object.keys(i).forEach(o=>{const r=i[o];r=0;){const o=this.optimal.m[n][a];t.unshift(o),n=o.i-1,a-=1}return t}};var hE={mostGuessableMatchSequence(e,t,n=!1){Un.password=e,Un.excludeAdditive=n;const a=e.length;let s=Un.fillArray(a,"array");t.forEach(u=>{s[u.j].push(u)}),s=s.map(u=>u.sort((l,d)=>l.i-d.i)),Un.optimal={m:Un.fillArray(a,"object"),pi:Un.fillArray(a,"object"),g:Un.fillArray(a,"object")};for(let u=0;u{l.i>0?Object.keys(Un.optimal.m[l.i-1]).forEach(d=>{Un.update(l,parseInt(d,10)+1)}):Un.update(l,1)}),Un.bruteforceUpdate(u);const i=Un.unwind(a),o=i.length,r=this.getGuesses(e,o);return{password:e,guesses:r,guessesLog10:qs.log10(r),sequence:i}},getGuesses(e,t){const n=e.length;let a=0;return e.length===0?a=1:a=Un.optimal.g[n-1][t],a}};class Ont{match({password:t,omniMatch:n}){const a=[];let s=0;for(;so instanceof Promise)?Promise.all(a):a}normalizeMatch(t,n,a,s){const i={pattern:"repeat",i:a.index,j:n,token:a[0],baseToken:t,baseGuesses:0,repeatCount:a[0].length/t.length};return s instanceof Promise?s.then(o=>({...i,baseGuesses:o})):{...i,baseGuesses:s}}getGreedyMatch(t,n){const a=/(.+)\1+/g;return a.lastIndex=n,a.exec(t)}getLazyMatch(t,n){const a=/(.+?)\1+/g;return a.lastIndex=n,a.exec(t)}setMatchToken(t,n){const a=/^(.+?)\1+$/;let s,i="";if(n&&t[0].length>n[0].length){s=t;const o=a.exec(s[0]);o&&(i=o[1])}else s=n,s&&(i=s[1]);return{match:s,baseToken:i}}getBaseGuesses(t,n){const a=n.match(t);return a instanceof Promise?a.then(i=>hE.mostGuessableMatchSequence(t,i).guesses):hE.mostGuessableMatchSequence(t,a).guesses}}class Int{constructor(){this.MAX_DELTA=5}match({password:t}){const n=[];if(t.length===1)return[];let a=0,s=null;const i=t.length;for(let o=1;o1||Math.abs(a)===1){const o=Math.abs(a);if(o>0&&o<=this.MAX_DELTA){const r=s.slice(t,+n+1||9e9),{sequenceName:u,sequenceSpace:l}=this.getSequence(r);return i.push({pattern:"sequence",i:t,j:n,token:s.slice(t,+n+1||9e9),sequenceName:u,sequenceSpace:l,ascending:a>0})}}return null}getSequence(t){let n="unicode",a=26;return wtt.test(t)?(n="lower",a=26):ktt.test(t)?(n="upper",a=26):xtt.test(t)&&(n="digits",a=10),{sequenceName:n,sequenceSpace:a}}}class gnt{constructor(){this.SHIFTED_RX=/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/}match({password:t}){const n=[];return Object.keys(Ge.graphs).forEach(a=>{const s=Ge.graphs[a];fE(n,this.helper(t,s,a))}),Ci(n)}checkIfShifted(t,n,a){return!t.includes("keypad")&&this.SHIFTED_RX.test(n.charAt(a))?1:0}helper(t,n,a){let s;const i=[];let o=0;const r=t.length;for(;o2&&i.push({pattern:"spatial",i:o,j:u-1,token:t.slice(o,u),graph:a,turns:d,shiftedCount:s}),o=u;break}}}return i}}const Rnt=new RegExp(`[${GO.join("")}]`);class Ju{static getMostUsedSeparatorChar(t){const n=[...t.split("").filter(s=>Rnt.test(s)).reduce((s,i)=>{const o=s.get(i);return o?s.set(i,o+1):s.set(i,1),s},new Map).entries()].sort(([s,i],[o,r])=>r-i);if(!n.length)return;const a=n[0];if(!(a[1]<2))return a[0]}static getSeparatorRegex(t){return new RegExp(`([^${t} -])(${t})(?!${t})`,"g")}match({password:t}){const n=[];if(t.length===0)return n;const a=Ju.getMostUsedSeparatorChar(t);if(a===void 0)return n;const s=Ju.getSeparatorRegex(a);for(const i of t.matchAll(s)){if(i.index===void 0)continue;const o=i.index+1;n.push({pattern:"separator",token:a,i:o,j:o})}return n}}class Nnt{constructor(){this.matchers={date:Vtt,dictionary:nnt,regex:ant,repeat:Ont,sequence:Int,spatial:gnt,separator:Ju}}match(t){const n=[],a=[];return[...Object.keys(this.matchers),...Object.keys(Ge.matchers)].forEach(i=>{if(!this.matchers[i]&&!Ge.matchers[i])return;const o=this.matchers[i]?this.matchers[i]:Ge.matchers[i].Matching,u=new o().match({password:t,omniMatch:this});u instanceof Promise?(u.then(l=>{fE(n,l)}),a.push(u)):fE(n,u)}),a.length>0?new Promise((i,o)=>{Promise.all(a).then(()=>{i(Ci(n))}).catch(r=>{o(r)})}):Ci(n)}}const VO=1,HO=VO*60,KO=HO*60,qO=KO*24,jO=qO*31,YO=jO*12,vnt=YO*100,ld={second:VO,minute:HO,hour:KO,day:qO,month:jO,year:YO,century:vnt};class bnt{translate(t,n){let a=t;n!==void 0&&n!==1&&(a+="s");const{timeEstimation:s}=Ge.translations;return s[a].replace("{base}",`${n}`)}estimateAttackTimes(t){const n={onlineThrottling100PerHour:t/.027777777777777776,onlineNoThrottling10PerSecond:t/10,offlineSlowHashing1e4PerSecond:t/1e4,offlineFastHashing1e10PerSecond:t/1e10},a={onlineThrottling100PerHour:"",onlineNoThrottling10PerSecond:"",offlineSlowHashing1e4PerSecond:"",offlineFastHashing1e10PerSecond:""};return Object.keys(n).forEach(s=>{const i=n[s];a[s]=this.displayTime(i)}),{crackTimesSeconds:n,crackTimesDisplay:a,score:this.guessesToScore(t)}}guessesToScore(t){return t<1005?0:t<1000005?1:t<100000005?2:t<1e10+5?3:4}displayTime(t){let n="centuries",a;const s=Object.keys(ld),i=s.findIndex(o=>t-1&&(n=s[i-1],i!==0?a=Math.round(t/ld[n]):n="ltSecond"),this.translate(n,a)}}var Cnt=()=>null,Pnt=()=>({warning:Ge.translations.warnings.dates,suggestions:[Ge.translations.suggestions.dates]});const Dnt=(e,t)=>{let n=null;return t&&!e.l33t&&!e.reversed?e.rank<=10?n=Ge.translations.warnings.topTen:e.rank<=100?n=Ge.translations.warnings.topHundred:n=Ge.translations.warnings.common:e.guessesLog10<=4&&(n=Ge.translations.warnings.similarToCommon),n},Lnt=(e,t)=>{let n=null;return t&&(n=Ge.translations.warnings.wordByItself),n},ynt=(e,t)=>t?Ge.translations.warnings.namesByThemselves:Ge.translations.warnings.commonNames,$nt=(e,t)=>{let n=null;const a=e.dictionaryName,s=a==="lastnames"||a.toLowerCase().includes("firstnames");return a==="passwords"?n=Dnt(e,t):a.includes("wikipedia")?n=Lnt(e,t):s?n=ynt(e,t):a==="userInputs"&&(n=Ge.translations.warnings.userInputs),n};var Unt=(e,t)=>{const n=$nt(e,t),a=[],s=e.token;return s.match(xO)?a.push(Ge.translations.suggestions.capitalization):s.match(BO)&&s.toLowerCase()!==s&&a.push(Ge.translations.suggestions.allUppercase),e.reversed&&e.token.length>=4&&a.push(Ge.translations.suggestions.reverseWords),e.l33t&&a.push(Ge.translations.suggestions.l33t),{warning:n,suggestions:a}},knt=e=>e.regexName==="recentYear"?{warning:Ge.translations.warnings.recentYears,suggestions:[Ge.translations.suggestions.recentYears,Ge.translations.suggestions.associatedYears]}:{warning:null,suggestions:[]},wnt=e=>{let t=Ge.translations.warnings.extendedRepeat;return e.baseToken.length===1&&(t=Ge.translations.warnings.simpleRepeat),{warning:t,suggestions:[Ge.translations.suggestions.repeated]}},Mnt=()=>({warning:Ge.translations.warnings.sequences,suggestions:[Ge.translations.suggestions.sequences]}),Wnt=e=>{let t=Ge.translations.warnings.keyPattern;return e.turns===1&&(t=Ge.translations.warnings.straightRow),{warning:t,suggestions:[Ge.translations.suggestions.longerKeyboardPattern]}},Fnt=()=>null;const Dh={warning:null,suggestions:[]};class znt{constructor(){this.matchers={bruteforce:Cnt,date:Pnt,dictionary:Unt,regex:knt,repeat:wnt,sequence:Mnt,spatial:Wnt,separator:Fnt},this.defaultFeedback={warning:null,suggestions:[]},this.setDefaultSuggestions()}setDefaultSuggestions(){this.defaultFeedback.suggestions.push(Ge.translations.suggestions.useWords,Ge.translations.suggestions.noNeed)}getFeedback(t,n){if(n.length===0)return this.defaultFeedback;if(t>2)return Dh;const a=Ge.translations.suggestions.anotherWord,s=this.getLongestMatch(n);let i=this.getMatchFeedback(s,n.length===1);return i!=null?i.suggestions.unshift(a):i={warning:null,suggestions:[a]},i}getLongestMatch(t){let n=t[0];return t.slice(1).forEach(s=>{s.token.length>n.token.length&&(n=s)}),n}getMatchFeedback(t,n){return this.matchers[t.pattern]?this.matchers[t.pattern](t,n):Ge.matchers[t.pattern]&&"feedback"in Ge.matchers[t.pattern]?Ge.matchers[t.pattern].feedback(t,n):Dh}}const XO=()=>new Date().getTime(),xnt=(e,t,n)=>{const a=new znt,s=new bnt,i=hE.mostGuessableMatchSequence(t,e),o=XO()-n,r=s.estimateAttackTimes(i.guesses);return{calcTime:o,...i,...r,feedback:a.getFeedback(r.score,i.sequence)}},Bnt=(e,t)=>new Nnt().match(e),Gnt=(e,t)=>{const n=XO(),a=Bnt(e);if(a instanceof Promise)throw new Error("You are using a Promised matcher, please use `zxcvbnAsync` for it.");return xnt(a,e,n)},Vnt="modulepreload",Hnt=function(e){return"/"+e},Lh={},xt=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),r=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.allSettled(n.map(u=>{if(u=Hnt(u),u in Lh)return;Lh[u]=!0;const l=u.endsWith(".css"),d=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const E=document.createElement("link");if(E.rel=l?"stylesheet":Vnt,l||(E.as="script"),E.crossOrigin="",E.href=u,r&&E.setAttribute("nonce",r),document.head.appendChild(E),l)return new Promise((c,T)=>{E.addEventListener("load",c),E.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(o){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=o,window.dispatchEvent(r),!r.defaultPrevented)throw o}return s.then(o=>{for(const r of o||[])r.status==="rejected"&&i(r.reason);return t().catch(i)})},Knt=async e=>{switch(e){case"fr":return await xt(()=>import("./password.fr-LQIeIoMk.js"),[]);case"de":return await xt(()=>import("./password.de-SDMVbHi1.js"),[]);case"it":return await xt(()=>import("./password.it-CReO5S7F.js"),[]);case"es":return await xt(()=>import("./password.es-es-DLU3Rh6X.js"),[]);case"pl":return await xt(()=>import("./password.pl-T3z7Kg0O.js"),[]);case"cs":return await xt(()=>import("./password.cs-CLn3Tyh5.js"),[]);default:return await xt(()=>import("./password.en-BDtqNyGO.js"),[])}},yh=async e=>{const t=await xt(()=>import("./password.common-bdamX4EN.js"),[]),n=await Knt(e),a={graphs:t.adjacencyGraphs,dictionary:{...t.dictionary,...n.dictionary}};Ge.setOptions(a)},qnt=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},jnt={class:"password-strength"},Ynt={for:"password-strength",class:"visually-hidden"},Xnt=["value"],Qnt={key:0,class:"password-strength-details"},Znt={class:"password-strength-value"},Jnt={key:0,class:"info-box"},eat={class:"password-feedback"},tat=X({__name:"PasswordStength",props:{password:{}},setup(e){const t=e,{password:n}=fe(t),a=Le(),{appLanguage:s}=qe(),i=z(()=>a.getters[K.GETTERS.IS_SUCCESS]),o=Ie(0),r=Ie(""),u=Ie([]),l=Ie("0% 100%");et(async()=>await yh(s.value));function d(E){const c=Gnt(E);o.value=c.score,r.value=qnt(o.value),u.value=c.feedback.suggestions,l.value=o.value*100/4+"% 100%"}return Ce(()=>s.value,async E=>{await yh(E)}),Ce(()=>n.value,async E=>{i.value?r.value="":d(E)}),(E,c)=>(h(),v("div",jnt,[p("label",Ynt,S(E.$t("user.PASSWORD_STRENGTH.LABEL")),1),p("input",{id:"password-strength",class:Ae(["password-slider",`strength-${o.value}`]),style:za({backgroundSize:l.value}),type:"range",value:o.value,min:"0",max:"4",step:"1",tabindex:-1,autocomplete:"off"},null,14,Xnt),r.value?(h(),v("div",Qnt,[p("span",Znt,S(E.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+S(E.$t(`user.PASSWORD_STRENGTH.${r.value}`)),1),u.value.length>0?(h(),v("div",Jnt,[p("ul",eat,[(h(!0),v(ue,null,be(u.value,T=>(h(),v("li",{key:T},S(E.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${T}`)),1))),128))])])):L("",!0)])):L("",!0)]))}}),nat=se(tat,[["__scopeId","data-v-dee3cf5a"]]),aat={class:"password-input"},sat=["id","disabled","placeholder","required","type","autocomplete"],iat={class:"show-password"},oat={key:0,class:"form-info"},rat=X({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:{},required:{type:Boolean,default:!1},autocomplete:{}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{autocomplete:a,checkStrength:s,disabled:i,id:o,password:r,placeholder:u,required:l}=fe(n),d=t,E=Ie(!1),c=Ie("");function T(){E.value=!E.value}function _(O){d("updatePassword",O.target.value)}function f(){d("passwordError")}return Ce(()=>r.value,O=>{O===""&&(c.value="",E.value=!1)}),(O,A)=>(h(),v("div",aat,[We(p("input",{id:m(o),disabled:m(i),placeholder:m(u),required:m(l),type:E.value?"text":"password","onUpdate:modelValue":A[0]||(A[0]=R=>c.value=R),minlength:"8",onInput:_,onInvalid:f,autocomplete:m(a)},null,40,sat),[[mN,c.value]]),p("div",iat,[p("button",{class:"transparent",onClick:ve(T,["prevent"]),type:"button"},[x(S(O.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),p("i",{class:Ae(["fa",`fa-eye${E.value?"-slash":""}`]),"aria-hidden":"true"},null,2)])]),m(s)?(h(),v("div",oat,[A[1]||(A[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(O.$t("user.PASSWORD_INFO")),1)])):L("",!0),m(s)?(h(),B(nat,{key:1,password:c.value},null,8,["password"])):L("",!0)]))}}),SE=se(rat,[["__scopeId","data-v-56852c2e"]]),uat={id:"user-infos-edition"},lat={class:"profile-form form-box"},cat={key:1,class:"info-box success-message"},dat={class:"form-items",for:"email"},Eat=["disabled"],pat={class:"form-items",for:"password-field"},Tat={class:"form-items",for:"new-password-field"},mat={class:"form-buttons"},_at={class:"confirm",type:"submit"},fat={class:"data-export"},hat={class:"info-box"},Sat={key:0,class:"data-export-archive"},Aat={key:1},Oat={key:2},Iat=X({__name:"UserAccountEdition",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le(),{appConfig:s,errorMessages:i}=qe(),{authUserLoading:o,authUserSuccess:r}=Ke(),u=kt({email:"",password:"",new_password:""}),l=Ie(!1),d=Ie(!1),E=Ie(!1),c=Ie(!1),T=z(()=>a.getters[K.GETTERS.EXPORT_REQUEST]),_=z(()=>g());function f(){d.value=!0}function O(U){u.email=U.email}function A(U){u.password=U}function R(U){u.new_password=U}function g(){return T.value?$t(T.value.created_at,n.value.timezone,n.value.date_format,!0,null,!0):null}function I(){return _.value?xD(new Date(_.value),VD(new Date,1)):!0}function N(){const U={email:u.email,password:u.password};u.new_password&&(U.new_password=u.new_password),l.value=u.email!==n.value.email,a.dispatch(K.ACTIONS.UPDATE_USER_ACCOUNT,U)}function b(U){E.value=U}function C(U){a.dispatch(K.ACTIONS.DELETE_ACCOUNT,{username:U})}function y(){a.dispatch(K.ACTIONS.REQUEST_DATA_EXPORT)}async function D(U){c.value=!0,await Ne.get(`/auth/account/export/${U}`,{responseType:"blob"}).then(P=>{const F=window.URL.createObjectURL(new Blob([P.data],{type:"application/zip"})),Z=document.createElement("a");Z.href=F,Z.setAttribute("download",U),document.body.appendChild(Z),Z.click()}).finally(()=>c.value=!1)}return Ce(()=>r.value,async U=>{U&&(A(""),R(""),O(n.value),d.value=!1)}),Ce(()=>n.value.email,async()=>{O(n.value)}),mt(()=>{t.user&&(a.dispatch(K.ACTIONS.GET_REQUEST_DATA_EXPORT),O(t.user))}),ct(()=>{a.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(U,P)=>{const F=j("Modal"),Z=j("ErrorMessage");return h(),v("div",uat,[E.value?(h(),B(F,{key:0,title:U.$t("common.CONFIRMATION"),message:U.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:P[0]||(P[0]=Oe=>C(m(n).username)),onCancelAction:P[1]||(P[1]=Oe=>b(!1)),onKeydown:P[2]||(P[2]=Ye(Oe=>b(!1),["esc"]))},null,8,["title","message"])):L("",!0),p("div",lat,[m(i)?(h(),B(Z,{key:0,message:m(i)},null,8,["message"])):L("",!0),m(r)?(h(),v("div",cat,S(U.$t(`user.PROFILE.SUCCESSFUL_${l.value&&m(s).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):L("",!0),p("form",{class:Ae({errors:d.value}),onSubmit:ve(N,["prevent"])},[p("label",dat,[x(S(U.$t("user.EMAIL"))+"* ",1),We(p("input",{id:"email","onUpdate:modelValue":P[3]||(P[3]=Oe=>u.email=Oe),disabled:m(o),required:!0,onInvalid:f,autocomplete:"email"},null,40,Eat),[[ot,u.email]])]),p("label",pat,[x(S(U.$t("user.CURRENT_PASSWORD"))+"* ",1),M(SE,{id:"password-field",disabled:m(o),password:u.password,required:!0,onUpdatePassword:A,onPasswordError:f,autocomplete:"current-password"},null,8,["disabled","password"])]),p("label",Tat,[x(S(U.$t("user.NEW_PASSWORD"))+" ",1),M(SE,{id:"new-password-field",disabled:m(o),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:f,autocomplete:"new-password"},null,8,["disabled","password"])]),p("div",mat,[p("button",_at,S(U.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:P[4]||(P[4]=ve(Oe=>U.$router.push("/profile"),["prevent"]))},S(U.$t("buttons.CANCEL")),1),p("button",{class:"danger",onClick:P[5]||(P[5]=ve(Oe=>b(!0),["prevent"]))},S(U.$t("buttons.DELETE_MY_ACCOUNT")),1),I()?(h(),v("button",{key:0,class:"confirm",onClick:ve(y,["prevent"])},S(U.$t("buttons.REQUEST_DATA_EXPORT")),1)):L("",!0)])],34),p("div",fat,[p("span",hat,[P[7]||(P[7]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(U.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),T.value?(h(),v("div",Sat,[x(S(U.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+S(_.value)+"): ",1),T.value.status==="successful"?(h(),v("span",{key:0,class:"archive-link",onClick:P[6]||(P[6]=ve(Oe=>D(T.value.file_name),["prevent"]))},[P[8]||(P[8]=p("i",{class:"fa fa-download","aria-hidden":"true"},null,-1)),x(" "+S(U.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+S(m(Qu)(T.value.file_size))+") ",1)])):(h(),v("span",Aat,S(U.$t(`user.EXPORT_REQUEST.STATUS.${T.value.status}`)),1)),c.value?(h(),v("span",Oat,[x(S(U.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),P[9]||(P[9]=p("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1))])):L("",!0)])):L("",!0)])])])}}}),gat=se(Iat,[["__scopeId","data-v-881b0d2d"]]),Rat={id:"user-infos-edition"},Nat={class:"profile-form form-box"},vat={class:"form-items",for:"registrationDate"},bat=["value"],Cat={class:"form-items",for:"first_name"},Pat=["disabled"],Dat={class:"form-items",for:"last_name"},Lat={class:"form-items",for:"birth_date"},yat=["disabled"],$at={class:"form-items",for:"location"},Uat=["disabled"],kat={class:"form-items"},wat={class:"form-buttons"},Mat={class:"confirm",type:"submit"},Wat=X({__name:"UserInfosEdition",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le(),{errorMessages:s}=qe(),{authUserLoading:i}=Ke(),o=kt({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),r=z(()=>n.value.created_at?$t(n.value.created_at,n.value.timezone,n.value.date_format):"");function u(E){o.first_name=E.first_name?E.first_name:"",o.last_name=E.last_name?E.last_name:"",o.birth_date=E.birth_date?On(new Date(E.birth_date),"yyyy-MM-dd"):"",o.location=E.location?E.location:"",o.bio=E.bio?E.bio:""}function l(E){o.bio=E.value}function d(){a.dispatch(K.ACTIONS.UPDATE_USER_PROFILE,o)}return mt(()=>{n.value&&u(n.value)}),(E,c)=>{const T=j("ErrorMessage"),_=j("CustomTextArea");return h(),v("div",Rat,[p("div",Nat,[m(s)?(h(),B(T,{key:0,message:m(s)},null,8,["message"])):L("",!0),p("form",{onSubmit:ve(d,["prevent"])},[p("label",vat,[x(S(E.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),p("input",{id:"registrationDate",value:r.value,disabled:""},null,8,bat)]),p("label",Cat,[x(S(E.$t("user.PROFILE.FIRST_NAME"))+" ",1),We(p("input",{id:"first_name","onUpdate:modelValue":c[0]||(c[0]=f=>o.first_name=f),disabled:m(i)},null,8,Pat),[[ot,o.first_name]])]),p("label",Dat,[x(S(E.$t("user.PROFILE.LAST_NAME"))+" ",1),We(p("input",{id:"last_name","onUpdate:modelValue":c[1]||(c[1]=f=>o.last_name=f)},null,512),[[ot,o.last_name]])]),p("label",Lat,[x(S(E.$t("user.PROFILE.BIRTH_DATE"))+" ",1),We(p("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":c[2]||(c[2]=f=>o.birth_date=f),disabled:m(i)},null,8,yat),[[ot,o.birth_date]])]),p("label",$at,[x(S(E.$t("user.PROFILE.LOCATION"))+" ",1),We(p("input",{id:"location","onUpdate:modelValue":c[3]||(c[3]=f=>o.location=f),disabled:m(i)},null,8,Uat),[[ot,o.location]])]),p("label",kat,[x(S(E.$t("user.PROFILE.BIO"))+" ",1),M(_,{name:"bio",charLimit:200,input:o.bio,disabled:m(i),onUpdateValue:l},null,8,["input","disabled"])]),p("div",wat,[p("button",Mat,S(E.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:c[4]||(c[4]=ve(f=>E.$router.push("/profile"),["prevent"]))},S(E.$t("buttons.CANCEL")),1)])],32)])])}}}),Fat=se(Wat,[["__scopeId","data-v-74879b02"]]),zat={id:"user-picture-edition"},xat={class:"user-picture-form"},Bat={class:"picture-help"},Gat={class:"info-box"},Vat={class:"picture-buttons"},Hat=["disabled"],Kat=X({__name:"UserPictureEdition",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le(),{appConfig:s,errorMessages:i}=qe(),o=Ie(null),r=z(()=>s.value.max_single_file_size?Qu(s.value.max_single_file_size):"");function u(){a.dispatch(K.ACTIONS.DELETE_PICTURE)}function l(E){E.target.files!==null&&(o.value=E.target.files[0])}function d(){o.value&&a.dispatch(K.ACTIONS.UPDATE_USER_PICTURE,{picture:o.value})}return(E,c)=>{const T=j("ErrorMessage");return h(),v("div",zat,[p("div",xat,[m(i)?(h(),B(T,{key:0,message:m(i)},null,8,["message"])):L("",!0),M(Qt,{user:m(n)},null,8,["user"]),p("form",{onSubmit:ve(d,["prevent"])},[p("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:l},null,32),p("div",Bat,[p("span",Gat,[c[1]||(c[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(E.$t("workouts.MAX_SIZE"))+": "+S(r.value),1)])]),p("div",Vat,[p("button",{type:"submit",disabled:!o.value},S(E.$t("user.PROFILE.PICTURE_UPDATE")),9,Hat),m(n).picture?(h(),v("button",{key:0,class:"danger",onClick:u},S(E.$t("user.PROFILE.PICTURE_REMOVE")),1)):L("",!0),p("button",{class:"cancel",onClick:c[0]||(c[0]=_=>E.$router.push("/profile"))},S(E.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32)])])}}}),qat=se(Kat,[["__scopeId","data-v-0a8e1dca"]]),$h=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],jat={id:"tz-dropdown"},Yat=["value","disabled","aria-expanded"],Xat=["aria-label"],Qat=["id","onClick","onMouseover","autofocus"],Zat=X({__name:"TimezoneDropdown",props:{input:{},disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:a,disabled:s}=fe(n),i=t,o=Ie(a.value),r=Ie(!1),u=Ie(0),l=z(()=>a.value?$h.filter(I=>d(I)):$h);function d(I){return I.toLowerCase().match(o.value.toLowerCase())}function E(I){u.value=I}function c(I){l.value.length>I&&(o.value=l.value[I],i("updateTimezone",o.value),r.value=!1)}function T(I){I.preventDefault(),l.value.length>0&&c(u.value)}function _(I){I.preventDefault(),r.value=!0,o.value=I.target.value.trim()}function f(){c(u.value)}function O(I){const N=document.getElementById(`tz-dropdown-item-${I}`);N&&(N.focus(),N.scrollIntoView({behavior:"smooth",block:"nearest"}))}function A(){r.value=!0,u.value=u.value===null?0:u.value+=1,u.value>=l.value.length&&(u.value=0),O(u.value)}function R(){r.value=!0,u.value=u.value===null?l.value.length-1:u.value-=1,u.value<=-1&&(u.value=l.value.length-1),O(u.value)}function g(){r.value&&(r.value=!1,o.value=a.value)}return Ce(()=>n.input,I=>{o.value=I}),(I,N)=>(h(),v("div",jat,[p("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:o.value,disabled:m(s),required:"",role:"combobox","aria-autocomplete":"list","aria-controls":"tz-dropdown-list","aria-expanded":r.value,onKeydown:[N[0]||(N[0]=Ye(b=>g(),["esc"])),Ye(T,["enter"]),N[2]||(N[2]=Ye(b=>A(),["down"])),N[3]||(N[3]=Ye(b=>R(),["up"]))],onInput:_,onBlur:N[1]||(N[1]=b=>f())},null,40,Yat),r.value?(h(),v("ul",{key:0,class:"tz-dropdown-list",id:"tz-dropdown-list",role:"listbox",tabindex:"-1","aria-label":I.$t("user.PROFILE.TIMEZONE",0)},[(h(!0),v(ue,null,be(l.value,(b,C)=>(h(),v("li",{key:b,id:`tz-dropdown-item-${C}`,class:Ae(["tz-dropdown-item",{focus:C===u.value}]),onClick:y=>c(C),onMouseover:y=>E(C),autofocus:C===u.value,role:"option"},S(b),43,Qat))),128))],8,Xat)):L("",!0)]))}}),Jat=se(Zat,[["__scopeId","data-v-de57165c"]]),est={id:"user-preferences-edition"},tst={class:"profile-form form-box"},nst={class:"preferences-section"},ast={class:"form-items"},sst=["disabled"],ist=["value"],ost={class:"form-items"},rst=["disabled"],ust=["value"],lst={class:"form-items"},cst={class:"form-items"},dst=["disabled"],Est=["value"],pst={class:"form-items form-checkboxes"},Tst={class:"checkboxes-label"},mst={class:"checkboxes"},_st=["id","name","checked","disabled","onInput"],fst={class:"checkbox-label"},hst={class:"preferences-section"},Sst={class:"form-items form-checkboxes"},Ast={class:"checkboxes-label"},Ost={class:"checkboxes"},Ist=["id","name","checked","disabled","onInput"],gst={class:"checkbox-label"},Rst={class:"form-items form-checkboxes"},Nst={class:"checkboxes-label"},vst={class:"checkboxes"},bst=["id","name","checked","disabled","onInput"],Cst={class:"checkbox-label"},Pst={class:"preferences-section"},Dst={class:"form-items form-checkboxes"},Lst={class:"checkboxes-label"},yst={class:"checkboxes"},$st=["id","name","checked","disabled","onInput"],Ust={class:"checkbox-label"},kst={class:"form-items form-checkboxes"},wst={class:"checkboxes-label"},Mst={class:"checkboxes"},Wst=["id","name","checked","disabled","onInput"],Fst={class:"checkbox-label"},zst={class:"form-items form-checkboxes"},xst={class:"checkboxes-label"},Bst={class:"checkboxes"},Gst=["id","name","checked","disabled","onInput"],Vst={class:"checkbox-label"},Hst={class:"form-items form-checkboxes"},Kst={class:"checkboxes-label"},qst={class:"checkboxes"},jst=["id","name","checked","disabled","onInput"],Yst={class:"checkbox-label"},Xst={class:"info-box raw-speed-help"},Qst={class:"form-items"},Zst=["disabled"],Jst=["value"],eit={class:"form-items"},tit=["disabled"],nit=["value"],ait={class:"form-items"},sit=["disabled"],iit=["value"],oit={class:"form-buttons"},rit={class:"confirm",type:"submit"},uit=X({__name:"UserPreferencesEdition",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le(),{errorMessages:s}=qe(),{authUserLoading:i}=Ke(),o=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],r=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],u=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],l=[{label:"ZERO",value:!0},{label:"MIN_ALT",value:!1}],d=[{label:"FILTERED_SPEED",value:!1},{label:"RAW_SPEED",value:!0}],E=[{label:"DARK",value:!0},{label:"DEFAULT",value:null},{label:"LIGHT",value:!1}],c=[{label:"MANUALLY",value:!0},{label:"AUTOMATICALLY",value:!1}],T=[{label:"HIDDEN",value:!0},{label:"DISPLAYED",value:!1}],_=kt({analysis_visibility:"private",date_format:"dd/MM/yyyy",display_ascent:!0,hide_profile_in_users_directory:!0,imperial_units:!1,language:"en",manually_approves_followers:!0,map_visibility:"private",start_elevation_at_zero:!1,timezone:"Europe/Paris",use_dark_mode:!1,use_raw_gpx_speed:!1,weekm:!1,workouts_visibility:"private"}),f=z(()=>fBe(new Date().toUTCString(),n.value.timezone,_.language)),O=z(()=>gO()),A=z(()=>Xu(_.workouts_visibility)),R=z(()=>Xu(_.analysis_visibility));function g(y){_.analysis_visibility=y.analysis_visibility?y.analysis_visibility:"private",_.display_ascent=y.display_ascent,_.start_elevation_at_zero=y.start_elevation_at_zero?y.start_elevation_at_zero:!1,_.use_raw_gpx_speed=y.use_raw_gpx_speed?y.use_raw_gpx_speed:!1,_.imperial_units=y.imperial_units?y.imperial_units:!1,_.language=y.language&&y.language in pi?y.language:"en",_.manually_approves_followers="manually_approves_followers"in y?y.manually_approves_followers:!0,_.map_visibility=y.map_visibility?y.map_visibility:"private",_.timezone=y.timezone?y.timezone:"Europe/Paris",_.date_format=y.date_format?y.date_format:"dd/MM/yyyy",_.weekm=y.weekm?y.weekm:!1,_.use_dark_mode=y.use_dark_mode,_.workouts_visibility=y.workouts_visibility?y.workouts_visibility:"private",_.hide_profile_in_users_directory=y.hide_profile_in_users_directory}function I(){a.dispatch(K.ACTIONS.UPDATE_USER_PREFERENCES,_)}function N(y,D){_[y]=D}function b(){_.analysis_visibility=Yu(_.analysis_visibility,_.workouts_visibility),C()}function C(){_.map_visibility=Yu(_.map_visibility,_.analysis_visibility)}return mt(()=>{n.value&&g(n.value)}),(y,D)=>{const U=j("ErrorMessage");return h(),v("div",est,[p("div",tst,[m(s)?(h(),B(U,{key:0,message:m(s)},null,8,["message"])):L("",!0),p("form",{onSubmit:ve(I,["prevent"])},[p("div",nst,S(y.$t("user.PROFILE.INTERFACE")),1),p("label",ast,[x(S(y.$t("user.PROFILE.LANGUAGE"))+" ",1),We(p("select",{id:"language","onUpdate:modelValue":D[0]||(D[0]=P=>_.language=P),disabled:m(i)},[(h(!0),v(ue,null,be(m(aE),P=>(h(),v("option",{value:P.value,key:P.value},S(P.label),9,ist))),128))],8,sst),[[Jt,_.language]])]),p("label",ost,[x(S(y.$t("user.PROFILE.THEME_MODE.LABEL"))+" ",1),We(p("select",{id:"use_dark_mode","onUpdate:modelValue":D[1]||(D[1]=P=>_.use_dark_mode=P),disabled:m(i)},[(h(),v(ue,null,be(E,P=>p("option",{value:P.value,key:P.label},S(y.$t(`user.PROFILE.THEME_MODE.VALUES.${P.label}`)),9,ust)),64))],8,rst),[[Jt,_.use_dark_mode]])]),p("label",lst,[x(S(y.$t("user.PROFILE.TIMEZONE"))+" ",1),M(Jat,{input:_.timezone,disabled:m(i),onUpdateTimezone:D[2]||(D[2]=P=>N("timezone",P))},null,8,["input","disabled"])]),p("label",cst,[x(S(y.$t("user.PROFILE.DATE_FORMAT"))+" ",1),We(p("select",{id:"date_format","onUpdate:modelValue":D[3]||(D[3]=P=>_.date_format=P),disabled:m(i)},[(h(!0),v(ue,null,be(f.value,P=>(h(),v("option",{value:P.value,key:P.value},S(P.label),9,Est))),128))],8,dst),[[Jt,_.date_format]])]),p("div",pst,[p("span",Tst,S(y.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),p("div",mst,[(h(),v(ue,null,be(o,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.weekm,disabled:m(i),onInput:F=>N("weekm",P.value)},null,40,_st),p("span",fst,S(y.$t(`user.PROFILE.${P.label}`)),1)])),64))])]),p("div",hst,S(y.$t("user.PROFILE.TABS.ACCOUNT")),1),p("div",Sst,[p("span",Ast,S(y.$t("user.PROFILE.FOLLOW_REQUESTS_APPROVAL.LABEL")),1),p("div",Ost,[(h(),v(ue,null,be(c,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.manually_approves_followers,disabled:m(i),onInput:F=>N("manually_approves_followers",P.value)},null,40,Ist),p("span",gst,S(y.$t(`user.PROFILE.FOLLOW_REQUESTS_APPROVAL.${P.label}`)),1)])),64))])]),p("div",Rst,[p("span",Nst,S(y.$t("user.PROFILE.PROFILE_IN_USERS_DIRECTORY.LABEL")),1),p("div",vst,[(h(),v(ue,null,be(T,P=>p("label",{key:P.label},[p("input",{type:"radio",id:`hide_profile_${P.label}`,name:`hide_profile_${P.label}`,checked:P.value===_.hide_profile_in_users_directory,disabled:m(i),onInput:F=>N("hide_profile_in_users_directory",P.value)},null,40,bst),p("span",Cst,S(y.$t(`user.PROFILE.PROFILE_IN_USERS_DIRECTORY.${P.label}`)),1)])),64))])]),p("div",Pst,S(y.$t("workouts.WORKOUT",0)),1),p("div",Dst,[p("span",Lst,S(y.$t("user.PROFILE.UNITS.LABEL")),1),p("div",yst,[(h(),v(ue,null,be(r,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.imperial_units,disabled:m(i),onInput:F=>N("imperial_units",P.value)},null,40,$st),p("span",Ust,S(y.$t(`user.PROFILE.UNITS.${P.label}`)),1)])),64))])]),p("div",kst,[p("span",wst,S(y.$t("user.PROFILE.ASCENT_DATA")),1),p("div",Mst,[(h(),v(ue,null,be(u,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.display_ascent,disabled:m(i),onInput:F=>N("display_ascent",P.value)},null,40,Wst),p("span",Fst,S(y.$t(`common.${P.label}`)),1)])),64))])]),p("div",zst,[p("span",xst,S(y.$t("user.PROFILE.ELEVATION_CHART_START.LABEL")),1),p("div",Bst,[(h(),v(ue,null,be(l,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.start_elevation_at_zero,disabled:m(i),onInput:F=>N("start_elevation_at_zero",P.value)},null,40,Gst),p("span",Vst,S(y.$t(`user.PROFILE.ELEVATION_CHART_START.${P.label}`)),1)])),64))])]),p("div",Hst,[p("span",Kst,S(y.$t("user.PROFILE.USE_RAW_GPX_SPEED.LABEL")),1),p("div",qst,[(h(),v(ue,null,be(d,P=>p("label",{key:P.label},[p("input",{type:"radio",id:P.label,name:P.label,checked:P.value===_.use_raw_gpx_speed,disabled:m(i),onInput:F=>N("use_raw_gpx_speed",P.value)},null,40,jst),p("span",Yst,S(y.$t(`user.PROFILE.USE_RAW_GPX_SPEED.${P.label}`)),1)])),64))]),p("div",Xst,[p("span",null,[D[8]||(D[8]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(y.$t("user.PROFILE.USE_RAW_GPX_SPEED.HELP")),1)])])]),p("label",Qst,[x(S(y.$t("visibility_levels.WORKOUTS_VISIBILITY"))+" ",1),We(p("select",{id:"workouts_visibility","onUpdate:modelValue":D[4]||(D[4]=P=>_.workouts_visibility=P),disabled:m(i),onChange:b},[(h(!0),v(ue,null,be(O.value,P=>(h(),v("option",{value:P,key:P},S(y.$t(`visibility_levels.LEVELS.${P}`)),9,Jst))),128))],40,Zst),[[Jt,_.workouts_visibility]])]),p("label",eit,[x(S(y.$t("visibility_levels.ANALYSIS_VISIBILITY"))+" ",1),We(p("select",{id:"analysis_visibility","onUpdate:modelValue":D[5]||(D[5]=P=>_.analysis_visibility=P),disabled:m(i),onChange:C},[(h(!0),v(ue,null,be(A.value,P=>(h(),v("option",{value:P,key:P},S(y.$t(`visibility_levels.LEVELS.${P}`)),9,nit))),128))],40,tit),[[Jt,_.analysis_visibility]])]),p("label",ait,[x(S(y.$t("visibility_levels.MAP_VISIBILITY"))+" ",1),We(p("select",{id:"map_visibility","onUpdate:modelValue":D[6]||(D[6]=P=>_.map_visibility=P),disabled:m(i)},[(h(!0),v(ue,null,be(R.value,P=>(h(),v("option",{value:P,key:P},S(y.$t(`visibility_levels.LEVELS.${P}`)),9,iit))),128))],8,sit),[[Jt,_.map_visibility]])]),p("div",oit,[p("button",rit,S(y.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:D[7]||(D[7]=ve(P=>y.$router.push("/profile/preferences"),["prevent"]))},S(y.$t("buttons.CANCEL")),1)])],32)])])}}}),lit=se(uit,[["__scopeId","data-v-a2dba7d8"]]),cit={class:"privacy-policy-text"},dit={class:"last-update"},Eit=["innerHTML"],pit=["innerHTML"],Tit=X({__name:"PrivacyPolicy",setup(e){const{appConfig:t}=qe(),{dateFormat:n,timezone:a}=Ke(),s=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"],i=z(()=>o());function o(){return $t(t.value.privacy_policy_date,a.value,n.value,!1)}return(r,u)=>(h(),v("div",cit,[p("h1",null,S(Fe(r.$t("privacy_policy.TITLE"))),1),p("p",dit,[x(S(r.$t("privacy_policy.LAST_UPDATE"))+": ",1),p("time",null,S(i.value),1)]),m(t).privacy_policy?(h(),v("div",{key:0,innerHTML:m(Go)(m(t).privacy_policy)},null,8,Eit)):(h(),v(ue,{key:1},be(s,l=>(h(),v(ue,{key:l},[p("h2",null,S(r.$t(`privacy_policy.CONTENT.${l}.TITLE`)),1),p("p",{innerHTML:m(Go)(r.$t(`privacy_policy.CONTENT.${l}.CONTENT`))},null,8,pit)],64))),64))]))}}),QO=se(Tit,[["__scopeId","data-v-4c6083e4"]]),mit={id:"user-privacy-policy"},_it={key:1},fit={class:"policy-content"},hit={for:"accepted_policy",class:"accepted_policy"},Sit={class:"form-buttons"},Ait={class:"confirm",type:"submit"},Oit=X({__name:"UserPrivacyPolicyValidation",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le(),{errorMessages:s}=qe(),i=Ie(!1),o=Ie(!1);function r(){a.dispatch(K.ACTIONS.ACCEPT_PRIVACY_POLICY,i.value)}function u(){o.value=!0}return(l,d)=>{const E=j("ErrorMessage"),c=j("router-link"),T=j("i18n-t");return h(),v("div",mit,[m(s)?(h(),B(E,{key:0,message:m(s)},null,8,["message"])):L("",!0),m(n).accepted_privacy_policy?(h(),v("div",_it,[p("p",null,[M(T,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:Y(()=>[M(c,{to:"/privacy-policy"},{default:Y(()=>[x(S(l.$t("privacy_policy.TITLE")),1)]),_:1})]),_:1})]),p("button",{class:"cancel",onClick:d[0]||(d[0]=_=>l.$router.push("/profile"))},S(l.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):(h(),v("form",{key:2,class:Ae({errors:o.value}),onSubmit:d[3]||(d[3]=ve(_=>r(),["prevent"]))},[p("div",fit,[M(QO)]),p("label",hit,[We(p("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":d[1]||(d[1]=_=>i.value=_),onInvalid:u},null,544),[[dl,i.value]]),p("span",null,[M(T,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:Y(()=>[x(S(l.$t("privacy_policy.TITLE")),1)]),_:1})])]),M(c,{to:"/profile/edit/account"},{default:Y(()=>[x(S(l.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)]),_:1}),p("div",Sit,[p("button",Ait,S(l.$t("buttons.SUBMIT")),1),p("button",{class:"cancel",onClick:d[2]||(d[2]=_=>l.$router.push("/profile"))},S(l.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],34))])}}}),Iit=se(Oit,[["__scopeId","data-v-ac974385"]]),git={key:0},Rit={key:1},Nit={key:2},vit={class:"no-suspension"},bit=X({__name:"UserAccountSuspension",setup(e){const t=Le(),{authUserLoading:n,authUserSuccess:a}=Ke(),s=Ie(""),i=z(()=>t.getters[K.GETTERS.ACCOUNT_SUSPENSION]);function o(){t.dispatch(K.ACTIONS.GET_ACCOUNT_SUSPENSION)}function r(u){s.value=u,t.dispatch(K.ACTIONS.APPEAL,{actionId:i.value.id,actionType:"user_suspension",text:u})}return mt(()=>o()),ct(()=>{t.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1)}),(u,l)=>{const d=j("Loader");return m(n)&&!s.value?(h(),v("div",git,[M(d)])):i.value.id?(h(),v("div",Rit,[p("div",null,S(u.$t("user.YOUR_ACCOUNT_HAS_BEEN_SUSPENDED"))+".",1),M(bl,{"report-action":i.value,success:m(a),loading:m(n),onSubmitForm:r},{additionalButtons:Y(()=>[p("button",{onClick:l[0]||(l[0]=E=>u.$router.push("/profile"))},S(u.$t("user.PROFILE.BACK_TO_PROFILE")),1)]),_:1},8,["report-action","success","loading"])])):(h(),v("div",Nit,[p("div",vit,S(u.$t("user.ACTIVE_ACCOUNT")),1),p("button",{onClick:l[1]||(l[1]=E=>u.$router.push("/profile"))},S(u.$t("user.PROFILE.BACK_TO_PROFILE")),1)]))}}}),Cit=se(bit,[["__scopeId","data-v-2a9aa8c5"]]),Pit=["equipments:read","equipments:write","follow:read","follow:write","notifications:read","notifications:write","profile:read","profile:write","reports:read","reports:write","users:read","users:write","workouts:read","workouts:write"],Dit=["application:write"],Lit={id:"new-oauth2-app"},yit={id:"new-oauth2-title"},$it={id:"apps-form"},Uit={class:"form-items"},kit={class:"form-item"},wit={for:"app-name"},Mit={class:"form-item"},Wit={for:"app-description"},Fit={class:"form-item"},zit={for:"app-url"},xit={class:"form-item"},Bit={for:"app-redirect-uri"},Git={class:"form-item-scope"},Vit={class:"form-item-scope-label"},Hit={class:"scope-label"},Kit=["name","checked","onChange"],qit=["innerHTML"],jit={class:"form-buttons"},Yit=["disabled"],Xit=X({__name:"AddUserApp",setup(e){const t=Le(),{errorMessages:n}=qe(),{authUserHasAdminRights:a}=Ke(),s=kt({client_name:"",client_uri:"",client_description:"",description:"",redirect_uri:""}),i=kt([]),o=z(()=>d(a.value,Dit,Pit));function r(){const E={client_name:s.client_name,client_description:s.client_description,client_uri:s.client_uri,redirect_uris:[s.redirect_uri],scope:i.sort().join(" ")};t.dispatch(st.ACTIONS.CREATE_CLIENT,E)}function u(E){s.client_description=E.value}function l(E){const c=i.indexOf(E);c>-1?i.splice(c,1):i.push(E)}function d(E,c,T){const _=[...T];return E&&_.push(...c),_.sort()}return(E,c)=>{const T=j("CustomTextArea"),_=j("ErrorMessage");return h(),v("div",Lit,[p("h1",yit,S(E.$t("oauth2.ADD_A_NEW_APP")),1),p("div",$it,[p("form",{onSubmit:ve(r,["prevent"])},[p("div",Uit,[p("div",kit,[p("label",wit,S(E.$t("oauth2.APP.NAME"))+"*",1),We(p("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":c[0]||(c[0]=f=>s.client_name=f)},null,512),[[ot,s.client_name]])]),p("div",Mit,[p("label",Wit,S(E.$t("oauth2.APP.DESCRIPTION")),1),M(T,{name:"app-description",charLimit:200,input:s.description,onUpdateValue:u},null,8,["input"])]),p("div",Fit,[p("label",zit,S(E.$t("oauth2.APP.URL"))+"*",1),We(p("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":c[1]||(c[1]=f=>s.client_uri=f)},null,512),[[ot,s.client_uri]])]),p("div",xit,[p("label",Bit,S(E.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),We(p("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":c[2]||(c[2]=f=>s.redirect_uri=f)},null,512),[[ot,s.redirect_uri]])]),p("div",Git,[p("div",Vit,S(E.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),(h(!0),v(ue,null,be(o.value,f=>(h(),v("div",{class:"form-item-scope-checkboxes",key:f},[p("label",Hit,[p("input",{type:"checkbox",name:f,checked:i.includes(f),onChange:O=>l(f)},null,40,Kit),p("code",null,S(f),1)]),p("p",{class:"scope-description",innerHTML:E.$t(`oauth2.APP.SCOPE.${f}_DESCRIPTION`)},null,8,qit)]))),128))])]),m(n)?(h(),B(_,{key:0,message:m(n)},null,8,["message"])):L("",!0),p("div",jit,[p("button",{class:"confirm",type:"submit",disabled:i.length===0},S(E.$t("buttons.SUBMIT")),9,Yit),p("button",{class:"cancel",onClick:c[3]||(c[3]=ve(()=>E.$router.push("/profile/apps"),["prevent"]))},S(E.$t("buttons.CANCEL")),1)])],32)])])}}}),Qit=se(Xit,[["__scopeId","data-v-f0f43085"]]),Zit={id:"authorize-oauth2-app"},Jit={key:0},eot={id:"authorize-oauth2-title"},tot={class:"oauth2-access description-list"},not={class:"client-scope"},aot=["innerHTML"],sot={class:"authorize-oauth2-buttons"},iot={key:1},oot={class:"no-app"},rot=X({__name:"AuthorizeUserApp",setup(e){const t=ut(),n=Le(),{errorMessages:a}=qe(),s=z(()=>n.getters[st.GETTERS.CLIENT]);function i(){t.query.client_id&&typeof t.query.client_id=="string"&&n.dispatch(st.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function o(){n.dispatch(st.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return et(()=>i()),(r,u)=>{const l=j("router-link"),d=j("i18n-t"),E=j("ErrorMessage");return h(),v("div",Zit,[s.value.client_id?(h(),v("div",Jit,[p("h1",eot,[M(d,{keypath:"oauth2.AUTHORIZE_APP"},{default:Y(()=>[M(l,{to:{name:"UserApp",params:{id:s.value.id}}},{default:Y(()=>[x(S(s.value.name),1)]),_:1},8,["to"])]),_:1})]),m(a)?(h(),B(E,{key:0,message:m(a)},null,8,["message"])):L("",!0),p("div",tot,[p("p",null,S(r.$t("oauth2.APP_REQUESTING_ACCESS")),1),p("dl",null,[(h(!0),v(ue,null,be(s.value.scope.split(" "),c=>(h(),v(ue,{key:c},[p("dt",not,[p("code",null,S(c),1)]),p("dd",{innerHTML:r.$t(`oauth2.APP.SCOPE.${c}_DESCRIPTION`)},null,8,aot)],64))),128))]),p("div",sot,[p("button",{class:"danger",onClick:o},S(r.$t("buttons.AUTHORIZE")),1),p("button",{class:"cancel",onClick:u[0]||(u[0]=c=>r.$router.push("/profile/apps"))},S(r.$t("buttons.CANCEL")),1)])])])):(h(),v("div",iot,[p("p",oot,S(r.$t("oauth2.NO_APP")),1),p("button",{onClick:u[1]||(u[1]=c=>r.$router.push("/profile/apps"))},S(r.$t("buttons.BACK")),1)]))])}}}),uot=se(rot,[["__scopeId","data-v-6462d75b"]]),lot={id:"oauth2-apps"},cot=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),a=Le();return ct(()=>{a.commit(st.MUTATIONS.SET_CLIENTS,[])}),(s,i)=>{const o=j("router-view");return h(),v("div",lot,[M(o,{authUser:m(n)},null,8,["authUser"])])}}}),dot={id:"oauth2-app",class:"description-list"},Eot={key:1},pot={key:0,class:"info-box success-message"},Tot=["title"],mot={key:0},_ot={key:1,class:"app-secret"},fot=["title"],hot={class:"client-scopes"},Sot={class:"app-buttons"},Aot={key:2},Oot={class:"no-app"},Iot=X({__name:"UserApp",props:{authUser:{},afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,{afterCreation:n,authUser:a}=fe(t),s=ut(),i=Le(),o=Ie(!1),r=Ie(""),u=Ie(!1),l=Ie(!1),d=Ie(!1),E=z(()=>i.getters[st.GETTERS.CLIENT]),c=z(()=>i.getters[st.GETTERS.REVOCATION_SUCCESSFUL]);function T(){!n.value&&s.params.id&&typeof s.params.id=="string"&&i.dispatch(st.ACTIONS.GET_CLIENT_BY_ID,+s.params.id)}function _(g){r.value=g?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",f(!0)}function f(g){o.value=g,g||(r.value="")}function O(g){r.value==="oauth2.APP_DELETION_CONFIRMATION"?i.dispatch(st.ACTIONS.DELETE_CLIENT,g):i.dispatch(st.ACTIONS.REVOKE_ALL_TOKENS,g)}function A(){navigator.clipboard.writeText(E.value.client_id),u.value=!0,l.value=!1,setTimeout(()=>{u.value=!1},3e3)}function R(){E.value.client_secret&&(navigator.clipboard.writeText(E.value.client_secret),l.value=!0,u.value=!1,setTimeout(()=>{l.value=!1},3e3))}return Ce(()=>c.value,g=>{g&&f(!1)}),et(()=>{T(),navigator.clipboard&&(d.value=!0)}),ct(()=>{i.commit(st.MUTATIONS.EMPTY_CLIENT),i.commit(st.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)}),(g,I)=>{const N=j("Modal");return h(),v("div",dot,[o.value?(h(),B(N,{key:0,title:g.$t("common.CONFIRMATION"),message:g.$t(r.value),onConfirmAction:I[0]||(I[0]=b=>O(E.value.id)),onCancelAction:I[1]||(I[1]=b=>f(!1)),onKeydown:I[2]||(I[2]=Ye(b=>f(!1),["esc"]))},null,8,["title","message"])):L("",!0),E.value&&E.value.client_id?(h(),v("div",Eot,[m(n)||c.value?(h(),v("div",pot,S(g.$t(m(n)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):L("",!0),p("dl",null,[p("dt",null,S(g.$t("oauth2.APP.CLIENT_ID"))+":",1),p("dd",null,[x(S(E.value.client_id)+" ",1),m(n)&&d.value?(h(),v("i",{key:0,class:Ae(`fa fa-${u.value?"check":"copy"}`),"aria-hidden":"true",title:g.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:A},null,10,Tot)):L("",!0)]),m(n)&&E.value.client_secret?(h(),v("dt",mot,S(g.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):L("",!0),m(n)&&E.value.client_secret?(h(),v("dd",_ot,[x(S(E.value.client_secret)+" ",1),d.value?(h(),v("i",{key:0,class:Ae(`fa fa-${l.value?"check":"copy"}`),"aria-hidden":"true",title:g.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:R},null,10,fot)):L("",!0)])):L("",!0),p("dt",null,S(Fe(g.$t("oauth2.APP.ISSUE_AT")))+":",1),p("dd",null,[p("time",null,S(m($t)(E.value.issued_at,m(a).timezone,m(a).date_format)),1)]),p("dt",null,S(g.$t("oauth2.APP.NAME"))+":",1),p("dd",null,S(E.value.name),1),p("dt",null,S(g.$t("oauth2.APP.DESCRIPTION"))+":",1),p("dd",{class:Ae({"no-description":!E.value.client_description})},S(E.value.client_description?E.value.client_description:g.$t("common.NO_DESCRIPTION")),3),p("dt",null,S(g.$t("oauth2.APP.URL"))+":",1),p("dd",null,S(E.value.website),1),p("dt",null,S(g.$t("oauth2.APP.REDIRECT_URL"))+":",1),p("dd",null,S(E.value.redirect_uris.length>0?E.value.redirect_uris[0]:""),1),p("dt",null,S(g.$t("oauth2.APP.SCOPE.LABEL"))+":",1),p("dd",hot,[(h(!0),v(ue,null,be(E.value.scope.split(" "),b=>(h(),v("span",{class:"client-scope",key:b},[p("code",null,S(b),1)]))),128))])]),p("div",Sot,[p("button",{class:"danger",onClick:I[3]||(I[3]=b=>_(!1))},S(g.$t("oauth2.REVOKE_ALL_TOKENS")),1),p("button",{class:"danger",onClick:I[4]||(I[4]=b=>_(!0))},S(g.$t("oauth2.DELETE_APP")),1),p("button",{onClick:I[5]||(I[5]=b=>g.$router.push("/profile/apps"))},S(g.$t("buttons.BACK")),1)])])):(h(),v("div",Aot,[p("p",Oot,S(g.$t("oauth2.NO_APP")),1),p("button",{onClick:I[6]||(I[6]=b=>g.$router.push("/profile/apps"))},S(g.$t("buttons.BACK")),1)]))])}}}),Uh=se(Iot,[["__scopeId","data-v-7371d7c1"]]),got={id:"oauth2-apps-list"},Rot={class:"apps-list"},Not={key:0},vot={class:"app-issued-at"},bot={key:1,class:"no-apps"},Cot={class:"app-list-buttons"},Pot=X({__name:"UserAppsList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=fe(t),a=Le(),s=ut();let i=u(s.query);const o=z(()=>a.getters[st.GETTERS.CLIENTS]),r=z(()=>a.getters[st.GETTERS.CLIENTS_PAGINATION]);function u(d){const E={};return d.page&&(E.page=Ho(d.page,Wl)),E}function l(d){a.dispatch(st.ACTIONS.GET_CLIENTS,d)}return Ce(()=>s.query,async d=>{i=u(d),l(i)}),et(()=>{l(i)}),(d,E)=>{const c=j("router-link");return h(),v("div",got,[p("h1",Rot,S(d.$t("oauth2.APPS_LIST")),1),o.value.length>0?(h(),v("ul",Not,[(h(!0),v(ue,null,be(o.value,T=>(h(),v("li",{key:T.client_id},[M(c,{to:{name:"UserApp",params:{id:T.id}}},{default:Y(()=>[x(S(T.name),1)]),_:2},1032,["to"]),p("span",vot,[x(S(d.$t("oauth2.APP.ISSUE_AT"))+" ",1),p("time",null,S(m($t)(T.issued_at,m(n).timezone,m(n).date_format)),1)])]))),128))])):(h(),v("div",bot,S(d.$t("oauth2.NO_APPS")),1)),o.value.length>0?(h(),B(oa,{key:2,pagination:r.value,path:"/profile/apps",query:m(i)},null,8,["pagination","query"])):L("",!0),p("div",Cot,[m(n).suspended_at?L("",!0):(h(),v("button",{key:0,onClick:E[0]||(E[0]=T=>d.$router.push("/profile/apps/new"))},S(d.$t("oauth2.NEW_APP")),1)),p("button",{onClick:E[1]||(E[1]=T=>d.$router.push("/"))},S(d.$t("common.HOME")),1)])])}}}),Dot=se(Pot,[["__scopeId","data-v-018b8e7c"]]);function cd(e){return e===0?!1:Array.isArray(e)&&e.length===0?!0:!e}function Lot(e){return(...t)=>!e(...t)}function yot(e,t){return e===void 0&&(e="undefined"),e===null&&(e="null"),e===!1&&(e="false"),e.toString().toLowerCase().indexOf(t.trim())!==-1}function ZO(e,t,n,a){return t?e.filter(s=>yot(a(s,n),t)).sort((s,i)=>a(s,n).length-a(i,n).length):e}function $ot(e){return e.filter(t=>!t.$isLabel)}function dd(e,t){return n=>n.reduce((a,s)=>s[e]&&s[e].length?(a.push({$groupLabel:s[t],$isLabel:!0}),a.concat(s[e])):a,[])}function Uot(e,t,n,a,s){return i=>i.map(o=>{if(!o[n])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];const r=ZO(o[n],e,t,s);return r.length?{[a]:o[a],[n]:r}:[]})}const kh=(...e)=>t=>e.reduce((n,a)=>a(n),t);var kot={data(){return{search:"",isOpen:!1,preferredOpenDirection:"below",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default(e,t){return cd(e)?"":t?e[t]:e}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},tagPosition:{type:String,default:"top"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1},preventAutofocus:{type:Boolean,default:!1}},mounted(){!this.multiple&&this.max&&console.warn("[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false."),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue(){return this.modelValue||this.modelValue===0?Array.isArray(this.modelValue)?this.modelValue:[this.modelValue]:[]},filteredOptions(){const e=this.search||"",t=e.toLowerCase().trim();let n=this.options.concat();return this.internalSearch?n=this.groupValues?this.filterAndFlat(n,t,this.label):ZO(n,t,this.label,this.customLabel):n=this.groupValues?dd(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(Lot(this.isSelected)):n,this.taggable&&t.length&&!this.isExistingOption(t)&&(this.tagPosition==="bottom"?n.push({isTag:!0,label:e}):n.unshift({isTag:!0,label:e})),n.slice(0,this.optionsLimit)},valueKeys(){return this.trackBy?this.internalValue.map(e=>e[this.trackBy]):this.internalValue},optionKeys(){return(this.groupValues?this.flatAndStrip(this.options):this.options).map(t=>this.customLabel(t,this.label).toString().toLowerCase())},currentOptionLabel(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue:{handler(){this.resetAfter&&this.internalValue.length&&(this.search="",this.$emit("update:modelValue",this.multiple?[]:null))},deep:!0},search(){this.$emit("search-change",this.search)}},emits:["open","search-change","close","select","update:modelValue","remove","tag"],methods:{getValue(){return this.multiple?this.internalValue:this.internalValue.length===0?null:this.internalValue[0]},filterAndFlat(e,t,n){return kh(Uot(t,n,this.groupValues,this.groupLabel,this.customLabel),dd(this.groupValues,this.groupLabel))(e)},flatAndStrip(e){return kh(dd(this.groupValues,this.groupLabel),$ot)(e)},updateSearch(e){this.search=e},isExistingOption(e){return this.options?this.optionKeys.indexOf(e)>-1:!1},isSelected(e){const t=this.trackBy?e[this.trackBy]:e;return this.valueKeys.indexOf(t)>-1},isOptionDisabled(e){return!!e.$isDisabled},getOptionLabel(e){if(cd(e))return"";if(e.isTag)return e.label;if(e.$isLabel)return e.$groupLabel;const t=this.customLabel(e,this.label);return cd(t)?"":t},select(e,t){if(e.$isLabel&&this.groupSelect){this.selectGroup(e);return}if(!(this.blockKeys.indexOf(t)!==-1||this.disabled||e.$isDisabled||e.$isLabel)&&!(this.max&&this.multiple&&this.internalValue.length===this.max)&&!(t==="Tab"&&!this.pointerDirty)){if(e.isTag)this.$emit("tag",e.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(e)){t!=="Tab"&&this.removeElement(e);return}this.multiple?this.$emit("update:modelValue",this.internalValue.concat([e])):this.$emit("update:modelValue",e),this.$emit("select",e,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup(e){const t=this.options.find(n=>n[this.groupLabel]===e.$groupLabel);if(t){if(this.wholeGroupSelected(t)){this.$emit("remove",t[this.groupValues],this.id);const n=this.trackBy?t[this.groupValues].map(s=>s[this.trackBy]):t[this.groupValues],a=this.internalValue.filter(s=>n.indexOf(this.trackBy?s[this.trackBy]:s)===-1);this.$emit("update:modelValue",a)}else{let n=t[this.groupValues].filter(a=>!(this.isOptionDisabled(a)||this.isSelected(a)));this.max&&n.splice(this.max-this.internalValue.length),this.$emit("select",n,this.id),this.$emit("update:modelValue",this.internalValue.concat(n))}this.closeOnSelect&&this.deactivate()}},wholeGroupSelected(e){return e[this.groupValues].every(t=>this.isSelected(t)||this.isOptionDisabled(t))},wholeGroupDisabled(e){return e[this.groupValues].every(this.isOptionDisabled)},removeElement(e,t=!0){if(this.disabled||e.$isDisabled)return;if(!this.allowEmpty&&this.internalValue.length<=1){this.deactivate();return}const n=typeof e=="object"?this.valueKeys.indexOf(e[this.trackBy]):this.valueKeys.indexOf(e);if(this.multiple){const a=this.internalValue.slice(0,n).concat(this.internalValue.slice(n+1));this.$emit("update:modelValue",a)}else this.$emit("update:modelValue",null);this.$emit("remove",e,this.id),this.closeOnSelect&&t&&this.deactivate()},removeLastElement(){this.blockKeys.indexOf("Delete")===-1&&this.search.length===0&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate(){this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&this.pointer===0&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.preventAutofocus||this.$nextTick(()=>this.$refs.search&&this.$refs.search.focus())):this.preventAutofocus||typeof this.$el<"u"&&this.$el.focus(),this.$emit("open",this.id))},deactivate(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search!==null&&typeof this.$refs.search<"u"&&this.$refs.search.blur():typeof this.$el<"u"&&this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle(){this.isOpen?this.deactivate():this.activate()},adjustPosition(){if(typeof window>"u")return;const e=this.$el.getBoundingClientRect().top,t=window.innerHeight-this.$el.getBoundingClientRect().bottom;t>this.maxHeight||t>e||this.openDirection==="below"||this.openDirection==="bottom"?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(t-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(e-40,this.maxHeight))}}},wot={data(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition(){return this.pointer*this.optionHeight},visibleElements(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions(){this.pointerAdjust()},isOpen(){this.pointerDirty=!1},pointer(){this.$refs.search&&this.$refs.search.setAttribute("aria-activedescendant",this.id+"-"+this.pointer.toString())}},methods:{optionHighlight(e,t){return{"multiselect__option--highlight":e===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(t)}},groupHighlight(e,t){if(!this.groupSelect)return["multiselect__option--disabled",{"multiselect__option--group":t.$isLabel}];const n=this.options.find(a=>a[this.groupLabel]===t.$groupLabel);return n&&!this.wholeGroupDisabled(n)?["multiselect__option--group",{"multiselect__option--highlight":e===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(n)}]:"multiselect__option--disabled"},addPointerElement({key:e}="Enter"){this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward(){this.pointer0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet(e){this.pointer=e,this.pointerDirty=!0}}},JO={name:"vue-multiselect",mixins:[kot,wot],compatConfig:{MODE:3,ATTR_ENUMERATED_COERCION:!1},props:{name:{type:String,default:""},modelValue:{type:null,default(){return[]}},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:e=>`and ${e} more`},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},spellcheck:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0},required:{type:Boolean,default:!1}},computed:{hasOptionGroup(){return this.groupValues&&this.groupLabel&&this.groupSelect},isSingleLabelVisible(){return(this.singleValue||this.singleValue===0)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible(){return!this.internalValue.length&&(!this.searchable||!this.isOpen)},visibleValues(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue(){return this.internalValue[0]},deselectLabelText(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText(){return this.showLabels?this.selectLabel:""},selectGroupLabelText(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText(){return this.showLabels?this.selectedLabel:""},inputStyle(){return this.searchable||this.multiple&&this.modelValue&&this.modelValue.length?this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}:""},contentStyle(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove(){return this.openDirection==="above"||this.openDirection==="top"?!0:this.openDirection==="below"||this.openDirection==="bottom"?!1:this.preferredOpenDirection==="above"},showSearchInput(){return this.searchable&&(this.hasSingleSelectedSlot&&(this.visibleSingleValue||this.visibleSingleValue===0)?this.isOpen:!0)}}};const Mot={ref:"tags",class:"multiselect__tags"},Wot={class:"multiselect__tags-wrap"},Fot={class:"multiselect__spinner"},zot={key:0},xot={class:"multiselect__option"},Bot={class:"multiselect__option"},Got=x("No elements found. Consider changing the search query."),Vot={class:"multiselect__option"},Hot=x("List is empty.");function Kot(e,t,n,a,s,i){return h(),B("div",{tabindex:e.searchable?-1:n.tabindex,class:[{"multiselect--active":e.isOpen,"multiselect--disabled":n.disabled,"multiselect--above":i.isAbove,"multiselect--has-options-group":i.hasOptionGroup},"multiselect"],onFocus:t[14]||(t[14]=o=>e.activate()),onBlur:t[15]||(t[15]=o=>e.searchable?!1:e.deactivate()),onKeydown:[t[16]||(t[16]=Ye(ve(o=>e.pointerForward(),["self","prevent"]),["down"])),t[17]||(t[17]=Ye(ve(o=>e.pointerBackward(),["self","prevent"]),["up"]))],onKeypress:t[18]||(t[18]=Ye(ve(o=>e.addPointerElement(o),["stop","self"]),["enter","tab"])),onKeyup:t[19]||(t[19]=Ye(o=>e.deactivate(),["esc"])),role:"combobox","aria-owns":"listbox-"+e.id},[Pt(e.$slots,"caret",{toggle:e.toggle},()=>[M("div",{onMousedown:t[1]||(t[1]=ve(o=>e.toggle(),["prevent","stop"])),class:"multiselect__select"},null,32)]),Pt(e.$slots,"clear",{search:e.search}),M("div",Mot,[Pt(e.$slots,"selection",{search:e.search,remove:e.removeElement,values:i.visibleValues,isOpen:e.isOpen},()=>[We(M("div",Wot,[(h(!0),B(ue,null,be(i.visibleValues,(o,r)=>Pt(e.$slots,"tag",{option:o,search:e.search,remove:e.removeElement},()=>[(h(),B("span",{class:"multiselect__tag",key:r},[M("span",{textContent:S(e.getOptionLabel(o))},null,8,["textContent"]),M("i",{tabindex:"1",onKeypress:Ye(ve(u=>e.removeElement(o),["prevent"]),["enter"]),onMousedown:ve(u=>e.removeElement(o),["prevent"]),class:"multiselect__tag-icon"},null,40,["onKeypress","onMousedown"])]))])),256))],512),[[xi,i.visibleValues.length>0]]),e.internalValue&&e.internalValue.length>n.limit?Pt(e.$slots,"limit",{key:0},()=>[M("strong",{class:"multiselect__strong",textContent:S(n.limitText(e.internalValue.length-n.limit))},null,8,["textContent"])]):L("v-if",!0)]),M(LT,{name:"multiselect__loading"},{default:Y(()=>[Pt(e.$slots,"loading",{},()=>[We(M("div",Fot,null,512),[[xi,n.loading]])])]),_:3}),e.searchable?(h(),B("input",{key:0,ref:"search",name:n.name,id:e.id,type:"text",autocomplete:"off",spellcheck:n.spellcheck,placeholder:e.placeholder,required:n.required,style:i.inputStyle,value:e.search,disabled:n.disabled,tabindex:n.tabindex,onInput:t[2]||(t[2]=o=>e.updateSearch(o.target.value)),onFocus:t[3]||(t[3]=ve(o=>e.activate(),["prevent"])),onBlur:t[4]||(t[4]=ve(o=>e.deactivate(),["prevent"])),onKeyup:t[5]||(t[5]=Ye(o=>e.deactivate(),["esc"])),onKeydown:[t[6]||(t[6]=Ye(ve(o=>e.pointerForward(),["prevent"]),["down"])),t[7]||(t[7]=Ye(ve(o=>e.pointerBackward(),["prevent"]),["up"])),t[9]||(t[9]=Ye(ve(o=>e.removeLastElement(),["stop"]),["delete"]))],onKeypress:t[8]||(t[8]=Ye(ve(o=>e.addPointerElement(o),["prevent","stop","self"]),["enter"])),class:"multiselect__input","aria-controls":"listbox-"+e.id},null,44,["name","id","spellcheck","placeholder","required","value","disabled","tabindex","aria-controls"])):L("v-if",!0),i.isSingleLabelVisible?(h(),B("span",{key:1,class:"multiselect__single",onMousedown:t[10]||(t[10]=ve((...o)=>e.toggle&&e.toggle(...o),["prevent"]))},[Pt(e.$slots,"singleLabel",{option:i.singleValue},()=>[x(S(e.currentOptionLabel),1)])],32)):L("v-if",!0),i.isPlaceholderVisible?(h(),B("span",{key:2,class:"multiselect__placeholder",onMousedown:t[11]||(t[11]=ve((...o)=>e.toggle&&e.toggle(...o),["prevent"]))},[Pt(e.$slots,"placeholder",{},()=>[x(S(e.placeholder),1)])],32)):L("v-if",!0)],512),M(LT,{name:"multiselect"},{default:Y(()=>[We(M("div",{class:"multiselect__content-wrapper",onFocus:t[12]||(t[12]=(...o)=>e.activate&&e.activate(...o)),tabindex:"-1",onMousedown:t[13]||(t[13]=ve(()=>{},["prevent"])),style:{maxHeight:e.optimizedHeight+"px"},ref:"list"},[M("ul",{class:"multiselect__content",style:i.contentStyle,role:"listbox",id:"listbox-"+e.id,"aria-multiselectable":e.multiple},[Pt(e.$slots,"beforeList"),e.multiple&&e.max===e.internalValue.length?(h(),B("li",zot,[M("span",xot,[Pt(e.$slots,"maxElements",{},()=>[x("Maximum of "+S(e.max)+" options selected. First remove a selected option to select another.",1)])])])):L("v-if",!0),!e.max||e.internalValue.length(h(),B("li",{class:"multiselect__element",key:r,"aria-selected":e.isSelected(o),id:e.id+"-"+r,role:o&&(o.$isLabel||o.$isDisabled)?null:"option"},[o&&(o.$isLabel||o.$isDisabled)?L("v-if",!0):(h(),B("span",{key:0,class:[e.optionHighlight(r,o),"multiselect__option"],onClick:ve(u=>e.select(o),["stop"]),onMouseenter:ve(u=>e.pointerSet(r),["self"]),"data-select":o&&o.isTag?e.tagPlaceholder:i.selectLabelText,"data-selected":i.selectedLabelText,"data-deselect":i.deselectLabelText},[Pt(e.$slots,"option",{option:o,search:e.search,index:r},()=>[M("span",null,S(e.getOptionLabel(o)),1)])],42,["onClick","onMouseenter","data-select","data-selected","data-deselect"])),o&&(o.$isLabel||o.$isDisabled)?(h(),B("span",{key:1,"data-select":e.groupSelect&&i.selectGroupLabelText,"data-deselect":e.groupSelect&&i.deselectGroupLabelText,class:[e.groupHighlight(r,o),"multiselect__option"],onMouseenter:ve(u=>e.groupSelect&&e.pointerSet(r),["self"]),onMousedown:ve(u=>e.selectGroup(o),["prevent"])},[Pt(e.$slots,"option",{option:o,search:e.search,index:r},()=>[M("span",null,S(e.getOptionLabel(o)),1)])],42,["data-select","data-deselect","onMouseenter","onMousedown"])):L("v-if",!0)],8,["aria-selected","id","role"]))),128)):L("v-if",!0),We(M("li",null,[M("span",Bot,[Pt(e.$slots,"noResult",{search:e.search},()=>[Got])])],512),[[xi,n.showNoResults&&e.filteredOptions.length===0&&e.search&&!n.loading]]),We(M("li",null,[M("span",Vot,[Pt(e.$slots,"noOptions",{},()=>[Hot])])],512),[[xi,n.showNoOptions&&(e.options.length===0||i.hasOptionGroup===!0&&e.filteredOptions.length===0)&&!e.search&&!n.loading]]),Pt(e.$slots,"afterList")],12,["id","aria-multiselectable"])],36),[[xi,e.isOpen]])]),_:3})],42,["tabindex","aria-owns"])}JO.render=Kot;const qot=X({__name:"SportsMultiSelect",props:{sports:{},name:{},equipmentSports:{default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["updatedValues"],setup(e,{emit:t}){const n=e,{equipmentSports:a,name:s,sports:i}=fe(n),o=t,r=Ie([]);function u(l){o("updatedValues",l.map(d=>d.id))}return Ce(()=>a.value,async l=>{r.value=l,u(l)}),et(()=>{a.value&&(r.value=a.value)}),(l,d)=>m(i)?(h(),B(m(JO),{key:0,placeholder:"",id:m(s),name:m(s),disabled:l.disabled,modelValue:r.value,"onUpdate:modelValue":[d[0]||(d[0]=E=>r.value=E),u],multiple:!0,options:m(i),taggable:!0,label:"translatedLabel","track-by":"id",selectLabel:l.$t("workouts.MULTISELECT.selectLabel"),selectedLabel:l.$t("workouts.MULTISELECT.selectedLabel"),deselectLabel:l.$t("workouts.MULTISELECT.deselectLabel")},null,8,["id","name","disabled","modelValue","options","selectLabel","selectedLabel","deselectLabel"])):L("",!0)}}),jot=se(qot,[["__scopeId","data-v-016d8e47"]]);function jp(){const e=ut(),t=Le(),{t:n}=yt(),a=z(()=>u(s.value)),s=z(()=>t.getters[xe.GETTERS.EQUIPMENTS]),i=z(()=>t.getters[xe.GETTERS.LOADING]),o=z(()=>t.getters[xe.GETTERS.EQUIPMENT_TYPES]),r=z(()=>CO(o.value,n));function u(l){if(!e.params.id)return null;const d=l.filter(E=>e.params.id?E.id===e.params.id:null);return d.length===0?null:d[0]}return{equipment:a,equipments:s,equipmentTypes:o,translatedEquipmentTypes:r,equipmentsLoading:i}}const Yot={id:"new-equipment"},Xot={key:0,id:"new-equipment-title"},Qot={id:"equipment-form"},Zot={class:"form-items"},Jot={class:"form-item"},ert={for:"equipment-label"},trt={class:"equipment-label-help"},nrt={class:"info-box"},art={class:"form-item"},srt={for:"equipment-type-id"},irt=["value"],ort={key:0,class:"equipment-warning"},rrt={class:"info-box"},urt={class:"form-item"},lrt={for:"equipment-description"},crt={key:1,class:"form-item-checkbox"},drt={for:"equipment-active"},Ert={class:"form-item"},prt={for:"equipment-sports"},Trt={class:"form-buttons"},mrt=["disabled"],_rt=["disabled"],frt=X({__name:"EquipmentEdition",props:{translatedEquipmentTypes:{},equipmentsLoading:{type:Boolean}},setup(e){const t=e,{equipmentsLoading:n,translatedEquipmentTypes:a}=fe(t),s=Le(),i=ut(),{t:o}=yt(),{errorMessages:r}=qe(),{equipment:u}=jp(),l=kt({id:"",label:"",description:"",equipmentTypeId:0,isActive:!0,defaultForSportIds:[]}),d=Ie(!1),E=z(()=>ia(s.getters[Ht.GETTERS.SPORTS],o)),c=z(()=>a.value.filter(b=>b.id===l.equipmentTypeId)),T=z(()=>c.value.length>0?E.value.filter(b=>PO[c.value[0].label].includes(b.label)):[]),_=Ie([]),f=z(()=>a.value.filter(b=>{var C;return b.is_active||((C=u.value)==null?void 0:C.equipment_type.id)===b.id}));function O(b){_.value=ia(E.value,o,"all").filter(C=>b.default_for_sport_ids.includes(C.id))}function A(b){l.id=b.id,l.label=b.label,l.description=b.description?b.description:"",l.equipmentTypeId=b.equipment_type.id,l.isActive=b.is_active,O(b)}function R(){s.dispatch(xe.ACTIONS[l.id?"UPDATE_EQUIPMENT":"ADD_EQUIPMENT"],l)}function g(b){l.description=b}function I(){d.value=!0}function N(b){l.defaultForSportIds=b}return Ce(()=>u.value,b=>{i.params.id&&(b!=null&&b.id)&&A(b)}),Ce(()=>l.equipmentTypeId,b=>{u.value&&b===u.value.equipment_type.id?O(u.value):_.value=[]}),mt(()=>{var C;const b=document.getElementById("equipment-label");b==null||b.focus(),i.params.id&&i.params.id&&(C=u.value)!=null&&C.id&&A(u.value)}),(b,C)=>{var U,P;const y=j("CustomTextArea"),D=j("ErrorMessage");return h(),v("div",Yot,[l.id?L("",!0):(h(),v("h1",Xot,S(b.$t("equipments.ADD_A_NEW_EQUIPMENT")),1)),p("div",Qot,[p("form",{class:Ae({errors:d.value}),onSubmit:ve(R,["prevent"])},[p("div",Zot,[p("div",Jot,[p("label",ert,S(Fe(b.$t("common.LABEL")))+"* ",1),We(p("input",{id:"equipment-label",maxlength:"50",type:"text",required:"",onInvalid:I,"onUpdate:modelValue":C[0]||(C[0]=F=>l.label=F)},null,544),[[ot,l.label]]),p("div",trt,[p("span",nrt,[C[4]||(C[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(b.$t("equipments.50_CHARACTERS_MAX")),1)])])]),p("div",art,[p("label",srt,S(Fe(b.$t("equipments.EQUIPMENT_TYPE")))+"* ",1),We(p("select",{id:"equipment-type-id",required:"",onInvalid:I,"onUpdate:modelValue":C[1]||(C[1]=F=>l.equipmentTypeId=F)},[(h(!0),v(ue,null,be(f.value,F=>(h(),v("option",{value:F.id,key:F.id},S(F.translatedLabel)+" "+S(F.is_active?"":`(${b.$t("common.INACTIVE")})`),9,irt))),128))],544),[[Jt,l.equipmentTypeId]])]),(U=m(u))!=null&&U.workouts_count&&l.equipmentTypeId!==((P=m(u))==null?void 0:P.equipment_type.id)?(h(),v("div",ort,[p("span",rrt,[C[5]||(C[5]=p("i",{class:"fa fa-exclamation-triangle warning","aria-hidden":"true"},null,-1)),x(" "+S(b.$t("equipments.ALL_WORKOUTS_ASSOCIATIONS_REMOVED")),1)])])):L("",!0),p("div",urt,[p("label",lrt,S(b.$t("common.DESCRIPTION")),1),M(y,{name:"equipment-description",charLimit:200,input:l.description,onUpdateValue:g},null,8,["input"])]),l.id?(h(),v("div",crt,[p("label",drt,S(Fe(b.$t("common.ACTIVE"))),1),We(p("input",{id:"equipment-active",name:"equipment-active",type:"checkbox","onUpdate:modelValue":C[2]||(C[2]=F=>l.isActive=F)},null,512),[[dl,l.isActive]])])):L("",!0),p("div",Ert,[p("label",prt,S(Fe(b.$t("equipments.DEFAULT_FOR_SPORTS",0))),1),M(jot,{sports:T.value,name:"equipment-sports",equipmentSports:_.value,disabled:!l.equipmentTypeId,onUpdatedValues:N},null,8,["sports","equipmentSports","disabled"])])]),m(r)?(h(),B(D,{key:0,message:m(r)},null,8,["message"])):L("",!0),p("div",Trt,[p("button",{class:"confirm",type:"submit",disabled:m(n)},S(b.$t("buttons.SUBMIT")),9,mrt),p("button",{class:"cancel",disabled:m(n),onClick:C[3]||(C[3]=ve(()=>{var F;return b.$router.push((F=m(u))!=null&&F.id?b.$route.query.fromEdition?"/profile/edit/equipments":`/profile/equipments/${m(u).id}`:"/profile/equipments")},["prevent"]))},S(b.$t("buttons.CANCEL")),9,_rt)])],34)])])}}}),wh=se(frt,[["__scopeId","data-v-a596b0f9"]]),hrt={key:0,id:"user-equipments"},Mh=X({__name:"index",props:{user:{},isEdition:{type:Boolean}},setup(e){const t=e,{user:n}=fe(t),a=ut(),s=Le(),{equipments:i,translatedEquipmentTypes:o,equipmentsLoading:r}=jp();return Ce(()=>a.name,u=>{u==="UserEquipmentsList"&&s.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),et(()=>{s.dispatch(xe.ACTIONS.GET_EQUIPMENT_TYPES),s.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(u,l)=>{const d=j("router-view");return m(o)?(h(),v("div",hrt,[M(d,{authUser:m(n),equipments:m(i),translatedEquipmentTypes:m(o),isEdition:u.isEdition,equipmentsLoading:m(r)},null,8,["authUser","equipments","translatedEquipmentTypes","isEdition","equipmentsLoading"])])):L("",!0)}}}),Srt=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const a=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const s=String(Math.floor(e/60)).padStart(2,"0"),i=String(e%60).padStart(2,"0");return t?`${n==="0"?"":`${n}d `}${a==="00"?"":`${a}h `}${s}m ${i}s`:`${a==="00"?"":`${a}:`}${s}:${i}`},Yp=(e,t)=>{const n=e.match(/day/g)?e.split(", ")[1]:e;return{days:e.match(/day/g)?`${e.split(" ")[0]} ${e.match(/days/g)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}},AE=(e,t)=>{if(e.match(/day/g)){const n=Yp(e,t);return`${n.days}, ${n.duration}`}return e},Art={key:0,id:"user-equipment",class:"description-list"},Ort={class:"equipment-type"},Irt={key:0,class:"equipment-description"},grt={key:1,class:"no-description"},Rrt={class:"duration-detail"},Nrt={class:"sports-list"},vrt={class:"equipment-buttons"},brt=["disabled"],Crt=["disabled"],Prt=["disabled"],Drt=["disabled"],Lrt={key:1},yrt={class:"no-equipment"},$rt=["disabled"],Urt=X({__name:"UserEquipment",props:{authUser:{},equipmentsLoading:{type:Boolean}},setup(e){const t=e,{authUser:n}=fe(t),a=Le(),{t:s}=yt(),{errorMessages:i}=qe(),{equipment:o}=jp(),{sportColors:r,sports:u}=nn(),l=Ie(!1),d=z(()=>ia(u.value,s,"all",n.value.sports_list).filter(_=>{var f;return o.value?(f=o.value)==null?void 0:f.default_for_sport_ids.includes(_.id):!1}));function E(_){l.value=_}function c(){var _,f;if((_=o.value)!=null&&_.id){const O={id:o.value.id};((f=o.value)==null?void 0:f.workouts_count)>0&&(O.force=!0),a.dispatch(xe.ACTIONS.DELETE_EQUIPMENT,O)}}function T(_){a.dispatch(xe.ACTIONS.REFRESH_EQUIPMENT,_)}return et(()=>{a.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(_,f)=>{const O=j("Modal"),A=j("EquipmentTypeImage"),R=j("router-link"),g=j("Distance"),I=j("SportImage"),N=j("ErrorMessage");return m(o)?(h(),v("div",Art,[l.value?(h(),B(O,{key:0,title:_.$t("common.CONFIRMATION"),message:"user.PROFILE.EQUIPMENTS.CONFIRM_EQUIPMENT_DELETION",strongMessage:m(o).label,warning:m(o).workouts_count>0?_.$t("user.PROFILE.EQUIPMENTS.EQUIPMENT_ASSOCIATED_WITH_WORKOUTS"):"",onConfirmAction:c,onCancelAction:f[0]||(f[0]=b=>E(!1)),onKeydown:f[1]||(f[1]=Ye(b=>E(!1),["esc"]))},null,8,["title","strongMessage","warning"])):L("",!0),p("dl",null,[p("dt",null,S(Fe(_.$t("common.LABEL"))),1),p("dd",null,S(m(o).label),1),p("dt",null,S(Fe(_.$t("equipments.EQUIPMENT_TYPE"))),1),p("dd",Ort,[M(A,{title:_.$t(`equipment_types.${m(o).equipment_type.label}.LABEL`),"equipment-type-label":m(o).equipment_type.label},null,8,["title","equipment-type-label"]),p("span",null,S(_.$t(`equipment_types.${m(o).equipment_type.label}.LABEL`))+" "+S(m(o).equipment_type.is_active?"":`(${_.$t("common.INACTIVE")})`),1)]),p("dt",null,S(_.$t("common.DESCRIPTION")),1),p("dd",null,[m(o).description?(h(),v("span",Irt,S(m(o).description),1)):(h(),v("span",grt,S(_.$t("common.NO_DESCRIPTION")),1))]),p("dt",null,S(Fe(_.$t("workouts.WORKOUT",0))),1),p("dd",null,[m(o).workouts_count?(h(),B(R,{key:0,to:`/workouts?equipment_id=${m(o).id}`},{default:Y(()=>[x(S(m(o).workouts_count),1)]),_:1},8,["to"])):(h(),v(ue,{key:1},[x(S(m(o).workouts_count),1)],64))]),p("dt",null,S(Fe(_.$t("workouts.TOTAL_DISTANCE",0))),1),p("dd",null,[M(g,{distance:m(o).total_distance,unitFrom:"km",digits:2,displayUnit:!1,useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"]),p("span",null,S(m(n).imperial_units?"miles":"km"),1)]),p("dt",null,S(Fe(_.$t("workouts.TOTAL_DURATION",0))),1),p("dd",null,[x(S(m(AE)(m(o).total_moving,_.$t))+" ",1),m(o).total_duration!==m(o).total_moving?(h(),v(ue,{key:0},[f[7]||(f[7]=x(" (")),p("span",Rrt,S(_.$t("common.TOTAL_DURATION_WITH_PAUSES"))+": ",1),x(" "+S(m(AE)(m(o).total_duration,_.$t))+") ",1)],64)):L("",!0)]),p("dt",null,S(Fe(_.$t("common.ACTIVE",0))),1),p("dd",null,[p("i",{class:Ae(`fa fa-${m(o).is_active?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),m(o).default_for_sport_ids.length>0?(h(),v(ue,{key:0},[p("dt",null,S(Fe(_.$t("equipments.DEFAULT_FOR_SPORTS",0))),1),p("dd",Nrt,[(h(!0),v(ue,null,be(d.value,b=>(h(),v("span",{class:Ae(["sport-badge",{inactive:!b.is_active_for_user}]),key:b.label},[M(I,{title:b.translatedLabel,"sport-label":b.label,color:b.color?b.color:m(r)[b.label]},null,8,["title","sport-label","color"]),M(R,{to:`/profile/sports/${b.id}?fromEquipmentId=${m(o).id}`},{default:Y(()=>[x(S(b.translatedLabel)+" "+S(b.is_active_for_user?"":`(${_.$t("common.INACTIVE")})`),1)]),_:2},1032,["to"])],2))),128))])],64)):L("",!0)]),m(i)?(h(),B(N,{key:1,message:m(i)},null,8,["message"])):L("",!0),p("div",vrt,[m(n).suspended_at?L("",!0):(h(),v(ue,{key:0},[p("button",{onClick:f[2]||(f[2]=b=>_.$router.push(`/profile/edit/equipments/${m(o).id}`)),disabled:_.equipmentsLoading},S(_.$t("buttons.EDIT")),9,brt),p("button",{disabled:_.equipmentsLoading,onClick:f[3]||(f[3]=b=>T(m(o).id))},S(_.$t("buttons.REFRESH_TOTALS")),9,Crt),p("button",{class:"danger",onClick:f[4]||(f[4]=b=>l.value=!0),disabled:_.equipmentsLoading},S(_.$t("buttons.DELETE")),9,Prt)],64)),p("button",{disabled:_.equipmentsLoading,onClick:f[5]||(f[5]=b=>_.$router.push(_.$route.query.fromWorkoutId?`/workouts/${_.$route.query.fromWorkoutId}`:_.$route.query.fromSportId?`/profile/sports/${_.$route.query.fromSportId}`:"/profile/equipments"))},S(_.$t("buttons.BACK")),9,Drt)])])):(h(),v("div",Lrt,[p("p",yrt,S(_.$t("equipments.NO_EQUIPMENT")),1),p("button",{onClick:f[6]||(f[6]=b=>_.$router.push("/profile/equipments")),disabled:_.equipmentsLoading},S(_.$t("buttons.BACK")),9,$rt)]))}}}),krt=se(Urt,[["__scopeId","data-v-a3438555"]]),wrt={id:"user-equipments-list"},Mrt={key:0,class:"mobile-display"},Wrt={key:1,class:"equipments-list"},Frt={key:3},zrt={class:"responsive-table"},xrt={class:"text-left"},Brt={class:"text-left"},Grt={class:"text-left"},Vrt={class:"text-left"},Hrt={key:0},Krt={class:"equipment-label"},qrt={class:"cell-heading"},jrt={class:"column"},Yrt={class:"cell-heading"},Xrt={class:"column"},Qrt={class:"cell-heading"},Zrt={class:"active"},Jrt={class:"cell-heading"},eut={key:0,class:"action-buttons"},tut={class:"cell-heading"},nut=["onClick"],aut={class:"equipments-list-buttons"},sut=X({__name:"UserEquipmentsList",props:{equipments:{},translatedEquipmentTypes:{},authUser:{},isEdition:{type:Boolean}},setup(e){const t=e,{authUser:n,isEdition:a,equipments:s,translatedEquipmentTypes:i}=fe(t),o=z(()=>r(s.value));function r(u){const l={};return u.map(d=>{d.equipment_type.id in l?l[d.equipment_type.id].push(d):l[d.equipment_type.id]=[d]}),l}return(u,l)=>{const d=j("EquipmentTypeImage"),E=j("router-link"),c=j("Distance");return h(),v("div",wrt,[m(s).length>0?(h(),v("div",Mrt,[m(a)?L("",!0):(h(),v("button",{key:0,onClick:l[0]||(l[0]=T=>u.$router.push("/profile/edit/equipments"))},S(u.$t("equipments.EDIT_EQUIPMENTS")),1)),m(a)?L("",!0):(h(),v("button",{key:1,onClick:l[1]||(l[1]=T=>u.$router.push("/profile/equipments/new"))},S(u.$t("equipments.NEW_EQUIPMENT")),1)),m(a)?(h(),v("button",{key:2,onClick:l[2]||(l[2]=T=>u.$router.push("/profile/equipments"))},S(u.$t("buttons.BACK")),1)):(h(),v("button",{key:3,onClick:l[3]||(l[3]=T=>u.$router.push("/"))},S(u.$t("common.HOME")),1))])):L("",!0),m(a)?L("",!0):(h(),v("h1",Wrt,S(u.$t("user.PROFILE.EQUIPMENTS.YOUR_EQUIPMENTS")),1)),m(s).length===0?(h(),v("p",{key:2,class:Ae(["no-equipments",{edition:m(a)}])},S(u.$t("equipments.NO_EQUIPMENTS")),3)):(h(),v("div",Frt,[(h(!0),v(ue,null,be(m(i),T=>(h(),v(ue,{key:T.label},[o.value[T.id]?(h(),v(ue,{key:0},[p("h2",null,[M(d,{title:T.translatedLabel,"equipment-type-label":T.label},null,8,["title","equipment-type-label"]),x(" "+S(T.translatedLabel)+" "+S(T.is_active?"":`(${u.$t("common.INACTIVE")})`),1)]),p("div",zrt,[p("table",null,[p("thead",null,[p("tr",null,[p("th",xrt,S(u.$t("common.LABEL")),1),p("th",Brt,S(u.$t("workouts.WORKOUT",0)),1),p("th",Grt,S(Fe(u.$t("workouts.TOTAL_DISTANCE"))),1),p("th",Vrt,S(u.$t("common.ACTIVE")),1),m(a)&&!m(n).suspended_at?(h(),v("th",Hrt,S(u.$t("common.ACTION")),1)):L("",!0),l[8]||(l[8]=p("th",null,null,-1))])]),p("tbody",null,[(h(!0),v(ue,null,be(o.value[T.id].sort(m(Gp)),_=>(h(),v("tr",{key:_.label},[p("td",Krt,[p("span",qrt,S(u.$t("common.LABEL")),1),M(E,{to:{name:"Equipment",params:{id:_.id}}},{default:Y(()=>[x(S(_.label),1)]),_:2},1032,["to"])]),p("td",jrt,[p("span",Yrt,S(u.$t("workouts.WORKOUT",0)),1),_.workouts_count?(h(),B(E,{key:0,to:`/workouts?equipment_id=${_.id}`},{default:Y(()=>[x(S(_.workouts_count),1)]),_:2},1032,["to"])):(h(),v(ue,{key:1},[x(S(_.workouts_count),1)],64))]),p("td",Xrt,[p("span",Qrt,S(u.$t("workouts.TOTAL_DISTANCE",0)),1),M(c,{distance:_.total_distance,unitFrom:"km",digits:2,displayUnit:!1,useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"]),p("span",null,S(m(n).imperial_units?"miles":"km"),1)]),p("td",Zrt,[p("span",Jrt,S(u.$t("common.ACTIVE")),1),p("i",{class:Ae(`fa fa${_.is_active?"-check":""}`),"aria-hidden":"true"},null,2)]),m(a)&&!m(n).suspended_at?(h(),v("td",eut,[p("span",tut,S(u.$t("user.PROFILE.SPORT.ACTION")),1),p("button",{onClick:f=>u.$router.push(`/profile/edit/equipments/${_.id}${m(a)?"?fromEdition=true":""}`)},S(u.$t("buttons.EDIT")),9,nut)])):L("",!0)]))),128))])])])],64)):L("",!0)],64))),128))])),p("div",aut,[!m(a)&&!m(n).suspended_at&&m(s).length>0?(h(),v("button",{key:0,onClick:l[4]||(l[4]=T=>u.$router.push("/profile/edit/equipments"))},S(u.$t("equipments.EDIT_EQUIPMENTS")),1)):L("",!0),!m(a)&&!m(n).suspended_at?(h(),v("button",{key:1,onClick:l[5]||(l[5]=T=>u.$router.push("/profile/equipments/new"))},S(u.$t("equipments.NEW_EQUIPMENT")),1)):L("",!0),m(a)?(h(),v("button",{key:2,onClick:l[6]||(l[6]=T=>u.$router.push("/profile/equipments"))},S(u.$t("buttons.BACK")),1)):(h(),v("button",{key:3,onClick:l[7]||(l[7]=T=>u.$router.push("/"))},S(u.$t("common.HOME")),1))])])}}}),Wh=se(sut,[["__scopeId","data-v-235c4af3"]]),iut=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=fe(t);return(a,s)=>{const i=j("router-view");return h(),v("div",null,[M(i,{authUser:m(n)},null,8,["authUser"])])}}}),out={key:0,class:"notification-object"},rut={class:"box comment-box"},uut=X({__name:"CommentForUser",props:{comment:{},displayObjectName:{type:Boolean},action:{}},setup(e){const t=e,{comment:n,displayObjectName:a}=fe(t),{authUser:s}=Ke();return(i,o)=>(h(),v(ue,null,[m(a)?(h(),v("div",out,S(i.$t("workouts.COMMENTS.COMMENT"))+": ",1)):L("",!0),p("div",rut,[M(Fp,{comment:m(n),authUser:m(s),"display-appeal":!1,"hide-suspension-appeal":m(a),"comments-loading":"null","for-notification":!0,action:i.action,onCommentLinkClicked:o[0]||(o[0]=r=>i.$emit("commentLinkClicked"))},null,8,["comment","authUser","hide-suspension-appeal","action"])])],64))}}),Xp=se(uut,[["__scopeId","data-v-ed2176b7"]]),lut={class:"appeal-action"},cut=X({__name:"WorkoutActionAppeal",props:{action:{},workout:{},displaySuspensionMessage:{type:Boolean,default:!1}},setup(e){const t=e,{workout:n}=fe(t),{appealLoading:a,displayAppealForm:s,success:i,submitAppeal:o,cancelAppeal:r}=Tp(),u=z(()=>`workout_${n.value.id}`);return(l,d)=>(h(),v("div",lut,[p("div",{class:Ae({suspended:l.displaySuspensionMessage,"info-box":l.displaySuspensionMessage})},[l.displaySuspensionMessage?(h(),v(ue,{key:0},[d[4]||(d[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(l.$t("workouts.SUSPENDED_BY_ADMIN")),1)],64)):L("",!0),l.displaySuspensionMessage&&!m(i)&&!m(s)?(h(),v("button",{key:1,class:"transparent appeal-button",onClick:d[0]||(d[0]=E=>s.value=u.value)},S(l.$t("user.APPEAL")),1)):L("",!0)],2),m(s)?(h(),B(bl,{key:0,"report-action":l.action,success:m(i)===u.value,loading:m(a)===u.value,onSubmitForm:d[2]||(d[2]=E=>m(o)(E,"workout",m(n).id)),onHideMessage:d[3]||(d[3]=E=>s.value=null)},{cancelButton:Y(()=>[p("button",{onClick:d[1]||(d[1]=E=>m(r)())},S(l.$t("buttons.CANCEL")),1)]),_:1},8,["report-action","success","loading"])):L("",!0)]))}}),eI=se(cut,[["__scopeId","data-v-a3f01233"]]),dut={key:0,class:"notification-object"},Eut=X({__name:"WorkoutForUser",props:{action:{default:null},displayAppeal:{type:Boolean},displayObjectName:{type:Boolean},workout:{},reportId:{}},setup(e){const t=e,{action:n,displayAppeal:a,displayObjectName:s,reportId:i,workout:o}=fe(t),{getWorkoutSport:r}=nn(),{dateFormat:u,imperialUnits:l,timezone:d}=Ke(),E=z(()=>r(o.value)),c=z(()=>{var T,_,f;return o.value.suspended===!0&&n.value!==null&&(!n.value.appeal||((T=n.value.appeal)==null?void 0:T.approved)===!1||((_=n.value.appeal)==null?void 0:_.approved)===null&&!((f=n.value.appeal)!=null&&f.updated_at))&&a.value});return(T,_)=>{var R;const f=j("router-link"),O=j("i18n-t"),A=j("AlertMessage");return h(),v(ue,null,[m(s)?(h(),v("div",dut,S(T.$t("workouts.WORKOUT"))+": ",1)):L("",!0),M(Vo,{workout:m(o),sport:E.value,user:m(o).user,useImperialUnits:m(l),dateFormat:m(u),timezone:m(d),onWorkoutLinkClicked:_[0]||(_[0]=g=>T.$emit("workoutLinkClicked"))},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]),m(n)&&c.value?(h(),B(eI,{key:1,action:m(n),workout:m(o),"display-suspension-message":m(n).action_type==="workout_suspension"},null,8,["action","workout","display-suspension-message"])):(R=m(o).suspension)!=null&&R.report_id?(h(),B(A,{key:2,message:"workouts.SUSPENDED_BY_ADMIN"},mi({_:2},[m(o).suspension.report_id!==m(i)?{name:"additionalMessage",fn:Y(()=>[M(O,{keypath:"common.SEE_REPORT",tag:"span"},{default:Y(()=>[M(f,{to:`/admin/reports/${m(o).suspension.report_id}`},{default:Y(()=>[x(" #"+S(m(o).suspension.report_id),1)]),_:1},8,["to"])]),_:1})]),key:"0"}:void 0]),1024)):L("",!0)],64)}}}),Qp=se(Eut,[["__scopeId","data-v-bb831628"]]),put={id:"user-sanction"},Tut={key:0},mut={key:1},_ut={key:2},fut={class:"no-warning"},hut={class:"buttons"},Sut=X({__name:"UserSanctionDetail",props:{authUser:{}},setup(e){const t=e,{authUser:n}=fe(t),a=Le(),s=ut(),{authUserLoading:i,authUserSuccess:o}=Ke(),r=Ie(""),u=z(()=>a.getters[K.GETTERS.USER_SANCTION]);function l(){a.dispatch(K.ACTIONS.GET_USER_SANCTION,s.params.action_id)}function d(E){r.value=E,a.dispatch(K.ACTIONS.APPEAL,{actionId:u.value.id,actionType:"user_warning",text:E})}return mt(()=>l()),ct(()=>{a.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.commit(K.MUTATIONS.SET_USER_SANCTION,{})}),(E,c)=>{const T=j("Loader");return h(),v("div",put,[m(i)&&!r.value?(h(),v("div",Tut,[M(T)])):u.value.id?(h(),v("div",mut,[p("h1",null,S(E.$t(`user.PROFILE.SANCTIONS.${u.value.action_type}`,{date:m($t)(u.value.created_at,m(n).timezone,m(n).date_format)})),1),u.value.comment?(h(),B(Xp,{key:0,"display-object-name":!0,comment:u.value.comment},null,8,["comment"])):u.value.workout?(h(),B(Qp,{key:1,action:u.value,"display-appeal":!1,"display-object-name":!0,workout:u.value.workout},null,8,["action","workout"])):L("",!0),M(bl,{"report-action":u.value,success:m(o),loading:m(i),"can-appeal":u.value.action_type!=="user_suspension"&&!m(n).suspended_at,onSubmitForm:d},null,8,["report-action","success","loading","can-appeal"])])):(h(),v("div",_ut,[p("div",fut,S(E.$t("user.NO_WARNING_FOUND")),1)])),p("div",hut,[p("button",{onClick:c[0]||(c[0]=_=>E.$router.push("/profile/moderation"))},S(E.$t("buttons.BACK")),1),m(n).suspended_at?L("",!0):(h(),v(ue,{key:0},[p("button",{onClick:c[1]||(c[1]=_=>E.$router.push("/"))},S(E.$t("common.HOME")),1),p("button",{onClick:c[2]||(c[2]=_=>E.$router.push("/notifications"))},S(E.$t("notifications.NOTIFICATIONS",0)),1)],64))])])}}}),Aut=se(Sut,[["__scopeId","data-v-f297e854"]]),Out={id:"user-moderation"},Iut={key:0,id:"user-sanctions"},gut={key:0},Rut={class:"last-sanctions"},Nut={key:1},vut={class:"no-sanctions"},but=X({__name:"UserSanctionsList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=fe(t),a=ut(),s=Le(),{displayOptions:i}=qe();let o=kt(d(a.query));const r=z(()=>s.getters[ce.GETTERS.USER_SANCTIONS]),u=z(()=>s.getters[ce.GETTERS.USER_SANCTIONS_LOADING]),l=z(()=>s.getters[ce.GETTERS.USER_SANCTIONS_PAGINATION]);function d(T){const _={};return T.page&&(_.page=Ho(T.page,Wl)),_}function E(T){if(T.updated_at)switch(T.approved){case!0:return"APPROVED";case!1:return"REJECTED";default:return"IN_PROGRESS"}return"IN_PROGRESS"}function c(T){s.dispatch(ce.ACTIONS.GET_USER_SANCTIONS,{username:n.value.username,...T})}return Ce(()=>a.query,async T=>{o=d(T),c(o)}),et(()=>c({})),ct(()=>s.commit(ce.MUTATIONS.UPDATE_USER_SANCTIONS,[])),(T,_)=>{const f=j("router-link");return h(),v("div",Out,[p("h1",null,S(T.$t("user.PROFILE.SANCTIONS_RECEIVED")),1),m(n).sanctions_count?(h(),v("div",Iut,[u.value?(h(),v("div",gut,[M(wl)])):(h(),v(ue,{key:1},[p("ul",Rut,[(h(!0),v(ue,null,be(r.value,O=>(h(),v("li",{key:O.id},[p("div",null,[M(f,{to:`/profile/moderation/sanctions/${O.id}`},{default:Y(()=>[x(S(T.$t(`user.PROFILE.SANCTIONS.${O.action_type}`,{date:m($t)(O.created_at,m(i).timezone,m(i).dateFormat)})),1)]),_:2},1032,["to"]),O.appeal?(h(),v("span",{key:0,class:Ae(["info-box appeal",{approved:E(O.appeal)==="APPROVED",rejected:E(O.appeal)==="REJECTED"}])},[p("i",{class:Ae(["fa",{"fa-info-circle":E(O.appeal)!=="REJECTED","fa-times":E(O.appeal)==="REJECTED"}]),"aria-hidden":"true"},null,2),x(" "+S(T.$t(`user.PROFILE.SANCTION_APPEAL.${E(O.appeal)}`)),1)],2)):L("",!0)])]))),128))]),M(oa,{pagination:l.value,path:"/profile/moderation",query:m(o)},null,8,["pagination","query"])],64))])):(h(),v("div",Nut,[p("p",vut,S(T.$t("user.PROFILE.NO_SANCTIONS")),1)])),p("div",null,[p("button",{onClick:_[0]||(_[0]=O=>T.$router.push("/"))},S(T.$t("common.HOME")),1)])])}}}),Cut=se(but,[["__scopeId","data-v-bb47e769"]]),Put={class:"relationships"},Dut={key:0},Lut={class:"user-relationships"},yut={key:1,class:"no-relationships"},$ut={class:"profile-buttons"},Uut=X({__name:"UserRelationships",props:{user:{},relationship:{}},setup(e){const t=e,{relationship:n,user:a}=fe(t),s=Le(),i=ut(),{authUser:o}=Ke(),r=z(()=>({username:a.value.username,relationship:n.value,page:1})),u=z(()=>s.getters[ce.GETTERS.USER_RELATIONSHIPS]),l=z(()=>s.getters[ce.GETTERS.USERS_PAGINATION]);function d(E){s.dispatch(ce.ACTIONS.GET_RELATIONSHIPS,E)}return Ce(()=>i.path,E=>{r.value.page=l.value.page,r.value.relationship=E.includes("following")?"following":"followers",d(r.value)}),Ce(()=>i.query,(E,c)=>{E.page!==c.page&&(r.value.page=E.page?+E.page:1,d(r.value))}),Ce(()=>a.value.following,()=>{d(r.value)}),Ce(()=>a.value.followers,()=>{d(r.value)}),et(()=>d(r.value)),ct(()=>{s.dispatch(ce.ACTIONS.EMPTY_RELATIONSHIPS)}),(E,c)=>(h(),v("div",Put,[u.value.length>0?(h(),v("div",Dut,[p("div",Lut,[(h(!0),v(ue,null,be(u.value,T=>(h(),B(Hp,{key:T.username,authUser:m(o),user:T,from:"relationship"},null,8,["authUser","user"]))),128))]),M(oa,{path:`/profile/${m(n)}`,pagination:l.value,query:{}},null,8,["path","pagination"])])):(h(),v("p",yut,S(E.$t(`user.RELATIONSHIPS.NO_${m(n).toUpperCase()}`)),1)),p("div",$ut,[p("button",{onClick:c[0]||(c[0]=T=>E.$route.path.startsWith("/profile")?E.$router.push("/profile"):E.$router.push(`/users/${m(a).username}`))},S(E.$t("user.PROFILE.BACK_TO_PROFILE")),1)])]))}}),kr=se(Uut,[["__scopeId","data-v-2a9a43ae"]]),kut={id:"users-sports"},Fh=X({__name:"index",props:{user:{},isEdition:{type:Boolean}},setup(e){const t=e,{user:n,isEdition:a}=fe(t),s=Le(),{t:i}=yt(),{sports:o}=nn(),r=z(()=>ia(o.value,i,"is_active",n.value.sports_list));return ct(()=>{s.commit(st.MUTATIONS.SET_CLIENTS,[])}),(u,l)=>{const d=j("router-view");return h(),v("div",kut,[M(d,{authUser:m(n),isEdition:m(a),translatedSports:r.value},null,8,["authUser","isEdition","translatedSports"])])}}}),wut=X({__name:"EquipmentBadge",props:{equipment:{},workoutId:{},sportId:{}},setup(e){const t=e,{equipment:n,sportId:a,workoutId:s}=fe(t);return(i,o)=>{var l;const r=j("EquipmentTypeImage"),u=j("router-link");return h(),B(u,{class:Ae(["equipment-badge",{inactive:!m(n).is_active}]),to:{name:"Equipment",params:{id:m(n).id},query:{fromWorkoutId:m(s),fromSportId:(l=m(a))==null?void 0:l.toString()}}},{default:Y(()=>[M(r,{title:i.$t(`equipment_types.${m(n).equipment_type.label}.LABEL`),"equipment-type-label":m(n).equipment_type.label},null,8,["title","equipment-type-label"]),p("span",null,S(m(n).label)+" "+S(m(n).is_active?"":`(${i.$t("common.INACTIVE")})`),1)]),_:1},8,["class","to"])}}}),tI=se(wut,[["__scopeId","data-v-35b40eb3"]]),Mut={key:0,id:"user-sport",class:"description-list"},Wut={class:"sport-equipments"},Fut={key:0,class:"no-equipments"},zut={class:"sport-buttons"},xut=["disabled"],But={key:1},Gut={class:"no-sport"},Vut=X({__name:"UserSport",props:{authUser:{},translatedSports:{}},setup(e){const t=e,{translatedSports:n}=fe(t),a=ut(),{errorMessages:s}=qe(),{displayModal:i,sportColors:o,resetSport:r,updateDisplayModal:u}=nn(),{authUserLoading:l}=Ke(),d=z(()=>E(n.value));function E(c){if(!a.params.id)return null;const T=c.filter(_=>a.params.id?_.id===+a.params.id:null);return T.length===0?null:T[0]}return Ce(()=>l.value,c=>{!c&&!s.value&&u(!1)}),(c,T)=>{const _=j("Modal"),f=j("SportImage"),O=j("Distance");return d.value?(h(),v("div",Mut,[m(i)?(h(),B(_,{key:0,title:c.$t("common.CONFIRMATION"),message:c.$t(`user.PROFILE.SPORT.CONFIRM_SPORT_RESET${d.value.default_equipments.length>0?"_WITH_EQUIPMENTS":""}`),onConfirmAction:T[0]||(T[0]=A=>m(r)(d.value.id,!0)),onCancelAction:T[1]||(T[1]=A=>m(u)(!1)),onKeydown:T[2]||(T[2]=Ye(A=>m(u)(!1),["esc"]))},null,8,["title","message"])):L("",!0),p("dl",null,[p("dt",null,S(Fe(c.$t("workouts.SPORT",1))),1),p("dd",null,S(d.value.translatedLabel),1),p("dt",null,S(Fe(c.$t("user.PROFILE.SPORT.COLOR"))),1),p("dd",null,[M(f,{title:d.value.translatedLabel,"sport-label":d.value.label,color:d.value.color?d.value.color:m(o)[d.value.label]},null,8,["title","sport-label","color"])]),p("dt",null,S(Fe(c.$t("workouts.WORKOUT",0))),1),p("dd",null,[p("i",{class:Ae(`fa fa-${c.authUser.sports_list.includes(d.value.id)?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),p("dt",null,S(Fe(c.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD"))),1),p("dd",null,[M(O,{distance:d.value.stopped_speed_threshold,unitFrom:"km",speed:!0,useImperialUnits:c.authUser.imperial_units},null,8,["distance","useImperialUnits"])]),p("dt",null,S(Fe(c.$t("common.ACTIVE",0))),1),p("dd",null,[p("i",{class:Ae(`fa fa-${d.value.is_active_for_user?"check-":""}square-o`),"aria-hidden":"true"},null,2)]),p("dt",null,S(c.$t("user.PROFILE.SPORT.DEFAULT_EQUIPMENTS",1)),1),p("dd",Wut,[(h(!0),v(ue,null,be(d.value.default_equipments,A=>(h(),B(tI,{equipment:A,"sport-id":d.value.id,key:A.label},null,8,["equipment","sport-id"]))),128)),d.value.default_equipments.length===0?(h(),v("div",Fut,S(c.$t("equipments.NO_EQUIPMENTS")),1)):L("",!0)])]),p("div",zut,[c.authUser.suspended_at?L("",!0):(h(),v(ue,{key:0},[p("button",{onClick:T[3]||(T[3]=A=>c.$router.push(`/profile/edit/sports/${d.value.id}`))},S(c.$t("buttons.EDIT")),1),p("button",{disabled:m(l),class:"danger",onClick:T[4]||(T[4]=ve(A=>m(u)(!0),["prevent"]))},S(c.$t("buttons.RESET")),9,xut)],64)),p("button",{onClick:T[5]||(T[5]=A=>c.$router.push(m(a).query.fromEquipmentId?`/profile/equipments/${m(a).query.fromEquipmentId}`:"/profile/sports"))},S(c.$t("buttons.BACK")),1)])])):(h(),v("div",But,[p("p",Gut,S(c.$t("user.NO_SPORT_FOUND")),1),p("button",{onClick:T[6]||(T[6]=A=>c.$router.push("/profile/sports"))},S(c.$t("buttons.BACK")),1)]))}}}),Hut=se(Vut,[["__scopeId","data-v-fbec81b5"]]),Kut={key:0,id:"sport-edition"},qut={class:"form-items"},jut={class:"form-item"},Yut={for:"sport-label"},Xut={class:"form-item"},Qut={for:"sport-color"},Zut=["disabled"],Jut={class:"form-item"},elt={for:"sport-threshold"},tlt=["disabled"],nlt={class:"form-item-checkbox"},alt={for:"equipment-active"},slt=["checked","disabled"],ilt={class:"form-item"},olt={for:"sport-default-equipment"},rlt=["disabled"],ult={value:""},llt=["value"],clt={class:"form-buttons"},dlt=["disabled"],Elt=["disabled"],plt=X({__name:"UserSportEdition",props:{authUser:{},translatedSports:{}},setup(e){const t=e,{authUser:n,translatedSports:a}=fe(t),{t:s}=yt(),i=Le(),o=ut(),{errorMessages:r}=qe(),{defaultColor:u,defaultEquipmentId:l,sportColors:d,sportPayload:E,updateIsActive:c,updateSport:T}=nn(),{authUserLoading:_}=Ke(),f=Ie(!1),O=z(()=>g(a.value)),A=z(()=>i.getters[xe.GETTERS.EQUIPMENTS]),R=z(()=>A.value&&O.value?DO(A.value,s,"withIncludedIds",O.value,O.value.default_equipments.map(C=>C.id)):[]);function g(C){if(!o.params.id)return null;const y=C.filter(D=>o.params.id?D.id===+o.params.id:null);return y.length===0?null:y[0]}function I(C,y=!1){C!==null&&(E.sport_id=C.id,E.color=C.color?C.color:d?d[C.label]:u,E.is_active=C.is_active_for_user,E.stopped_speed_threshold=+`${n.value.imperial_units?Yt(C.stopped_speed_threshold,"km","mi",2):parseFloat(C.stopped_speed_threshold.toFixed(2))}`,E.fromSport=!0,y&&(l.value=C.default_equipments.length>0?C.default_equipments[0].id:""))}function N(){E.default_equipment_ids=l.value?[l.value]:[],T(n.value)}function b(){f.value=!0}return Ce(()=>O.value,C=>{o.params.id&&(C!=null&&C.id)&&I(C,!0)}),mt(()=>{var y;const C=document.getElementById("sport-color");C==null||C.focus(),o.params.id&&o.params.id&&(y=O.value)!=null&&y.id&&I(O.value,!0)}),(C,y)=>{const D=j("ErrorMessage");return O.value?(h(),v("div",Kut,[p("form",{class:Ae({errors:f.value}),onSubmit:ve(N,["prevent"])},[p("div",qut,[p("div",jut,[p("label",Yut,S(Fe(C.$t("workouts.SPORT",1))),1),x(" "+S(O.value.translatedLabel),1)]),p("div",Xut,[p("label",Qut,S(Fe(C.$t("user.PROFILE.SPORT.COLOR"))),1),We(p("input",{id:"sport-color",name:"sport-color",class:"sport-color",type:"color",required:"","onUpdate:modelValue":y[0]||(y[0]=U=>m(E).color=U),disabled:m(_),onInvalid:b},null,40,Zut),[[ot,m(E).color]])]),p("div",Jut,[p("label",elt,S(Fe(C.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")))+" ("+S(`${m(n).imperial_units?"mi":"km"}/h`)+")* ",1),We(p("input",{id:"sport-threshold",name:"sport-threshold",class:"threshold-input",type:"number",min:"0",step:"0.1",required:"","onUpdate:modelValue":y[1]||(y[1]=U=>m(E).stopped_speed_threshold=U),disabled:m(_),onInvalid:b},null,40,tlt),[[ot,m(E).stopped_speed_threshold]])]),p("div",nlt,[p("label",alt,S(Fe(C.$t("common.ACTIVE"))),1),p("input",{id:"equipment-active",name:"equipment-active",type:"checkbox",checked:O.value.is_active_for_user,onChange:y[2]||(y[2]=(...U)=>m(c)&&m(c)(...U)),disabled:m(_)},null,40,slt)]),p("div",ilt,[p("label",olt,S(C.$t("user.PROFILE.SPORT.DEFAULT_EQUIPMENTS",1)),1),We(p("select",{id:"sport-default-equipment",onInvalid:b,disabled:m(_),"onUpdate:modelValue":y[3]||(y[3]=U=>Kt(l)?l.value=U:null)},[p("option",ult,S(C.$t("equipments.NO_EQUIPMENTS")),1),(h(!0),v(ue,null,be(R.value,U=>(h(),v("option",{value:U.id,key:U.id},S(U.label),9,llt))),128))],40,rlt),[[Jt,m(l)]])])]),m(r)?(h(),B(D,{key:0,message:m(r)},null,8,["message"])):L("",!0),p("div",clt,[p("button",{class:"confirm",type:"submit",disabled:m(_)},S(C.$t("buttons.SUBMIT")),9,dlt),p("button",{class:"cancel",onClick:y[4]||(y[4]=ve(()=>{var U;return C.$router.push(`/profile/sports/${(U=O.value)==null?void 0:U.id}`)},["prevent"])),disabled:m(_)},S(C.$t("buttons.CANCEL")),9,Elt)])],34)])):L("",!0)}}}),Tlt=se(plt,[["__scopeId","data-v-aaa31377"]]),mlt={id:"user-sport-preferences"},_lt={key:1,class:"responsive-table"},flt={class:"mobile-display"},hlt={key:0,class:"profile-buttons mobile-display"},Slt={key:1,class:"profile-buttons"},Alt={class:"text-left"},Olt={class:"threshold"},Ilt={key:0},glt={class:"cell-heading"},Rlt={class:"cell-heading"},Nlt={key:2,class:"disabled-message"},vlt={key:3,class:"fa fa-refresh fa-spin fa-fw"},blt={class:"cell-heading"},Clt={class:"cell-heading"},Plt={class:"cell-heading"},Dlt=["checked"],Llt={class:"cell-heading"},ylt={key:1},$lt={key:0,class:"action-buttons"},Ult={class:"cell-heading"},klt=["onClick"],wlt={key:1,class:"edition-buttons"},Mlt=["disabled"],Wlt=["disabled"],Flt=["disabled"],zlt={key:0,class:"profile-buttons"},xlt={key:1,class:"profile-buttons"},Blt=X({__name:"UserSportPreferences",props:{authUser:{},translatedSports:{},isEdition:{type:Boolean}},setup(e){const t=e,{authUser:n,isEdition:a,translatedSports:s}=fe(t),i=Le(),{errorMessages:o}=qe(),{defaultColor:r,displayModal:u,sportColors:l,sportPayload:d,resetSport:E,updateDisplayModal:c,updateIsActive:T,updateSport:_}=nn(),{authUserLoading:f}=Ke(),O=Ie(!1);function A(I){I!==null?(d.sport_id=I.id,d.color=I.color?I.color:l?l[I.label]:r,d.is_active=I.is_active_for_user,d.stopped_speed_threshold=+`${n.value.imperial_units?Yt(I.stopped_speed_threshold,"km","mi",2):parseFloat(I.stopped_speed_threshold.toFixed(2))}`,O.value=I.default_equipments.length>0):g()}function R(I){return d.sport_id===I}function g(){d.sport_id=0,d.color=null,d.is_active=!0,d.stopped_speed_threshold=1,O.value=!1,i.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES)}return Ce(()=>f.value,I=>{!I&&!o.value&&(g(),c(!1))}),(I,N)=>{const b=j("Modal"),C=j("SportImage"),y=j("router-link"),D=j("ErrorMessage"),U=j("Distance");return h(),v("div",mlt,[m(u)?(h(),B(b,{key:0,title:I.$t("common.CONFIRMATION"),message:I.$t(`user.PROFILE.SPORT.CONFIRM_SPORT_RESET${O.value?"_WITH_EQUIPMENTS":""}`),onConfirmAction:N[0]||(N[0]=P=>m(E)(m(d).sport_id)),onCancelAction:N[1]||(N[1]=P=>m(c)(!1)),onKeydown:N[2]||(N[2]=Ye(P=>m(c)(!1),["esc"]))},null,8,["title","message"])):L("",!0),m(s).length>0?(h(),v("div",_lt,[p("div",flt,[m(a)?(h(),v("div",hlt,[p("button",{class:"cancel",onClick:N[3]||(N[3]=ve(P=>I.$router.push("/profile/sports"),["prevent"]))},S(I.$t("buttons.BACK")),1)])):(h(),v("div",Slt,[p("button",{onClick:N[4]||(N[4]=P=>I.$router.push("/profile/edit/sports"))},S(I.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),p("button",{onClick:N[5]||(N[5]=P=>I.$router.push("/"))},S(I.$t("common.HOME")),1)]))]),p("table",null,[p("thead",null,[p("tr",null,[p("th",null,S(I.$t("user.PROFILE.SPORT.COLOR")),1),p("th",Alt,S(I.$t("workouts.SPORT",0)),1),p("th",null,S(I.$t("workouts.WORKOUT",0)),1),p("th",null,S(I.$t("equipments.EQUIPMENT",0)),1),p("th",null,S(I.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),p("th",null,[p("div",Olt,[p("span",null,S(I.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),p("span",null," ("+S(`${m(n).imperial_units?"mi":"km"}/h`)+") ",1)])]),m(a)&&!m(n).suspended_at?(h(),v("th",Ilt,S(I.$t("user.PROFILE.SPORT.ACTION")),1)):L("",!0)])]),p("tbody",null,[(h(!0),v(ue,null,be(m(s),P=>(h(),v("tr",{key:P.id},[p("td",null,[p("span",glt,S(I.$t("user.PROFILE.SPORT.COLOR")),1),R(P.id)?We((h(),v("input",{key:0,class:"sport-color",type:"color","onUpdate:modelValue":N[6]||(N[6]=F=>m(d).color=F)},null,512)),[[ot,m(d).color]]):(h(),B(C,{key:1,title:P.translatedLabel,"sport-label":P.label,color:P.color?P.color:m(l)[P.label]},null,8,["title","sport-label","color"]))]),p("td",{class:Ae(["sport-label",{"disabled-sport":!P.is_active}])},[p("span",Rlt,S(I.$t("user.PROFILE.SPORT.LABEL")),1),R(P.id)?(h(),v(ue,{key:0},[x(S(P.translatedLabel),1)],64)):(h(),B(y,{key:1,to:`/profile/sports/${P.id}`},{default:Y(()=>[x(S(P.translatedLabel),1)]),_:2},1032,["to"])),P.is_active?L("",!0):(h(),v("span",Nlt," ("+S(I.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),m(f)&&R(P.id)?(h(),v("i",vlt)):L("",!0),m(o)&&m(d).sport_id===P.id?(h(),B(D,{key:4,message:m(o)},null,8,["message"])):L("",!0)],2),p("td",{class:Ae(["text-center",{"disabled-sport":!P.is_active}])},[p("span",blt,S(I.$t("workouts.WORKOUT",0)),1),p("i",{class:Ae(`fa fa${m(n).sports_list.includes(P.id)?"-check":""}`),"aria-hidden":"true"},null,2)],2),p("td",{class:Ae(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Clt,S(I.$t("equipments.EQUIPMENT",0)),1),p("i",{class:Ae(`fa fa${P.default_equipments.length>0?"-check":""}`),"aria-hidden":"true"},null,2)],2),p("td",{class:Ae(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Plt,S(I.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),R(P.id)&&P.is_active?(h(),v("input",{key:0,type:"checkbox",checked:P.is_active_for_user,onChange:N[7]||(N[7]=(...F)=>m(T)&&m(T)(...F))},null,40,Dlt)):(h(),v("i",{key:1,class:Ae(`fa fa${P.is_active_for_user?"-check":""}`),"aria-hidden":"true"},null,2))],2),p("td",{class:Ae(["text-center",{"disabled-sport":!P.is_active}])},[p("span",Llt,S(I.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD"))+" "+S(`${m(n).imperial_units?"mi":"km"}/h`),1),R(P.id)&&P.is_active?We((h(),v("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1","onUpdate:modelValue":N[8]||(N[8]=F=>m(d).stopped_speed_threshold=F)},null,512)),[[ot,m(d).stopped_speed_threshold]]):(h(),v("span",ylt,[M(U,{distance:P.stopped_speed_threshold,unitFrom:"km",speed:!0,useImperialUnits:m(n).imperial_units,displayUnit:!1},null,8,["distance","useImperialUnits"])]))],2),m(a)&&!m(n).suspended_at?(h(),v("td",$lt,[p("span",Ult,S(I.$t("user.PROFILE.SPORT.ACTION")),1),m(d).sport_id===0?(h(),v("button",{key:0,onClick:F=>A(P)},S(I.$t("buttons.EDIT")),9,klt)):L("",!0),R(P.id)?(h(),v("div",wlt,[p("button",{disabled:m(f),onClick:N[9]||(N[9]=ve(F=>m(_)(m(n)),["prevent"]))},S(I.$t("buttons.SUBMIT")),9,Mlt),p("button",{disabled:m(f),class:"warning",onClick:N[10]||(N[10]=ve(F=>m(c)(!0),["prevent"]))},S(I.$t("buttons.RESET")),9,Wlt),p("button",{disabled:m(f),onClick:N[11]||(N[11]=F=>A(null))},S(I.$t("buttons.CANCEL")),9,Flt)])):L("",!0)])):L("",!0)]))),128))])]),m(a)?(h(),v("div",zlt,[p("button",{class:"cancel",onClick:N[12]||(N[12]=ve(P=>I.$router.push("/profile/sports"),["prevent"]))},S(I.$t("buttons.BACK")),1)])):(h(),v("div",xlt,[m(n).suspended_at?L("",!0):(h(),v("button",{key:0,onClick:N[13]||(N[13]=P=>I.$router.push("/profile/edit/sports"))},S(I.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1)),p("button",{onClick:N[14]||(N[14]=P=>I.$router.push("/"))},S(I.$t("common.HOME")),1)]))])):L("",!0)])}}}),zh=se(Blt,[["__scopeId","data-v-2f0e6a61"]]),Glt={class:"about-text"},Vlt=["innerHTML"],Hlt=["href"],Klt={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},qlt={key:0},jlt=["href"],Ylt={key:1},Xlt=["href"],Qlt={class:"about-instance"},Zlt=["innerHTML"],Jlt=X({__name:"About",setup(e){const{appConfig:t,appLanguage:n}=qe(),a=z(()=>i()),s=z(()=>o());function i(){const r={};return t.value.weatherProvider==="visualcrossing"&&(r.name="Visual Crossing",r.url="https://www.visualcrossing.com"),r}function o(){let r="https://samr1.github.io/FitTrackee/";return n.value==="fr"&&(r+="fr/"),r}return(r,u)=>{const l=j("i18n-t");return h(),v("div",Glt,[p("div",null,[p("p",{class:"error-message",innerHTML:r.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Vlt),p("p",null,[u[0]||(u[0]=p("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1)),p("a",{class:"documentation-link",href:s.value,target:"_blank",rel:"noopener noreferrer"},S(Fe(r.$t("common.DOCUMENTATION"))),9,Hlt)]),p("p",null,[u[1]||(u[1]=p("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1)),p("a",Klt,S(r.$t("about.SOURCE_CODE")),1)]),p("p",null,[u[3]||(u[3]=p("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1)),M(l,{keypath:"about.FITTRACKEE_LICENSE"},{default:Y(()=>u[2]||(u[2]=[p("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"},"AGPLv3",-1)])),_:1})]),m(t).admin_contact?(h(),v("div",qlt,[u[4]||(u[4]=p("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1)),p("a",{href:`mailto:${m(t).admin_contact}`},S(r.$t("about.CONTACT_ADMIN")),9,jlt)])):L("",!0),a.value&&a.value.name?(h(),v("div",Ylt,[x(S(r.$t("about.WEATHER_DATA_FROM"))+" ",1),p("a",{href:a.value.url,target:"_blank",rel:"nofollow noopener"},S(a.value.name),9,Xlt)])):L("",!0),m(t).about?(h(),v(ue,{key:2},[p("p",Qlt,S(r.$t("about.ABOUT_THIS_INSTANCE")),1),p("div",{innerHTML:m(Go)(m(t).about)},null,8,Zlt)],64)):L("",!0)])])}}}),ect=se(Jlt,[["__scopeId","data-v-28993d11"]]),tct={},nct={id:"bike"};function act(e,t){return h(),v("div",nct,t[0]||(t[0]=[p("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,-1)]))}const nI=se(tct,[["render",act],["__scopeId","data-v-dc181e30"]]),sct={id:"about",class:"view"},ict={class:"container"},oct={class:"container-sub"},rct={class:"container-sub about-details"},uct=X({__name:"AboutView",setup(e){return(t,n)=>(h(),v("div",sct,[p("div",ict,[p("div",oct,[M(nI)]),p("div",rct,[M(ect)])])]))}}),lct=se(uct,[["__scopeId","data-v-ef9c7198"]]),cct={id:"admin",class:"view"},dct={key:0,class:"container"},Ect={key:1,class:"container"},pct=X({__name:"AdminView",setup(e){const t=Le(),{authUserHasModeratorRights:n,authUserHasAdminRights:a,authUserLoading:s}=Ke();return et(()=>{n.value&&t.dispatch(te.ACTIONS.GET_APPLICATION_STATS)}),(i,o)=>{const r=j("router-view");return h(),v("div",cct,[m(s)?L("",!0):(h(),v("div",dct,[(i.$route.meta.minimumRole==="moderator"?m(n):m(a))?(h(),B(r,{key:0})):(h(),v("div",Ect,[M(Ui)])),o[0]||(o[0]=p("div",{id:"bottom"},null,-1))]))])}}}),Tct=se(pct,[["__scopeId","data-v-580b02ed"]]),mct={},_ct={class:"no-workouts box"};function fct(e,t){const n=j("router-link");return h(),v("div",_ct,[p("div",null,[x(S(e.$t("workouts.NO_WORKOUTS"))+" ",1),M(n,{to:"/workouts/add"},{default:Y(()=>[x(S(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)]),_:1})])])}const Zp=se(mct,[["render",fct],["__scopeId","data-v-b0c91cc6"]]),os={ligthMode:{text:"#666",line:"rgba(0, 0, 0, 0.1)"},darkMode:{text:"#a1a1a1",line:"#3f3f3f"}},hct=(e,t,n,a=!1)=>{const s={speed:{label:t("workouts.SPEED"),backgroundColor:["transparent"],borderColor:[a?"#5f5c97":"#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:[a?"#303030":"#e5e5e5"],borderColor:[a?"#222222":"#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},i=[],o=[],r=[];return e.map(u=>{i.push(Zr("km",u.distance,n)),o.push(u.duration),s.speed.data.push(Zr("km",u.speed,n)),u.elevation!==void 0&&s.elevation.data.push(Zr("m",u.elevation,n)),r.push({latitude:u.latitude,longitude:u.longitude})}),{distance_labels:i,duration_labels:o,datasets:s,coordinates:r}},Sct=e=>{const t=e.length;if(t===0)return{};const n={};return e.map(a=>{n[a.sport_id]||(n[a.sport_id]={count:0,percentage:0}),n[a.sport_id].count+=1,n[a.sport_id].percentage=n[a.sport_id].count/t}),n},qo={order:"desc",order_by:"workout_date"},Act={id:"timeline"},Oct={class:"section-title"},Ict={key:0},gct={key:1},Rct={key:1,class:"more-workouts"},wr=5,Nct=X({__name:"Timeline",props:{sports:{},authUser:{}},setup(e){const t=e,{sports:n,authUser:a}=fe(t),{dateFormat:s}=Ke(),i=Le(),o=Ie(1),r=z(()=>a.value.nb_workouts>=wr?wr:a.value.nb_workouts),u=z(()=>i.getters[J.GETTERS.TIMELINE_WORKOUTS]),l=z(()=>i.getters[J.GETTERS.WORKOUTS_PAGINATION]),d=z(()=>i.getters[K.GETTERS.IS_SUSPENDED]);function E(){d.value||i.dispatch(J.ACTIONS.GET_TIMELINE_WORKOUTS,{page:o.value,per_page:wr,...qo})}function c(){d.value||(o.value+=1,i.dispatch(J.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:o.value,per_page:wr,...qo}))}return et(()=>E()),ct(()=>i.commit(J.MUTATIONS.SET_WORKOUTS_PAGINATION,{})),(T,_)=>(h(),v("div",Act,[p("div",Oct,S(T.$t("workouts.LATEST_WORKOUTS")),1),m(a).nb_workouts>0&&u.value.length===0?(h(),v("div",Ict,[(h(!0),v(ue,null,be([...Array(r.value).keys()],f=>(h(),B(Vo,{user:m(a),useImperialUnits:m(a).imperial_units,dateFormat:m(s),timezone:m(a).timezone,key:f},null,8,["user","useImperialUnits","dateFormat","timezone"]))),128))])):(h(),v("div",gct,[(h(!0),v(ue,null,be(u.value,f=>(h(),B(Vo,{workout:f,sport:u.value.length>0?m(n).filter(O=>O.id===f.sport_id)[0]:null,user:f.user,useImperialUnits:m(a).imperial_units,dateFormat:m(s),timezone:m(a).timezone,key:f.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]))),128)),u.value.length===0?(h(),B(Zp,{key:0})):L("",!0),l.value.has_next?(h(),v("div",Rct,[p("button",{onClick:c},S(T.$t("workouts.LOAD_MORE_WORKOUT")),1)])):L("",!0)]))]))}}),vct=se(Nct,[["__scopeId","data-v-bab374a4"]]),bct=["title"],aI=X({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:{},sportLabel:{},sportColor:{}},setup(e){const t=e,{displayHARecord:n,workout:a,sportLabel:s,sportColor:i}=fe(t);return(o,r)=>{const u=j("SportImage"),l=j("router-link");return h(),B(l,{class:"calendar-workout",to:{name:"Workout",params:{workoutId:m(a).id}}},{default:Y(()=>[M(u,{"sport-label":m(s),title:m(a).title,color:m(i)},null,8,["sport-label","title","color"]),p("sup",null,[m(a).records.length>0?(h(),v("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:m(a).records.filter(d=>m(n)?!0:d.record_type!=="HA").map(d=>` ${o.$t(`workouts.RECORD_${d.record_type}`)}`)[0]},null,8,bct)):L("",!0)])]),_:1},8,["to"])}}}),Cct={class:"donut-chart"},Pct={height:"34",width:"34",viewBox:"0 0 34 34"},Dct=["stroke","stroke-dashoffset","transform"],xh=16,Bh=16,Gh=14,Lct=X({__name:"DonutChart",props:{colors:{},datasets:{}},setup(e){const t=e,{colors:n,datasets:a}=fe(t);let s=-90;const i=2*Math.PI*Gh;function o(u,l){return l-u*l}function r(u,l){const d=`rotate(${s}, ${xh}, ${Bh})`;return s=l*360+s,d}return(u,l)=>(h(),v("div",Cct,[(h(),v("svg",Pct,[(h(!0),v(ue,null,be(Object.entries(m(a)),(d,E)=>(h(),v("g",{key:E},[p("circle",{cx:xh,cy:Bh,r:Gh,fill:"transparent",stroke:m(n)[+d[0]],"stroke-dashoffset":o(d[1].percentage,i),"stroke-dasharray":i,"stroke-width":"3","stroke-opacity":"0.8",transform:r(E,d[1].percentage)},null,8,Dct)]))),128))]))]))}}),yct={class:"calendar-workouts-chart"},$ct=["id"],Uct={class:"workouts-count"},kct={key:0,class:"workouts-pane"},wct=["id"],Mct=X({__name:"CalendarWorkoutsChart",props:{colors:{},datasets:{},sports:{},workouts:{},displayHARecord:{type:Boolean},index:{}},setup(e){const t=e,{colors:n,datasets:a,index:s,sports:i,workouts:o}=fe(t);let r=0;const u=Ie(!0);function l(){const c=document.getElementById(`workouts-pane-${s.value}`);return c!=null&&c.children&&(c==null?void 0:c.children.length)>0?c:null}async function d(c){var _;c.preventDefault(),c.stopPropagation(),u.value=!u.value,await ln();const T=l();u.value?(_=document.getElementById(`workouts-donut-${s.value}`))==null||_.focus():(T==null?void 0:T.children[0]).focus()}function E(c){if(!u.value){if(!u.value&&(c.key==="Tab"||c.keyCode===9)){c.preventDefault(),c.stopPropagation();const T=l();T&&(c.shiftKey?(r-=1,r<0&&(r=T.children.length-1)):(r+=1,r>=T.children.length&&(r=0)),T.children[r].focus())}c.key==="Escape"&&d(c)}}return mt(()=>{document.addEventListener("keydown",E)}),ct(()=>{document.removeEventListener("keydown",E)}),(c,T)=>{const _=aR("click-outside");return h(),v("div",yct,[p("button",{class:"workouts-chart transparent",id:`workouts-donut-${m(s)}`,onClick:d},[p("div",Uct,S(m(o).length),1),M(Lct,{datasets:m(a),colors:m(n)},null,8,["datasets","colors"])],8,$ct),u.value?L("",!0):(h(),v("div",kct,[We((h(),v("div",{class:"more-workouts",id:`workouts-pane-${m(s)}`},[p("button",{class:"calendar-more-close transparent",onClick:d},T[0]||(T[0]=[p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])),(h(!0),v(ue,null,be(m(o),(f,O)=>(h(),B(aI,{key:O,displayHARecord:c.displayHARecord,workout:f,sportLabel:m(xp)(f,m(i)),sportColor:m(Bp)(f,m(i))},null,8,["displayHARecord","workout","sportLabel","sportColor"]))),128))],8,wct)),[[_,d]])]))])}}}),Vh=se(Mct,[["__scopeId","data-v-fda2985a"]]),Wct={class:"calendar-workouts"},Fct={class:"desktop-display"},zct={key:0,class:"workouts-display"},xct={key:1,class:"donut-display"},Bct={class:"mobile-display"},Gct={key:0,class:"donut-display"},Hh=6,Vct=X({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:{},sports:{},index:{}},setup(e){const t=e,{displayHARecord:n,index:a,sports:s,workouts:i}=fe(t),o=z(()=>Sct(t.workouts)),r=z(()=>uje(t.sports));return(u,l)=>(h(),v("div",Wct,[p("div",Fct,[m(i).length<=Hh?(h(),v("div",zct,[(h(!0),v(ue,null,be(m(i).slice(0,Hh),(d,E)=>(h(),B(aI,{key:E,displayHARecord:m(n),workout:d,sportLabel:m(xp)(d,m(s)),sportColor:m(Bp)(d,m(s))},null,8,["displayHARecord","workout","sportLabel","sportColor"]))),128))])):(h(),v("div",xct,[M(Vh,{workouts:m(i),sports:m(s),datasets:o.value,colors:r.value,displayHARecord:m(n),index:m(a)},null,8,["workouts","sports","datasets","colors","displayHARecord","index"])]))]),p("div",Bct,[m(i).length>0?(h(),v("div",Gct,[M(Vh,{workouts:m(i),sports:m(s),datasets:o.value,colors:r.value,displayHARecord:m(n),index:m(a)},null,8,["workouts","sports","datasets","colors","displayHARecord","index"])])):L("",!0)])]))}}),Hct={class:"calendar-cells"},Kct={class:"calendar-cell-day"},qct=X({__name:"CalendarCells",props:{currentDay:{},displayHARecord:{type:Boolean},endDate:{},sports:{},startDate:{},timezone:{},weekStartingMonday:{type:Boolean},workouts:{}},setup(e){const t=e,{currentDay:n,displayHARecord:a,endDate:s,sports:i,startDate:o,timezone:r,weekStartingMonday:u,workouts:l}=fe(t),d=Ie([]);function E(){d.value=[];let _=o.value;for(;_<=s.value;){const f=[];for(let O=0;O<7;O++)f.push(_),_=ar(_,1);d.value.push(f)}}function c(_){return u.value?[5,6].includes(_):[0,6].includes(_)}function T(_,f){return f?f.filter(O=>_1(vl(O.workout_date,r.value),_)).reverse():[]}return Ce(()=>t.currentDay,()=>E()),mt(()=>E()),(_,f)=>(h(),v("div",Hct,[(h(!0),v(ue,null,be(d.value,(O,A)=>(h(),v("div",{class:"calendar-row",key:A},[(h(!0),v(ue,null,be(O,(R,g)=>(h(),v("div",{class:Ae(["calendar-cell",{"disabled-cell":!m(BD)(R,m(n)),"week-end":c(g),today:m(GD)(R)}]),key:g},[M(Vct,{workouts:T(R,m(l)),sports:m(i),displayHARecord:m(a),index:g},null,8,["workouts","sports","displayHARecord","index"]),p("div",Kct,S(m(On)(R,"d")),1)],2))),128))]))),128))]))}}),jct={class:"calendar-days"},Yct=X({__name:"CalendarDays",props:{startDate:{},localeOptions:{}},setup(e){const t=e,n=[];for(let a=0;a<7;a++)n.push(ar(t.startDate,a));return(a,s)=>(h(),v("div",jct,[(h(),v(ue,null,be(n,(i,o)=>p("div",{class:"calendar-day",key:o},S(m(On)(i,a.localeOptions.code==="eu"?"EEEEEE.":"EEE",{locale:a.localeOptions})),1)),64))]))}}),Xct={class:"calendar-header"},Qct=["aria-label"],Zct={class:"calendar-month"},Jct=["aria-label"],edt=X({__name:"CalendarHeader",props:{day:{},localeOptions:{}},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:a,localeOptions:s}=fe(n),i=t;return(o,r)=>(h(),v("div",Xct,[p("button",{class:"calendar-arrow calendar-arrow-left transparent",onClick:r[0]||(r[0]=u=>i("displayPreviousMonth")),"aria-label":o.$t("common.PREVIOUS")},r[2]||(r[2]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),8,Qct),p("div",Zct,[p("span",null,S(m(On)(m(a),"MMM yyyy",{locale:m(s)})),1)]),p("button",{class:"calendar-arrow calendar-arrow-right transparent",onClick:r[1]||(r[1]=u=>i("displayNextMonth")),"aria-label":o.$t("common.NEXT")},r[3]||(r[3]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),8,Jct)]))}}),tdt={id:"user-calendar"},ndt={class:"section-title"},adt={class:"calendar-card box"},Kh="yyyy-MM-dd",sdt=X({__name:"index",props:{sports:{},user:{}},setup(e){const t=e,{sports:n,user:a}=fe(t),s=Le(),{locale:i}=qe(),{isAuthUserSuspended:o}=Ke(),r=Ie(new Date),u=Ie(H_(r.value,a.value.weekm)),l=z(()=>s.getters[J.GETTERS.CALENDAR_WORKOUTS]);function d(){if(!o.value){u.value=H_(r.value,t.user.weekm);const T={from:On(u.value.start,Kh),to:On(u.value.end,Kh),page:1,per_page:100,...qo};s.dispatch(J.ACTIONS.GET_CALENDAR_WORKOUTS,T)}}function E(){r.value=Ai(r.value,1),d()}function c(){r.value=wo(r.value,1),d()}return et(()=>d()),(T,_)=>(h(),v("div",tdt,[p("div",ndt,S(T.$t("workouts.MY_WORKOUTS")),1),p("div",adt,[M(edt,{day:r.value,"locale-options":m(i),onDisplayNextMonth:E,onDisplayPreviousMonth:c},null,8,["day","locale-options"]),M(Yct,{"start-date":u.value.start,"locale-options":m(i)},null,8,["start-date","locale-options"]),M(qct,{currentDay:r.value,displayHARecord:m(a).display_ascent,"end-date":u.value.end,sports:m(n),"start-date":u.value.start,timezone:m(a).timezone,workouts:l.value,weekStartingMonday:m(a).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}}),sI={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},idt={ariaLabel:{type:String},ariaDescribedby:{type:String}},odt={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...sI,...idt},rdt=RS[0]==="2"?(e,t)=>Object.assign(e,{attrs:t}):(e,t)=>Object.assign(e,t);function ei(e){return Yo(e)?dt(e):e}function udt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e;return Yo(t)?new Proxy(e,{}):e}function ldt(e,t){const n=e.options;n&&t&&Object.assign(n,t)}function iI(e,t){e.labels=t}function oI(e,t,n){const a=[];e.datasets=t.map(s=>{const i=e.datasets.find(o=>o[n]===s[n]);return!i||!s.data||a.includes(i)?{...s}:(a.push(i),Object.assign(i,s),i)})}function cdt(e,t){const n={labels:[],datasets:[]};return iI(n,e.labels),oI(n,e.datasets,t),n}const ddt=X({props:odt,setup(e,t){let{expose:n,slots:a}=t;const s=Ie(null),i=il(null);n({chart:i});const o=()=>{if(!s.value)return;const{type:l,data:d,options:E,plugins:c,datasetIdKey:T}=e,_=cdt(d,T),f=udt(_,d);i.value=new gE(s.value,{type:l,data:f,options:{...E},plugins:c})},r=()=>{const l=dt(i.value);l&&(e.destroyDelay>0?setTimeout(()=>{l.destroy(),i.value=null},e.destroyDelay):(l.destroy(),i.value=null))},u=l=>{l.update(e.updateMode)};return mt(o),ct(r),Ce([()=>e.options,()=>e.data],(l,d)=>{let[E,c]=l,[T,_]=d;const f=dt(i.value);if(!f)return;let O=!1;if(E){const A=ei(E),R=ei(T);A&&A!==R&&(ldt(f,A),O=!0)}if(c){const A=ei(c.labels),R=ei(_.labels),g=ei(c.datasets),I=ei(_.datasets);A!==R&&(iI(f.config.data,A),O=!0),g&&g!==I&&(oI(f.config.data,g,e.datasetIdKey),O=!0)}O&&ln(()=>{u(f)})},{deep:!0}),()=>bn("canvas",{role:"img",ariaLabel:e.ariaLabel,ariaDescribedby:e.ariaDescribedby,ref:s},[bn("p",{},[a.default?a.default():""])])}});function rI(e,t){return gE.register(t),X({props:sI,setup(n,a){let{expose:s}=a;const i=il(null),o=r=>{i.value=r==null?void 0:r.chart};return s({chart:i}),()=>bn(ddt,rdt({ref:o},{type:e,...n}))}})}const Edt=rI("bar",u0),pdt=rI("line",l0),to=(e,t,n,a=!0,s="km")=>{const i=n?vn[s].defaultTarget:s;switch(e){case"average_speed":return`${t.toFixed(2)} ${i}/h`;case"average_duration":case"total_duration":return Srt(t,a);case"average_distance":case"average_ascent":case"average_descent":case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${i}`;default:return t.toString()}},Tdt=X({__name:"Chart",props:{datasets:{},labels:{},displayedData:{},displayedSportIds:{},fullStats:{type:Boolean},useImperialUnits:{type:Boolean},label:{}},setup(e){const t=e,{datasets:n,labels:a,displayedData:s,displayedSportIds:i,fullStats:o,useImperialUnits:r}=fe(t),{t:u}=yt(),{darkTheme:l}=qe(),d=z(()=>({color:l.value?os.darkMode.line:os.ligthMode.line})),E=z(()=>({color:l.value?os.darkMode.text:os.ligthMode.text})),c=z(()=>s.value!=="average_workouts"&&s.value.startsWith("average")),T=z(()=>({labels:a.value,datasets:JSON.parse(JSON.stringify(n.value))})),_=z(()=>({responsive:!0,maintainAspectRatio:!1,animation:!1,layout:{padding:{top:o.value?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1,...d.value},border:{...d.value},ticks:{...E.value}},y:{stacked:!s.value.startsWith("average"),grid:{drawOnChartArea:!1,...d.value},border:{...d.value},ticks:{maxTicksLimit:6,callback:function(R){return to(s.value,+R,r.value,!1,A(s.value))},...E.value},afterFit:function(R){R.width=o.value?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(R){return c.value&&R.dataset.backgroundColor?R.dataset.backgroundColor[0]:E.value.color},rotation:function(R){return o.value&&R.chart.chartArea.width<580?310:0},display:function(R){return o.value&&R.chart.chartArea.width<300?!1:c.value?i.value.length==1?"auto":!1:!0},formatter:function(R,g){if(s.value.startsWith("average"))return to(s.value,R,r.value,!1);{const I=g.chart.data.datasets.map(N=>N.data[g.dataIndex]).reduce((N,b)=>O(N,b),0);return g.datasetIndex===i.value.length-1&&I>0?to(s.value,I,r.value,!1,A(s.value)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:c.value?"nearest":"average"},filter:function(R){return R.formattedValue!=="0"},callbacks:{label:function(R){let g=s.value==="average_workouts"?u("workouts.WORKOUT",0):u(`sports.${R.dataset.label}.LABEL`)||"";return g&&(g+=": "),R.parsed.y!==null&&(g+=to(s.value,R.parsed.y,r.value,!0,A(s.value))),g},footer:function(R){if(s.value.startsWith("average"))return"";let g=0;return R.map(I=>{g+=I.parsed.y}),`${u("common.TOTAL")}: `+to(s.value,g,r.value,!0,A(s.value))}}}}}));function f(R){return isNaN(R)?0:+R}function O(R,g){return f(R)+f(g)}function A(R){return R.includes("scent")?"m":"km"}return(R,g)=>(h(),v("div",{class:Ae(["bar-chart",{minimal:!m(o)}])},[M(m(Edt),{data:T.value,options:_.value,"aria-label":R.label},null,8,["data","options","aria-label"])],2))}}),mdt=se(Tdt,[["__scopeId","data-v-f96e822f"]]),{locale:el}=$i.global,uI={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},_dt=["average_ascent","average_descent","average_distance","average_duration","average_speed","total_workouts","total_duration","total_distance","total_ascent","total_descent"],fdt=(e,t)=>{const n=[];for(let a=pBe(e.duration,e.start,t);a<=e.end;a=TBe(e.duration,a))n.push(a);return n},ma=(e,t,n=!1)=>{const a={label:e,backgroundColor:[t],data:[]};return n?(a.type="line",a.borderColor=[t],a.spanGaps=!0):a.type="bar",a},hdt=e=>{const t={average_ascent:[],average_descent:[],average_distance:[],average_duration:[],average_speed:[],average_workouts:[],total_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map(n=>{const a=n.color?n.color:zp[n.label];t.average_ascent.push(ma(n.label,a,!0)),t.average_descent.push(ma(n.label,a,!0)),t.average_distance.push(ma(n.label,a,!0)),t.average_duration.push(ma(n.label,a,!0)),t.average_speed.push(ma(n.label,a,!0)),t.total_workouts.push(ma(n.label,a)),t.total_distance.push(ma(n.label,a)),t.total_duration.push(ma(n.label,a)),t.total_ascent.push(ma(n.label,a)),t.total_descent.push(ma(n.label,a))}),t},Sdt=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":case"average_distance":case"average_ascent":case"average_descent":return Zr(["average_speed","total_distance","average_distance"].includes(e)?"km":"m",t,n);default:case"total_workouts":case"total_duration":case"average_duration":return t}},OE=(e,t,n,a)=>On(e,t==="week"?fs(n,el.value):a,{locale:zs[el.value]}),Adt=(e,t,n,a,s,i,o)=>{const r=fdt(e,t),u=uI[e.duration],l=n.filter(T=>a.includes(T.id)),d=[],E=hdt(l),c={};return l.map(T=>c[T.label]=T.id),r.map(T=>{const _=On(T,u.api),f=OE(T,e.duration,o,u.chart);On(T,e.duration==="week"?fs(o,el.value):u.chart,{locale:zs[el.value]}),d.push(f),_dt.map(O=>{E[O].map(A=>{A.data.push(_ in s&&c[A.label]in s[_]?Sdt(O,s[_][c[A.label]][O],i):O.startsWith("average")?null:0)})})}),{labels:d,datasets:E}},Odt=(e,t,n,a)=>{const s=n?1:0,i=t==="year"?JE(Vd(e,9)):t==="week"?Il(wo(e,2),{weekStartsOn:s}):ir(wo(e,11)),o=t==="year"?f1(e):t==="week"?ep(e,{weekStartsOn:s}):sr(e);return{duration:t,end:o,start:i,statsType:a}},Idt=(e,t,n)=>{const{duration:a,start:s,end:i}=e,o=n?1:0;return{duration:a,end:a==="year"?f1(t?Vd(i,1):Tu(i,1)):a==="week"?ep(t?Zm(i,1):Gd(i,1),{weekStartsOn:o}):sr(t?wo(i,1):Ai(i,1)),start:a==="year"?JE(t?Vd(s,1):Tu(s,1)):a==="week"?Il(t?Zm(s,1):Gd(s,1),{weekStartsOn:o}):ir(t?wo(s,1):Ai(s,1)),statsType:e.statsType}},qh=e=>{const t=e.reduce((a,s)=>(a||0)+(s||0),0);return+(e.length?(t||0)/e.length:0).toFixed(1)},gdt=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:n{const n=[],a={label:"workouts_average",backgroundColor:[],data:[]};let s=[];const i=e.map(o=>(o.label=t(`sports.${o.label}.LABEL`),o)).sort(gdt);for(const o of i)a.data.push(qh(o.data)),a.backgroundColor.push(o.backgroundColor[0]),n.push(o.label),s.length>0?s=s.map((r,u)=>r+(o.data[u]||0)):s=o.data.map(r=>r||0);return{labels:n,datasets:{workouts_average:[a]},workoutsAverage:qh(s)}},Ndt={class:"stats-chart"},vdt={key:0},bdt={key:1},Cdt={class:"chart-radio"},Pdt=["value","checked","disabled"],Ddt=["value","checked","disabled"],Ldt=["value","checked","disabled"],ydt={key:0},$dt=["checked","disabled"],Udt={key:1},kdt=["value","checked","disabled"],wdt={key:2},Mdt=["value","checked","disabled"],Wdt={class:"workouts-average"},Fdt={key:0,class:"info-box"},zdt=X({__name:"index",props:{sports:{},user:{},chartParams:{},displayedSportIds:{default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},selectedTimeFrame:{default:null}},setup(e){const t=e,{sports:n,user:a,chartParams:s,displayedSportIds:i,fullStats:o,hideChartIfNoData:r,isDisabled:u}=fe(t),l=Le(),{t:d}=yt(),E=Ie("total_distance"),c=z(()=>l.getters[Mt.GETTERS.USER_STATS]),T=z(()=>uI[s.value.duration].chart),_=z(()=>OE(s.value.start,s.value.duration,a.value.date_format,T.value)),f=z(()=>OE(s.value.end,s.value.duration,a.value.date_format,T.value)),O=z(()=>Adt(s.value,a.value.weekm,n.value,i.value,c.value,a.value.imperial_units,a.value.date_format)),A=z(()=>O.value.datasets[E.value]),R=z(()=>O.value.labels),g=z(()=>Object.keys(c.value).length===0),I=z(()=>s.value.statsType),N=z(()=>Rdt(O.value.datasets.total_workouts,d));function b(D){a.value.suspended_at||l.dispatch(Mt.ACTIONS.GET_USER_STATS,{username:a.value.username,params:D})}function C(D){E.value=D.target.value}function y(D,U){return{from:On(D.start,"yyyy-MM-dd"),to:On(D.end,"yyyy-MM-dd"),time:D.duration==="week"?`week${U.weekm?"m":""}`:D.duration,type:I.value}}return Ce(()=>s.value,async D=>{b(y(D,a.value))}),Ce(()=>I.value,async D=>{E.value=D==="total"&&E.value==="average_speed"?"total_distance":`${I.value}_${E.value.split("_")[1]}`}),et(()=>b(y(s.value,a.value))),(D,U)=>(h(),v("div",Ndt,[m(r)&&g.value?(h(),v("div",vdt,S(D.$t("workouts.NO_WORKOUTS")),1)):(h(),v("div",bdt,[p("div",Cdt,[p("label",null,[p("input",{type:"radio",name:"value_type",value:`${I.value}_distance`,checked:E.value===`${I.value}_distance`,disabled:m(u),onClick:C},null,8,Pdt),x(" "+S(D.$t("workouts.DISTANCE")),1)]),p("label",null,[p("input",{type:"radio",name:"value_type",value:`${I.value}_duration`,checked:E.value===`${I.value}_duration`,disabled:m(u),onClick:C},null,8,Ddt),x(" "+S(D.$t("workouts.DURATION")),1)]),p("label",null,[p("input",{type:"radio",name:"value_type",value:`${I.value}_workouts`,checked:E.value===`${I.value}_workouts`,disabled:m(u),onClick:C},null,8,Ldt),x(" "+S(D.$t("workouts.WORKOUT",2)),1)]),m(o)&&I.value==="average"?(h(),v("label",ydt,[p("input",{type:"radio",name:"value_type",value:"average_speed",checked:E.value==="average_speed",disabled:m(u),onClick:C},null,8,$dt),x(" "+S(D.$t("workouts.SPEED")),1)])):L("",!0),m(o)?(h(),v("label",Udt,[p("input",{type:"radio",name:"value_type",value:`${I.value}_ascent`,checked:E.value===`${I.value}_ascent`,disabled:m(u),onClick:C},null,8,kdt),x(" "+S(D.$t("workouts.ASCENT")),1)])):L("",!0),m(o)?(h(),v("label",wdt,[p("input",{type:"radio",name:"value_type",value:`${I.value}_descent`,checked:E.value===`${I.value}_descent`,disabled:m(u),onClick:C},null,8,Mdt),x(" "+S(D.$t("workouts.DESCENT")),1)])):L("",!0)]),R.value.length>0||N.value.labels.length>0?(h(),B(mdt,{key:0,datasets:E.value==="average_workouts"?N.value.datasets.workouts_average:A.value,labels:E.value==="average_workouts"?N.value.labels:R.value,displayedData:E.value,displayedSportIds:m(i),fullStats:m(o),useImperialUnits:m(a).imperial_units,label:D.$t(`statistics.STATISTICS_CHARTS.${m(s).duration}`)+` (${_.value} - ${f.value})`},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits","label"])):L("",!0),p("div",Wdt,[E.value==="average_workouts"&&D.selectedTimeFrame?(h(),v("div",Fdt,[U[0]||(U[0]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(D.$t("statistics.DATES"))+": "+S(_.value)+" - "+S(f.value)+", "+S(D.$t("statistics.WORKOUTS_AVERAGE"))+": "+S(N.value.workoutsAverage)+"/"+S(D.$t(`statistics.TIME_FRAMES.${D.selectedTimeFrame}`)),1)])):L("",!0)])]))]))}}),lI=se(zdt,[["__scopeId","data-v-f61443a0"]]),xdt={class:"user-month-stats"},Bdt={class:"section-title"},Gdt={class:"box"},Vdt=X({__name:"UserMonthStats",props:{sports:{},user:{}},setup(e){const t=e,{sports:n,user:a}=fe(t),s=new Date,i={duration:"week",start:ir(s),end:sr(s),statsType:"total"},o=z(()=>n.value.map(r=>r.id));return(r,u)=>(h(),v("div",xdt,[p("div",Bdt,[u[0]||(u[0]=p("i",{class:"fa fa-calendar custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+S(r.$t("dashboard.THIS_MONTH")),1)]),p("div",Gdt,[M(lI,{sports:m(n),user:m(a),"chart-params":i,"displayed-sport-ids":o.value,"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])]))}}),Hdt=se(Vdt,[["__scopeId","data-v-f5b0f1af"]]),Kdt={class:"record"},qdt={class:"record-type"},jdt={class:"record-value"},Ydt={class:"record-date"},Xdt=X({__name:"SportRecordsTable",props:{record:{}},setup(e){const t=e,{record:n}=fe(t);return(a,s)=>{const i=j("router-link");return h(),v("div",Kdt,[p("span",qdt,S(Fe(m(n).label)),1),p("span",jdt,S(m(n).value),1),p("span",Ydt,[M(i,{to:{name:"Workout",params:{workoutId:m(n).workout_id}}},{default:Y(()=>[p("time",null,S(m(n).workout_date),1)]),_:1},8,["to"])])])}}}),cI=se(Xdt,[["__scopeId","data-v-f8125b68"]]),{locale:Qdt}=$i.global,Zdt=(e,t,n,a)=>{const s="km",i=n?vn[s].defaultTarget:s,o="m",r=n?vn[o].defaultTarget:o;let u;switch(e.record_type){case"AS":case"MS":u=`${Yt(+e.value,s,i,2)} ${i}/h`;break;case"FD":u=`${Yt(+e.value,s,i,3)} ${i}`;break;case"HA":u=`${Yt(+e.value,o,r,2)} ${r}`;break;case"LD":u=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{id:e.id,record_type:e.record_type,sport_id:e.sport_id,value:u,user:e.user,workout_date:$t(e.workout_date,t,a,!1),workout_id:e.workout_id}},dI=(e,t)=>{const n=e.label.toLowerCase(),a=t.label.toLowerCase();return n>a?1:n(i=fs(i,Qdt.value),e.filter(r=>s?!0:r.record_type!=="HA").reduce((r,u)=>{const l=t.find(d=>d.id===u.sport_id);return l&&l.label&&(o===null||l.id===o)&&(r[l.translatedLabel]===void 0&&(r[l.translatedLabel]={label:l.label,color:l.color,records:[]}),r[l.translatedLabel].records.push(Zdt(u,n,a,i))),r},{})),Jdt={class:"records-card"},eEt=X({__name:"RecordsCard",props:{records:{},sportTranslatedLabel:{}},setup(e){const t=e,{records:n,sportTranslatedLabel:a}=fe(t),s=Le(),{t:i}=yt(),o=z(()=>s.getters[te.GETTERS.LANGUAGE]),r=z(()=>o.value==="bg");function u(l){const d=[];return l.map(E=>{d.push({...E,label:i(`workouts.RECORD_${E.record_type}`)})}),d.sort(dI)}return(l,d)=>{const E=j("SportImage"),c=j("Card");return h(),v("div",Jdt,[M(c,null,{title:Y(()=>[M(E,{"sport-label":m(n).label,color:m(n).color},null,8,["sport-label","color"]),x(" "+S(m(a)),1)]),content:Y(()=>[(h(!0),v(ue,null,be(u(m(n).records),T=>(h(),B(cI,{class:Ae({"max-width":r.value}),record:T,key:T.id},null,8,["class","record"]))),128))]),_:1})])}}}),tEt=se(eEt,[["__scopeId","data-v-7ab88f3c"]]),nEt={class:"user-records-section"},aEt={class:"section-title"},sEt={class:"title"},iEt={class:"user-records"},oEt={key:0,class:"no-records"},rEt=X({__name:"index",props:{sports:{},user:{}},setup(e){const t=e,{user:n}=fe(t),{t:a}=yt(),s=z(()=>EI(n.value.records,ia(t.sports,a),n.value.timezone,n.value.imperial_units,n.value.display_ascent,n.value.date_format));return(i,o)=>(h(),v("div",nEt,[p("div",aEt,[o[0]||(o[0]=p("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1)),p("span",sEt,S(i.$t("workouts.RECORD",2)),1)]),p("div",iEt,[Object.keys(s.value).length===0?(h(),v("div",oEt,S(i.$t("workouts.NO_RECORDS")),1)):L("",!0),(h(!0),v(ue,null,be(Object.keys(s.value).sort(),r=>(h(),B(tEt,{sportTranslatedLabel:r,records:s.value[r],key:r,useImperialUnits:m(n).imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"]))),128))])]))}}),uEt=se(rEt,[["__scopeId","data-v-e0d23747"]]),lEt={id:"user-stats"},Ed="km",pd="m",cEt=X({__name:"index",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),{t:a}=yt(),s=z(()=>Yp(n.value.total_duration,a)),i=z(()=>n.value.imperial_units?vn[Ed].defaultTarget:Ed),o=z(()=>n.value.imperial_units?Yt(n.value.total_distance,Ed,i.value,2):parseFloat(n.value.total_distance.toFixed(2))),r=z(()=>n.value.imperial_units?vn[pd].defaultTarget:pd),u=z(()=>n.value.imperial_units?Yt(n.value.total_ascent,pd,r.value,2):parseFloat(n.value.total_ascent.toFixed(2)));return(l,d)=>(h(),v("div",lEt,[M(wa,{icon:"calendar",value:m(n).nb_workouts,text:l.$t("workouts.WORKOUT",m(n).nb_workouts)},null,8,["value","text"]),M(wa,{icon:"road",value:o.value,text:i.value==="mi"?"miles":i.value},null,8,["value","text"]),m(n).display_ascent?(h(),B(wa,{key:0,icon:"location-arrow",value:u.value,text:r.value==="ft"?"feet":r.value},null,8,["value","text"])):L("",!0),M(wa,{icon:"clock-o",value:s.value.days,text:s.value.duration},null,8,["value","text"]),m(n).display_ascent?L("",!0):(h(),B(wa,{key:1,icon:"tags",value:m(n).nb_sports,text:l.$t("workouts.SPORT",m(n).nb_sports)},null,8,["value","text"]))]))}}),dEt={class:"privacy-policy-message"},EEt=X({__name:"PrivacyPolicyToAccept",props:{isPrivacyUpdated:{type:Boolean}},setup(e){const t=e,{isPrivacyUpdated:n}=fe(t);return(a,s)=>{const i=j("router-link"),o=j("i18n-t");return h(),v("div",dEt,[p("span",null,[M(o,{keypath:`user.${m(n)?"LAST_":""}PRIVACY_POLICY_TO_VALIDATE`},{default:Y(()=>[M(i,{to:"/profile/edit/privacy-policy",class:"policy-link"},{default:Y(()=>[x(S(a.$t("user.REVIEW")),1)]),_:1})]),_:1},8,["keypath"])])])}}}),pEt=se(EEt,[["__scopeId","data-v-1653c054"]]),TEt={key:0,id:"dashboard",class:"view"},mEt={class:"container mobile-menu"},_Et={class:"box"},fEt={key:0,class:"container privacy-policy-message"},hEt={class:"container"},SEt={class:"container dashboard-container"},AEt={class:"left-container dashboard-sub-container"},OEt={class:"right-container dashboard-sub-container"},IEt={key:1,class:"app-loading"},gEt=X({__name:"Dashboard",setup(e){const t=Le(),{authUser:n}=Ke(),{sports:a}=nn(),s=Ie("calendar");function i(o){s.value=o}return et(()=>t.dispatch(K.ACTIONS.GET_USER_PROFILE)),(o,r)=>{const u=j("Loader");return m(n).username&&m(a).length>0?(h(),v("div",TEt,[p("div",mEt,[p("div",_Et,[p("div",{class:Ae(["mobile-menu-item",{"is-selected":s.value==="calendar"}]),onClick:r[0]||(r[0]=l=>i("calendar"))},r[4]||(r[4]=[p("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1)]),2),p("div",{class:Ae(["mobile-menu-item",{"is-selected":s.value==="chart"}]),onClick:r[1]||(r[1]=l=>i("chart"))},r[5]||(r[5]=[p("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1)]),2),p("div",{class:Ae(["mobile-menu-item",{"is-selected":s.value==="timeline"}]),onClick:r[2]||(r[2]=l=>i("timeline"))},r[6]||(r[6]=[p("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1)]),2),p("div",{class:Ae(["mobile-menu-item",{"is-selected":s.value==="records"}]),onClick:r[3]||(r[3]=l=>i("records"))},r[7]||(r[7]=[p("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1)]),2)])]),m(n).accepted_privacy_policy!==!0?(h(),v("div",fEt,[M(pEt,{"is-privacy-updated":m(n).accepted_privacy_policy===!1},null,8,["is-privacy-updated"])])):L("",!0),p("div",hEt,[M(cEt,{user:m(n)},null,8,["user"])]),p("div",SEt,[p("div",AEt,[M(Hdt,{sports:m(a),user:m(n),class:Ae({"is-hidden":s.value!=="chart"})},null,8,["sports","user","class"]),M(uEt,{sports:m(a),user:m(n),class:Ae({"is-hidden":s.value!=="records"})},null,8,["sports","user","class"])]),p("div",OEt,[M(sdt,{sports:m(a),user:m(n),class:Ae({"is-hidden":s.value!=="calendar"})},null,8,["sports","user","class"]),M(vct,{sports:m(a),authUser:m(n),class:Ae({"is-hidden":s.value!=="timeline"})},null,8,["sports","authUser","class"])])]),r[8]||(r[8]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",IEt,[M(u)]))}}}),REt=se(gEt,[["__scopeId","data-v-3dd07f41"]]),NEt={class:"not-found view"},vEt=X({__name:"NotFoundView",setup(e){return(t,n)=>(h(),v("div",NEt,[M(Ui)]))}}),bEt={key:0,class:"follow-request"},CEt={class:"follow-request-user"},PEt={class:"user-name"},DEt={key:0,class:"follow-request-actions"},LEt={key:1,class:"follow-request-actions"},yEt=X({__name:"RelationshipDetail",props:{authUser:{},notification:{}},emits:["updatedUserRelationship","userLinkClicked"],setup(e,{emit:t}){const n=e,{authUser:a,notification:s}=fe(n),i=t,o=Le();function r(u,l){o.dispatch(K.ACTIONS.UPDATE_FOLLOW_REQUESTS,{username:u,action:l}),i("updatedUserRelationship")}return(u,l)=>{const d=j("router-link");return m(s).from?(h(),v("div",bEt,[p("div",CEt,[M(Qt,{user:m(s).from},null,8,["user"]),p("div",PEt,[M(d,{to:`/users/${m(s).from.username}`,onClick:l[0]||(l[0]=E=>u.$emit("userLinkClicked"))},{default:Y(()=>[x(S(m(s).from.username),1)]),_:1},8,["to"])])]),m(s).type==="follow_request"?(h(),v("div",DEt,[p("button",{onClick:l[1]||(l[1]=E=>r(m(s).from.username,"accept"))},[l[4]||(l[4]=p("i",{class:"fa fa-check","aria-hidden":"true"},null,-1)),x(" "+S(u.$t("buttons.ACCEPT")),1)]),p("button",{onClick:l[2]||(l[2]=E=>r(m(s).from.username,"reject")),class:"danger"},[l[5]||(l[5]=p("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)),x(" "+S(u.$t("buttons.REJECT")),1)])])):(h(),v("div",LEt,[M(Zu,{authUser:m(a),user:m(s).from,from:"notifications",displayFollowsYou:!0,onUpdatedUser:l[3]||(l[3]=()=>i("updatedUserRelationship"))},null,8,["authUser","user"])]))])):L("",!0)}}}),$Et=se(yEt,[["__scopeId","data-v-dc09ab49"]]),UEt={class:"report-notification"},kEt={key:0,class:"reported-workout"},wEt={key:1,class:"reported-comment"},MEt={key:2,class:"reported-user"},WEt={class:"user-name"},FEt={key:3,class:"reported-user"},zEt={class:"deleted-object"},xEt={class:"report-button"},BEt=X({__name:"ReportNotification",props:{report:{}},emits:["reportButtonClicked"],setup(e,{emit:t}){const n=e,{report:a}=fe(n),s=t,i=gn();function o(r){i.push(`/admin/reports/${r}`),s("reportButtonClicked")}return(r,u)=>{const l=j("router-link");return h(),v("div",UEt,[m(a).reported_workout?(h(),v("div",kEt,[M(Qp,{"display-appeal":!1,"display-object-name":!0,workout:m(a).reported_workout,"report-id":m(a).id},null,8,["workout","report-id"])])):m(a).reported_comment?(h(),v("div",wEt,[M(Xp,{"display-object-name":!0,comment:m(a).reported_comment},null,8,["comment"])])):m(a).reported_user?(h(),v("div",MEt,[M(Qt,{user:m(a).reported_user},null,8,["user"]),p("div",WEt,[M(l,{to:`/users/${m(a).reported_user.username}`},{default:Y(()=>[x(S(m(a).reported_user.username),1)]),_:1},8,["to"])])])):(h(),v("div",FEt,[p("span",zEt,S(r.$t("admin.DELETED_USER")),1)])),p("div",xEt,[p("button",{onClick:u[0]||(u[0]=d=>o(m(a).id))},S(r.$t("admin.APP_MODERATION.VIEW_REPORT"))+" #"+S(m(a).id),1)])])}}}),GEt=se(BEt,[["__scopeId","data-v-ff0a4948"]]),VEt={class:"notification-data-button"},HEt={class:"notification-date"},KEt=["title"],qEt={class:"hidden-content"},jEt={key:0},YEt={class:"notification-reason"},XEt={key:5,class:"auth-user"},QEt={class:"user-name"},ZEt={key:6},JEt={key:0,class:"info-box appeal-in-progress"},ept=X({__name:"NotificationDetail",props:{authUser:{},notification:{}},emits:["reload","updateReadStatus"],setup(e,{emit:t}){const n=e,{authUser:a,notification:s}=fe(n),i=t,{locale:o}=qe(),r=z(()=>_(s.value.type));function u(){i("reload")}function l(f,O){i("updateReadStatus",{notificationId:f,markedAsRead:O})}function d(f){f.marked_as_read||l(f.id,!0)}function E(f){return["comment_like","comment_suspension","comment_unsuspension","mention","user_warning","user_warning_lifting","workout_comment"].includes(f)&&s.value.comment!==void 0}function c(f){return["account_creation","follow","follow_request","follow_request_approved"].includes(f)}function T(f){var O;switch(f){case"account_creation":return"notifications.SIGN_UP";case"comment_like":return"notifications.LIKED_YOUR_COMMENT";case"comment_suspension":return"notifications.YOUR_COMMENT_HAS_BEEN_SUSPENDED";case"comment_unsuspension":return"notifications.YOUR_COMMENT_HAS_BEEN_UNSUSPENDED";case"follow":return"user.RELATIONSHIPS.FOLLOWS_YOU";case"follow_request":return"notifications.SEND_FOLLOW_REQUEST_TO_YOU";case"follow_request_approved":return"notifications.ACCEPTED_FOLLOW_REQUEST";case"mention":return"notifications.MENTIONED_YOU";case"suspension_appeal":return"notifications.APPEALED_SUSPENSION";case"user_warning":return"notifications.YOU_RECEIVED_A_WARNING";case"user_warning_appeal":return"notifications.APPEALED_USER_WARNING";case"user_warning_lifting":return"notifications.YOUR_WARNING_HAS_BEEN_LIFTED";case"workout_comment":return"notifications.COMMENTED_YOUR_WORKOUT";case"workout_like":return"notifications.LIKED_YOUR_WORKOUT";case"workout_suspension":return"notifications.YOUR_WORKOUT_HAS_BEEN_SUSPENDED";case"workout_unsuspension":return"notifications.YOUR_WORKOUT_HAS_BEEN_UNSUSPENDED";case"report":return`notifications.REPORTED_USER_${(O=s.value.report)!=null&&O.object_type?s.value.report.object_type.toUpperCase():""}`;default:return""}}function _(f){switch(f){case"follow":case"follow_request":case"follow_request_approved":return"user-plus";case"mention":return"at";case"comment_suspension":case"comment_unsuspension":case"report":case"suspension_appeal":case"user_warning":case"user_warning_appeal":case"user_warning_lifting":case"workout_suspension":case"workout_unsuspension":return"flag";case"comment_like":case"workout_like":return"heart";default:return"comment"}}return(f,O)=>{const A=j("router-link"),R=j("Card");return m(s).id?(h(),B(R,{key:0,class:Ae(["notification-card",{read:m(s).marked_as_read}])},{title:Y(()=>[p("div",null,[p("i",{class:Ae([`fa-${r.value}`,"fa notification-icon"]),"aria-hidden":"true"},null,2),m(s).from?(h(),B(A,{key:0,to:`/users/${m(s).from.username}`},{default:Y(()=>[x(S(m(s).from.username),1)]),_:1},8,["to"])):L("",!0),x(" "+S(f.$t(T(m(s).type))),1)]),p("div",VEt,[p("div",HEt,S(m(Ws)(new Date(m(s).created_at),new Date,{addSuffix:!0,locale:m(o)})),1),p("button",{class:"mark-action",title:f.$t(`notifications.MARK_AS_${m(s).marked_as_read?"UN":""}READ`),onClick:O[0]||(O[0]=()=>l(m(s).id,!m(s).marked_as_read))},[p("span",qEt,S(f.$t(`notifications.MARK_AS_${m(s).marked_as_read?"UN":""}READ`)),1),p("i",{class:Ae(["fa",`fa-eye${m(s).marked_as_read?"-slash":""}`]),"aria-hidden":"true"},null,2)],8,KEt)])]),content:Y(()=>{var g,I,N,b,C,y;return[(g=m(s).report_action)!=null&&g.reason?(h(),v("div",jEt,[p("span",YEt,S(f.$t("admin.APP_MODERATION.REASON"))+": ",1),x(" "+S(m(s).report_action.reason),1)])):L("",!0),E(m(s).type)&&m(s).comment?(h(),B(Xp,{key:1,"display-object-name":m(s).type.startsWith("user_warning"),comment:m(s).comment,action:m(s).report_action,onCommentLinkClicked:O[1]||(O[1]=D=>d(m(s)))},null,8,["display-object-name","comment","action"])):c(m(s).type)?(h(),B($Et,{key:2,notification:m(s),authUser:m(a),onUpdatedUserRelationship:u,onUserLinkClicked:O[2]||(O[2]=D=>d(m(s)))},null,8,["notification","authUser"])):["report","suspension_appeal","user_warning_appeal"].includes(m(s).type)&&m(s).report?(h(),B(GEt,{key:3,report:m(s).report,onReportButtonClicked:O[3]||(O[3]=D=>d(m(s)))},null,8,["report"])):m(s).workout?(h(),B(Qp,{key:4,action:m(s).report_action,"display-appeal":m(s).type!=="user_warning","display-object-name":m(s).type.startsWith("user_warning"),workout:m(s).workout,onWorkoutLinkClicked:O[4]||(O[4]=D=>d(m(s)))},null,8,["action","display-appeal","display-object-name","workout"])):L("",!0),((I=m(s).report_action)==null?void 0:I.action_type)==="user_warning_lifting"&&!m(s).comment&&!m(s).workout?(h(),v("div",XEt,[M(Qt,{user:m(a)},null,8,["user"]),p("div",QEt,[M(A,{to:`/users/${m(a).username}`},{default:Y(()=>[x(S(m(a).username),1)]),_:1},8,["to"])])])):L("",!0),((N=m(s).report_action)==null?void 0:N.action_type)==="user_warning"?(h(),v("div",ZEt,[((C=(b=m(s).report_action)==null?void 0:b.appeal)==null?void 0:C.approved)===null?(h(),v("div",JEt,[p("span",null,[O[6]||(O[6]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(f.$t("user.APPEAL_IN_PROGRESS")),1)])])):(y=m(s).report_action)!=null&&y.appeal?L("",!0):(h(),B(A,{key:1,class:"appeal-link",to:`profile/moderation/sanctions/${m(s).report_action.id}`,onClick:O[5]||(O[5]=D=>d(m(s)))},{default:Y(()=>[x(S(f.$t("user.APPEAL")),1)]),_:1},8,["to"]))])):L("",!0)]}),_:1},8,["class"])):L("",!0)}}}),tpt=se(ept,[["__scopeId","data-v-c0558938"]]),npt={key:0,id:"notifications"},apt={key:0,class:"no-notifications box"},spt=X({__name:"Notifications",setup(e){const t=Le(),n=ut(),{authUser:a,isAuthUserSuspended:s}=Ke();let i=kt(u(n.query));const o=z(()=>t.getters[Et.GETTERS.NOTIFICATIONS]),r=z(()=>t.getters[Et.GETTERS.PAGINATION]);function u(T){const _={};return"page"in T&&T.page&&(_.page=+T.page),"type"in T&&T.type&&(_.type=T.type),"status"in T&&T.status==="unread"&&(_.status="unread"),_}function l(){setTimeout(()=>{d(i)},500)}function d(T){s.value||t.dispatch(Et.ACTIONS.GET_NOTIFICATIONS,T)}function E(T){t.dispatch(Et.ACTIONS.UPDATE_STATUS,{...T,currentQuery:i})}function c(){t.dispatch(Et.ACTIONS.MARK_ALL_AS_READ,i)}return Ce(()=>n.query,T=>{i=u(T),d(i)}),Ce(()=>s.value,T=>{T||d(i)}),et(()=>d(i)),ct(()=>{t.commit(Et.MUTATIONS.EMPTY_NOTIFICATIONS)}),(T,_)=>m(a).username?(h(),v("div",npt,[o.value.length===0?(h(),v("div",apt,S(T.$t("notifications.NO_NOTIFICATIONS")),1)):(h(),v(ue,{key:1},[p("button",{class:"mark-all-action",onClick:c},S(T.$t("notifications.MARK_ALL_AS_READ")),1),(h(!0),v(ue,null,be(o.value,f=>(h(),B(tpt,{key:f.id,"auth-user":m(a),notification:f,onReload:l,onUpdateReadStatus:E},null,8,["auth-user","notification"]))),128)),r.value.page?(h(),B(oa,{key:0,path:"/notifications",pagination:r.value,query:m(i)},null,8,["pagination","query"])):L("",!0)],64))])):L("",!0)}}),ipt=se(spt,[["__scopeId","data-v-a25ddea4"]]),opt={class:"notifications-filters"},rpt={class:"box"},upt={class:"form"},lpt={class:"form-all-items"},cpt={class:"form-items-group"},dpt={class:"status-title"},Ept={class:"status-radio"},ppt=["checked"],Tpt=["checked"],mpt={class:"form-items-group"},_pt={class:"form-item"},fpt={for:"notification-labels"},hpt=["disabled","value"],Spt={value:""},Apt=["value"],Opt=X({__name:"NotificationsFilters",setup(e){const t=ut(),n=gn(),a=Le(),{t:s}=yt(),{authUserHasModeratorRights:i,isAuthUserSuspended:o}=Ke(),r=z(()=>a.getters[Et.GETTERS.TYPES]),u=z(()=>A());let l=Object.assign({},t.query);const d=Ie(E(t.query));function E(R){return"status"in R?R.status:null}function c(R){d.value=R,l.status=R,_()}function T(R){const g=R.target;g.value===""?delete l[g.name]:l[g.name]=g.value,_()}function _(){"page"in l&&(l.page="1"),n.push({path:"/notifications",query:l})}function f(R,g){return R.label>g.label?1:R.label!["report","suspension_appeal","user_warning_appeal"].includes(g)||i.value).map(g=>{R.push({label:s(`notifications.TYPES.${g}`),value:g})}),R.sort(f)}return Ce(()=>t.query,R=>{l=Object.assign({},R),d.value=E(R),O()}),et(()=>O()),ct(()=>{a.commit(Et.MUTATIONS.UPDATE_TYPES,[])}),(R,g)=>(h(),v("div",opt,[p("div",rpt,[p("form",upt,[p("div",lpt,[p("div",cpt,[p("span",dpt,S(R.$t("notifications.STATUS")),1),p("div",Ept,[p("label",null,[p("input",{type:"radio",name:"duration",checked:d.value==="unread",onClick:g[0]||(g[0]=I=>c("unread"))},null,8,ppt),x(" "+S(R.$t("notifications.UNREAD")),1)]),p("label",null,[p("input",{type:"radio",name:"all",checked:d.value!=="unread",onClick:g[1]||(g[1]=I=>c("all"))},null,8,Tpt),x(" "+S(R.$t("notifications.ALL")),1)])])]),p("div",mpt,[p("div",_pt,[p("label",fpt,S(R.$t("notifications.TYPES.LABEL")),1),p("select",{class:"notification-labels",id:"notification-labels",name:"type",disabled:u.value.length===0,value:R.$route.query.type,onChange:T},[u.value.length>0?(h(),v(ue,{key:0},[p("option",Spt,S(R.$t("notifications.TYPES.ALL")),1),g[2]||(g[2]=p("option",{disabled:""},"──────",-1))],64)):L("",!0),(h(!0),v(ue,null,be(u.value,I=>(h(),v("option",{value:I.value,key:I.value},S(I.label),9,Apt))),128))],40,hpt)])])])])])]))}}),Ipt=se(Opt,[["__scopeId","data-v-6cb336ec"]]),gpt={id:"notifications",class:"view items-list-view"},Rpt={class:"container items-list-container"},Npt={class:"display-filters"},vpt={class:"list-container"},bpt=X({__name:"NotificationsView",setup(e){const t=Ie(!0);function n(){t.value=!t.value}return(a,s)=>(h(),v("div",gpt,[p("div",Rpt,[p("div",{class:Ae(["filters-container",{hidden:t.value}])},[M(Ipt)],2),p("div",Npt,[p("div",{onClick:n},[p("i",{class:Ae(`fa fa-caret-${t.value?"down":"up"}`),"aria-hidden":"true"},null,2),p("span",null,S(a.$t(`workouts.${t.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),p("div",vpt,[M(ipt)])])]))}}),Cpt={id:"privacy-policy",class:"view"},Ppt={class:"container"},Dpt=X({__name:"PrivacyPolicyView",setup(e){const t=Le();return et(()=>{t.dispatch(te.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)}),(n,a)=>(h(),v("div",Cpt,[p("div",Ppt,[M(QO)]),a[0]||(a[0]=p("div",{id:"bottom"},null,-1))]))}}),Lpt={class:"chart-menu"},ypt=["disabled","aria-label"],$pt={class:"time-frames custom-checkboxes-group"},Upt={class:"time-frames-checkboxes custom-checkboxes"},kpt=["id","name","checked","onInput","disabled"],wpt=["id","tabindex","onKeydown"],Mpt=["disabled","aria-label"],Wpt={class:"stats-type"},Fpt={class:"stats-type-radio"},zpt=["checked","disabled"],xpt=["checked","disabled"],Bpt=X({__name:"StatsMenu",props:{isDisabled:{type:Boolean}},emits:["arrowClick","statsTypeUpdate","timeFrameUpdate"],setup(e,{emit:t}){const n=e,{isDisabled:a}=fe(n),s=t,i=["week","month","year"],o=Ie("month"),r=Ie("total");function u(d){o.value=d,s("timeFrameUpdate",d)}function l(d){r.value=d.target.value,s("statsTypeUpdate",r.value)}return(d,E)=>(h(),v(ue,null,[p("div",Lpt,[p("button",{class:"chart-arrow transparent",onClick:E[0]||(E[0]=c=>s("arrowClick",!0)),onKeydown:E[1]||(E[1]=Ye(c=>s("arrowClick",!0),["enter"])),disabled:m(a),"aria-label":d.$t("common.PREVIOUS")},E[4]||(E[4]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),40,ypt),p("div",$pt,[p("div",Upt,[(h(),v(ue,null,be(i,c=>p("div",{class:"time-frame custom-checkbox",key:c},[p("label",null,[p("input",{type:"radio",id:c,name:c,checked:o.value===c,onInput:T=>u(c),disabled:m(a)},null,40,kpt),p("span",{id:`frame-${c}`,tabindex:m(a)?-1:0,role:"button",onKeydown:Ye(T=>u(c),["enter"])},S(d.$t(`statistics.TIME_FRAMES.${c}`)),41,wpt)])])),64))])]),p("button",{class:"chart-arrow transparent",onClick:E[2]||(E[2]=c=>s("arrowClick",!1)),onKeydown:E[3]||(E[3]=Ye(c=>s("arrowClick",!1),["enter"])),disabled:m(a),"aria-label":d.$t("common.NEXT")},E[5]||(E[5]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),40,Mpt)]),p("div",Wpt,[p("div",Fpt,[p("label",null,[p("input",{type:"radio",name:"stats_type",value:"total",checked:r.value==="total",disabled:m(a),onClick:l},null,8,zpt),x(" "+S(d.$t("common.TOTAL")),1)]),p("label",null,[p("input",{type:"radio",name:"stats_type",value:"average",checked:r.value==="average",disabled:m(a),onClick:l},null,8,xpt),x(" "+S(d.$t("statistics.AVERAGE")),1)])])])],64))}}),Gpt=se(Bpt,[["__scopeId","data-v-dacfdeb2"]]),Vpt={class:"sports-menu"},Hpt=["id","name","checked","onInput","onKeyup"],Kpt={class:"sport-label"},qpt=X({__name:"StatsSportsMenu",props:{userSports:{},selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:t}){const n=e,{selectedSportIds:a,userSports:s}=fe(n),i=t,{t:o}=yt(),{sportColors:r}=nn(),u=z(()=>ia(s.value,o));function l(d){i("selectedSportIdsUpdate",d)}return(d,E)=>{const c=j("SportImage");return h(),v("div",Vpt,[(h(!0),v(ue,null,be(u.value,T=>(h(),v("label",{type:"checkbox",key:T.id,style:za({color:T.color?T.color:m(r)[T.label]})},[p("input",{type:"checkbox",id:`${T.id}`,name:T.label,checked:m(a).includes(T.id),onInput:_=>l(T.id),onKeyup:Ye(ve(_=>l(T.id),["prevent"]),["space"])},null,40,Hpt),M(c,{"sport-label":T.label,color:T.color},null,8,["sport-label","color"]),p("span",Kpt,S(T.translatedLabel),1)],4))),128))])}}}),jpt={key:0,id:"user-statistics"},Ypt=X({__name:"index",props:{sports:{},user:{},isDisabled:{type:Boolean}},setup(e){const t=e,{sports:n,user:a}=fe(t),{t:s}=yt(),i=Ie("month"),o=Ie("total"),r=Ie(c(i.value,o.value)),u=Ie(_(n.value)),l=z(()=>ia(t.sports,s));function d(O){i.value=O,r.value=c(O,o.value)}function E(O){o.value=O,r.value=c(i.value,O)}function c(O,A){return Odt(new Date,O,t.user.weekm,A)}function T(O){r.value=Idt(r.value,O,t.user.weekm)}function _(O){return O.map(A=>A.id)}function f(O){u.value.includes(O)?u.value=u.value.filter(A=>A!==O):u.value.push(O)}return Ce(()=>t.sports,O=>{u.value=_(O)}),(O,A)=>l.value?(h(),v("div",jpt,[M(Gpt,{onStatsTypeUpdate:E,onTimeFrameUpdate:d,onArrowClick:T,isDisabled:O.isDisabled},null,8,["isDisabled"]),M(lI,{sports:m(n),user:m(a),chartParams:r.value,"displayed-sport-ids":u.value,fullStats:!0,isDisabled:O.isDisabled,selectedTimeFrame:i.value},null,8,["sports","user","chartParams","displayed-sport-ids","isDisabled","selectedTimeFrame"]),M(qpt,{"selected-sport-ids":u.value,"user-sports":m(n),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):L("",!0)}}),Xpt=se(Ypt,[["__scopeId","data-v-f9158924"]]),Qpt={class:"sport-stat-card"},Zpt={class:"stat-content"},Jpt={class:"stat-icon"},eTt={class:"stat-details"},tTt={class:"stat-label"},nTt={class:"stat-values"},aTt={key:0,class:"fa fa-refresh fa-spin fa-fw"},sTt={key:1,class:"stat-huge"},iTt={key:2,class:"stat"},oTt={key:0,class:"stat-average"},rTt={key:0},ti=X({__name:"SportStatCard",props:{icon:{},text:{default:""},totalValue:{},label:{},loading:{type:Boolean}},setup(e){const t=e,{icon:n,loading:a,text:s,totalValue:i}=fe(t);return(o,r)=>(h(),v("div",Qpt,[p("div",Zpt,[p("div",Jpt,[p("i",{class:Ae(["fa",`fa-${m(n)}`])},null,2)]),p("div",eTt,[p("div",tTt,S(o.label),1),p("div",nTt,[m(a)?(h(),v("i",aTt)):(h(),v("span",sTt,S(m(i)?m(i):""),1)),m(s)?(h(),v("span",iTt,S(m(s)),1)):L("",!0)]),["calendar","tachometer"].includes(m(n))?L("",!0):(h(),v("div",oTt,[m(a)?(h(),v("div",rTt,r[0]||(r[0]=[p("i",{class:"fa fa-refresh fa-spin fa-fw"},null,-1)]))):Pt(o.$slots,"average",{key:1})]))])])]))}}),uTt={id:"sport-statistics"},lTt={for:"sport"},cTt=["value"],dTt={key:0,class:"sport-statistics"},ETt={class:"sport-img-label"},pTt={class:"sport-label"},TTt={class:"label"},mTt={class:"statistics"},_Tt={key:0,class:"statistics-workouts-count"},fTt={key:1,class:"statistics-workouts-count"},hTt={class:"statistics"},STt={class:"records"},ATt={class:"label"},OTt=X({__name:"SportStatistics",props:{sports:{},authUser:{}},setup(e){const t=e,{authUser:n,sports:a}=fe(t),s=ut(),i=gn(),o=Le(),{t:r}=yt(),u=z(()=>ia(a.value,r,"all")),l=z(()=>u.value.map(C=>C.id)),d=z(()=>s.query.sport_id&&l.value.includes(+s.query.sport_id)?+s.query.sport_id:l.value[0]),E=z(()=>EI(n.value.records,u.value,n.value.timezone,n.value.imperial_units,n.value.display_ascent,n.value.date_format,d.value)),c=z(()=>u.value.find(C=>C.id===d.value)),T=z(()=>o.getters.USER_SPORT_STATS[d.value]),_=z(()=>o.getters.TOTAL_WORKOUTS),f=z(()=>n.value.imperial_units?vn.km.defaultTarget:"km"),O=z(()=>n.value.imperial_units?vn.m.defaultTarget:"m"),A=z(()=>o.getters.STATS_LOADING),R=z(()=>T.value?Yp(T.value.total_duration,r):{days:"",duration:""});function g(C,y){if(C===void 0)return"";const D=n.value.imperial_units?vn[y].defaultTarget:y;return n.value.imperial_units?Yt(C,y,D,2):C}function I(){o.dispatch(Mt.ACTIONS.GET_USER_SPORT_STATS,{username:n.value.username,sportId:d.value})}function N(C){var D,U;const y=[];return(D=c.value)!=null&&D.translatedLabel&&C[(U=c.value)==null?void 0:U.translatedLabel].records.map(P=>{y.push({...P,label:r(`workouts.RECORD_${P.record_type}`)})}),y.sort(dI)}function b(C){i.push({path:"/statistics",query:{chart:"by_sport",sport_id:C.target.value}})}return Ce(()=>s.query,()=>{I()}),et(()=>I()),(C,y)=>{var P,F,Z,Oe,ee,Ee;const D=j("SportImage"),U=j("Distance");return h(),v("div",uTt,[p("label",lTt,S(C.$t("workouts.SPORT",1))+": ",1),We(p("select",{id:"sport","onUpdate:modelValue":y[0]||(y[0]=_e=>d.value=_e),onChange:b},[(h(!0),v(ue,null,be(u.value,_e=>(h(),v("option",{value:_e.id,key:_e.id},S(_e.translatedLabel),9,cTt))),128))],544),[[Jt,d.value]]),c.value?(h(),v("div",dTt,[p("div",ETt,[M(D,{"sport-label":c.value.label,color:c.value.color},null,8,["sport-label","color"]),p("div",pTt,S(c.value.translatedLabel),1)]),p("div",null,[p("div",TTt,[y[1]||(y[1]=p("i",{class:"fa fa-line-chart custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+S(C.$t("statistics.STATISTICS",0)),1)]),p("div",mTt,[M(ti,{icon:"calendar",loading:A.value,"total-value":_.value,label:C.$t("workouts.WORKOUT",0)},null,8,["loading","total-value","label"])]),T.value&&T.value.total_workouts<_.value?(h(),v("div",_Tt,S(C.$t("statistics.STATISTICS_ON_LAST_WORKOUTS",{count:T.value.total_workouts})),1)):(h(),v("div",fTt,S(C.$t("statistics.STATISTICS_ON_ALL_WORKOUTS")),1)),p("div",hTt,[M(ti,{icon:"road",loading:A.value,"total-value":g((P=T.value)==null?void 0:P.total_distance,"km"),text:f.value,label:C.$t("workouts.DISTANCE")},{average:Y(()=>[p("div",null,S(C.$t("statistics.AVERAGE"))+":",1),T.value?(h(),B(U,{key:0,distance:T.value.average_distance,unitFrom:"km",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"]),M(ti,{icon:"clock-o",loading:A.value,"total-value":R.value.days,text:R.value.duration,label:C.$t("workouts.DURATION")},{average:Y(()=>[p("div",null,S(C.$t("statistics.AVERAGE"))+":",1),p("span",null,S(T.value?m(AE)(T.value.average_duration,C.$t):""),1)]),_:1},8,["loading","total-value","text","label"]),M(ti,{icon:"tachometer",loading:A.value,"total-value":g((F=T.value)==null?void 0:F.average_speed,"km"),text:`${f.value}/h`,label:C.$t("workouts.AVE_SPEED")},null,8,["loading","total-value","text","label"]),((Z=T.value)==null?void 0:Z.total_ascent)!==null?(h(),B(ti,{key:0,icon:"location-arrow",loading:A.value,"total-value":g((Oe=T.value)==null?void 0:Oe.total_ascent,"m"),text:O.value,label:C.$t("workouts.ASCENT")},{average:Y(()=>[p("div",null,S(C.$t("statistics.AVERAGE"))+":",1),T.value?(h(),B(U,{key:0,distance:T.value.average_ascent,unitFrom:"m",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"])):L("",!0),((ee=T.value)==null?void 0:ee.total_descent)!==null?(h(),B(ti,{key:1,icon:"location-arrow fa-rotate-90",loading:A.value,"total-value":g((Ee=T.value)==null?void 0:Ee.total_descent,"m"),text:O.value,label:C.$t("workouts.DESCENT")},{average:Y(()=>[p("div",null,S(C.$t("statistics.AVERAGE"))+":",1),T.value?(h(),B(U,{key:0,distance:T.value.average_descent,unitFrom:"m",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),_:1},8,["loading","total-value","text","label"])):L("",!0)])]),p("div",STt,[p("div",ATt,[y[2]||(y[2]=p("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1)),x(" "+S(C.$t("workouts.RECORD",0)),1)]),p("div",null,[(h(!0),v(ue,null,be(N(E.value),_e=>(h(),B(cI,{record:_e,key:_e.id},null,8,["record"]))),128))])])])):L("",!0)])}}}),ITt=se(OTt,[["__scopeId","data-v-dad31bfb"]]),gTt={id:"statistics",class:"view"},RTt={key:0,class:"container"},NTt=["value"],vTt=X({__name:"StatisticsView",setup(e){const t=ut(),n=gn(),{authUser:a}=Ke(),{sports:s}=nn(),i=["by_time","by_sport"],o=Ie("by_time"),r=z(()=>s.value.filter(d=>a.value.sports_list.includes(d.id))),u=z(()=>a.value.nb_workouts===0);function l(d){n.push({path:"/statistics",query:{chart:d.target.value}})}return et(()=>{o.value=t.query.chart&&i.includes(t.query.chart)?t.query.chart:"by_time"}),mt(()=>{if(!u.value){const d=document.getElementById("stats-type");d==null||d.focus()}}),(d,E)=>{const c=j("Card");return h(),v("div",gTt,[m(a).username?(h(),v("div",RTt,[M(c,null,{title:Y(()=>[x(S(d.$t("statistics.STATISTICS"))+" ",1),r.value.length>0?We((h(),v("select",{key:0,class:"stats-types",name:"stats-type",id:"stats-type","onUpdate:modelValue":E[0]||(E[0]=T=>o.value=T),onChange:l},[(h(),v(ue,null,be(i,T=>p("option",{value:T,key:T},S(d.$t(`statistics.STATISTICS_TYPES.${T}`)),9,NTt)),64))],544)),[[Jt,o.value]]):L("",!0)]),content:Y(()=>[d.$route.query.chart!=="by_sport"?(h(),B(Xpt,{key:0,class:Ae({"stats-disabled":u.value}),user:m(a),sports:r.value,isDisabled:u.value},null,8,["class","user","sports","isDisabled"])):r.value.length>0?(h(),B(ITt,{key:1,sports:r.value,authUser:m(a)},null,8,["sports","authUser"])):L("",!0)]),_:1}),m(a).nb_workouts===0?(h(),B(Zp,{key:0})):L("",!0)])):L("",!0)])}}}),bTt=se(vTt,[["__scopeId","data-v-94133818"]]),CTt={name:"EmailSent"},PTt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 345.834 345.834",style:{"enable-background":"new 0 0 345.834 345.834"},"xml:space":"preserve"};function DTt(e,t,n,a,s,i){return h(),v("svg",PTt,t[0]||(t[0]=[p("g",null,[p("path",{d:`M339.798,260.429c0.13-0.026,0.257-0.061,0.385-0.094c0.109-0.028,0.219-0.051,0.326-0.084 - c0.125-0.038,0.247-0.085,0.369-0.129c0.108-0.039,0.217-0.074,0.324-0.119c0.115-0.048,0.226-0.104,0.338-0.157 - c0.109-0.052,0.22-0.1,0.327-0.158c0.107-0.057,0.208-0.122,0.312-0.184c0.107-0.064,0.215-0.124,0.319-0.194 - c0.111-0.074,0.214-0.156,0.321-0.236c0.09-0.067,0.182-0.13,0.27-0.202c0.162-0.133,0.316-0.275,0.466-0.421 - c0.027-0.026,0.056-0.048,0.083-0.075c0.028-0.028,0.052-0.059,0.079-0.088c0.144-0.148,0.284-0.3,0.416-0.46 - c0.077-0.094,0.144-0.192,0.216-0.289c0.074-0.1,0.152-0.197,0.221-0.301c0.074-0.111,0.139-0.226,0.207-0.34 - c0.057-0.096,0.118-0.19,0.171-0.289c0.062-0.115,0.114-0.234,0.169-0.351c0.049-0.104,0.101-0.207,0.146-0.314 - c0.048-0.115,0.086-0.232,0.128-0.349c0.041-0.114,0.085-0.227,0.12-0.343c0.036-0.118,0.062-0.238,0.092-0.358 - c0.029-0.118,0.063-0.234,0.086-0.353c0.028-0.141,0.045-0.283,0.065-0.425c0.014-0.1,0.033-0.199,0.043-0.3 - c0.025-0.249,0.038-0.498,0.038-0.748V92.76c0-4.143-3.357-7.5-7.5-7.5h-236.25c-0.066,0-0.13,0.008-0.196,0.01 - c-0.143,0.004-0.285,0.01-0.427,0.022c-0.113,0.009-0.225,0.022-0.337,0.037c-0.128,0.016-0.255,0.035-0.382,0.058 - c-0.119,0.021-0.237,0.046-0.354,0.073c-0.119,0.028-0.238,0.058-0.356,0.092c-0.117,0.033-0.232,0.069-0.346,0.107 - c-0.117,0.04-0.234,0.082-0.349,0.128c-0.109,0.043-0.216,0.087-0.322,0.135c-0.118,0.053-0.235,0.11-0.351,0.169 - c-0.099,0.051-0.196,0.103-0.292,0.158c-0.116,0.066-0.23,0.136-0.343,0.208c-0.093,0.06-0.184,0.122-0.274,0.185 - c-0.106,0.075-0.211,0.153-0.314,0.235c-0.094,0.075-0.186,0.152-0.277,0.231c-0.09,0.079-0.179,0.158-0.266,0.242 - c-0.099,0.095-0.194,0.194-0.288,0.294c-0.047,0.05-0.097,0.094-0.142,0.145c-0.027,0.03-0.048,0.063-0.074,0.093 - c-0.094,0.109-0.182,0.223-0.27,0.338c-0.064,0.084-0.13,0.168-0.19,0.254c-0.078,0.112-0.15,0.227-0.222,0.343 - c-0.059,0.095-0.12,0.189-0.174,0.286c-0.063,0.112-0.118,0.227-0.175,0.342c-0.052,0.105-0.106,0.21-0.153,0.317 - c-0.049,0.113-0.092,0.23-0.135,0.345c-0.043,0.113-0.087,0.225-0.124,0.339c-0.037,0.115-0.067,0.232-0.099,0.349 - c-0.032,0.12-0.066,0.239-0.093,0.36c-0.025,0.113-0.042,0.228-0.062,0.342c-0.022,0.13-0.044,0.26-0.06,0.39 - c-0.013,0.108-0.019,0.218-0.027,0.328c-0.01,0.14-0.019,0.28-0.021,0.421c-0.001,0.041-0.006,0.081-0.006,0.122v46.252 - c0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-29.595l66.681,59.037c-0.348,0.245-0.683,0.516-0.995,0.827l-65.687,65.687v-49.288 - c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v9.164h-38.75c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h38.75v43.231 - c0,4.143,3.357,7.5,7.5,7.5h236.25c0.247,0,0.494-0.013,0.74-0.037c0.115-0.011,0.226-0.033,0.339-0.049 - C339.542,260.469,339.67,260.454,339.798,260.429z M330.834,234.967l-65.688-65.687c-0.042-0.042-0.087-0.077-0.13-0.117 - l49.383-41.897c3.158-2.68,3.546-7.412,0.866-10.571c-2.678-3.157-7.41-3.547-10.571-0.866l-84.381,71.59l-98.444-87.158h208.965 - V234.967z M185.878,179.888c0.535-0.535,0.969-1.131,1.308-1.765l28.051,24.835c1.418,1.255,3.194,1.885,4.972,1.885 - c1.726,0,3.451-0.593,4.853-1.781l28.587-24.254c0.26,0.38,0.553,0.743,0.89,1.08l65.687,65.687H120.191L185.878,179.888z`}),p("path",{d:`M7.5,170.676h126.667c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H7.5c-4.143,0-7.5,3.357-7.5,7.5 - S3.357,170.676,7.5,170.676z`}),p("path",{d:`M20.625,129.345H77.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H20.625c-4.143,0-7.5,3.357-7.5,7.5 - S16.482,129.345,20.625,129.345z`}),p("path",{d:"M62.5,226.51h-55c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h55c4.143,0,7.5-3.357,7.5-7.5S66.643,226.51,62.5,226.51z"})],-1)]))}const pI=se(CTt,[["render",DTt]]),LTt={id:"user-form"},yTt={key:2,class:"info-box success-message"},$Tt={class:"form-items"},UTt={key:0,for:"username"},kTt=["disabled"],wTt={key:2,class:"form-info"},MTt={key:3,for:"email"},WTt=["disabled"],FTt={key:5,class:"form-info"},zTt={key:6,for:"password"},xTt={key:8,for:"accepted_policy",class:"accepted_policy"},BTt=["disabled"],GTt=["disabled"],VTt={key:3},HTt={key:0},KTt={key:4},qTt={class:"account"},jTt={key:5},YTt=X({__name:"UserAuthForm",props:{action:{},token:{default:""}},setup(e){const t=e,{action:n,token:a}=fe(t),s=ut(),i=Le(),{appConfig:o,appLanguage:r,errorMessages:u}=qe(),{authUserSuccess:l}=Ke(),d=kt({username:"",email:"",password:"",accepted_policy:!1}),E=Ie(!1),c=z(()=>O(t.action)),T=z(()=>i.getters[K.GETTERS.IS_REGISTRATION_SUCCESS]),_=z(()=>t.action==="register"&&!o.value.is_registration_enabled),f=z(()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!o.value.is_email_sending_enabled);function O(N){switch(N){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function A(){E.value=!0}function R(N){d.password=N}function g(N){switch(N){case"reset":return a.value?i.dispatch(K.ACTIONS.RESET_USER_PASSWORD,{password:d.password,token:String(a.value)}):i.commit(te.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return i.dispatch(K.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:d.email});case"account-confirmation-resend":return i.dispatch(K.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:d.email});default:d.language=r.value,i.dispatch(K.ACTIONS.LOGIN_OR_REGISTER,{actionType:N,formData:d,redirectUrl:s.query.from})}}function I(){d.username="",d.email="",d.password="",d.accepted_policy=!1}return Ce(()=>s.path,async()=>{i.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(K.MUTATIONS.UPDATE_IS_SUCCESS,!1),i.commit(K.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),E.value=!1,I()}),(N,b)=>{const C=j("AlertMessage"),y=j("router-link"),D=j("i18n-t"),U=j("ErrorMessage");return h(),v("div",{id:"user-auth-form",class:Ae(`${["reset","reset-request"].includes(m(n))?m(n):"user-form"}`)},[p("div",LTt,[p("div",{class:Ae(["form-box",{disabled:_.value}])},[_.value?(h(),B(C,{key:0,message:"user.REGISTER_DISABLED"})):L("",!0),f.value?(h(),B(C,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):L("",!0),m(l)||T.value?(h(),v("div",yTt,S(N.$t(`user.PROFILE.SUCCESSFUL_${T.value?`REGISTRATION${m(o).is_email_sending_enabled?"_WITH_EMAIL":""}`:"UPDATE"}`)),1)):L("",!0),p("form",{class:Ae({errors:E.value}),onSubmit:b[3]||(b[3]=ve(P=>g(m(n)),["prevent"]))},[p("div",$Tt,[m(n)==="register"?(h(),v("label",UTt,S(N.$t("user.USERNAME",0)),1)):L("",!0),m(n)==="register"?We((h(),v("input",{key:1,id:"username",disabled:_.value,required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:A,"onUpdate:modelValue":b[0]||(b[0]=P=>d.username=P),autocomplete:"username"},null,40,kTt)),[[ot,d.username]]):L("",!0),m(n)==="register"?(h(),v("div",wTt,[b[4]||(b[4]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(N.$t("user.USERNAME_INFO")),1)])):L("",!0),m(n)!=="reset"?(h(),v("label",MTt,S(N.$t("user.EMAIL",0)),1)):L("",!0),m(n)!=="reset"?We((h(),v("input",{key:4,id:"email",disabled:_.value||f.value,required:"",onInvalid:A,type:"email","onUpdate:modelValue":b[1]||(b[1]=P=>d.email=P),autocomplete:"email"},null,40,WTt)),[[ot,d.email]]):L("",!0),["reset-request","register","account-confirmation-resend"].includes(m(n))?(h(),v("div",FTt,[b[5]||(b[5]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(N.$t("user.EMAIL_INFO")),1)])):L("",!0),["account-confirmation-resend","reset-request"].includes(m(n))?L("",!0):(h(),v("label",zTt,S(N.$t(`user.${m(n)==="reset"?"ENTER_PASSWORD":"PASSWORD"}`)),1)),["account-confirmation-resend","reset-request"].includes(m(n))?L("",!0):(h(),B(SE,{key:7,id:"password",disabled:_.value,required:!0,password:d.password,checkStrength:["reset","register"].includes(m(n)),onUpdatePassword:R,onPasswordError:A,autocomplete:"current-password"},null,8,["disabled","password","checkStrength"])),m(n)==="register"?(h(),v("label",xTt,[We(p("input",{type:"checkbox",id:"accepted_policy",disabled:_.value,required:"",onInvalid:A,"onUpdate:modelValue":b[2]||(b[2]=P=>d.accepted_policy=P)},null,40,BTt),[[dl,d.accepted_policy]]),p("span",null,[M(D,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:Y(()=>[M(y,{to:"/privacy-policy",target:"_blank"},{default:Y(()=>[x(S(N.$t("privacy_policy.TITLE")),1)]),_:1})]),_:1})])])):L("",!0)]),p("button",{type:"submit",disabled:_.value||f.value},S(N.$t(c.value)),9,GTt)],34),m(n)==="login"?(h(),v("div",VTt,[M(y,{class:"links",to:"/register"},{default:Y(()=>[x(S(N.$t("user.REGISTER")),1)]),_:1}),m(o).is_email_sending_enabled?(h(),v("span",HTt,"-")):L("",!0),m(o).is_email_sending_enabled?(h(),B(y,{key:1,class:"links",to:"/password-reset/request"},{default:Y(()=>[x(S(N.$t("user.PASSWORD_FORGOTTEN")),1)]),_:1})):L("",!0)])):L("",!0),m(n)==="register"?(h(),v("div",KTt,[p("span",qTt,S(N.$t("user.ALREADY_HAVE_ACCOUNT")),1),M(y,{class:"links",to:"/login"},{default:Y(()=>[x(S(N.$t("user.LOGIN")),1)]),_:1})])):L("",!0),["login","register"].includes(m(n))&&m(o).is_email_sending_enabled?(h(),v("div",jTt,[M(y,{class:"links",to:"/account-confirmation/resend"},{default:Y(()=>[x(S(N.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)]),_:1})])):L("",!0),m(u)?(h(),B(U,{key:6,message:m(u)},null,8,["message"])):L("",!0)],2)])],2)}}}),Jp=se(YTt,[["__scopeId","data-v-8a25f980"]]),XTt={id:"account-confirmation-email",class:"center-card with-margin"},QTt={key:0,class:"email-sent"},ZTt={class:"email-sent-message"},JTt={key:1},emt=X({__name:"AccountConfirmationEmail",props:{action:{}},setup(e){const t=e,{action:n}=fe(t);return(a,s)=>{const i=j("Card");return h(),v("div",XTt,[m(n)==="email-sent"?(h(),v("div",QTt,[M(pI),p("div",ZTt,S(a.$t("user.ACCOUNT_CONFIRMATION_SENT")),1)])):(h(),v("div",JTt,[M(i,null,{title:Y(()=>[x(S(a.$t("user.RESENT_ACCOUNT_CONFIRMATION")),1)]),content:Y(()=>[M(Jp,{action:m(n)},null,8,["action"])]),_:1})]))])}}}),tmt=se(emt,[["__scopeId","data-v-08a26b50"]]),nmt={id:"account-confirmation",class:"view"},amt={class:"container"},smt=X({__name:"AccountConfirmationResendView",props:{action:{}},setup(e){const t=e,{action:n}=fe(t);return(a,s)=>(h(),v("div",nmt,[p("div",amt,[M(tmt,{action:m(n)},null,8,["action"])])]))}}),jh=se(smt,[["__scopeId","data-v-9a9c1644"]]),imt={key:0,id:"account-confirmation",class:"center-card with-margin"},omt={class:"error-message"},rmt=X({__name:"AccountConfirmationView",setup(e){const t=gn(),n=Le(),{errorMessages:a}=qe(),{token:s}=Ke();function i(){s.value?n.dispatch(K.ACTIONS.CONFIRM_ACCOUNT,{token:s.value}):t.push("/")}return et(()=>i()),(o,r)=>{const u=j("router-link");return m(a)?(h(),v("div",imt,[M(pp),p("p",omt,[p("span",null,S(o.$t("error.SOMETHING_WRONG"))+".",1),M(u,{class:"links",to:"/account-confirmation/resend"},{default:Y(()=>[x(S(o.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)]),_:1})])])):L("",!0)}}}),umt=se(rmt,[["__scopeId","data-v-576433a9"]]),lmt={key:0,id:"email-update",class:"center-card with-margin"},cmt={class:"error-message"},dmt=X({__name:"EmailUpdateView",setup(e){const t=gn(),n=Le(),{errorMessages:a}=qe(),{authUser:s,isAuthenticated:i,token:o}=Ke();function r(){o.value?n.dispatch(K.ACTIONS.CONFIRM_EMAIL,{token:o.value,refreshUser:i.value}):t.push("/")}return Ce(()=>a.value,u=>{s.value.username&&u&&t.push("/")}),et(()=>r()),(u,l)=>{const d=j("router-link"),E=j("i18n-t");return m(a)&&!m(s).username?(h(),v("div",lmt,[M(pp),p("p",cmt,[p("span",null,S(u.$t("error.SOMETHING_WRONG"))+".",1),p("span",null,[M(E,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:Y(()=>[M(d,{to:"/login"},{default:Y(()=>[x(S(u.$t("user.LOG_IN")),1)]),_:1})]),_:1})])])])):L("",!0)}}}),Emt=se(dmt,[["__scopeId","data-v-8710c2be"]]),pmt={id:"loginOrRegister",class:"view"},Tmt={class:"container"},mmt={class:"container-sub"},_mt={class:"container-sub"},fmt=X({__name:"LoginOrRegister",props:{action:{}},setup(e){const t=e,{action:n}=fe(t);return(a,s)=>(h(),v("div",pmt,[p("div",Tmt,[p("div",mmt,[M(nI)]),p("div",_mt,[M(Jp,{action:m(n)},null,8,["action"])])])]))}}),Yh=se(fmt,[["__scopeId","data-v-7344db74"]]),hmt={name:"Password"},Smt={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512.001 512.001",style:{"enable-background":"new 0 0 512.001 512.001"},"xml:space":"preserve"};function Amt(e,t,n,a,s,i){return h(),v("svg",Smt,t[0]||(t[0]=[Pn(``,7)]))}const Omt=se(hmt,[["render",Amt]]),Imt={id:"password-action-done",class:"center-card with-margin"},gmt={class:"password-message"},Rmt={key:0},Nmt=X({__name:"PasswordActionDone",props:{action:{}},setup(e){const t=e,{action:n}=fe(t);return(a,s)=>{const i=j("router-link"),o=j("i18n-t");return h(),v("div",Imt,[m(n)==="request-sent"?(h(),B(pI,{key:0})):(h(),B(Omt,{key:1})),p("div",gmt,[m(n)==="request-sent"?(h(),v("span",Rmt,S(a.$t("user.PASSWORD_SENT_EMAIL_TEXT")),1)):(h(),B(o,{key:1,keypath:"user.PASSWORD_UPDATED"},{default:Y(()=>[M(i,{to:"/login"},{default:Y(()=>[x(S(a.$t("common.HERE")),1)]),_:1})]),_:1}))])])}}}),vmt=se(Nmt,[["__scopeId","data-v-4f0a2bcc"]]),bmt={id:"password-reset-request",class:"center-card with-margin"},Cmt=X({__name:"PasswordResetForm",props:{action:{},token:{default:""}},setup(e){const t=e,{action:n,token:a}=fe(t);return(s,i)=>{const o=j("Card");return h(),v("div",bmt,[M(o,null,{title:Y(()=>[x(S(s.$t("user.RESET_PASSWORD")),1)]),content:Y(()=>[M(Jp,{action:m(n),token:m(a)},null,8,["action","token"])]),_:1})])}}}),Pmt=se(Cmt,[["__scopeId","data-v-25ace80f"]]),Dmt={id:"password-reset",class:"view"},Lmt={class:"container"},ymt=X({__name:"PasswordResetView",props:{action:{}},setup(e){const t=e,{action:n}=fe(t),a=gn(),{token:s}=Ke();return et(()=>{t.action==="reset"&&!s.value&&a.push("/")}),(i,o)=>(h(),v("div",Dmt,[p("div",Lmt,[m(n).startsWith("reset")?(h(),B(Pmt,{key:0,action:m(n),token:m(s)},null,8,["action","token"])):(h(),B(vmt,{key:1,action:m(n)},null,8,["action"]))])]))}}),Mr=se(ymt,[["__scopeId","data-v-f7d7dbd1"]]),$mt={key:0,id:"profile",class:"view"},Umt=X({__name:"ProfileView",setup(e){const{authUser:t}=Ke();return(n,a)=>{const s=j("router-view");return m(t).username?(h(),v("div",$mt,[M(s,{user:m(t)},null,8,["user"]),a[0]||(a[0]=p("div",{id:"bottom"},null,-1))])):L("",!0)}}}),kmt=se(Umt,[["__scopeId","data-v-10b39629"]]),wmt={id:"user-workouts"},Mmt={key:0},Wmt={class:"section-title"},Fmt=X({__name:"UserWorkoutsList",props:{user:{}},setup(e){const t=e,{user:n}=fe(t),{dateFormat:a,imperialUnits:s,timezone:i}=Ke(),{sports:o}=nn(),r=Le(),u=z(()=>r.getters[ce.GETTERS.USER_WORKOUTS]),l=z(()=>r.getters[ce.GETTERS.USER_WORKOUTS_LOADING]);function d(E){r.dispatch(ce.ACTIONS.GET_USER_WORKOUTS,E)}return Ce(()=>n.value,E=>{d(E.username)}),et(()=>{d(n.value.username),o.value.length===0&&n.value.nb_workouts>0&&r.dispatch(Ht.ACTIONS.GET_SPORTS)}),ct(()=>r.commit(ce.MUTATIONS.UPDATE_USER_WORKOUTS,[])),(E,c)=>{const T=j("Loader");return h(),v("div",wmt,[l.value?(h(),B(T,{key:0})):(h(),v(ue,{key:1},[u.value.length>0?(h(),v("div",Mmt,[p("div",Wmt,S(E.$t("workouts.LATEST_WORKOUTS")),1),(h(!0),v(ue,null,be(u.value,_=>(h(),B(Vo,{workout:_,sport:m(o).filter(f=>f.id===_.sport_id)[0],user:_.user,useImperialUnits:m(s),dateFormat:m(a),timezone:m(i),key:_.id},null,8,["workout","sport","user","useImperialUnits","dateFormat","timezone"]))),128))])):L("",!0)],64))])}}}),zmt=se(Fmt,[["__scopeId","data-v-15c91b33"]]),xmt={id:"user",class:"view"},Bmt={class:"box"},Gmt={key:1},Vmt=X({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:n}=fe(t),a=ut(),s=Le(),{authUser:i}=Ke(),o=z(()=>s.getters[ce.GETTERS.USER]);function r(u){u.username&&typeof u.username=="string"&&(s.dispatch(ce.ACTIONS.GET_USER,u.username),s.dispatch(ce.ACTIONS.EMPTY_RELATIONSHIPS))}return Ce(()=>a.params,u=>{r(u)}),et(()=>{r(a.params)}),Qo(()=>{s.dispatch(ce.ACTIONS.EMPTY_USER),s.dispatch(ce.ACTIONS.EMPTY_RELATIONSHIPS)}),(u,l)=>{const d=j("router-view");return h(),v("div",xmt,[o.value.username?(h(),v(ue,{key:0},[M(UO,{user:o.value},null,8,["user"]),p("div",Bmt,[u.$route.path.includes("follow")?(h(),B(d,{key:0,authUser:m(i),user:o.value},null,8,["authUser","user"])):(h(),B(kO,{key:1,authUser:m(i),user:o.value,"from-admin":m(n)},null,8,["authUser","user","from-admin"]))]),o.value.nb_workouts>0?(h(),B(zmt,{key:0,user:o.value},null,8,["user"])):L("",!0)],64)):(h(),v("div",Gmt,[M(Ui,{target:"USER"})]))])}}}),Xh=se(Vmt,[["__scopeId","data-v-f352961e"]]),Hmt={class:"users-list"},Kmt={key:0,class:"container users-container"},qmt={key:1,class:"no-users"},jmt="created_at",Ymt=X({__name:"UsersList",props:{authUser:{}},setup(e){const t=e,{authUser:n}=fe(t),a=Le(),s=ut(),i=gn(),{isAuthUserSuspended:o}=Ke(),r=["created_at","username","workouts_count"];let u=kt(f(s.query));const l=Ie(null),d=z(()=>a.getters[ce.GETTERS.USERS]),E=z(()=>a.getters[ce.GETTERS.USERS_PAGINATION]);function c(O){o.value||(O.per_page=9,a.dispatch(ce.ACTIONS.GET_USERS,O))}function T(O){l.value=O}function _(O){if(O.value!=="")u=f({q:O.value});else{const A=Object.assign({},s.query);u=f(A)}i.push({path:"/users",query:u})}function f(O){const A=vi(O,r,jmt);return O.q&&(A.q=O.q),A}return Ce(()=>s.query,O=>{u=f(O),c(u)}),et(()=>c(u)),ct(()=>{a.dispatch(ce.ACTIONS.EMPTY_USERS)}),(O,A)=>(h(),v("div",Hmt,[M($O,{onFilterOnUsername:_}),d.value.length>0?(h(),v("div",Kmt,[(h(!0),v(ue,null,be(d.value,R=>(h(),v("div",{key:R.username,class:"user-box"},[M(Hp,{authUser:m(n),user:R,updatedUser:l.value,onUpdatedUserRelationship:T},null,8,["authUser","user","updatedUser"])]))),128))])):(h(),v("div",qmt,S(O.$t("user.NO_USERS_FOUND")),1)),E.value.page?(h(),B(oa,{key:2,path:"/users",pagination:E.value,query:m(u)},null,8,["pagination","query"])):L("",!0)]))}}),Xmt=se(Ymt,[["__scopeId","data-v-b77a3b27"]]),Qmt={key:0,id:"users",class:"view"},Zmt={class:"container"},Jmt=X({__name:"UsersView",setup(e){const{authUser:t}=Ke();return(n,a)=>m(t).username?(h(),v("div",Qmt,[p("div",Zmt,[M(Xmt,{authUser:m(t)},null,8,["authUser"])])])):L("",!0)}}),e_t={id:"workout-form"},t_t={class:"form-items"},n_t={key:0,class:"form-item-radio"},a_t=["checked","disabled"],s_t={for:"withGpx"},i_t=["checked","disabled"],o_t={for:"withoutGpx"},r_t={class:"form-item"},u_t={for:"sport"},l_t=["disabled"],c_t=["value"],d_t={key:1,class:"form-item"},E_t={for:"gpxFile"},p_t=["disabled"],T_t={class:"files-help info-box"},m_t={class:"form-item"},__t={for:"title"},f_t=["required","disabled"],h_t={key:0,class:"field-help"},S_t={class:"info-box"},A_t={key:2},O_t={class:"workout-date-duration"},I_t={class:"form-item"},g_t={class:"workout-date-time"},R_t=["disabled"],N_t=["disabled"],v_t={class:"form-item"},b_t={for:"workout-duration-hour",class:"visually-hidden"},C_t=["disabled"],P_t={for:"workout-duration-minutes",class:"visually-hidden"},D_t=["disabled"],L_t={for:"workout-duration-seconds",class:"visually-hidden"},y_t=["disabled"],$_t={class:"workout-data"},U_t={class:"form-item"},k_t=["disabled"],w_t={class:"form-item"},M_t=["disabled"],W_t={class:"form-item"},F_t=["disabled"],z_t={key:3,class:"form-item"},x_t={for:"workout-equipment"},B_t=["disabled"],G_t={value:""},V_t=["value"],H_t={class:"form-item"},K_t={for:"workout_visibility"},q_t=["disabled"],j_t=["value"],Y_t={key:4,class:"form-item"},X_t={for:"analysis_visibility"},Q_t=["disabled"],Z_t=["value"],J_t={key:5,class:"form-item"},eft={for:"map_visibility"},tft=["disabled"],nft=["value"],aft={key:6,class:"form-item"},sft={for:"description"},ift={key:0,class:"field-help"},oft={class:"info-box"},rft={key:7,class:"form-item"},uft={for:"notes"},lft={key:0,class:"field-help"},cft={class:"info-box"},dft={key:1},Eft={key:2,class:"form-buttons"},pft=["disabled"],Tft=X({__name:"WorkoutEdition",props:{authUser:{},sports:{},isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},workout:{default:()=>({})}},setup(e){const t=e,{authUser:n,workout:a,isCreation:s,loading:i}=fe(t),o=gn(),r=Le(),{t:u}=yt(),{appConfig:l,errorMessages:d}=qe();let E=null;const c=kt({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:"",workoutAscent:"",workoutDescent:"",equipment_id:"",description:"",mapVisibility:n.value.map_visibility,analysisVisibility:n.value.analysis_visibility,workoutVisibility:n.value.workouts_visibility}),T=Ie(a.value.id&&a.value.with_gpx?!0:s.value),_=Ie(!1),f=Ie([]),O=z(()=>ia(t.sports,u,"is_active_for_user",a.value.id?[a.value.sport_id]:[])),A=z(()=>l.value.max_single_file_size?Qu(l.value.max_single_file_size):""),R=z(()=>l.value.gpx_limit_import),g=z(()=>l.value.max_zip_file_size?Qu(l.value.max_zip_file_size):""),I=z(()=>r.getters[xe.GETTERS.EQUIPMENTS]),N=z(()=>c.sport_id?O.value.filter(ae=>ae.id===+c.sport_id)[0]:null),b=z(()=>I.value?DO(I.value,u,s.value?"is_active":"withIncludedIds",N.value,s.value?[]:a.value.equipments.map(ae=>ae.id)):[]),C=z(()=>gO()),y=z(()=>Xu(c.workoutVisibility)),D=z(()=>Xu(c.analysisVisibility));function U(ae){c.notes=ae.value}function P(ae){c.description=ae.value}function F(){T.value=!T.value,_.value=!1}function Z(ae){ae.target.files&&(E=ae.target.files[0])}function Oe(ae){if(c.sport_id=`${ae.sport_id}`,c.title=ae.title,c.description=ae.description,c.notes=ae.notes,c.equipment_id=ae.equipments.length>0?`${ae.equipments[0].id}`:"",c.workoutVisibility=ae.workout_visibility?ae.workout_visibility:"private",c.analysisVisibility=ae.analysis_visibility?ae.analysis_visibility:"private",c.mapVisibility=ae.map_visibility?ae.map_visibility:"private",!ae.with_gpx){const ke=G1(vl(ae.workout_date,t.authUser.timezone),"yyyy-MM-dd");if(ae.duration){const pt=ae.duration.split(":");c.workoutDurationHour=pt[0],c.workoutDurationMinutes=pt[1],c.workoutDurationSeconds=pt[2]}ae.distance&&(c.workoutDistance=`${n.value.imperial_units?Yt(ae.distance,"km","mi",3):parseFloat(ae.distance.toFixed(3))}`),c.workoutDate=ke.workout_date,c.workoutTime=ke.workout_time,c.workoutAscent=ae.ascent===null?"":`${n.value.imperial_units?Yt(ae.ascent,"m","ft",2):parseFloat(ae.ascent.toFixed(2))}`,c.workoutDescent=ae.descent===null?"":`${n.value.imperial_units?Yt(ae.descent,"m","ft",2):parseFloat(ae.descent.toFixed(2))}`}}function ee(){return f.value.includes("workouts.INVALID_DISTANCE")}function Ee(){return f.value.includes("workouts.INVALID_DURATION")}function _e(){return f.value.includes("workouts.INVALID_ASCENT_OR_DESCENT")}function Pe(ae){f.value=[],ae.duration=+c.workoutDurationHour*3600+ +c.workoutDurationMinutes*60+ +c.workoutDurationSeconds,ae.duration<=0&&f.value.push("workouts.INVALID_DURATION"),ae.distance=n.value.imperial_units?Yt(+c.workoutDistance,"mi","km",3):+c.workoutDistance,ae.distance<=0&&f.value.push("workouts.INVALID_DISTANCE"),ae.workout_date=`${c.workoutDate} ${c.workoutTime}`,ae.ascent=c.workoutAscent===""?null:n.value.imperial_units?Yt(+c.workoutAscent,"ft","m",3):+c.workoutAscent,ae.descent=c.workoutDescent===""?null:n.value.imperial_units?Yt(+c.workoutDescent,"ft","m",3):+c.workoutDescent,(ae.ascent!==null&&ae.descent===null||ae.ascent===null&&ae.descent!==null)&&f.value.push("workouts.INVALID_ASCENT_OR_DESCENT"),ae.workout_visibility=c.workoutVisibility}function He(){const ae={sport_id:+c.sport_id,description:c.description,notes:c.notes,equipment_ids:c.equipment_id&&b.value.find(ke=>ke.id===c.equipment_id)?[c.equipment_id]:[],title:c.title,workout_visibility:c.workoutVisibility};if(t.workout.id)t.workout.with_gpx?(ae.analysis_visibility=c.analysisVisibility,ae.map_visibility=c.mapVisibility):Pe(ae),f.value.length>0?r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,f.value):r.dispatch(J.ACTIONS.EDIT_WORKOUT,{workoutId:t.workout.id,data:ae});else if(T.value){if(!E){r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,"workouts.NO_FILE_PROVIDED");return}ae.file=E,ae.analysis_visibility=c.analysisVisibility,ae.map_visibility=c.mapVisibility,r.dispatch(J.ACTIONS.ADD_WORKOUT,ae)}else Pe(ae),f.value.length>0?r.commit(te.MUTATIONS.SET_ERROR_MESSAGES,f.value):r.dispatch(J.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,ae)}function Je(){t.workout.id?o.push({name:"Workout",params:{workoutId:t.workout.id}}):o.go(-1)}function Ve(){_.value=!0}function _t(){c.analysisVisibility=Yu(c.analysisVisibility,c.workoutVisibility),we()}function we(){c.mapVisibility=Yu(c.mapVisibility,c.analysisVisibility)}return Ce(()=>t.workout,async(ae,ke)=>{ae!==ke&&ae&&ae.id&&Oe(ae)}),Ce(()=>N.value,ae=>{s.value&&(c.equipment_id=ae!=null&&ae.default_equipments&&(ae==null?void 0:ae.default_equipments.length)>0?`${ae.default_equipments[0].id}`:"")}),Ce(()=>n.value,ae=>{ae&&s&&(c.workoutVisibility=ae.workouts_visibility,c.analysisVisibility=ae.analysis_visibility,c.mapVisibility=ae.map_visibility)}),mt(()=>{let ae;t.workout.id?(Oe(t.workout),ae=document.getElementById("sport")):ae=document.getElementById("withGpx"),ae&&ae.focus()}),(ae,ke)=>{const pt=j("CustomTextArea"),Te=j("ErrorMessage"),Q=j("Loader"),Se=j("Card");return h(),v("div",{id:"workout-edition",class:Ae(["center-card",{"center-form":m(a)&&m(a).with_gpx,"with-margin":!m(s)}])},[M(Se,null,{title:Y(()=>[x(S(ae.$t(`workouts.${m(s)?"ADD":"EDIT"}_WORKOUT`)),1)]),content:Y(()=>[p("div",e_t,[p("form",{class:Ae({errors:_.value}),onSubmit:ve(He,["prevent"])},[p("div",t_t,[m(s)?(h(),v("div",n_t,[p("div",null,[p("input",{id:"withGpx",type:"radio",checked:T.value,disabled:m(i),onClick:F},null,8,a_t),p("label",s_t,S(ae.$t("workouts.WITH_GPX")),1)]),p("div",null,[p("input",{id:"withoutGpx",type:"radio",checked:!T.value,disabled:m(i),onClick:F},null,8,i_t),p("label",o_t,S(ae.$t("workouts.WITHOUT_GPX")),1)])])):L("",!0),p("div",r_t,[p("label",u_t,S(ae.$t("workouts.SPORT",1))+"*: ",1),We(p("select",{id:"sport",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[0]||(ke[0]=me=>c.sport_id=me)},[(h(!0),v(ue,null,be(O.value,me=>(h(),v("option",{value:me.id,key:me.id},S(me.translatedLabel),9,c_t))),128))],40,l_t),[[Jt,c.sport_id]])]),m(s)&&T.value?(h(),v("div",d_t,[p("label",E_t,S(ae.$t("workouts.GPX_FILE"))+" "+S(ae.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+"*: ",1),p("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:m(i),required:"",onInvalid:Ve,onInput:Z},null,40,p_t),p("div",T_t,[p("div",null,[p("strong",null,S(ae.$t("workouts.GPX_FILE"))+":",1),p("ul",null,[p("li",null,S(ae.$t("workouts.MAX_SIZE"))+": "+S(A.value),1)])]),p("div",null,[p("strong",null,S(ae.$t("workouts.ZIP_ARCHIVE"))+":",1),p("ul",null,[p("li",null,S(ae.$t("workouts.NO_FOLDER")),1),p("li",null,S(ae.$t("workouts.MAX_FILES"))+": "+S(R.value),1),p("li",null,S(ae.$t("workouts.MAX_SIZE"))+": "+S(g.value),1)])])])])):L("",!0),p("div",m_t,[p("label",__t,S(ae.$t("workouts.TITLE"))+S(m(s)?"":"*")+": ",1),We(p("input",{id:"title",name:"title",type:"text",required:!m(s),onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[1]||(ke[1]=me=>c.title=me),maxlength:"255"},null,40,f_t),[[ot,c.title]]),T.value&&m(s)?(h(),v("div",h_t,[p("span",S_t,[ke[14]||(ke[14]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(ae.$t("workouts.TITLE_FIELD_HELP")),1)])])):L("",!0)]),T.value?L("",!0):(h(),v("div",A_t,[p("div",O_t,[p("div",I_t,[p("label",null,S(ae.$t("workouts.WORKOUT_DATE"))+"*:",1),p("div",g_t,[We(p("input",{id:"workout-date",name:"workout-date",type:"date",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[2]||(ke[2]=me=>c.workoutDate=me)},null,40,R_t),[[ot,c.workoutDate]]),We(p("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[3]||(ke[3]=me=>c.workoutTime=me)},null,40,N_t),[[ot,c.workoutTime]])])]),p("div",v_t,[p("label",null,S(ae.$t("workouts.DURATION"))+"*:",1),p("div",null,[p("label",b_t,S(ae.$t("common.HOURS",0)),1),We(p("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:Ae(["workout-duration",{errored:Ee()}]),type:"text",placeholder:"HH",minlength:"1",maxlength:"2",pattern:"^([0-1]?[0-9]|2[0-3])$",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[4]||(ke[4]=me=>c.workoutDurationHour=me)},null,42,C_t),[[ot,c.workoutDurationHour]]),ke[15]||(ke[15]=x(" : ")),p("label",P_t,S(ae.$t("common.MINUTES",0)),1),We(p("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:Ae(["workout-duration",{errored:Ee()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"MM",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[5]||(ke[5]=me=>c.workoutDurationMinutes=me)},null,42,D_t),[[ot,c.workoutDurationMinutes]]),ke[16]||(ke[16]=x(" : ")),p("label",L_t,S(ae.$t("common.SECONDS",0)),1),We(p("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:Ae(["workout-duration",{errored:Ee()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"SS",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[6]||(ke[6]=me=>c.workoutDurationSeconds=me)},null,42,y_t),[[ot,c.workoutDurationSeconds]])])])]),p("div",$_t,[p("div",U_t,[p("label",null,S(ae.$t("workouts.DISTANCE"))+" ("+S(m(n).imperial_units?"mi":"km")+")*: ",1),We(p("input",{class:Ae({errored:ee()}),name:"workout-distance",type:"number",min:"0",step:"0.001",required:"",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[7]||(ke[7]=me=>c.workoutDistance=me)},null,42,k_t),[[ot,c.workoutDistance]])]),p("div",w_t,[p("label",null,S(ae.$t("workouts.ASCENT"))+" ("+S(m(n).imperial_units?"ft":"m")+"): ",1),We(p("input",{class:Ae({errored:_e()}),name:"workout-ascent",type:"number",min:"0",step:"0.01",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[8]||(ke[8]=me=>c.workoutAscent=me)},null,42,M_t),[[ot,c.workoutAscent]])]),p("div",W_t,[p("label",null,S(ae.$t("workouts.DESCENT"))+" ("+S(m(n).imperial_units?"ft":"m")+"): ",1),We(p("input",{class:Ae({errored:_e()}),name:"workout-descent",type:"number",min:"0",step:"0.01",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[9]||(ke[9]=me=>c.workoutDescent=me)},null,42,F_t),[[ot,c.workoutDescent]])])])])),I.value?(h(),v("div",z_t,[p("label",x_t,S(ae.$t("equipments.EQUIPMENT",1))+": ",1),We(p("select",{id:"workout-equipment",onInvalid:Ve,disabled:m(i),"onUpdate:modelValue":ke[10]||(ke[10]=me=>c.equipment_id=me)},[p("option",G_t,S(ae.$t("equipments.NO_EQUIPMENTS")),1),(h(!0),v(ue,null,be(b.value,me=>(h(),v("option",{value:me.id,key:me.id},S(me.label),9,V_t))),128))],40,B_t),[[Jt,c.equipment_id]])])):L("",!0),p("div",H_t,[p("label",K_t,S(ae.$t("visibility_levels.WORKOUT_VISIBILITY"))+": ",1),We(p("select",{id:"workout_visibility","onUpdate:modelValue":ke[11]||(ke[11]=me=>c.workoutVisibility=me),disabled:m(i),onChange:_t},[(h(!0),v(ue,null,be(C.value,me=>(h(),v("option",{value:me,key:me},S(ae.$t(`visibility_levels.LEVELS.${me}`)),9,j_t))),128))],40,q_t),[[Jt,c.workoutVisibility]])]),T.value?(h(),v("div",Y_t,[p("label",X_t,S(ae.$t("visibility_levels.ANALYSIS_VISIBILITY"))+": ",1),We(p("select",{id:"analysis_visibility","onUpdate:modelValue":ke[12]||(ke[12]=me=>c.analysisVisibility=me),onChange:we,disabled:m(i)},[(h(!0),v(ue,null,be(y.value,me=>(h(),v("option",{value:me,key:me},S(ae.$t(`visibility_levels.LEVELS.${me}`)),9,Z_t))),128))],40,Q_t),[[Jt,c.analysisVisibility]])])):L("",!0),T.value?(h(),v("div",J_t,[p("label",eft,S(ae.$t("visibility_levels.MAP_VISIBILITY"))+": ",1),We(p("select",{id:"map_visibility","onUpdate:modelValue":ke[13]||(ke[13]=me=>c.mapVisibility=me),disabled:m(i)},[(h(!0),v(ue,null,be(D.value,me=>(h(),v("option",{value:me,key:me},S(ae.$t(`visibility_levels.LEVELS.${me}`)),9,nft))),128))],8,tft),[[Jt,c.mapVisibility]])])):L("",!0),m(s)?(h(),v("div",aft,[p("label",sft,S(ae.$t("workouts.DESCRIPTION"))+": ",1),M(pt,{name:"description",input:c.description,disabled:m(i),charLimit:1e4,rows:5,onUpdateValue:P},null,8,["input","disabled"]),T.value&&m(s)?(h(),v("div",ift,[p("span",oft,[ke[17]||(ke[17]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(ae.$t("workouts.DESCRIPTION_FIELD_HELP")),1)])])):L("",!0)])):L("",!0),m(s)?(h(),v("div",rft,[p("label",uft,S(ae.$t("workouts.PRIVATE_NOTES"))+": ",1),M(pt,{name:"notes",input:c.notes,disabled:m(i),onUpdateValue:U},null,8,["input","disabled"]),m(s)?(h(),v("div",lft,[p("span",cft,[ke[18]||(ke[18]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(ae.$t("workouts.PRIVATE_NOTES_FIELD_HELP")),1)])])):L("",!0)])):L("",!0)]),m(d)?(h(),B(Te,{key:0,message:m(d)},null,8,["message"])):L("",!0),m(i)?(h(),v("div",dft,[M(Q)])):(h(),v("div",Eft,[p("button",{class:"confirm",type:"submit",disabled:m(i)},S(ae.$t("buttons.SUBMIT")),9,pft),p("button",{class:"cancel",onClick:ve(Je,["prevent"])},S(ae.$t("buttons.CANCEL")),1)]))],34)])]),_:1})],2)}}}),TI=se(Tft,[["__scopeId","data-v-24e1fdb7"]]),mft={id:"add-workout",class:"view"},_ft={class:"container"},fft=X({__name:"AddWorkout",setup(e){const t=Le(),{authUser:n}=Ke(),{sports:a}=nn(),s=z(()=>t.getters[J.GETTERS.WORKOUT_DATA]);return(i,o)=>(h(),v("div",mft,[p("div",_ft,[M(TI,{authUser:m(n),sports:m(a),isCreation:!0,loading:s.value.loading},null,8,["authUser","sports","loading"])])]))}}),hft={class:"workout-comments"},Sft={key:0,class:"no-comments"},Aft={key:1,class:"add-comment"},Oft={key:2,class:"add-comment-button"},Ift=X({__name:"Comments",props:{workoutData:{},authUser:{}},setup(e){const t=e,{workoutData:n}=fe(t),a=ut(),s=Le(),i=Ie(),o=z(()=>n.value.comments),r=z(()=>n.value.currentCommentEdition.type==="delete"),u=z(()=>n.value.currentCommentEdition.type==="new"),l=z(()=>n.value.commentsLoading==="all"),d=z(()=>n.value.commentsLoading==="delete"),E=z(()=>a.params.commentId);function c(){const O=n.value.currentCommentEdition.comment;O&&s.dispatch(J.ACTIONS.DELETE_WORKOUT_COMMENT,{workoutId:O.workout_id,commentId:O.id})}function T(){s.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}function _(){s.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{type:"new"}),i.value=setTimeout(()=>{const O=document.getElementById("text");O&&(O.focus(),O.scrollIntoView({behavior:"smooth"}))},100)}function f(O){i.value=setTimeout(()=>{const A=document.getElementById(O);A&&A.scrollIntoView({behavior:"smooth"})},500)}return Ce(()=>n.value.comments,()=>{s.commit(J.MUTATIONS.SET_CURRENT_COMMENT_EDITION,{})}),mt(()=>{ln(()=>{E.value&&f(E.value)})}),ct(()=>{i.value&&clearTimeout(i.value)}),(O,A)=>{const R=j("Modal"),g=j("Loader"),I=j("Comment"),N=j("Card");return h(),v("div",hft,[r.value?(h(),B(R,{key:0,title:O.$t("common.CONFIRMATION"),message:O.$t("workouts.COMMENTS.DELETION_CONFIRMATION"),loading:d.value,onConfirmAction:c,onCancelAction:T},null,8,["title","message","loading"])):L("",!0),M(N,null,mi({title:Y(()=>[x(S(Fe(O.$t("workouts.COMMENTS.LABEL",0))),1)]),_:2},[l.value?{name:"content",fn:Y(()=>[M(g)]),key:"0"}:{name:"content",fn:Y(()=>[(h(!0),v(ue,null,be(o.value,b=>(h(),B(I,{key:b.id,comment:b,workout:m(n).workout,"current-comment-edition":m(n).currentCommentEdition,authUser:O.authUser,"comments-loading":"workoutData.commentsLoading",action:b.suspension},null,8,["comment","workout","current-comment-edition","authUser","action"]))),128)),m(n).comments.length===0?(h(),v("div",Sft,S(O.$t("workouts.COMMENTS.NO_COMMENTS")),1)):L("",!0),u.value?(h(),v("div",Aft,[O.authUser.username?(h(),B(RO,{key:0,workout:m(n).workout,"comments-loading":"workoutData.commentsLoading","auth-user":O.authUser},null,8,["workout","auth-user"])):L("",!0)])):O.authUser.username&&m(n).workout.id?(h(),v("div",Oft,[p("button",{onClick:ve(_,["prevent"])},S(O.$t("workouts.COMMENTS.ADD")),1)])):L("",!0)]),key:"1"}]),1024)])}}}),mI=se(Ift,[["__scopeId","data-v-dbdc1cf2"]]),gft={id:"comments",class:"view"},Rft={class:"container"},Nft={class:"comments-container"},vft={key:0},bft={class:"box no-workout"},Cft={key:1},Pft=X({__name:"CommentView",setup(e){const t=ut(),n=Le(),{authUser:a}=Ke(),s=z(()=>n.getters[J.GETTERS.WORKOUT_DATA]);return Ce(()=>t.params.commentId,async i=>{i&&n.dispatch(J.ACTIONS.GET_WORKOUT_COMMENT,i)}),et(()=>{n.dispatch(J.ACTIONS.GET_WORKOUT_COMMENT,t.params.commentId)}),ct(()=>{n.commit(J.MUTATIONS.EMPTY_WORKOUT)}),(i,o)=>(h(),v("div",gft,[p("div",Rft,[p("div",Nft,[s.value.comments.length>0?(h(),v("div",vft,[p("div",bft,S(i.$t("workouts.NO_WORKOUT_AVAILABLE")),1),M(mI,{workoutData:s.value,"auth-user":m(a),"with-parent":!0},null,8,["workoutData","auth-user"]),o[0]||(o[0]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",Cft,[s.value.commentsLoading?L("",!0):(h(),B(Ui,{key:0,target:"COMMENT"}))]))])])]))}}),Dft=se(Pft,[["__scopeId","data-v-da00ce02"]]),Lft={id:"edit-workout",class:"view"},yft={class:"container"},$ft=X({__name:"EditWorkout",setup(e){const t=ut(),n=Le(),{authUser:a}=Ke(),{sports:s}=nn(),i=z(()=>n.getters[J.GETTERS.WORKOUT_DATA]);return Ce(()=>t.params.workoutId,async o=>{o||n.commit(J.MUTATIONS.EMPTY_WORKOUT)}),et(()=>{n.dispatch(J.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.params.workoutId})}),(o,r)=>(h(),v("div",Lft,[p("div",yft,[i.value.workout.id?(h(),B(TI,{key:0,authUser:m(a),sports:m(s),workout:i.value.workout,loading:i.value.loading},null,8,["authUser","sports","workout","loading"])):L("",!0)])]))}}),Uft={id:"workout-card-title"},kft=["disabled","title"],wft={class:"workout-card-title"},Mft={key:0,class:"workout-title-date"},Wft={key:0,class:"workout-title"},Fft={key:0},zft=["aria-label"],xft={key:0,class:"likes-count"},Bft=["aria-label"],Gft=["aria-label"],Vft=["aria-label"],Hft=["title"],Kft=["title"],qft={key:0,class:"likes-count"},jft={key:1,class:"workout-title"},Yft={class:"workout-segment"},Xft={class:"workout-date"},Qft=["datetime"],Zft={class:"workout-link"},Jft=["disabled","title"],eht=X({__name:"WorkoutCardTitle",props:{sport:{},workoutObject:{},isWorkoutOwner:{type:Boolean}},emits:["displayModal"],setup(e,{emit:t}){const n=e,{isWorkoutOwner:a,sport:s,workoutObject:i}=fe(n),o=t,r=Le(),{isAuthenticated:u}=Ke(),l=z(()=>r.getters[J.GETTERS.CURRENT_REPORTING]),d=z(()=>r.getters[De.GETTERS.REPORT_STATUS]);async function E(f){await Ne.get(`workouts/${f}/gpx/download`,{responseType:"blob"}).then(O=>{const A=window.URL.createObjectURL(new Blob([O.data],{type:"application/gpx+xml"})),R=document.createElement("a");R.href=A,R.setAttribute("download",`${f}.gpx`),document.body.appendChild(R),R.click()})}function c(){o("displayModal",!0)}function T(f){r.dispatch(f.liked?J.ACTIONS.UNDO_LIKE_WORKOUT:J.ACTIONS.LIKE_WORKOUT,f.workoutId)}function _(){r.commit(J.MUTATIONS.SET_CURRENT_REPORTING,!0)}return(f,O)=>{const A=j("SportImage"),R=j("router-link");return h(),v("div",Uft,[m(a)?(h(),v("button",{key:0,class:Ae(["workout-previous workout-arrow transparent",{inactive:!m(i).previousUrl}]),disabled:!m(i).previousUrl,title:m(i).previousUrl?f.$t(`workouts.PREVIOUS_${m(i).type}`):f.$t(`workouts.NO_PREVIOUS_${m(i).type}`),onClick:O[0]||(O[0]=g=>m(i).previousUrl?f.$router.push(m(i).previousUrl):null)},O[5]||(O[5]=[p("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)]),10,kft)):L("",!0),p("div",wft,[M(A,{"sport-label":m(s).label,color:m(s).color},null,8,["sport-label","color"]),m(a)||!m(i).suspended?(h(),v("div",Mft,[m(i).type==="WORKOUT"?(h(),v("div",Wft,[p("span",null,S(m(i).title),1),m(u)?(h(),v("div",Fft,[p("button",{class:"transparent icon-button likes",onClick:O[1]||(O[1]=g=>T(m(i))),"aria-label":`${f.$t(`workouts.${m(i).liked?"REMOVE_LIKE":"LIKE_WORKOUT"}`)} (${m(i).likes_count} ${f.$t("workouts.LIKES",m(i).likes_count)})`},[p("i",{class:Ae(["fa",{"fa-heart":m(i).likes_count>0,"fa-heart-o":m(i).likes_count===0,liked:m(i).liked}]),"aria-hidden":"true"},null,2),m(i).likes_count>0?(h(),v("span",xft,S(m(i).likes_count),1)):L("",!0)],8,zft),m(a)?(h(),v("button",{key:0,class:"transparent icon-button",onClick:O[2]||(O[2]=g=>f.$router.push({name:"EditWorkout",params:{workoutId:m(i).workoutId}})),"aria-label":f.$t("workouts.EDIT_WORKOUT")},O[6]||(O[6]=[p("i",{class:"fa fa-edit","aria-hidden":"true"},null,-1)]),8,Bft)):L("",!0),m(i).with_gpx&&m(a)?(h(),v("button",{key:1,class:"transparent icon-button",onClick:O[3]||(O[3]=ve(g=>E(m(i).workoutId),["prevent"])),"aria-label":f.$t("workouts.DOWNLOAD_WORKOUT")},O[7]||(O[7]=[p("i",{class:"fa fa-download","aria-hidden":"true"},null,-1)]),8,Gft)):L("",!0),m(a)?(h(),v("button",{key:2,id:"delete-workout-button",class:"transparent icon-button",onClick:ve(c,["prevent"]),"aria-label":f.$t("workouts.DELETE_WORKOUT")},O[8]||(O[8]=[p("i",{class:"fa fa-trash","aria-hidden":"true"},null,-1)]),8,Vft)):L("",!0),!m(a)&&!l.value&&d.value!==`workout-${m(i).workoutId}-created`?(h(),v("button",{key:3,class:"transparent icon-button",onClick:ve(_,["prevent"]),title:f.$t("workouts.REPORT_WORKOUT")},O[9]||(O[9]=[p("i",{class:"fa fa-flag","aria-hidden":"true"},null,-1)]),8,Hft)):L("",!0)])):(h(),v("div",{key:1,title:`${m(i).likes_count} ${f.$t("workouts.LIKES",m(i).likes_count)}`},[p("i",{class:Ae(["fa",{"fa-heart":m(i).likes_count>0,"fa-heart-o":m(i).likes_count===0,liked:m(i).liked}])},null,2),m(i).likes_count>0?(h(),v("span",qft,S(m(i).likes_count),1)):L("",!0)],8,Kft))])):m(i).segmentId!==null?(h(),v("div",jft,[x(S(m(i).title)+" ",1),p("span",Yft,[O[10]||(O[10]=x(" — ")),O[11]||(O[11]=p("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1)),x(" "+S(f.$t("workouts.SEGMENT"))+" "+S(m(i).segmentId+1),1)])])):L("",!0),p("div",Xft,[p("time",{datetime:m(i).workoutFullDate},S(m(i).workoutDate)+" - "+S(m(i).workoutTime),9,Qft),p("span",Zft,[m(i).type==="SEGMENT"?(h(),B(R,{key:0,to:{name:"Workout",params:{workoutId:m(i).workoutId}}},{default:Y(()=>[x(" > "+S(f.$t("workouts.BACK_TO_WORKOUT")),1)]),_:1},8,["to"])):L("",!0)])])])):L("",!0)]),m(a)?(h(),v("button",{key:1,class:Ae(["workout-next workout-arrow transparent",{inactive:!m(i).nextUrl}]),disabled:!m(i).nextUrl,title:m(i).nextUrl?f.$t(`workouts.NEXT_${m(i).type}`):f.$t(`workouts.NO_NEXT_${m(i).type}`),onClick:O[4]||(O[4]=g=>m(i).nextUrl?f.$router.push(m(i).nextUrl):null)},O[12]||(O[12]=[p("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)]),10,Jft)):L("",!0)])}}}),tht=se(eht,[["__scopeId","data-v-0dda19ba"]]),nht={key:0,class:"workout-record"},aht=X({__name:"WorkoutRecord",props:{recordType:{},workoutObject:{}},setup(e){const t=e,{recordType:n,workoutObject:a}=fe(t);return(s,i)=>m(a).records&&m(a).records.find(o=>o.record_type===m(n))?(h(),v("span",nht,i[0]||(i[0]=[p("sup",null,[p("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1)]))):L("",!0)}}),no=se(aht,[["__scopeId","data-v-0c5d556a"]]),sht="/img/weather/temperature.svg",iht="/img/weather/pour-rain.svg",oht="/img/weather/breeze.svg",rht=["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"],uht=e=>{const t=Math.floor(e/22.5+.5);return rht[t%16]},lht={class:"wind"},cht={class:"wind-bearing"},dht=["title"],Eht=X({__name:"WeatherWind",props:{weather:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{useImperialUnits:n,weather:a}=fe(t),{t:s}=yt();function i(o){return s(`workouts.WEATHER.WIND_DIRECTIONS.${uht(o)}`)}return(o,r)=>(h(),v("div",lht,[x(S(m(aKe)(m(a).wind,m(n)))+" ",1),p("div",cht,[m(a).windBearing?(h(),v("i",{key:0,class:"fa fa-long-arrow-down",style:za({transform:`rotate(${m(a).windBearing}deg)`}),"aria-hidden":"true",title:i(m(a).windBearing)},null,12,dht)):L("",!0)])]))}}),Qh=se(Eht,[["__scopeId","data-v-e1f7f9cc"]]),pht={key:0,id:"workout-weather"},Tht={class:"weather-table"},mht={class:"weather-th"},_ht=["src","alt","title"],fht={class:"weather-th"},hht=["src","alt","title"],Sht=["alt","title"],Aht=["alt","title"],Oht=["alt","title"],Iht=X({__name:"WorkoutWeather",props:{workoutObject:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{useImperialUnits:n,workoutObject:a}=fe(t);return(s,i)=>m(a).weatherStart&&m(a).weatherEnd?(h(),v("div",pht,[p("table",Tht,[p("thead",null,[p("tr",null,[i[0]||(i[0]=p("th",null,null,-1)),p("th",null,[p("div",mht,[x(S(s.$t("workouts.START"))+" ",1),p("img",{class:"weather-img",src:`/img/weather/${m(a).weatherStart.icon}.svg`,alt:s.$t(`workouts.WEATHER.DARK_SKY.${m(a).weatherStart.icon}`),title:s.$t(`workouts.WEATHER.DARK_SKY.${m(a).weatherStart.icon}`)},null,8,_ht)])]),p("th",null,[p("div",fht,[x(S(s.$t("workouts.END"))+" ",1),p("img",{class:"weather-img",src:`/img/weather/${m(a).weatherEnd.icon}.svg`,alt:s.$t(`workouts.WEATHER.DARK_SKY.${m(a).weatherEnd.icon}`),title:s.$t(`workouts.WEATHER.DARK_SKY.${m(a).weatherEnd.icon}`)},null,8,hht)])])])]),p("tbody",null,[p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:sht,alt:s.$t("workouts.WEATHER.TEMPERATURE"),title:s.$t("workouts.WEATHER.TEMPERATURE")},null,8,Sht)]),p("td",null,S(m(Eh)(m(a).weatherStart.temperature,m(n))),1),p("td",null,S(m(Eh)(m(a).weatherEnd.temperature,m(n))),1)]),p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:iht,alt:s.$t("workouts.WEATHER.HUMIDITY"),title:s.$t("workouts.WEATHER.HUMIDITY")},null,8,Aht)]),p("td",null,S(Number(m(a).weatherStart.humidity*100).toFixed(1))+"% ",1),p("td",null,S(Number(m(a).weatherEnd.humidity*100).toFixed(1))+"% ",1)]),p("tr",null,[p("td",null,[p("img",{class:"weather-img weather-img-small",src:oht,alt:s.$t("workouts.WEATHER.WIND"),title:s.$t("workouts.WEATHER.WIND")},null,8,Oht)]),p("td",null,[M(Qh,{weather:m(a).weatherStart,useImperialUnits:m(n)},null,8,["weather","useImperialUnits"])]),p("td",null,[M(Qh,{weather:m(a).weatherEnd,useImperialUnits:m(n)},null,8,["weather","useImperialUnits"])])])])])])):L("",!0)}}),ght=se(Iht,[["__scopeId","data-v-d507bd79"]]),Rht={id:"workout-info"},Nht={class:"workout-data"},vht={class:"label"},bht={class:"value"},Cht={key:0},Pht={class:"value"},Dht={class:"value"},Lht={key:0,class:"workout-data"},yht={class:"label"},$ht={key:1,class:"workout-data"},Uht={class:"label"},kht={class:"label"},wht={key:2,class:"workout-data"},Mht=["alt"],Wht={class:"label"},Fht={class:"label"},zht={key:3,class:"workout-data"},xht={class:"label"},Bht={class:"label"},Ght=X({__name:"WorkoutData",props:{workoutObject:{},useImperialUnits:{type:Boolean},displayHARecord:{type:Boolean}},setup(e){const t=e,{displayHARecord:n,workoutObject:a,useImperialUnits:s}=fe(t),i=z(()=>a.value.pauses!=="0:00:00"&&a.value.pauses!==null);return(o,r)=>{const u=j("Distance");return h(),v("div",Rht,[p("div",Nht,[r[0]||(r[0]=p("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)),p("span",vht,S(o.$t("workouts.DURATION")),1),r[1]||(r[1]=x(": ")),p("span",bht,S(m(a).moving),1),M(no,{workoutObject:m(a),recordType:"LD"},null,8,["workoutObject"]),i.value?(h(),v("div",Cht,[x(" ("+S(o.$t("workouts.PAUSES"))+": ",1),p("span",Pht,S(m(a).pauses),1),x(" - "+S(o.$t("workouts.TOTAL_DURATION"))+": ",1),p("span",Dht,S(m(a).duration)+")",1)])):L("",!0)]),m(a).distance!==null?(h(),v("div",Lht,[r[2]||(r[2]=p("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)),p("span",yht,S(o.$t("workouts.DISTANCE")),1),r[3]||(r[3]=x(": ")),M(u,{distance:m(a).distance,digits:3,unitFrom:"km",strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"]),M(no,{workoutObject:m(a),recordType:"FD"},null,8,["workoutObject"])])):L("",!0),m(a).aveSpeed!==null&&m(a).maxSpeed!==null?(h(),v("div",$ht,[r[4]||(r[4]=p("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1)),p("span",Uht,S(o.$t("workouts.AVERAGE_SPEED")),1),r[5]||(r[5]=x(": ")),M(u,{distance:m(a).aveSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"]),M(no,{workoutObject:m(a),recordType:"AS"},null,8,["workoutObject"]),r[6]||(r[6]=p("br",null,null,-1)),p("span",kht,S(o.$t("workouts.MAX_SPEED")),1),r[7]||(r[7]=x(": ")),M(u,{distance:m(a).maxSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"]),M(no,{workoutObject:m(a),recordType:"MS"},null,8,["workoutObject"])])):L("",!0),m(a).maxAlt!==null&&m(a).minAlt!==null?(h(),v("div",wht,[p("img",{class:"mountains",src:LO,alt:o.$t("workouts.ELEVATION")},null,8,Mht),p("span",Wht,S(o.$t("workouts.MIN_ALTITUDE")),1),r[8]||(r[8]=x(": ")),M(u,{distance:m(a).minAlt,unitFrom:"m",strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"]),r[9]||(r[9]=p("br",null,null,-1)),p("span",Fht,S(o.$t("workouts.MAX_ALTITUDE")),1),r[10]||(r[10]=x(": ")),M(u,{distance:m(a).maxAlt,unitFrom:"m",strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"])])):L("",!0),m(a).ascent!==null&&m(a).descent!==null?(h(),v("div",zht,[r[11]||(r[11]=p("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)),p("span",xht,S(o.$t("workouts.ASCENT")),1),r[12]||(r[12]=x(": ")),M(u,{distance:m(a).ascent,unitFrom:"m",strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"]),m(n)?(h(),B(no,{key:0,workoutObject:m(a),recordType:"HA"},null,8,["workoutObject"])):L("",!0),r[13]||(r[13]=p("br",null,null,-1)),p("span",Bht,S(o.$t("workouts.DESCENT")),1),r[14]||(r[14]=x(": ")),M(u,{distance:m(a).descent,unitFrom:"m",strong:!0,useImperialUnits:m(s)},null,8,["distance","useImperialUnits"])])):L("",!0),M(ght,{workoutObject:m(a),useImperialUnits:m(s)},null,8,["workoutObject","useImperialUnits"])])}}}),Vht=se(Ght,[["__scopeId","data-v-299a57f0"]]);function Ti(e,t){return Array.from(e.getElementsByTagName(t))}function ki(e){return e==null||e.normalize(),(e==null?void 0:e.textContent)||""}function Bs(e,t,n){const a=e.getElementsByTagName(t);return a.length?a[0]:null}function Hht(e,t,n){const a={};if(!e)return a;const s=e.getElementsByTagName(t),i=s.length?s[0]:null;return i&&n?n(i,a):a}function _I(e,t,n){const a=ki(Bs(e,t));return a&&n?n(a)||{}:{}}function Zh(e,t,n){const a=Number.parseFloat(ki(Bs(e,t)));if(!Number.isNaN(a))return a&&n?n(a)||{}:{}}function Kht(e,t,n){const a=Number.parseFloat(ki(Bs(e,t)));if(!Number.isNaN(a))return n(a),a}function IE(e,t){const n={};for(const a of t)_I(e,a,s=>{n[a]=s});return n}function qht(e){return(e==null?void 0:e.nodeType)===1}function fI(e){let t=[];if(e===null)return t;for(const n of Array.from(e.childNodes)){if(!qht(n))continue;const a=jht(n.nodeName);if(a==="gpxtpx:TrackPointExtension")t=t.concat(fI(n));else{const s=ki(n);t.push([a,Yht(s)])}}return t}function jht(e){return["heart","gpxtpx:hr","hr"].includes(e)?"heart":e}function Yht(e){const t=Number.parseFloat(e);return Number.isNaN(t)?e:t}function hI(e){const t=[Number.parseFloat(e.getAttribute("lon")||""),Number.parseFloat(e.getAttribute("lat")||"")];if(Number.isNaN(t[0])||Number.isNaN(t[1]))return null;Kht(e,"ele",a=>{t.push(a)});const n=Bs(e,"time");return{coordinates:t,time:n?ki(n):null,extendedValues:fI(Bs(e,"extensions"))}}function SI(e){return Hht(e,"line",t=>Object.assign({},_I(t,"color",a=>({stroke:`#${a}`})),Zh(t,"opacity",a=>({"stroke-opacity":a})),Zh(t,"width",a=>({"stroke-width":a*96/25.4}))))}function eT(e,t){var s;const n=IE(t,["name","cmt","desc","type","time","keywords"]);for(const[i,o]of e)for(const r of Array.from(t.getElementsByTagNameNS(o,"*")))n[r.tagName.replace(":","_")]=(s=ki(r))==null?void 0:s.trim();const a=Ti(t,"link");return a.length&&(n.links=a.map(i=>Object.assign({href:i.getAttribute("href")},IE(i,["text","type"])))),n}function AI(e,t){const n=Ti(e,t),a=[],s=[],i={};for(let o=0;o1,r=Object.assign({_gpxType:"trk"},eT(e,t),SI(Bs(t,"extensions")),s.length?{coordinateProperties:{times:o?s:s[0]}}:{});for(const l of i){a.push(l.line),r.coordinateProperties||(r.coordinateProperties={});const d=r.coordinateProperties,E=Object.entries(l.extendedValues);for(let c=0;cnew Array(f.line.length).fill(null))),d[T][c]=_):d[T]=_}}return{type:"Feature",properties:r,geometry:o?{type:"MultiLineString",coordinates:a}:{type:"LineString",coordinates:a[0]}}}function Zht(e,t){const n=Object.assign(eT(e,t),IE(t,["sym"])),a=hI(t);return a?{type:"Feature",properties:n,geometry:{type:"Point",coordinates:a.coordinates}}:null}function*Jht(e){var i,o;const t="gpxx",n="http://www.garmin.com/xmlschemas/GpxExtensions/v3",a=[[t,n]],s=(i=e.getElementsByTagName("gpx")[0])==null?void 0:i.attributes;if(s)for(const r of Array.from(s))(o=r.name)!=null&&o.startsWith("xmlns:")&&r.value!==n&&a.push([r.name,r.value]);for(const r of Ti(e,"trk")){const u=Qht(a,r);u&&(yield u)}for(const r of Ti(e,"rte")){const u=Xht(a,r);u&&(yield u)}for(const r of Ti(e,"wpt")){const u=Zht(a,r);u&&(yield u)}}function e0t(e){return{type:"FeatureCollection",features:Array.from(Jht(e))}}const Jh=(e,t)=>{for(const n of Object.keys(t))e.on(n,t[n])},OI=e=>{for(const t of Object.keys(e)){const n=e[t];n&&ss(n.cancel)&&n.cancel()}},t0t=e=>!e||typeof e.charAt!="function"?e:e.charAt(0).toUpperCase()+e.slice(1),ss=e=>typeof e=="function",Ga=(e,t,n)=>{for(const a in n){const s="set"+t0t(a);e[s]?Ce(()=>n[a],(i,o)=>{e[s](i,o)}):t[s]&&Ce(()=>n[a],i=>{t[s](i)})}},Ia=(e,t,n={})=>{const a={...n};for(const s in e){const i=t[s],o=e[s];i&&(i&&i.custom===!0||o!==void 0&&(a[s]=o))}return a},js=e=>{const t={},n={};for(const a in e)if(a.startsWith("on")&&!a.startsWith("onUpdate")&&a!=="onReady"){const s=a.slice(2).toLocaleLowerCase();t[s]=e[a]}else n[a]=e[a];return{listeners:t,attrs:n}},n0t=async e=>{const t=await Promise.all([xt(()=>import("./maps-DkiRMund.js").then(n=>n.m),__vite__mapDeps([0,1])),xt(()=>import("./maps-DkiRMund.js").then(n=>n.b),__vite__mapDeps([0,1])),xt(()=>import("./maps-DkiRMund.js").then(n=>n.c),__vite__mapDeps([0,1]))]);delete e.Default.prototype._getIconUrl,e.Default.mergeOptions({iconRetinaUrl:t[0].default,iconUrl:t[1].default,shadowUrl:t[2].default})},Wr=e=>{const t=Ie((...a)=>console.warn(`Method ${e} has been invoked without being replaced`)),n=(...a)=>t.value(...a);return n.wrapped=t,Sn(e,n),n},Fr=(e,t)=>e.wrapped.value=t,ta=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||globalThis,Yn=e=>{const t=Ut(e);if(t===void 0)throw new Error(`Attempt to inject ${e.description} before it was provided.`);return t},Va=Symbol("useGlobalLeaflet"),hs=Symbol("addLayer"),tT=Symbol("removeLayer"),II=Symbol("registerControl"),gI=Symbol("registerLayerControl"),RI=Symbol("canSetParentHtml"),NI=Symbol("setParentHtml"),vI=Symbol("setIcon"),a0t=Symbol("bindPopup"),s0t=Symbol("bindTooltip"),i0t=Symbol("unbindPopup"),o0t=Symbol("unbindTooltip"),cr={options:{type:Object,default:()=>({}),custom:!0}},Fl=e=>({options:e.options,methods:{}}),wi={...cr,pane:{type:String},attribution:{type:String},name:{type:String,custom:!0},layerType:{type:String,custom:!0},visible:{type:Boolean,custom:!0,default:!0}},nT=(e,t,n)=>{const a=Yn(hs),s=Yn(tT),{options:i,methods:o}=Fl(e),r=Ia(e,wi,i),u=()=>a({leafletObject:t.value}),l=()=>s({leafletObject:t.value}),d={...o,setAttribution(E){l(),t.value.options.attribution=E,e.visible&&u()},setName(){l(),e.visible&&u()},setLayerType(){l(),e.visible&&u()},setVisible(E){t.value&&(E?u():l())},bindPopup(E){if(!t.value||!ss(t.value.bindPopup)){console.warn("Attempt to bind popup before bindPopup method available on layer.");return}t.value.bindPopup(E)},bindTooltip(E){if(!t.value||!ss(t.value.bindTooltip)){console.warn("Attempt to bind tooltip before bindTooltip method available on layer.");return}t.value.bindTooltip(E)},unbindTooltip(){t.value&&(ss(t.value.closeTooltip)&&t.value.closeTooltip(),ss(t.value.unbindTooltip)&&t.value.unbindTooltip())},unbindPopup(){t.value&&(ss(t.value.closePopup)&&t.value.closePopup(),ss(t.value.unbindPopup)&&t.value.unbindPopup())},updateVisibleProp(E){n.emit("update:visible",E)}};return Sn(a0t,d.bindPopup),Sn(s0t,d.bindTooltip),Sn(i0t,d.unbindPopup),Sn(o0t,d.unbindTooltip),ct(()=>{d.unbindPopup(),d.unbindTooltip(),l()}),{options:r,methods:d}},aT=(e,t)=>{if(e&&t.default)return bn("div",{style:{display:"none"}},t.default())},r0t={...wi,interactive:{type:Boolean,default:void 0},bubblingMouseEvents:{type:Boolean,default:void 0}},bI={...r0t,stroke:{type:Boolean,default:void 0},color:{type:String},weight:{type:Number},opacity:{type:Number},lineCap:{type:String},lineJoin:{type:String},dashArray:{type:String},dashOffset:{type:String},fill:{type:Boolean,default:void 0},fillColor:{type:String},fillOpacity:{type:Number},fillRule:{type:String},className:{type:String}},u0t={...bI,radius:{type:Number},latLng:{type:[Object,Array],required:!0,custom:!0}};({...u0t});const Mi={...cr,position:{type:String}},CI=(e,t)=>{const{options:n,methods:a}=Fl(e),s=Ia(e,Mi,n),i={...a,setPosition(o){t.value&&t.value.setPosition(o)}};return ct(()=>{t.value&&t.value.remove()}),{options:s,methods:i}},l0t=e=>e.default?bn("div",{ref:"root"},e.default()):null,e0=X({name:"LControl",props:{...Mi,disableClickPropagation:{type:Boolean,custom:!0,default:!0},disableScrollPropagation:{type:Boolean,custom:!0,default:!1}},setup(e,t){const n=Ie(),a=Ie(),s=Ut(Va),i=Yn(II),{options:o,methods:r}=CI(e,n);return mt(async()=>{const{Control:u,DomEvent:l}=s?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(E=>E.d),__vite__mapDeps([0,1])),d=u.extend({onAdd(){return a.value}});n.value=xa(new d(o)),Ga(r,n.value,e),i({leafletObject:n.value}),e.disableClickPropagation&&a.value&&l.disableClickPropagation(a.value),e.disableScrollPropagation&&a.value&&l.disableScrollPropagation(a.value),ln(()=>t.emit("ready",n.value))}),{root:a,leafletObject:n}},render(){return l0t(this.$slots)}});({...Mi});const PI={...Mi,collapsed:{type:Boolean,default:void 0},autoZIndex:{type:Boolean,default:void 0},hideSingleBase:{type:Boolean,default:void 0},sortLayers:{type:Boolean,default:void 0},sortFunction:{type:Function}},c0t=(e,t)=>{const{options:n}=CI(e,t);return{options:Ia(e,PI,n),methods:{addLayer(a){a.layerType==="base"?t.value.addBaseLayer(a.leafletObject,a.name):a.layerType==="overlay"&&t.value.addOverlay(a.leafletObject,a.name)},removeLayer(a){t.value.removeLayer(a.leafletObject)}}}},d0t=X({name:"LControlLayers",props:PI,setup(e,t){const n=Ie(),a=Ut(Va),s=Yn(gI),{options:i,methods:o}=c0t(e,n);return mt(async()=>{const{control:r}=a?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(u=>u.d),__vite__mapDeps([0,1]));n.value=xa(r.layers(void 0,void 0,i)),Ga(o,n.value,e),s({...e,...o,leafletObject:n.value}),ln(()=>t.emit("ready",n.value))}),{leafletObject:n}},render(){return null}});({...Mi});({...Mi});const zl={...wi},DI=(e,t,n)=>{const{options:a,methods:s}=nT(e,t,n),i=Ia(e,zl,a),o={...s,addLayer(r){t.value.addLayer(r.leafletObject)},removeLayer(r){t.value.removeLayer(r.leafletObject)}};return Sn(hs,o.addLayer),Sn(tT,o.removeLayer),{options:i,methods:o}};({...zl});const LI={...zl,geojson:{type:[Object,Array],custom:!0},optionsStyle:{type:Function,custom:!0}},E0t=(e,t,n)=>{const{options:a,methods:s}=DI(e,t,n),i=Ia(e,LI,a);Object.prototype.hasOwnProperty.call(e,"optionsStyle")&&(i.style=e.optionsStyle);const o={...s,setGeojson(r){t.value.clearLayers(),t.value.addData(r)},setOptionsStyle(r){t.value.setStyle(r)},getGeoJSONData(){return t.value.toGeoJSON()},getBounds(){return t.value.getBounds()}};return{options:i,methods:o}},p0t=X({props:LI,setup(e,t){const n=Ie(),a=Ie(!1),s=Ut(Va),i=Yn(hs),{methods:o,options:r}=E0t(e,n,t);return mt(async()=>{const{geoJSON:u}=s?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(d=>d.d),__vite__mapDeps([0,1]));n.value=xa(u(e.geojson,r));const{listeners:l}=js(t.attrs);n.value.on(l),Ga(o,n.value,e),i({...e,...o,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),{ready:a,leafletObject:n}},render(){return aT(this.ready,this.$slots)}}),sT={...wi,opacity:{type:Number},zIndex:{type:Number},tileSize:{type:[Number,Array,Object]},noWrap:{type:Boolean,default:void 0},minZoom:{type:Number},maxZoom:{type:Number},className:{type:String}},yI=(e,t,n)=>{const{options:a,methods:s}=nT(e,t,n),i=Ia(e,sT,a),o={...s,setTileComponent(){var r;(r=t.value)==null||r.redraw()}};return ct(()=>{t.value.off()}),{options:i,methods:o}},T0t=(e,t,n,a)=>e.extend({initialize(s){this.tileComponents={},this.on("tileunload",this._unloadTile),n.setOptions(this,s)},createTile(s){const i=this._tileCoordsToKey(s);this.tileComponents[i]=t.create("div");const o=bn({setup:a,props:["coords"]},{coords:s});return ON(o,this.tileComponents[i]),this.tileComponents[i]},_unloadTile(s){const i=this._tileCoordsToKey(s.coords);this.tileComponents[i]&&(this.tileComponents[i].innerHTML="",this.tileComponents[i]=void 0)}});({...sT});const t0={iconUrl:{type:String},iconRetinaUrl:{type:String},iconSize:{type:[Object,Array]},iconAnchor:{type:[Object,Array]},popupAnchor:{type:[Object,Array]},tooltipAnchor:{type:[Object,Array]},shadowUrl:{type:String},shadowRetinaUrl:{type:String},shadowSize:{type:[Object,Array]},shadowAnchor:{type:[Object,Array]},bgPos:{type:[Object,Array]},className:{type:String}},m0t=X({name:"LIcon",props:{...t0,...cr},setup(e,t){const n=Ie(),a=Ut(Va),s=Yn(RI),i=Yn(NI),o=Yn(vI);let r,u,l,d,E;const c=(O,A,R)=>{const g=O&&O.innerHTML;if(!A){R&&E&&s()&&i(g);return}const{listeners:I}=js(t.attrs);E&&u(E,I);const{options:N}=Fl(e),b=Ia(e,t0,N);g&&(b.html=g),E=b.html?l(b):d(b),r(E,I),o(E)},T=()=>{ln(()=>c(n.value,!0,!1))},_=()=>{ln(()=>c(n.value,!1,!0))},f={setIconUrl:T,setIconRetinaUrl:T,setIconSize:T,setIconAnchor:T,setPopupAnchor:T,setTooltipAnchor:T,setShadowUrl:T,setShadowRetinaUrl:T,setShadowAnchor:T,setBgPos:T,setClassName:T,setHtml:T};return mt(async()=>{const{DomEvent:O,divIcon:A,icon:R}=a?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(g=>g.d),__vite__mapDeps([0,1]));r=O.on,u=O.off,l=A,d=R,Ga(f,{},e),new MutationObserver(_).observe(n.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),T()}),{root:n}},render(){const e=this.$slots.default?this.$slots.default():void 0;return bn("div",{ref:"root"},e)}});({...wi});const _0t=X({props:zl,setup(e,t){const n=Ie(),a=Ie(!1),s=Ut(Va),i=Yn(hs),{methods:o}=DI(e,n,t);return mt(async()=>{const{layerGroup:r}=s?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(l=>l.d),__vite__mapDeps([0,1]));n.value=xa(r(void 0,e.options));const{listeners:u}=js(t.attrs);n.value.on(u),Ga(o,n.value,e),i({...e,...o,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),{ready:a,leafletObject:n}},render(){return aT(this.ready,this.$slots)}});function $I(e,t,n){var a,s,i;t===void 0&&(t=50),n===void 0&&(n={});var o=(a=n.isImmediate)!=null&&a,r=(s=n.callback)!=null&&s,u=n.maxWait,l=Date.now(),d=[];function E(){if(u!==void 0){var T=Date.now()-l;if(T+t>=u)return u-T}return t}var c=function(){var T=[].slice.call(arguments),_=this;return new Promise(function(f,O){var A=o&&i===void 0;if(i!==void 0&&clearTimeout(i),i=setTimeout(function(){if(i=void 0,l=Date.now(),!o){var g=e.apply(_,T);r&&r(g),d.forEach(function(I){return(0,I.resolve)(g)}),d=[]}},E()),A){var R=e.apply(_,T);return r&&r(R),f(R)}d.push({resolve:f,reject:O})})};return c.cancel=function(T){i!==void 0&&clearTimeout(i),d.forEach(function(_){return(0,_.reject)(T)}),d=[]},c}const n0={...cr,center:{type:[Object,Array]},bounds:{type:[Array,Object]},maxBounds:{type:[Array,Object]},zoom:{type:Number},minZoom:{type:Number},maxZoom:{type:Number},paddingBottomRight:{type:[Object,Array]},paddingTopLeft:{type:Object},padding:{type:Object},worldCopyJump:{type:Boolean,default:void 0},crs:{type:[String,Object]},maxBoundsViscosity:{type:Number},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number},inertiaMaxSpeed:{type:Number},easeLinearity:{type:Number},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:void 0},useGlobalLeaflet:{type:Boolean,default:!0,custom:!0}},f0t=X({inheritAttrs:!1,emits:["ready","update:zoom","update:center","update:bounds"],props:n0,setup(e,t){const n=Ie(),a=kt({ready:!1,layersToAdd:[],layersInControl:[]}),{options:s}=Fl(e),i=Ia(e,n0,s),{listeners:o,attrs:r}=js(t.attrs),u=Wr(hs),l=Wr(tT),d=Wr(II),E=Wr(gI);Sn(Va,e.useGlobalLeaflet);const c=z(()=>{const A={};return e.noBlockingAnimations&&(A.animate=!1),A}),T=z(()=>{const A=c.value;return e.padding&&(A.padding=e.padding),e.paddingTopLeft&&(A.paddingTopLeft=e.paddingTopLeft),e.paddingBottomRight&&(A.paddingBottomRight=e.paddingBottomRight),A}),_={moveend:$I(A=>{a.leafletRef&&(t.emit("update:zoom",a.leafletRef.getZoom()),t.emit("update:center",a.leafletRef.getCenter()),t.emit("update:bounds",a.leafletRef.getBounds()))}),overlayadd(A){const R=a.layersInControl.find(g=>g.name===A.name);R&&R.updateVisibleProp(!0)},overlayremove(A){const R=a.layersInControl.find(g=>g.name===A.name);R&&R.updateVisibleProp(!1)}};mt(async()=>{e.useGlobalLeaflet&&(ta.L=ta.L||await xt(()=>import("./maps-DkiRMund.js").then(D=>D.l),__vite__mapDeps([0,1])));const{map:A,CRS:R,Icon:g,latLngBounds:I,latLng:N,stamp:b}=e.useGlobalLeaflet?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(D=>D.d),__vite__mapDeps([0,1]));try{i.beforeMapMount&&await i.beforeMapMount()}catch(D){console.error(`The following error occurred running the provided beforeMapMount hook ${D.message}`)}await n0t(g);const C=typeof i.crs=="string"?R[i.crs]:i.crs;i.crs=C||R.EPSG3857;const y={addLayer(D){D.layerType!==void 0&&(a.layerControl===void 0?a.layersToAdd.push(D):a.layersInControl.find(U=>b(U.leafletObject)===b(D.leafletObject))||(a.layerControl.addLayer(D),a.layersInControl.push(D))),D.visible!==!1&&a.leafletRef.addLayer(D.leafletObject)},removeLayer(D){D.layerType!==void 0&&(a.layerControl===void 0?a.layersToAdd=a.layersToAdd.filter(U=>U.name!==D.name):(a.layerControl.removeLayer(D.leafletObject),a.layersInControl=a.layersInControl.filter(U=>b(U.leafletObject)!==b(D.leafletObject)))),a.leafletRef.removeLayer(D.leafletObject)},registerLayerControl(D){a.layerControl=D,a.layersToAdd.forEach(U=>{a.layerControl.addLayer(U)}),a.layersToAdd=[],d(D)},registerControl(D){a.leafletRef.addControl(D.leafletObject)},setZoom(D){const U=a.leafletRef.getZoom();D!==U&&a.leafletRef.setZoom(D,c.value)},setCrs(D){const U=a.leafletRef.getBounds();a.leafletRef.options.crs=D,a.leafletRef.fitBounds(U,{animate:!1,padding:[0,0]})},fitBounds(D){a.leafletRef.fitBounds(D,T.value)},setBounds(D){if(!D)return;const U=I(D);U.isValid()&&!(a.lastSetBounds||a.leafletRef.getBounds()).equals(U,0)&&(a.lastSetBounds=U,a.leafletRef.fitBounds(U))},setCenter(D){if(D==null)return;const U=N(D),P=a.lastSetCenter||a.leafletRef.getCenter();(P.lat!==U.lat||P.lng!==U.lng)&&(a.lastSetCenter=U,a.leafletRef.panTo(U,c.value))}};Fr(u,y.addLayer),Fr(l,y.removeLayer),Fr(d,y.registerControl),Fr(E,y.registerLayerControl),a.leafletRef=xa(A(n.value,i)),Ga(y,a.leafletRef,e),Jh(a.leafletRef,_),Jh(a.leafletRef,o),a.ready=!0,ln(()=>t.emit("ready",a.leafletRef))}),Qo(()=>{OI(_),a.leafletRef&&(a.leafletRef.off(),a.leafletRef.remove())});const f=z(()=>a.leafletRef),O=z(()=>a.ready);return{root:n,ready:O,leafletObject:f,attrs:r}},render({attrs:e}){return e.style||(e.style={}),e.style.width||(e.style.width="100%"),e.style.height||(e.style.height="100%"),bn("div",{...e,ref:"root"},this.ready&&this.$slots.default?this.$slots.default():{})}}),h0t=["Symbol(Comment)","Symbol(Text)"],S0t=["LTooltip","LPopup"],UI={...wi,draggable:{type:Boolean,default:void 0},icon:{type:[Object]},zIndexOffset:{type:Number},latLng:{type:[Object,Array],custom:!0,required:!0}},A0t=(e,t,n)=>{const{options:a,methods:s}=nT(e,t,n),i=Ia(e,UI,a),o={...s,setDraggable(r){t.value.dragging&&(r?t.value.dragging.enable():t.value.dragging.disable())},latLngSync(r){n.emit("update:latLng",r.latlng),n.emit("update:lat-lng",r.latlng)},setLatLng(r){if(r!=null&&t.value){const u=t.value.getLatLng();(!u||!u.equals(r))&&t.value.setLatLng(r)}}};return{options:i,methods:o}},O0t=(e,t)=>{const n=t.slots.default&&t.slots.default();return n&&n.length&&n.some(I0t)};function I0t(e){return!(h0t.includes(e.type.toString())||S0t.includes(e.type.name))}const kI=X({name:"LMarker",props:UI,setup(e,t){const n=Ie(),a=Ie(!1),s=Ut(Va),i=Yn(hs);Sn(RI,()=>{var l;return!!((l=n.value)!=null&&l.getElement())}),Sn(NI,l=>{var d,E;const c=ss((d=n.value)==null?void 0:d.getElement)&&((E=n.value)==null?void 0:E.getElement());c&&(c.innerHTML=l)}),Sn(vI,l=>{var d;return((d=n.value)==null?void 0:d.setIcon)&&n.value.setIcon(l)});const{options:o,methods:r}=A0t(e,n,t),u={moveHandler:$I(r.latLngSync)};return mt(async()=>{const{marker:l,divIcon:d}=s?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(c=>c.d),__vite__mapDeps([0,1]));O0t(o,t)&&(o.icon=d({className:""})),n.value=xa(l(e.latLng,o));const{listeners:E}=js(t.attrs);n.value.on(E),n.value.on("move",u.moveHandler),Ga(r,n.value,e),i({...e,...r,leafletObject:n.value}),a.value=!0,ln(()=>t.emit("ready",n.value))}),Qo(()=>OI(u)),{ready:a,leafletObject:n}},render(){return aT(this.ready,this.$slots)}}),g0t={...bI,smoothFactor:{type:Number},noClip:{type:Boolean,default:void 0},latLngs:{type:Array,required:!0,custom:!0}},a0={...g0t},wI={...cr,content:{type:String,default:null}};({...wI});({...a0,latLngs:{...a0.latLngs}});const iT={...sT,tms:{type:Boolean,default:void 0},subdomains:{type:[String,Array],validator:e=>typeof e=="string"?!0:Array.isArray(e)?e.every(t=>typeof t=="string"):!1},detectRetina:{type:Boolean,default:void 0},url:{type:String,required:!0,custom:!0}},R0t=(e,t,n)=>{const{options:a,methods:s}=yI(e,t,n),i=Ia(e,iT,a),o={...s};return{options:i,methods:o}},N0t=X({props:iT,setup(e,t){const n=Ie(),a=Ut(Va),s=Yn(hs),{options:i,methods:o}=R0t(e,n,t);return mt(async()=>{const{tileLayer:r}=a?ta.L:await xt(()=>import("./maps-DkiRMund.js").then(l=>l.d),__vite__mapDeps([0,1]));n.value=xa(r(e.url,i));const{listeners:u}=js(t.attrs);n.value.on(u),Ga(o,n.value,e),s({...e,...o,leafletObject:n.value}),ln(()=>t.emit("ready",n.value))}),{leafletObject:n}},render(){return null}});({...wI});({...iT});const s0=X({__name:"CustomMarker",props:{markerCoordinates:{},isStart:{type:Boolean}},setup(e){const t=e,{isStart:n,markerCoordinates:a}=fe(t);return(s,i)=>m(a).latitude?(h(),B(m(kI),{key:0,"lat-lng":[m(a).latitude,m(a).longitude]},{default:Y(()=>[M(m(m0t),{"icon-url":`/img/workouts/${m(n)?"start":"finish"}.svg`,iconSize:[15,15]},null,8,["icon-url"])]),_:1},8,["lat-lng"])):L("",!0)}}),v0t={id:"workout-map"},b0t={key:0,class:"leaflet-container"},C0t={key:1},P0t={key:1,class:"no-map"},D0t=X({__name:"index",props:{workoutData:{},markerCoordinates:{default:()=>({})}},setup(e){const t=e,{workoutData:n,markerCoordinates:a}=fe(t),{appConfig:s}=qe(),i=Ie(!1),o=Ie(null),r=z(()=>O()),u=z(()=>_(r)),l=z(()=>n.value&&n.value.gpx?c(n.value.gpx):{}),d=z(()=>T("first")),E=z(()=>T("last"));function c(g){if(!g||g!=="")try{return{jsonData:e0t(new DOMParser().parseFromString(g,"text/xml"))}}catch{return console.error("Invalid gpx content"),{}}return{}}function T(g){const I=g==="first"?0:n.value.chartData.length-1;return n.value&&n.value.chartData.length>0?{latitude:n.value.chartData[I].latitude,longitude:n.value.chartData[I].longitude}:{latitude:null,longitude:null}}function _(g){return[(g.value[0][0]+g.value[1][0])/2,(g.value[0][1]+g.value[1][1])/2]}function f(g){var I,N;(I=o.value)!=null&&I.leafletObject&&((N=o.value)==null||N.leafletObject.fitBounds(g))}function O(){return n.value?[[n.value.workout.bounds[0],n.value.workout.bounds[1]],[n.value.workout.bounds[2],n.value.workout.bounds[3]]]:[]}function A(){var g;(g=o.value)==null||g.leafletObject.fitBounds(O())}function R(){i.value=!i.value,i.value||setTimeout(()=>{A()},100)}return(g,I)=>{const N=j("VFullscreen");return h(),v("div",v0t,[m(n).loading?(h(),v("div",b0t)):(h(),v("div",C0t,[m(n).workout.with_gpx?(h(),B(N,{key:0,modelValue:i.value,"onUpdate:modelValue":I[1]||(I[1]=b=>i.value=b)},{default:Y(()=>[p("div",{class:Ae(["leaflet-container",{"fullscreen-map":i.value}])},[l.value.jsonData&&u.value&&r.value.length===2?(h(),B(m(f0t),{key:0,zoom:13,maxZoom:19,center:u.value,bounds:r.value,zoomAnimation:!1,ref_key:"workoutMap",ref:o,onReady:I[0]||(I[0]=b=>f(r.value)),"use-global-leaflet":!1,class:"map","aria-label":g.$t("workouts.WORKOUT_MAP")},{default:Y(()=>[M(m(d0t)),M(m(e0),{position:"topleft",class:"map-control",tabindex:"0",role:"button","aria-label":g.$t("workouts.RESET_ZOOM"),onClick:A},{default:Y(()=>I[2]||(I[2]=[p("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1)])),_:1},8,["aria-label"]),M(m(e0),{position:"topleft",class:"map-control",tabindex:"0",role:"button","aria-label":g.$t(`workouts.${i.value?"EXIT":"VIEW"}_FULLSCREEN`),onClick:R},{default:Y(()=>[p("i",{class:Ae(`fa fa-${i.value?"compress":"arrows-alt"}`),"aria-hidden":"true"},null,2)]),_:1},8,["aria-label"]),M(m(N0t),{url:`${m(nr)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,attribution:m(s).map_attribution,bounds:r.value},null,8,["url","attribution","bounds"]),M(m(p0t),{geojson:l.value.jsonData},null,8,["geojson"]),m(a).latitude?(h(),B(m(kI),{key:0,"lat-lng":[m(a).latitude,m(a).longitude]},null,8,["lat-lng"])):L("",!0),M(m(_0t),{name:g.$t("workouts.START_AND_FINISH"),"layer-type":"overlay"},{default:Y(()=>[d.value.latitude?(h(),B(s0,{key:0,markerCoordinates:d.value,isStart:!0},null,8,["markerCoordinates"])):L("",!0),E.value.latitude?(h(),B(s0,{key:1,markerCoordinates:E.value,isStart:!1},null,8,["markerCoordinates"])):L("",!0)]),_:1},8,["name"])]),_:1},8,["center","bounds","aria-label"])):L("",!0)],2)]),_:1},8,["modelValue"])):(h(),v("div",P0t,S(g.$t("workouts.NO_MAP")),1))]))])}}}),L0t=se(D0t,[["__scopeId","data-v-6abbf12a"]]),y0t={key:0,class:"workout-visibility-levels"},$0t={class:"visibility"},U0t={key:0,class:"workout-visibility"},k0t=["title"],w0t={class:"visibility-label"},M0t={key:0,class:"visibility"},W0t={key:0,class:"workout-visibility"},F0t=["title"],z0t={class:"visibility-label"},x0t={key:1,class:"visibility"},B0t=["title"],G0t={class:"visibility-label"},V0t=X({__name:"WorkoutVisibility",props:{workoutObject:{}},setup(e){const t=e,{workoutObject:n}=fe(t);function a(s){switch(s){case"public":return"globe";case"followers_only":return"users";default:case"private":return"lock"}}return(s,i)=>m(n).workoutVisibility?(h(),v("div",y0t,[x(S(s.$t("visibility_levels.VISIBILITY"))+": ",1),p("div",$0t,[m(n).with_analysis?(h(),v("span",U0t,S(s.$t("workouts.WORKOUT")),1)):L("",!0),p("i",{class:Ae(`fa fa-${a(m(n).workoutVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${m(n).workoutVisibility}`)},null,10,k0t),p("span",w0t," ("+S(s.$t(`visibility_levels.LEVELS.${m(n).workoutVisibility}`))+") ",1)]),m(n).with_analysis?(h(),v("div",M0t,[m(n).with_analysis?(h(),v("span",W0t,S(s.$t("workouts.ANALYSIS")),1)):L("",!0),p("i",{class:Ae(`fa fa-${a(m(n).analysisVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${m(n).analysisVisibility}`)},null,10,F0t),p("span",z0t," ("+S(s.$t(`visibility_levels.LEVELS.${m(n).analysisVisibility}`))+") ",1)])):L("",!0),m(n).with_gpx?(h(),v("div",x0t,[x(S(s.$t("workouts.MAP"))+" ",1),p("i",{class:Ae(`fa fa-${a(m(n).mapVisibility)}`),"aria-hidden":"true",title:s.$t(`visibility_levels.LEVELS.${m(n).mapVisibility}`)},null,10,B0t),p("span",G0t," ("+S(s.$t(`visibility_levels.LEVELS.${m(n).mapVisibility}`))+") ",1)])):L("",!0)])):L("",!0)}}),H0t=se(V0t,[["__scopeId","data-v-a634386f"]]),K0t={class:"workout-detail"},q0t={key:2,class:"report-submitted"},j0t={class:"info-box"},Y0t={key:1,class:"workout-map-data"},X0t={key:3,class:"workout-equipments"},Q0t=X({__name:"index",props:{authUser:{},displaySegment:{type:Boolean},sports:{},workoutData:{},markerCoordinates:{default:()=>({})},isWorkoutOwner:{type:Boolean}},setup(e){const t=e,n=ut(),a=Le(),{getWorkoutSport:s}=nn(),{isWorkoutOwner:i,markerCoordinates:o,workoutData:r}=fe(t),u=z(()=>t.workoutData.workout),l=Ie(n.params.workoutId?+n.params.segmentId:null),d=z(()=>u.value.segments.length>0&&l.value?u.value.segments[+l.value-1]:null),E=Ie(!1),c=z(()=>s(u.value)),T=z(()=>a.getters[te.GETTERS.DISPLAY_OPTIONS]),_=z(()=>a.getters[De.GETTERS.REPORT_STATUS]),f=z(()=>g(u.value,d.value)),O=z(()=>u.value.suspended_at!==null&&i.value),A=z(()=>a.getters[J.GETTERS.SUCCESS]);function R(D,U,P){const F=U&&P&&P!==1?`/workouts/${D.id}/segment/${P-1}`:!U&&D.previous_workout?`/workouts/${D.previous_workout}`:null,Z=U&&P&&Py()),Ce(()=>n.params.segmentId,async D=>{l.value=D?+D:null,C()}),Ce(()=>n.params.workoutId,async D=>{D&&(E.value=!1,C()),y()}),(D,U)=>{const P=j("Modal"),F=j("Card");return h(),v("div",K0t,[E.value?(h(),B(P,{key:0,title:D.$t("common.CONFIRMATION"),message:D.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:U[0]||(U[0]=Z=>b(f.value.workoutId)),onCancelAction:N,onKeydown:Ye(N,["esc"])},null,8,["title","message"])):L("",!0),M(F,null,{title:Y(()=>[c.value?(h(),B(tht,{key:0,authUser:D.authUser,sport:c.value,workoutObject:f.value,isWorkoutOwner:m(i),onDisplayModal:U[1]||(U[1]=Z=>I(!0))},null,8,["authUser","sport","workoutObject","isWorkoutOwner"])):L("",!0),m(r).currentReporting?(h(),B(Wp,{key:1,"object-id":f.value.workoutId,"object-type":"workout"},null,8,["object-id"])):L("",!0),_.value===`workout-${f.value.workoutId}-created`?(h(),v("div",q0t,[p("div",j0t,[p("span",null,[U[2]||(U[2]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(D.$t("common.REPORT_SUBMITTED")),1)])])])):L("",!0)]),content:Y(()=>[O.value&&f.value.suspended&&u.value.suspension?(h(),B(eI,{key:0,"display-suspension-message":"",action:u.value.suspension,workout:u.value},null,8,["action","workout"])):L("",!0),m(i)||!f.value.suspended?(h(),v("div",Y0t,[M(L0t,{workoutData:m(r),markerCoordinates:m(o)},null,8,["workoutData","markerCoordinates"]),M(Vht,{workoutObject:f.value,useImperialUnits:T.value.useImperialUnits,displayHARecord:T.value.displayAscent},null,8,["workoutObject","useImperialUnits","displayHARecord"])])):L("",!0),f.value.workoutVisibility?(h(),B(H0t,{key:2,workoutObject:f.value,useImperialUnits:T.value.useImperialUnits,displayHARecord:T.value.displayAscent},null,8,["workoutObject","useImperialUnits","displayHARecord"])):L("",!0),f.value.equipments?(h(),v("div",X0t,[(h(!0),v(ue,null,be(f.value.equipments,Z=>(h(),B(tI,{equipment:Z,"workout-id":f.value.workoutId,key:Z.label},null,8,["equipment","workout-id"]))),128))])):L("",!0)]),_:1})])}}}),Z0t=se(Q0t,[["__scopeId","data-v-58f8e3a3"]]),J0t=e=>{const t=document.getElementById(e);if(t){let n=t.querySelector("ul");return n||(n=document.createElement("ul"),t.appendChild(n)),n}throw new Error("No legend container")},eSt={id:"htmlLegend",afterUpdate(e,t,n){var i,o,r,u,l,d;const a=J0t(n.containerID);for(;a.firstChild;)a.firstChild.remove();((r=(o=(i=e.options.plugins)==null?void 0:i.legend)==null?void 0:o.labels)!=null&&r.generateLabels?(d=(l=(u=e.options.plugins)==null?void 0:u.legend)==null?void 0:l.labels)==null?void 0:d.generateLabels(e):[]).forEach(E=>{var A,R,g;if(!((g=(R=(A=e.config.options)==null?void 0:A.scales)==null?void 0:R.yElevation)!=null&&g.display)&&E.datasetIndex===1)return;const c=document.createElement("li");c.onclick=I=>{I.preventDefault(),E.datasetIndex!==void 0&&(e.setDatasetVisibility(E.datasetIndex,!e.isDatasetVisible(E.datasetIndex)),e.update())};const T=document.createElement("input");T&&(T.type="checkbox",T.id=E.text,T.checked=!E.hidden);const _=document.createElement("label");_.htmlFor=T.id;const f=document.createTextNode(E.text);_.appendChild(f);const O=document.createElement("span");O&&(O.style.background=String(E.fillStyle),O.style.borderColor=String(E.strokeStyle)),_.appendChild(O),c.appendChild(T),c.appendChild(_),a.appendChild(c)})}},tSt={id:"workout-chart"},nSt={class:"chart-radio"},aSt=["checked"],sSt=["checked"],iSt={class:"line-chart"},oSt={class:"chart-info"},rSt={class:"no-data-cleaning"},uSt={key:0,class:"elevation-start"},lSt=["checked"],cSt=X({__name:"index",props:{authUser:{},workoutData:{}},emits:["getCoordinates"],setup(e,{emit:t}){const n=e,{authUser:a,workoutData:s}=fe(n),i=t,{t:o}=yt(),{darkTheme:r}=qe(),u=Ie(!0),l=[eSt],d=y("km"),E=y("m"),c=z(()=>a.value.start_elevation_at_zero),T=z(()=>_.value&&_.value.datasets.elevation.data.length>0),_=z(()=>hct(s.value.chartData,o,a.value.imperial_units,r.value)),f=z(()=>({labels:u.value?_.value.distance_labels:_.value.duration_labels,datasets:JSON.parse(JSON.stringify([_.value.datasets.speed,_.value.datasets.elevation]))})),O=z(()=>_.value.coordinates),A=z(()=>({color:r.value?os.darkMode.line:os.ligthMode.line})),R=z(()=>({color:r.value?os.darkMode.text:os.ligthMode.text})),g=z(()=>({responsive:!0,maintainAspectRatio:!1,animation:!1,layout:{padding:{top:22}},scales:{x:{grid:{drawOnChartArea:!1,...A.value},border:{...A.value},ticks:{count:10,callback:function(D){return u.value?Number(D).toFixed(2):N(D)},...R.value},type:"linear",bounds:"data",title:{display:!0,text:u.value?o("workouts.DISTANCE")+` (${d})`:o("workouts.DURATION"),...R.value}},ySpeed:{grid:{drawOnChartArea:!1,...A.value},border:{...A.value},position:"left",title:{display:!0,text:o("workouts.SPEED")+` (${d}/h)`,...R.value},ticks:{...R.value}},yElevation:{beginAtZero:c.value,display:T.value,grid:{drawOnChartArea:!1,...A.value},border:{...A.value},position:"right",title:{display:!0,text:o("workouts.ELEVATION")+` (${E})`,...R.value},ticks:{...R.value}}},elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(D){const U=` ${D.dataset.label}: ${D.formattedValue}`;return D.dataset.yAxisID==="yElevation"?U+` ${E}`:U+` ${d}/h`},title:function(D){return D.length>0&&b(O.value[D[0].dataIndex]),D.length===0?"":u.value?`${o("workouts.DISTANCE")}: ${D[0].label} ${d}`:`${o("workouts.DURATION")}: ${N(D[0].label.replace(",",""))}`}}},legend:{display:!1},htmlLegend:{containerID:"chart-legend",displayElevation:T.value}}}));function I(){u.value=!u.value}function N(D){return new Date(+D*1e3).toISOString().substr(11,8)}function b(D){i("getCoordinates",D)}function C(){b({latitude:null,longitude:null})}function y(D){return n.authUser.imperial_units?vn[D].defaultTarget:D}return(D,U)=>{const P=j("Card");return h(),v("div",tSt,[M(P,null,{title:Y(()=>[x(S(D.$t("workouts.ANALYSIS")),1)]),content:Y(()=>[p("div",nSt,[p("label",null,[p("input",{type:"radio",name:"distance",checked:u.value,onClick:I},null,8,aSt),x(" "+S(D.$t("workouts.DISTANCE")),1)]),p("label",null,[p("input",{type:"radio",name:"duration",checked:!u.value,onClick:I},null,8,sSt),x(" "+S(D.$t("workouts.DURATION")),1)])]),U[1]||(U[1]=p("div",{id:"chart-legend"},null,-1)),p("div",iSt,[M(m(pdt),{data:f.value,options:g.value,plugins:l,onMouseleave:C,"aria-label":D.$t("workouts.WORKOUT_CHART")},null,8,["data","options","aria-label"])]),p("div",oSt,[p("div",rSt,S(D.$t("workouts.NO_DATA_CLEANING")),1),T.value?(h(),v("div",uSt,[p("label",null,[p("input",{type:"checkbox",checked:c.value,onClick:U[0]||(U[0]=F=>c.value=!c.value)},null,8,lSt),x(" "+S(D.$t("workouts.START_ELEVATION_AT_ZERO")),1)])])):L("",!0)])]),_:1})])}}}),dSt=se(cSt,[["__scopeId","data-v-a8515886"]]),ESt={id:"workout-content"},pSt=["aria-label"],TSt={key:0,class:"fa fa-edit","aria-hidden":"true"},mSt=["for"],_St={class:"markdown-hints info-box"},fSt={class:"form-buttons"},hSt=["disabled"],SSt={key:0,class:"edition-loading"},ASt=["innerHTML"],Td=1e3,OSt=X({__name:"WorkoutContent",props:{content:{default:()=>""},contentType:{},workoutId:{},allowEdition:{type:Boolean,default:!0}},setup(e){const t=e,n=Le(),{content:a,contentType:s,workoutId:i}=fe(t),o=z(()=>a.value!==null&&a.value.length>Td),r=z(()=>n.getters[J.GETTERS.WORKOUT_CONTENT_EDITION]),u=z(()=>r.value.loading&&r.value.contentType===s.value),l=Ie(!1),d=z(()=>l.value?a.value:_(a.value)),E=Ie(!1),c=Ie(""),T=z(()=>r.value.contentType===s.value?n.getters[te.GETTERS.ERROR_MESSAGES]:null);function _(g){return g===null||g.length<=Td?g:g.slice(0,Td-10)+"…"}function f(){n.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),E.value=!0,c.value=a.value?a.value:""}function O(g){c.value=g.value}function A(){E.value=!1,c.value=a.value?a.value:""}function R(){n.dispatch(J.ACTIONS.EDIT_WORKOUT_CONTENT,{workoutId:i.value,content:c.value,contentType:s.value})}return Ce(()=>u.value,g=>{g||(E.value=!1)}),(g,I)=>{const N=j("CustomTextArea"),b=j("ErrorMessage"),C=j("Card");return h(),v("div",ESt,[M(C,null,{title:Y(()=>[x(S(Fe(g.$t(`workouts.${m(s)==="NOTES"?"PRIVATE_NOTES":m(s)}`)))+" ",1),g.allowEdition?(h(),v("button",{key:0,class:"transparent icon-button","aria-label":g.$t("buttons.EDIT"),onClick:f},[E.value?L("",!0):(h(),v("i",TSt))],8,pSt)):L("",!0)]),content:Y(()=>[E.value?(h(),v("form",{key:0,onSubmit:ve(R,["prevent"])},[p("label",{for:m(s).toLowerCase(),class:"visually-hidden"},S(g.$t(`workouts.${m(s)}`)),9,mSt),M(N,{name:m(s).toLowerCase(),input:m(a),disabled:u.value,charLimit:m(s)==="NOTES"?500:1e4,rows:m(s)==="NOTES"?2:5,onUpdateValue:O},null,8,["name","input","disabled","charLimit","rows"]),p("div",_St,[I[1]||(I[1]=p("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),x(" "+S(g.$t("workouts.MARKDOWN_SYNTAX")),1)]),p("div",fSt,[p("button",{class:"confirm",type:"submit",disabled:u.value},S(g.$t("buttons.SUBMIT")),9,hSt),p("button",{class:"cancel",onClick:ve(A,["prevent"])},S(g.$t("buttons.CANCEL")),1),u.value?(h(),v("div",SSt,I[2]||(I[2]=[p("div",null,[p("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"})],-1)]))):L("",!0)])],32)):(h(),v(ue,{key:1},[p("span",{class:Ae(["workout-content",{notes:m(s)==="NOTES"||!m(a)}]),innerHTML:d.value&&d.value!==""?m(IO)(d.value):g.$t(`common.NO_${m(s)}`)},null,10,ASt),o.value?(h(),v("button",{key:0,class:"read-more transparent",onClick:I[0]||(I[0]=y=>l.value=!l.value)},[p("i",{class:Ae(`fa fa-caret-${l.value?"up":"down"}`),"aria-hidden":"true"},null,2),x(" "+S(g.$t(`buttons.${l.value?"HIDE":"READ_MORE"}`)),1)])):L("",!0)],64)),T.value?(h(),B(b,{key:2,message:T.value},null,8,["message"])):L("",!0)]),_:1})])}}}),i0=se(OSt,[["__scopeId","data-v-d2967c38"]]),ISt={id:"workout-segments"},gSt=X({__name:"WorkoutSegments",props:{segments:{},useImperialUnits:{type:Boolean}},setup(e){const t=e,{segments:n,useImperialUnits:a}=fe(t);return(s,i)=>{const o=j("router-link"),r=j("Distance"),u=j("Card");return h(),v("div",ISt,[M(u,null,{title:Y(()=>[x(S(s.$t("workouts.SEGMENT",2)),1)]),content:Y(()=>[p("ul",null,[(h(!0),v(ue,null,be(m(n),(l,d)=>(h(),v("li",{key:l.segment_id},[M(o,{to:{name:"WorkoutSegment",params:{workoutId:l.workout_id,segmentId:d+1}}},{default:Y(()=>[x(S(s.$t("workouts.SEGMENT",1))+" "+S(d+1),1)]),_:2},1032,["to"]),x(" ("+S(s.$t("workouts.DISTANCE"))+": ",1),M(r,{distance:l.distance,unitFrom:"km",useImperialUnits:m(a)},null,8,["distance","useImperialUnits"]),x(", "+S(s.$t("workouts.DURATION"))+": "+S(l.duration)+") ",1)]))),128))])]),_:1})])}}}),RSt=se(gSt,[["__scopeId","data-v-eaec7ac1"]]),NSt={class:"box workout-user"},vSt={class:"user-img-name"},bSt=X({__name:"WorkoutUser",props:{user:{}},setup(e){const t=e,{user:n}=fe(t);return(a,s)=>{const i=j("router-link");return h(),v("div",NSt,[p("div",vSt,[M(Qt,{user:m(n)},null,8,["user"]),M(i,{class:"user-name",to:`/users/${m(n).username}?from=users`},{default:Y(()=>[x(S(m(n).username),1)]),_:1},8,["to"])]),M(Vp,{user:m(n)},null,8,["user"])])}}}),CSt=se(bSt,[["__scopeId","data-v-942d8f8a"]]),PSt={id:"workout",class:"view"},DSt={class:"container"},LSt={key:0,class:"workout-container"},ySt={key:0},$St={key:0,class:"box suspended"},USt={key:1},kSt=X({__name:"Workout",props:{displaySegment:{type:Boolean}},setup(e){const t=e,{displaySegment:n}=fe(t),a=ut(),s=Le(),{authUser:i}=Ke(),{sports:o}=nn(),r=Ie({latitude:null,longitude:null}),u=z(()=>s.getters[J.GETTERS.WORKOUT_DATA]),l=z(()=>i.value.username===u.value.workout.user.username);function d(E){r.value={latitude:E.latitude,longitude:E.longitude}}return Ce(()=>a.params.workoutId,async E=>{E&&s.dispatch(J.ACTIONS.GET_WORKOUT_DATA,{workoutId:E})}),Ce(()=>a.params.segmentId,async E=>{if(a.params.workoutId){const c={workoutId:a.params.workoutId};E&&(c.segmentId=E),s.dispatch(J.ACTIONS.GET_WORKOUT_DATA,c)}}),et(()=>{const E={workoutId:a.params.workoutId};t.displaySegment&&(E.segmentId=a.params.segmentId),s.dispatch(J.ACTIONS.GET_WORKOUT_DATA,E),o.value.length===0&&s.dispatch(Ht.ACTIONS.GET_SPORTS)}),ct(()=>{s.commit(J.MUTATIONS.EMPTY_WORKOUT)}),(E,c)=>(h(),v("div",PSt,[p("div",DSt,[m(o).length>0?(h(),v("div",LSt,[u.value.workout.id?(h(),v("div",ySt,[M(CSt,{user:u.value.workout.user},null,8,["user"]),u.value.workout.suspended&&!l.value?(h(),v("div",$St,S(E.$t("workouts.SUSPENDED_BY_ADMIN")),1)):(h(),B(Z0t,{key:1,workoutData:u.value,sports:m(o),authUser:m(i),markerCoordinates:r.value,displaySegment:m(n),isWorkoutOwner:l.value},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment","isWorkoutOwner"])),u.value.workout.with_analysis&&u.value.chartData.length>0?(h(),B(dSt,{key:2,workoutData:u.value,authUser:m(i),displaySegment:m(n),onGetCoordinates:d},null,8,["workoutData","authUser","displaySegment"])):L("",!0),m(n)?L("",!0):(h(),B(i0,{key:3,"workout-id":u.value.workout.id,"content-type":"DESCRIPTION",content:u.value.workout.description,loading:u.value.loading,"allow-edition":l.value},null,8,["workout-id","content","loading","allow-edition"])),!m(n)&&u.value.workout.segments.length>1?(h(),B(RSt,{key:4,segments:u.value.workout.segments,useImperialUnits:m(i)?m(i).imperial_units:!1},null,8,["segments","useImperialUnits"])):L("",!0),l.value&&!m(n)?(h(),B(i0,{key:5,"workout-id":u.value.workout.id,"content-type":"NOTES",content:u.value.workout.notes,loading:u.value.loading},null,8,["workout-id","content","loading"])):L("",!0),m(n)?L("",!0):(h(),B(mI,{key:6,workoutData:u.value,"auth-user":m(i)},null,8,["workoutData","auth-user"])),c[0]||(c[0]=p("div",{id:"bottom"},null,-1))])):(h(),v("div",USt,[u.value.loading?L("",!0):(h(),B(Ui,{key:0,target:m(n)?"SEGMENT":"WORKOUT"},null,8,["target"]))]))])):L("",!0)])]))}}),md=se(kSt,[["__scopeId","data-v-ea73edb8"]]),wSt={class:"workouts-filters"},MSt={class:"box"},WSt={class:"form-all-items"},FSt={class:"form-items-group"},zSt={class:"form-item"},xSt={for:"from"},BSt=["value"],GSt={class:"form-item"},VSt={for:"to"},HSt=["value"],KSt={class:"form-item"},qSt={for:"sport_id"},jSt=["value"],YSt=["value"],XSt={class:"form-item form-item-equipment"},QSt=["value"],ZSt={key:0,value:"",disabled:"",selected:""},JSt={value:"none"},eAt=["label"],tAt=["value"],nAt={class:"form-items-group"},aAt={class:"form-item form-item-text"},sAt={for:"title"},iAt={class:"form-inputs-group"},oAt=["value"],rAt={class:"form-item form-item-text"},uAt={for:"notes"},lAt={class:"form-inputs-group"},cAt=["value"],dAt={class:"form-item form-item-text"},EAt={for:"notes"},pAt={class:"form-inputs-group"},TAt=["value"],mAt={class:"form-items-group"},_At={class:"form-item"},fAt={class:"form-inputs-group"},hAt=["value"],SAt=["value"],AAt={class:"form-item"},OAt={class:"form-inputs-group"},IAt=["value"],gAt=["value"],RAt={class:"form-items-group"},NAt={class:"form-item"},vAt={class:"form-inputs-group"},bAt=["value"],CAt=["value"],PAt={class:"form-item"},DAt={class:"form-inputs-group"},LAt=["value"],yAt=["value"],$At={class:"form-button"},UAt=X({__name:"WorkoutsFilters",props:{authUser:{},translatedSports:{}},emits:["filter"],setup(e,{emit:t}){const n=e,{authUser:a}=fe(n),s=t,i=ut(),o=gn(),r=jA(),{t:u}=yt();let l=Object.assign({},i.query);const d=z(()=>a.value.imperial_units?vn.km.defaultTarget:"km"),E=z(()=>f(r.getters[xe.GETTERS.EQUIPMENTS]));function c(O){const A=O.target.name,R=O.target.value;R===""?delete l[A]:l[A]=R}function T(){s("filter"),"page"in l&&(l.page="1"),o.push({path:"/workouts",query:l})}function _(){s("filter"),o.push({path:"/workouts",query:{}})}function f(O){const A={};return O.filter(R=>R.workouts_count>0).map(R=>{const g=u(`equipment_types.${R.equipment_type.label}.LABEL`);g in A?A[g].push(R):A[g]=[R]}),A}return Ce(()=>i.query,O=>{l=Object.assign({},O)}),mt(()=>{const O=document.getElementById("from");O&&O.focus()}),(O,A)=>(h(),v("div",wSt,[p("div",MSt,[p("form",{onSubmit:A[0]||(A[0]=ve(()=>{},["prevent"])),class:"form"},[p("div",WSt,[p("div",FSt,[p("div",zSt,[p("label",xSt,S(O.$t("workouts.FROM"))+": ",1),p("input",{id:"from",name:"from",type:"date",value:O.$route.query.from,onChange:c},null,40,BSt)]),p("div",GSt,[p("label",VSt,S(O.$t("workouts.TO"))+": ",1),p("input",{id:"to",name:"to",type:"date",value:O.$route.query.to,onChange:c},null,40,HSt)]),p("div",KSt,[p("label",qSt,S(O.$t("workouts.SPORT",1))+":",1),p("select",{id:"sport_id",name:"sport_id",value:O.$route.query.sport_id,onChange:c,onKeyup:Ye(T,["enter"])},[A[1]||(A[1]=p("option",{value:""},null,-1)),(h(!0),v(ue,null,be(O.translatedSports.filter(R=>m(a).sports_list.includes(R.id)),R=>(h(),v("option",{value:R.id,key:R.id},S(R.translatedLabel),9,YSt))),128))],40,jSt)]),p("div",XSt,[p("label",null,S(O.$t("equipments.EQUIPMENT",1))+":",1),p("select",{name:"equipment_id",value:O.$route.query.equipment_id,onChange:c,onKeyup:Ye(T,["enter"])},[A[3]||(A[3]=p("option",{value:""},null,-1)),Object.keys(E.value).length==0?(h(),v("option",ZSt,S(O.$t("equipments.NO_EQUIPMENTS")),1)):L("",!0),Object.keys(E.value).length>0?(h(),v(ue,{key:1},[p("option",JSt,S(O.$t("equipments.WITHOUT_EQUIPMENTS")),1),A[2]||(A[2]=p("option",{disabled:""},"---",-1))],64)):L("",!0),(h(!0),v(ue,null,be(Object.keys(E.value).sort(),R=>(h(),v("optgroup",{label:R,key:R},[(h(!0),v(ue,null,be(E.value[R].sort(m(Gp)),g=>(h(),v("option",{value:g.id,key:g.id},S(g.label),9,tAt))),128))],8,eAt))),128))],40,QSt)])]),p("div",nAt,[p("div",aAt,[p("label",sAt,S(O.$t("workouts.TITLE",1))+":",1),p("div",iAt,[p("input",{id:"title",class:"text",name:"title",value:O.$route.query.title,onChange:c,placeholder:"",type:"text",onKeyup:Ye(T,["enter"])},null,40,oAt)])]),p("div",rAt,[p("label",uAt,S(O.$t("workouts.DESCRIPTION"))+":",1),p("div",lAt,[p("input",{id:"description",class:"text",name:"description",value:O.$route.query.description,onChange:c,placeholder:"",type:"text",onKeyup:Ye(T,["enter"])},null,40,cAt)])]),p("div",dAt,[p("label",EAt,S(O.$t("workouts.NOTES"))+":",1),p("div",pAt,[p("input",{id:"notes",class:"text",name:"notes",value:O.$route.query.notes,onChange:c,placeholder:"",type:"text",onKeyup:Ye(T,["enter"])},null,40,TAt)])])]),p("div",mAt,[p("div",_At,[p("label",null,S(O.$t("workouts.DISTANCE"))+" ("+S(d.value)+"): ",1),p("div",fAt,[p("input",{name:"distance_from",type:"number",min:"0",step:"0.1",value:O.$route.query.distance_from,onChange:c,onKeyup:Ye(T,["enter"])},null,40,hAt),p("span",null,S(O.$t("workouts.TO")),1),p("input",{name:"distance_to",type:"number",min:"0",step:"0.1",value:O.$route.query.distance_to,onChange:c,onKeyup:Ye(T,["enter"])},null,40,SAt)])]),p("div",AAt,[p("label",null,S(O.$t("workouts.DURATION"))+": ",1),p("div",OAt,[p("input",{name:"duration_from",value:O.$route.query.duration_from,onChange:c,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text",onKeyup:Ye(T,["enter"])},null,40,IAt),p("span",null,S(O.$t("workouts.TO")),1),p("input",{name:"duration_to",value:O.$route.query.duration_to,onChange:c,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text",onKeyup:Ye(T,["enter"])},null,40,gAt)])])]),p("div",RAt,[p("div",NAt,[p("label",null,S(O.$t("workouts.AVE_SPEED"))+" ("+S(d.value)+"/h): ",1),p("div",vAt,[p("input",{min:"0",name:"ave_speed_from",value:O.$route.query.ave_speed_from,onChange:c,step:"0.1",type:"number",onKeyup:Ye(T,["enter"])},null,40,bAt),p("span",null,S(O.$t("workouts.TO")),1),p("input",{min:"0",name:"ave_speed_to",value:O.$route.query.ave_speed_to,onChange:c,step:"0.1",type:"number",onKeyup:Ye(T,["enter"])},null,40,CAt)])]),p("div",PAt,[p("label",null,S(O.$t("workouts.MAX_SPEED"))+" ("+S(d.value)+"/h): ",1),p("div",DAt,[p("input",{min:"0",name:"max_speed_from",value:O.$route.query.max_speed_from,onChange:c,step:"0.1",type:"number",onKeyup:Ye(T,["enter"])},null,40,LAt),p("span",null,S(O.$t("workouts.TO")),1),p("input",{min:"0",name:"max_speed_to",value:O.$route.query.max_speed_to,onChange:c,step:"0.1",type:"number",onKeyup:Ye(T,["enter"])},null,40,yAt)])])])]),p("div",$At,[p("button",{type:"submit",class:"confirm",onClick:T},S(O.$t("buttons.FILTER")),1),p("button",{class:"confirm",onClick:_},S(O.$t("buttons.CLEAR_FILTER")),1)])],32)])]))}}),kAt=se(UAt,[["__scopeId","data-v-3341c41a"]]),wAt={class:"workouts-list"},MAt={class:"total"},WAt={class:"total-label"},FAt={key:0},zAt={key:0,class:"workouts-table responsive-table"},xAt={class:"sport-col"},BAt={class:"cell-heading"},GAt=["onMouseover"],VAt={class:"cell-heading"},HAt={key:0,class:"fa fa-map-o","aria-hidden":"true"},KAt={class:"title"},qAt={class:"workout-date"},jAt={class:"cell-heading"},YAt={class:"text-right"},XAt={class:"cell-heading"},QAt={class:"text-right"},ZAt={class:"cell-heading"},JAt={class:"text-right"},e1t={class:"cell-heading"},t1t={class:"text-right"},n1t={class:"cell-heading"},a1t={class:"text-right"},s1t={class:"cell-heading"},i1t={class:"text-right"},o1t={class:"cell-heading"},r1t=X({__name:"WorkoutsList",props:{user:{},translatedSports:{}},setup(e){const t=e,{user:n,translatedSports:a}=fe(t),s=ut(),i=gn(),o=Le(),r=["ave_speed","distance","duration","workout_date"],{appLanguage:u}=qe(),{isAuthUserSuspended:l}=Ke();let d=O(s.query);const E=Ie(null),c=z(()=>o.getters[J.GETTERS.AUTH_USER_WORKOUTS]),T=z(()=>o.getters[J.GETTERS.WORKOUTS_PAGINATION]);function _(g){l.value||o.dispatch(J.ACTIONS.GET_AUTH_USER_WORKOUTS,n.value.imperial_units?A(g):g)}function f(g,I){const N=Object.assign({},s.query);N[g]=I,g==="per_page"&&(N.page="1"),d=O(N),i.push({path:"/workouts",query:d})}function O(g){const I=vi(g,r,qo.order_by,{defaultSort:qo.order});return Object.keys(g).filter(N=>GQe.includes(N)).map(N=>{typeof g[N]=="string"&&(I[N]=g[N])}),I}function A(g){const I={...g};return Object.entries(I).map(N=>{N[0].match("speed|distance")&&N[1]&&(I[N[0]]=Yt(+N[1],"mi","km"))}),I}function R(g){E.value=g}return Ce(()=>s.query,async g=>{d=O(g),_(d)}),et(()=>{_(d),o.dispatch(xe.ACTIONS.GET_EQUIPMENTS)}),(g,I)=>{const N=j("SportImage"),b=j("VisibilityIcon"),C=j("router-link"),y=j("Distance");return h(),v("div",wAt,[p("div",{class:Ae(["box",{"empty-table":c.value.length===0}])},[p("div",MAt,[p("span",WAt,S(g.$t("common.TOTAL").toLowerCase())+": ",1),T.value.total?(h(),v("span",FAt,S(T.value.total)+" "+S(g.$t("workouts.WORKOUT",T.value.total)),1)):L("",!0)]),M(Kp,{sort:m(Ml),order_by:r,query:m(d),message:"workouts",onUpdateSelect:f},null,8,["sort","query"]),c.value.length>0?(h(),v("div",zAt,[M(oa,{class:"top-pagination",pagination:T.value,path:"/workouts",query:m(d)},null,8,["pagination","query"]),p("table",null,[p("thead",{class:Ae({smaller:m(u)==="de"})},[p("tr",null,[I[1]||(I[1]=p("th",{class:"sport-col"},null,-1)),p("th",null,S(Fe(g.$t("workouts.WORKOUT",1))),1),p("th",null,S(Fe(g.$t("workouts.DATE"))),1),p("th",null,S(Fe(g.$t("workouts.DISTANCE"))),1),p("th",null,S(Fe(g.$t("workouts.DURATION"))),1),p("th",null,S(Fe(g.$t("workouts.AVE_SPEED"))),1),p("th",null,S(Fe(g.$t("workouts.MAX_SPEED"))),1),p("th",null,S(Fe(g.$t("workouts.ASCENT"))),1),p("th",null,S(Fe(g.$t("workouts.DESCENT"))),1)])],2),p("tbody",null,[(h(!0),v(ue,null,be(c.value,D=>(h(),v("tr",{key:D.id},[p("td",xAt,[p("span",BAt,S(g.$t("workouts.SPORT",1)),1),m(a).length>0?(h(),B(N,{key:0,title:m(a).filter(U=>U.id===D.sport_id)[0].translatedLabel,"sport-label":m(xp)(D,m(a)),color:m(Bp)(D,m(a))},null,8,["title","sport-label","color"])):L("",!0)]),p("td",{class:"workout-title",onMouseover:U=>R(D.id),onMouseleave:I[0]||(I[0]=U=>R(null))},[p("span",VAt,S(Fe(g.$t("workouts.WORKOUT",1))),1),M(C,{class:"nav-item",to:{name:"Workout",params:{workoutId:D.id}}},{default:Y(()=>[D.with_gpx?(h(),v("i",HAt)):L("",!0),p("span",KAt,S(D.title),1),M(b,{visibility:D.workout_visibility},null,8,["visibility"])]),_:2},1032,["to"]),D.with_gpx&&E.value===D.id?(h(),B(yO,{key:0,workout:D,"display-hover":!0},null,8,["workout"])):L("",!0)],40,GAt),p("td",qAt,[p("span",jAt,S(g.$t("workouts.DATE")),1),p("time",null,S(m($t)(D.workout_date,m(n).timezone,m(n).date_format)),1)]),p("td",YAt,[p("span",XAt,S(g.$t("workouts.DISTANCE")),1),D.distance!==null?(h(),B(y,{key:0,distance:D.distance,unitFrom:"km",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",QAt,[p("span",ZAt,S(g.$t("workouts.DURATION")),1),x(" "+S(D.moving),1)]),p("td",JAt,[p("span",e1t,S(g.$t("workouts.AVE_SPEED")),1),D.ave_speed!==null?(h(),B(y,{key:0,distance:D.ave_speed,unitFrom:"km",speed:!0,useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",t1t,[p("span",n1t,S(g.$t("workouts.MAX_SPEED")),1),D.max_speed!==null?(h(),B(y,{key:0,distance:D.max_speed,unitFrom:"km",speed:!0,useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",a1t,[p("span",s1t,S(g.$t("workouts.ASCENT")),1),D.ascent!==null?(h(),B(y,{key:0,distance:D.ascent,unitFrom:"m",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)]),p("td",i1t,[p("span",o1t,S(g.$t("workouts.DESCENT")),1),D.descent!==null?(h(),B(y,{key:0,distance:D.descent,unitFrom:"m",useImperialUnits:m(n).imperial_units},null,8,["distance","useImperialUnits"])):L("",!0)])]))),128))])]),M(oa,{pagination:T.value,path:"/workouts",query:m(d)},null,8,["pagination","query"])])):L("",!0)],2),c.value.length===0?(h(),B(Zp,{key:0})):L("",!0),I[2]||(I[2]=p("div",{id:"bottom"},null,-1))])}}}),u1t=se(r1t,[["__scopeId","data-v-b3a10603"]]),l1t={key:0,id:"workouts",class:"view items-list-view"},c1t={class:"container items-list-container"},d1t={class:"display-filters"},E1t={class:"list-container"},p1t=X({__name:"WorkoutsView",setup(e){const{t}=yt(),n=Le(),a=z(()=>n.getters[K.GETTERS.AUTH_USER_PROFILE]),s=z(()=>n.getters[Ht.GETTERS.SPORTS]),i=z(()=>ia(s.value,t)),o=Ie(!0);function r(){o.value=!o.value}return(u,l)=>a.value.username?(h(),v("div",l1t,[p("div",c1t,[p("div",{class:Ae(["filters-container",{hidden:o.value}])},[M(kAt,{translatedSports:i.value,authUser:a.value,onFilter:r},null,8,["translatedSports","authUser"])],2),p("div",d1t,[p("div",{onClick:r},[p("i",{class:Ae(`fa fa-caret-${o.value?"down":"up"}`),"aria-hidden":"true"},null,2),p("span",null,S(u.$t(`workouts.${o.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),p("div",E1t,[M(u1t,{user:a.value,translatedSports:i.value},null,8,["user","translatedSports"])])])])):L("",!0)}}),{t:o0}=$i.global,r0=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return n===""?"PROFILE":n.split("/")[0].toUpperCase()},T1t=[{path:"/",name:"Dashboard",component:REt,meta:{title:"dashboard.DASHBOARD",allowedToSuspendedUser:!1}},{path:"/login",name:"Login",component:Yh,props:{action:"login"},meta:{title:"user.LOGIN",withoutAuth:!0}},{path:"/register",name:"Register",component:Yh,props:{action:"register"},meta:{title:"user.REGISTER",withoutAuth:!0}},{path:"/account-confirmation",name:"AccountConfirmation",component:umt,meta:{title:"user.ACCOUNT_CONFIRMATION",withoutAuth:!0}},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:jh,props:{action:"account-confirmation-resend"},meta:{title:"buttons.ACCOUNT-CONFIRMATION-RESEND",withoutAuth:!0}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:jh,props:{action:"email-sent"},meta:{title:"buttons.ACCOUNT-CONFIRMATION-RESEND",withoutAuth:!0}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:Mr,props:{action:"request-sent"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset/request",name:"PasswordResetRequest",component:Mr,props:{action:"reset-request"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:Mr,props:{action:"password-updated"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/password-reset",name:"PasswordReset",component:Mr,props:{action:"reset"},meta:{title:"user.PASSWORD_RESET",withoutAuth:!0}},{path:"/email-update",name:"EmailUpdate",component:Emt,meta:{title:"user.EMAIL_UPDATE",withoutChecks:!0}},{path:"/profile",name:"Profile",component:kmt,children:[{path:"",name:"UserProfile",component:CJe,props:e=>({tab:r0(e.path)}),children:[{path:"",name:"UserInfos",component:kO,meta:{title:"user.PROFILE.TABS.PROFILE"}},{path:"preferences",name:"UserPreferences",component:_et,meta:{title:"user.PROFILE.TABS.PREFERENCES"}},{path:"sports",name:"UserSports",component:Fh,props:{isEdition:!1},meta:{title:"user.PROFILE.TABS.SPORTS"},children:[{path:"",name:"UserSportPreferences",component:zh,meta:{title:"user.PROFILE.TABS.SPORTS"}},{path:":id",name:"UserSport",component:Hut,meta:{title:"user.PROFILE.TABS.SPORTS"}}]},{path:"apps",name:"UserApps",component:cot,children:[{path:"",name:"UserAppsList",component:Dot,meta:{title:"user.PROFILE.TABS.APPS"}},{path:":id",name:"UserApp",component:Uh,meta:{title:"user.PROFILE.TABS.APPS"}},{path:":id/created",name:"CreatedUserApp",component:Uh,props:{afterCreation:!0},meta:{title:"user.PROFILE.TABS.APPS"}},{path:"new",name:"AddUserApp",component:Qit,meta:{title:"user.PROFILE.TABS.APPS"}},{path:"authorize",name:"AuthorizeUserApp",component:uot,meta:{title:"user.PROFILE.TABS.APPS"}}]},{path:"equipments",name:"UserEquipments",component:Mh,props:{isEdition:!1},children:[{path:"",name:"UserEquipmentsList",component:Wh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:"new",name:"AddEquipment",component:wh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:":id",name:"Equipment",component:krt,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}}]},{path:"follow-requests",name:"FollowRequests",component:hh,props:{itemType:"follow-requests"}},{path:"blocked-users",name:"BlockedUsers",component:hh,props:{itemType:"blocked-users"}},{path:"followers",name:"AuthUserFollowers",component:kr,props:{relationship:"followers"}},{path:"following",name:"AuthUserFollowing",component:kr,props:{relationship:"following"}},{path:"suspension",name:"AuthUserAccountSuspension",component:Cit},{path:"moderation",name:"Moderation",component:iut,children:[{path:"",name:"UserSanctionList",component:Cut},{path:"sanctions/:action_id",name:"UserSanctionDetail",component:Aut}]}]},{path:"edit",name:"UserProfileEdition",component:Det,props:e=>({tab:r0(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Fat,meta:{title:"user.PROFILE.EDIT"}},{path:"account",name:"UserAccountEdition",component:gat,meta:{title:"user.PROFILE.ACCOUNT_EDITION"}},{path:"picture",name:"UserPictureEdition",component:qat,meta:{title:"user.PROFILE.PICTURE_EDITION"}},{path:"preferences",name:"UserPreferencesEdition",component:lit,meta:{title:"user.PROFILE.EDIT_PREFERENCES"}},{path:"sports",name:"UserSportsEdition",component:Fh,props:{isEdition:!0},meta:{title:"user.PROFILE.EDIT_SPORTS_PREFERENCES"},children:[{path:"",name:"UserSportPreferencesEdition",component:zh,meta:{title:"user.PROFILE.TABS.SPORTS"}},{path:":id",name:"UserSportEdition",component:Tlt,meta:{title:"user.PROFILE.TABS.SPORTS"}}]},{path:"equipments",name:"UserEquipmentsEdition",component:Mh,props:{isEdition:!0},children:[{path:"",name:"UserEquipmentsListEdition",component:Wh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}},{path:":id",name:"EquipmentEdition",component:wh,meta:{title:"user.PROFILE.TABS.EQUIPMENTS"}}]},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Iit,meta:{title:"user.PROFILE.PRIVACY-POLICY_EDITION"}}]}]},{path:"/notifications",name:"Notifications",component:bpt,meta:{allowedToSuspendedUser:!1}},{path:"/statistics",name:"Statistics",component:bTt,meta:{title:"statistics.STATISTICS",allowedToSuspendedUser:!1}},{path:"/users",name:"Users",component:Jmt,meta:{allowedToSuspendedUser:!1}},{path:"/users/:username",name:"User",props:{fromAdmin:!1},component:Xh,meta:{title:"user.USER",withoutChecks:!0,allowedToSuspendedUser:!1},children:[{path:"followers",name:"UserFollowers",component:kr,props:{relationship:"followers"},meta:{withoutAuth:!1,withoutChecks:!1}},{path:"following",name:"UserFollowing",component:kr,props:{relationship:"following"},meta:{withoutAuth:!1,withoutChecks:!1}}]},{path:"/workouts",name:"Workouts",component:p1t,meta:{title:"workouts.WORKOUT",count:0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId",name:"Workout",component:md,props:{displaySegment:!1},meta:{title:"workouts.WORKOUT",withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:$ft,meta:{title:"workouts.EDIT_WORKOUT",allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:md,props:{displaySegment:!0},meta:{title:"workouts.SEGMENT",count:0,withoutChecks:!0,allowedToSuspendedUser:!1}},{path:"/workouts/:workoutId/comments/:commentId",name:"WorkoutComment",component:md,props:{displaySegment:!1},meta:{allowedToSuspendedUser:!1,withoutChecks:!0}},{path:"/comments/:commentId",name:"Comment",component:Dft,meta:{allowedToSuspendedUser:!1,withoutChecks:!0}},{path:"/workouts/add",name:"AddWorkout",component:fft,meta:{title:"workouts.ADD_WORKOUT",allowedToSuspendedUser:!1}},{path:"/admin",name:"Administration",component:Tct,meta:{allowedToSuspendedUser:!1,minimumRole:"moderator"},children:[{path:"",name:"AdministrationMenu",component:MYe,meta:{title:"admin.ADMINISTRATION"}},{path:"application",name:"ApplicationAdministration",component:ph,meta:{title:"admin.APP_CONFIG.TITLE",minimumRole:"admin"}},{path:"application/edit",name:"ApplicationAdministrationEdition",component:ph,props:{edition:!0},meta:{title:"admin.APPLICATION",minimumRole:"admin"}},{path:"equipment-types",name:"EquipmentTypeAdministration",component:OYe,meta:{title:"admin.EQUIPMENT_TYPES.TITLE",minimumRole:"admin"}},{path:"sports",name:"SportsAdministration",component:FZe,meta:{title:"admin.SPORTS.TITLE",minimumRole:"admin"}},{path:"reports",name:"ReportsAdministration",component:IZe,meta:{title:"admin.APP_MODERATION.TITLE"}},{path:"reports/:reportId",name:"ReportAdministration",component:UQe,meta:{title:"admin.APP_MODERATION.REPORT"}},{path:"users/:username",name:"UserFromAdmin",component:Xh,props:{fromAdmin:!0},meta:{title:"admin.USER",count:1}},{path:"users",name:"UsersAdministration",component:TJe,meta:{title:"admin.USERS.TITLE",minimumRole:"admin"}}]},{path:"/about",name:"About",component:lct,meta:{title:"common.ABOUT",withoutChecks:!0}},{path:"/privacy-policy",name:"PrivacyPolicy",component:Dpt,meta:{title:"privacy_policy.TITLE",withoutChecks:!0}},{path:"/:pathMatch(.*)*",name:"not-found",component:vEt,meta:{title:"error.NOT_FOUND.PAGE"}}],lt=NP({history:eP("/"),routes:T1t});lt.beforeEach((e,t,n)=>{if("title"in e.meta){const a=typeof e.meta.title=="string"?e.meta.title:"",s=a?typeof e.meta.count=="number"?o0(a,+e.meta.count):o0(a):"";window.document.title=`FitTrackee${a?` - ${Fe(s)}`:""}`}kn.commit(te.MUTATIONS.EMPTY_ERROR_MESSAGES),kn.dispatch(K.ACTIONS.CHECK_AUTH_USER).then(()=>{if(e.meta.withoutChecks)return n();if(kn.getters[K.GETTERS.IS_PROFILE_LOADED]&&kn.getters[K.GETTERS.IS_SUSPENDED]&&!e.path.startsWith("/profile")&&!e.meta.allowedToSuspendedUser)return n("/profile");if(kn.getters[K.GETTERS.IS_AUTHENTICATED]&&kn.getters[K.GETTERS.IS_PROFILE_LOADED]&&!kn.getters[K.GETTERS.IS_SUSPENDED]&&kn.dispatch(Et.ACTIONS.GET_UNREAD_STATUS),kn.getters[K.GETTERS.IS_AUTHENTICATED]&&e.meta.withoutAuth)return n("/");if(!kn.getters[K.GETTERS.IS_AUTHENTICATED]&&!e.meta.withoutAuth){const a=e.path==="/"?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(a)}else n()}).catch(a=>{console.error(a),n()})});gE.register(zI,xI,BI,GI,VI,HI,KI,u0,qI,l0,jI,YI);const MI=IN(YBe).provide("sportColors",zp).use($i).use(kn).use(lt).use(ub,{name:"VFullscreen"}).directive("click-outside",bje);vje.forEach(e=>{MI.component(e.name,e.target)});MI.mount("#app"); diff --git a/fittrackee/migrations/versions/45_d3e40c2bda80_add_notifications_preferences.py b/fittrackee/migrations/versions/45_d3e40c2bda80_add_notifications_preferences.py new file mode 100644 index 000000000..cc2ba261e --- /dev/null +++ b/fittrackee/migrations/versions/45_d3e40c2bda80_add_notifications_preferences.py @@ -0,0 +1,32 @@ +"""add notifications preferences + +Revision ID: d3e40c2bda80 +Revises: 8a80bec0a410 +Create Date: 2025-01-01 18:28:15.250710 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'd3e40c2bda80' +down_revision = '8a80bec0a410' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('users', schema=None) as batch_op: + batch_op.add_column(sa.Column('notification_preferences', postgresql.JSONB(astext_type=sa.Text()), nullable=True)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('users', schema=None) as batch_op: + batch_op.drop_column('notification_preferences') + + # ### end Alembic commands ### diff --git a/fittrackee/migrations/versions/46_d3c5338bedff_add_index_on_likes_tables.py b/fittrackee/migrations/versions/46_d3c5338bedff_add_index_on_likes_tables.py new file mode 100644 index 000000000..819ff2693 --- /dev/null +++ b/fittrackee/migrations/versions/46_d3c5338bedff_add_index_on_likes_tables.py @@ -0,0 +1,38 @@ +"""add index on likes tables + +Revision ID: d3c5338bedff +Revises: d3e40c2bda80 +Create Date: 2025-01-04 17:17:55.637816 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd3c5338bedff' +down_revision = 'd3e40c2bda80' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('comment_likes', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_comment_likes_comment_id'), ['comment_id'], unique=False) + + with op.batch_alter_table('workout_likes', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_workout_likes_workout_id'), ['workout_id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('workout_likes', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_workout_likes_workout_id')) + + with op.batch_alter_table('comment_likes', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_comment_likes_comment_id')) + + # ### end Alembic commands ### diff --git a/fittrackee/migrations/versions/45_8842c351a2d8_init_federation.py b/fittrackee/migrations/versions/47_8842c351a2d8_init_federation.py similarity index 99% rename from fittrackee/migrations/versions/45_8842c351a2d8_init_federation.py rename to fittrackee/migrations/versions/47_8842c351a2d8_init_federation.py index ff6900d2b..b3b389877 100644 --- a/fittrackee/migrations/versions/45_8842c351a2d8_init_federation.py +++ b/fittrackee/migrations/versions/47_8842c351a2d8_init_federation.py @@ -20,7 +20,7 @@ # revision identifiers, used by Alembic. revision = '8842c351a2d8' -down_revision = '8a80bec0a410' +down_revision = 'd3c5338bedff' branch_labels = None depends_on = None diff --git a/fittrackee/tests/comments/test_comments_likes_api_post.py b/fittrackee/tests/comments/test_comments_likes_api.py similarity index 67% rename from fittrackee/tests/comments/test_comments_likes_api_post.py rename to fittrackee/tests/comments/test_comments_likes_api.py index 165c63c3f..9d1734e92 100644 --- a/fittrackee/tests/comments/test_comments_likes_api_post.py +++ b/fittrackee/tests/comments/test_comments_likes_api.py @@ -1,5 +1,6 @@ import json from datetime import datetime +from unittest.mock import patch import pytest from flask import Flask @@ -11,7 +12,7 @@ from fittrackee.workouts.models import Sport, Workout from ..mixins import ApiTestCaseMixin, BaseTestMixin -from ..utils import OAUTH_SCOPES +from ..utils import OAUTH_SCOPES, jsonify_dict from .mixins import CommentMixin @@ -582,3 +583,290 @@ def test_expected_scopes_are_defined( ) self.assert_response_scope(response, can_access) + + +class TestCommentLikesGet(CommentMixin, ApiTestCaseMixin, BaseTestMixin): + route = '/api/comments/{comment_uuid}/likes' + + def test_it_returns_404_when_workout_does_not_exist( + self, + app: Flask, + user_1: User, + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=self.random_short_id()), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_comment_does_not_exist( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=self.random_short_id()), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_comment_visibility_is_private( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + follow_request_from_user_1_to_user_2: FollowRequest, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + user_2.approves_follow_request_from(user_1) + comment = self.create_comment( + user_2, + workout_cycling_user_1, + text_visibility=VisibilityLevel.PRIVATE, + ) + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=comment.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_user_is_not_follower( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PUBLIC + comment = self.create_comment( + user_3, + workout_cycling_user_2, + text_visibility=VisibilityLevel.FOLLOWERS, + ) + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=comment.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_empty_list_when_no_likes( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PUBLIC + comment = self.create_comment( + user_3, + workout_cycling_user_2, + text_visibility=VisibilityLevel.PUBLIC, + ) + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=comment.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': False, + 'page': 1, + 'pages': 0, + 'total': 0, + } + + @patch('fittrackee.comments.comments.DEFAULT_COMMENT_LIKES_PER_PAGE', 2) + def test_it_returns_users_who_like_comment( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + user_4: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + comment = self.create_comment( + user_3, + workout_cycling_user_1, + text_visibility=VisibilityLevel.PUBLIC, + ) + for user in [user_2, user_1, user_4]: + like = CommentLike( + user_id=user.id, + comment_id=comment.id, + ) + db.session.add(like) + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(comment_uuid=comment.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [ + jsonify_dict(user_4.serialize(current_user=user_1)), + jsonify_dict(user_1.serialize(current_user=user_1)), + ] + assert data['pagination'] == { + 'has_next': True, + 'has_prev': False, + 'page': 1, + 'pages': 2, + 'total': 3, + } + + @patch('fittrackee.comments.comments.DEFAULT_COMMENT_LIKES_PER_PAGE', 2) + def test_it_returns_page_2( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + user_4: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + comment = self.create_comment( + user_3, + workout_cycling_user_1, + text_visibility=VisibilityLevel.PUBLIC, + ) + for user in [user_2, user_1, user_4]: + like = CommentLike( + user_id=user.id, + comment_id=comment.id, + ) + db.session.add(like) + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + f"{self.route.format(comment_uuid=comment.short_id)}?page=2", + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [ + jsonify_dict(user_2.serialize(current_user=user_1)) + ] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': True, + 'page': 2, + 'pages': 2, + 'total': 3, + } + + def test_it_returns_like_when_user_is_not_authenticated( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + comment = self.create_comment( + user_2, + workout_cycling_user_1, + text_visibility=VisibilityLevel.PUBLIC, + ) + like = CommentLike(user_id=user_1.id, comment_id=comment.id) + db.session.add(like) + db.session.commit() + client = app.test_client() + + response = client.get( + self.route.format(comment_uuid=comment.short_id), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [jsonify_dict(user_1.serialize())] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': False, + 'page': 1, + 'pages': 1, + 'total': 1, + } + + @pytest.mark.parametrize( + 'client_scope, can_access', + {**OAUTH_SCOPES, 'workouts:read': True}.items(), + ) + def test_expected_scopes_are_defined( + self, + app: Flask, + user_1: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + client_scope: str, + can_access: bool, + ) -> None: + ( + client, + oauth_client, + access_token, + _, + ) = self.create_oauth2_client_and_issue_token( + app, user_1, scope=client_scope + ) + + response = client.get( + self.route.format(comment_uuid=workout_cycling_user_1.short_id), + headers=dict(Authorization=f'Bearer {access_token}'), + ) + + self.assert_response_scope(response, can_access) diff --git a/fittrackee/tests/users/test_auth_api.py b/fittrackee/tests/users/test_auth_api.py index 298789183..a2e131e3a 100644 --- a/fittrackee/tests/users/test_auth_api.py +++ b/fittrackee/tests/users/test_auth_api.py @@ -21,6 +21,7 @@ UserSportPreference, UserSportPreferenceEquipment, ) +from fittrackee.users.roles import UserRole from fittrackee.users.utils.token import get_user_token from fittrackee.visibility_levels import VisibilityLevel from fittrackee.workouts.models import Sport, Workout @@ -301,6 +302,26 @@ def test_it_returns_success_if_payload_is_valid(self, app: Flask) -> None: assert data['status'] == 'success' assert 'auth_token' not in data + def test_it_creates_user_with_user_role(self, app: Flask) -> None: + client = app.test_client() + username = self.random_string() + + client.post( + '/api/auth/register', + data=json.dumps( + dict( + username=username, + email=self.random_email(), + password=self.random_string(), + accepted_policy=True, + ) + ), + content_type='application/json', + ) + + new_user = User.query.filter_by(username=username).first() + assert new_user.role == UserRole.USER.value + def test_it_creates_user_with_default_date_format( self, app: Flask ) -> None: @@ -528,6 +549,37 @@ def test_it_creates_notifications_for_admins_on_registration( user_2_admin.id, ] + def test_it_does_not_create_notifications_for_admin_when_disabled_in_preferences( # noqa + self, + app: Flask, + user_1_admin: User, + user_2_admin: User, + account_confirmation_email_mock: Mock, + ) -> None: + user_1_admin.update_preferences({"account_creation": False}) + email = self.random_email() + client = app.test_client() + + client.post( + '/api/auth/register', + data=json.dumps( + dict( + username=self.random_string(), + email=email, + password=self.random_string(), + accepted_policy=True, + ) + ), + content_type='application/json', + ) + + new_user = User.query.filter_by(email=email).first() + notifications = Notification.query.filter_by( + event_type='account_creation', event_object_id=new_user.id + ).all() + assert len(notifications) == 1 + assert notifications[0].to_user_id == user_2_admin.id + class TestUserLogin(ApiTestCaseMixin): def test_it_returns_error_if_payload_is_empty(self, app: Flask) -> None: @@ -4736,3 +4788,157 @@ def test_expected_scopes_are_defined( ) self.assert_response_scope(response, can_access) + + +class TestUserNotificationsPreferencesPost(ApiTestCaseMixin): + route = '/api/auth/profile/edit/notifications' + + def test_it_returns_error_if_payload_is_empty( + self, app: Flask, user_1: User + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.post( + self.route, + content_type='application/json', + json={}, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_400(response) + + def test_it_returns_error_if_fields_are_missing( + self, app: Flask, user_1: User + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.post( + self.route, + content_type='application/json', + json={"mention": True}, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_400(response) + + def test_it_returns_error_if_fields_are_missing_for_admin( + self, app: Flask, user_1_admin: User + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1_admin.email + ) + + response = client.post( + self.route, + content_type='application/json', + json={ + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + }, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_400(response) + + def test_it_returns_error_if_fields_are_missing_for_owner( + self, app: Flask, user_1_admin: User + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1_admin.email + ) + + response = client.post( + self.route, + content_type='application/json', + json={ + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + }, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_400(response) + + def test_it_returns_error_if_a_notification_type_is_invalid( + self, app: Flask, user_1_admin: User + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1_admin.email + ) + + response = client.post( + self.route, + content_type='application/json', + json={ + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "invalid": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + }, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_400(response) + + def test_it_updates_notification_preferences( + self, app: Flask, user_1: User + ) -> None: + user_1.update_preferences( + { + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": True, + "workout_comment": True, + "workout_like": True, + } + ) + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + updated_notification_preferences = { + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + } + + response = client.post( + self.route, + content_type='application/json', + json=updated_notification_preferences, + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert data["status"] == "success" + db.session.refresh(user_1) + assert data["data"] == jsonify_dict( + user_1.serialize(current_user=user_1, light=False) + ) + assert ( + user_1.notification_preferences == updated_notification_preferences + ) diff --git a/fittrackee/tests/users/test_users_commands.py b/fittrackee/tests/users/test_users_commands.py index 6e118e79c..ea83e2790 100644 --- a/fittrackee/tests/users/test_users_commands.py +++ b/fittrackee/tests/users/test_users_commands.py @@ -90,6 +90,7 @@ def test_it_creates_user( assert user.is_active is True assert user.email == email assert bcrypt.check_password_hash(user.password, password) + assert user.role == UserRole.USER.value def test_it_displays_password_when_password_is_not_provided( self, @@ -184,6 +185,52 @@ def test_it_creates_user_with_default_language_when_not_supported( in result.output ) + def test_it_creates_user_with_provided_role( + self, app: Flask, user_1: User + ) -> None: + username = random_string() + runner = CliRunner() + + runner.invoke( + cli, + [ + "users", + "create", + username, + "--email", + random_email(), + "--role", + "owner", + ], + ) + + user = User.query.filter_by(username=username).first() + assert user.role == UserRole.OWNER.value + + def test_it_displays_error_when_role_is_invalid( + self, app: Flask, user_1: User + ) -> None: + runner = CliRunner() + + result = runner.invoke( + cli, + [ + "users", + "create", + random_string(), + "--email", + user_1.email, + "--role", + 'invalid', + ], + ) + + assert result.exit_code == 2 + assert ( + "Invalid value for '--role': 'invalid' is not one of " + "'owner', 'admin', 'moderator', 'user'." + ) in result.output + class TestCliUserUpdate: def test_it_returns_error_when_missing_user_name(self, app: Flask) -> None: diff --git a/fittrackee/tests/users/test_users_model.py b/fittrackee/tests/users/test_users_model.py index c3cea7b47..fa06c4711 100644 --- a/fittrackee/tests/users/test_users_model.py +++ b/fittrackee/tests/users/test_users_model.py @@ -5,6 +5,7 @@ import pytest from flask import Flask +from jsonschema import ValidationError from sqlalchemy.dialects.postgresql import insert from sqlalchemy.exc import IntegrityError from time_machine import travel @@ -35,6 +36,17 @@ from ..mixins import RandomMixin, ReportMixin +NOTIFICATION_TYPES_FOR_PREFERENCES = [ + "account_creation", + "comment_like", + "follow", + "follow_request", + "follow_request_approved", + "mention", + "workout_comment", + "workout_like", +] + class TestUserModel: def test_it_returns_username_in_string_value( @@ -157,6 +169,7 @@ def test_it_returns_user_profile_infos( def test_it_returns_user_preferences( self, app: Flask, user_1: User ) -> None: + user_1.update_preferences({"mention": True}) serialized_user = user_1.serialize(current_user=user_1, light=False) assert serialized_user['imperial_units'] == user_1.imperial_units @@ -187,6 +200,17 @@ def test_it_returns_user_preferences( serialized_user['hide_profile_in_users_directory'] == user_1.hide_profile_in_users_directory ) + assert ( + serialized_user['notification_preferences'] + == user_1.notification_preferences + ) + + def test_it_returns_empty_dict_when_notification_preferences_are_none( + self, app: Flask, user_1: User + ) -> None: + serialized_user = user_1.serialize(current_user=user_1, light=False) + + assert serialized_user['notification_preferences'] == {} def test_it_returns_workouts_infos(self, app: Flask, user_1: User) -> None: serialized_user = user_1.serialize(current_user=user_1, light=False) @@ -309,6 +333,7 @@ def test_it_does_return_user_preferences( assert 'map_visibility' not in serialized_user assert 'manually_approves_followers' not in serialized_user assert 'hide_profile_in_users_directory' not in serialized_user + assert 'notification_preferences' not in serialized_user def test_it_returns_workouts_infos( self, app: Flask, user_1_admin: User, user_2: User @@ -394,6 +419,7 @@ def test_it_does_return_user_preferences( assert 'map_visibility' not in serialized_user assert 'manually_approves_followers' not in serialized_user assert 'hide_profile_in_users_directory' not in serialized_user + assert 'notification_preferences' not in serialized_user def test_it_returns_workouts_infos( self, app: Flask, user_1_moderator: User, user_2: User @@ -472,6 +498,7 @@ def test_it_does_return_user_preferences( assert 'map_visibility' not in serialized_user assert 'manually_approves_followers' not in serialized_user assert 'hide_profile_in_users_directory' not in serialized_user + assert 'notification_preferences' not in serialized_user def test_it_returns_workouts_infos( self, app: Flask, user_1: User, user_2: User @@ -1800,3 +1827,123 @@ def test_it_does_not_count_comment_unsuspension( ) assert user_1.sanctions_count == 0 + + +class TestUserNotificationsPreferencesUpdate: + def test_it_raises_error_when_notification_type_is_invalid( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = {} + + with pytest.raises(ValidationError): + user_1.update_preferences({"invalid": True}) + + def test_it_raises_error_when_value_is_invalid( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = {} + + with pytest.raises(ValidationError): + user_1.update_preferences({"mention": "invalid"}) + + @pytest.mark.parametrize('input_value', [True, False]) + def test_it_updates_preference_for_given_type( + self, app: Flask, user_1: User, input_value: bool + ) -> None: + user_1.notification_preferences = {} + + user_1.update_preferences({"mention": input_value}) + + assert user_1.notification_preferences == {"mention": input_value} + + def test_it_updates_preferences_when_preferences_exist( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = { + "mention": True, + "follow_request": False, + } + + user_1.update_preferences( + {"mention": False, "workout_like": True, "comment_like": True} + ) + + assert user_1.notification_preferences == { + "mention": False, + "follow_request": False, + "workout_like": True, + "comment_like": True, + } + + def test_it_updates_all_preferences( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = { + "mention": True, + "follow_request": False, + } + updated_preferences = { + "account_creation": True, + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + } + + user_1.update_preferences(updated_preferences) + + assert user_1.notification_preferences == updated_preferences + + +class TestUserNotificationsPreferencesIsEnabled: + @pytest.mark.parametrize( + "input_notif_type", NOTIFICATION_TYPES_FOR_PREFERENCES + ) + def test_it_returns_true_when_notification_type_is_not_in_preferences( + self, app: Flask, user_1: User, input_notif_type: str + ) -> None: + user_1.notification_preferences = {} + + assert user_1.is_notification_enabled(input_notif_type) is True + + def test_it_returns_true_when_preferences_is_none( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = None + + assert user_1.is_notification_enabled("mention") is True + + def test_it_returns_true_when_notification_type_is_not_in_schema( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = { + "account_creation": True, + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + } + + assert user_1.is_notification_enabled("report") is True + + def test_it_returns_if_notification_is_enabled( + self, app: Flask, user_1: User + ) -> None: + user_1.notification_preferences = { + "account_creation": True, + "comment_like": True, + "follow": True, + "follow_request": True, + "follow_request_approved": True, + "mention": False, + "workout_comment": False, + "workout_like": False, + } + + assert user_1.is_notification_enabled("mention") is False diff --git a/fittrackee/tests/users/test_users_notifications_model.py b/fittrackee/tests/users/test_users_notifications_model.py index edb85e1ec..ca6b71cd9 100644 --- a/fittrackee/tests/users/test_users_notifications_model.py +++ b/fittrackee/tests/users/test_users_notifications_model.py @@ -98,6 +98,21 @@ def test_it_creates_notification_on_follow_request( assert notification.event_type == 'follow_request' assert notification.event_object_id is None + def test_it_does_not_create_notification_when_disabled_in_preferences( + self, app: Flask, user_1: User, user_2: User + ) -> None: + user_2.update_preferences({"follow_request": False}) + + user_1.send_follow_request_to(user_2) + + assert ( + Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + ).first() + is None + ) + def test_it_creates_notification_on_follow_when_user_automatically_approves_request( # noqa self, app: Flask, user_1: User, user_2: User ) -> None: @@ -114,6 +129,23 @@ def test_it_creates_notification_on_follow_when_user_automatically_approves_requ assert notification.event_type == 'follow' assert notification.event_object_id is None + def test_it_does_creates_notification_on_follow_when_user_automatically_approves_request_and_disabled_in_preferennces( # noqa + self, app: Flask, user_1: User, user_2: User + ) -> None: + user_2.manually_approves_followers = False + user_2.update_preferences({"follow": False}) + + user_1.send_follow_request_to(user_2) + + assert ( + Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + event_type='follow', + ).first() + is None + ) + def test_it_does_not_create_notification_for_follower_when_user_automatically_approves_request( # noqa self, app: Flask, user_1: User, user_2: User ) -> None: @@ -143,6 +175,50 @@ def test_it_updates_notification_when_user_approves_follow_request( assert notification.event_type == 'follow' assert notification.event_object_id is None + def test_it_does_not_update_follow_request_notification_when_disabled_in_preferences( # noqa + self, app: Flask, user_1: User, user_2: User + ) -> None: + user_2.update_preferences({"follow_request": True, "follow": False}) + user_1.send_follow_request_to(user_2) + + user_2.approves_follow_request_from(user_1) + + assert ( + Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + event_type="follow_request", + ).first() + is not None + ) + assert ( + Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + event_type="follow", + ).first() + is None + ) + + def test_it_creates_follow_notification_when_user_approves_follow_request( + self, app: Flask, user_1: User, user_2: User + ) -> None: + user_2.update_preferences({"follow_request": False}) + user_1.send_follow_request_to(user_2) + now = datetime.utcnow() + + with travel(now, tick=False): + user_2.approves_follow_request_from(user_1) + + notification = Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + ).first() + assert notification.created_at == now + assert notification.marked_as_read is False + assert notification.event_type == 'follow' + assert notification.event_object_id is None + def test_it_creates_notification_for_follower_when_user_approves_follow_request( # noqa self, app: Flask, user_1: User, user_2: User ) -> None: @@ -161,6 +237,22 @@ def test_it_creates_notification_for_follower_when_user_approves_follow_request( assert notification.event_type == 'follow_request_approved' assert notification.event_object_id is None + def test_it_does_not_create_notification_for_follower_when_disabled_in_preferences( # noqa + self, app: Flask, user_1: User, user_2: User + ) -> None: + user_1.update_preferences({"follow_request_approved": False}) + user_1.send_follow_request_to(user_2) + + user_2.approves_follow_request_from(user_1) + + assert ( + Notification.query.filter_by( + from_user_id=user_2.id, + to_user_id=user_1.id, + ).first() + is None + ) + def test_it_deletes_notification_when_user_rejects_follow_request( self, app: Flask, user_1: User, user_2: User ) -> None: @@ -216,8 +308,10 @@ def test_it_updates_notification_read_status_when_user_approves_follow_request( notification = Notification.query.filter_by( from_user_id=user_1.id, to_user_id=user_2.id, + event_type="follow_request", ).first() notification.marked_as_read = True + user_2.approves_follow_request_from(user_1) assert notification.created_at == follow_request.created_at @@ -225,6 +319,25 @@ def test_it_updates_notification_read_status_when_user_approves_follow_request( assert notification.event_type == 'follow' assert notification.event_object_id is None + def test_it_does_not_updates_notification_when_user_approves_follow_request_and_disabled_in_preferences( # noqa + self, app: Flask, user_1: User, user_2: User + ) -> None: + follow_request = user_1.send_follow_request_to(user_2) + user_2.update_preferences({"follow": False}) + notification = Notification.query.filter_by( + from_user_id=user_1.id, + to_user_id=user_2.id, + event_type="follow_request", + ).first() + notification.marked_as_read = True + + user_2.approves_follow_request_from(user_1) + + assert notification.created_at == follow_request.created_at + assert notification.marked_as_read is True + assert notification.event_type == "follow_request" + assert notification.event_object_id is None + @pytest.mark.parametrize('manually_approves_followers', [True, False]) def test_it_deletes_notification_on_follow_request_delete( self, @@ -347,6 +460,28 @@ def test_it_creates_notification_on_workout_like( assert notification.marked_as_read is False assert notification.event_type == 'workout_like' + def test_it_does_not_create_notification_on_workout_like_when_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + workout_cycling_user_1: Workout, + ) -> None: + user_1.update_preferences({"workout_like": False}) + + like = self.like_workout(user_2, workout_cycling_user_1) + + assert ( + Notification.query.filter_by( + from_user_id=like.user_id, + to_user_id=workout_cycling_user_1.user_id, + event_object_id=workout_cycling_user_1.id, + ).first() + is None + ) + def test_it_deletes_notification_on_workout_like_delete( self, app: Flask, @@ -456,6 +591,32 @@ def test_it_creates_notification_on_workout_comment( assert notification.marked_as_read is False assert notification.event_type == 'workout_comment' + def test_it_does_not_create_notification_on_workout_comment_when_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + user_1.update_preferences({"workout_comment": False}) + + comment = self.comment_workout( + user_2, + workout_cycling_user_1, + text_visibility=VisibilityLevel.PUBLIC, + ) + + assert ( + Notification.query.filter_by( + from_user_id=comment.user_id, + to_user_id=workout_cycling_user_1.user_id, + event_object_id=comment.id, + ).first() + is None + ) + def test_it_deletes_notification_on_workout_comment_delete( self, app: Flask, @@ -820,6 +981,29 @@ def test_it_creates_notification_on_comment_like( assert notification.marked_as_read is False assert notification.event_type == 'comment_like' + def test_it_does_creates_notification_on_comment_like_when_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + comment = self.comment_workout(user_2, workout_cycling_user_1) + user_2.update_preferences({"comment_like": False}) + + like = self.like_comment(user_3, comment) + + assert ( + Notification.query.filter_by( + from_user_id=like.user_id, + to_user_id=comment.user_id, + event_object_id=like.id, + ).first() + is None + ) + def test_it_deletes_notification_on_comment_like_delete( self, app: Flask, @@ -1001,6 +1185,30 @@ def test_it_creates_notification_on_mention( assert notification.marked_as_read is False assert notification.event_type == 'mention' + def test_it_does_not_create_notification_on_mention_when_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + user_3.update_preferences({"mention": False}) + comment = self.comment_workout( + user_2, workout_cycling_user_1, text=f"@{user_3.username}" + ) + self.create_mention(user_3, comment) + + assert ( + Notification.query.filter_by( + from_user_id=comment.user_id, + to_user_id=user_3.id, + event_object_id=comment.id, + ).first() + is None + ) + def test_it_does_not_create_notification_when_mentioned_user_is_workout_owner( # noqa self, app: Flask, @@ -1060,6 +1268,58 @@ def test_it_creates_notification_when_mentioned_user_is_workout_owner( # noqa assert notifications[0].marked_as_read is False assert notifications[0].event_type == 'mention' + def test_it_does_not_create_notification_when_mentioned_user_is_workout_owner_and_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + user_1.update_preferences({"mention": False, "workout_comment": False}) + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + + comment = self.comment_workout( + user_2, + workout_cycling_user_1, + text=f"@{user_1.username}", + text_visibility=VisibilityLevel.PUBLIC, + ) + self.create_mention(user_1, comment) + + notifications = Notification.query.filter_by( + from_user_id=comment.user_id, + to_user_id=user_1.id, + ).all() + assert notifications == [] + + def test_it_creates_notification_when_mentioned_user_is_workout_owner_when_only_mention_disabled_in_preferences( # noqa + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + user_1.update_preferences({"mention": False, "workout_comment": True}) + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + comment = self.comment_workout( + user_2, + workout_cycling_user_1, + text=f"@{user_1.username}", + text_visibility=VisibilityLevel.PUBLIC, + ) + self.create_mention(user_1, comment) + + notifications = Notification.query.filter_by( + from_user_id=comment.user_id, + to_user_id=user_1.id, + ).all() + assert len(notifications) == 1 + assert notifications[0].created_at == comment.created_at + assert notifications[0].marked_as_read is False + assert notifications[0].event_type == 'workout_comment' + def test_it_does_not_create_notification_when_mentioned_user_is_parent_comment_owner( # noqa self, app: Flask, diff --git a/fittrackee/tests/users/test_users_service.py b/fittrackee/tests/users/test_users_service.py index 8660e0a04..bb1692323 100644 --- a/fittrackee/tests/users/test_users_service.py +++ b/fittrackee/tests/users/test_users_service.py @@ -784,14 +784,44 @@ def test_created_user_is_inactive(self, app: Flask) -> None: assert new_user.is_active is False assert new_user.confirmation_token is not None - def test_created_user_has_user_role(self, app: Flask) -> None: + @pytest.mark.parametrize('input_role', [{}, {"role": "user"}]) + def test_created_user_has_user_role_when_role_not_provided( + self, app: Flask, input_role: dict + ) -> None: username = random_string() user_manager_service = UserManagerService(username=username) - new_user, _ = user_manager_service.create(email=random_email()) + new_user, _ = user_manager_service.create( + email=random_email(), **input_role + ) assert new_user assert new_user.role == UserRole.USER.value + assert new_user.is_active is False + assert new_user.confirmation_token is not None + + @pytest.mark.parametrize('input_role', ['moderator', 'admin', 'owner']) + def test_it_creates_user_with_given_role( + self, app: Flask, input_role: str + ) -> None: + username = random_string() + user_manager_service = UserManagerService(username=username) + + new_user, _ = user_manager_service.create( + email=random_email(), role=input_role + ) + + assert new_user + assert new_user.role == UserRole[input_role.upper()].value + assert new_user.is_active is not True + assert new_user.confirmation_token is not None + + def test_it_raises_error_when_role_is_invalid(self, app: Flask) -> None: + username = random_string() + user_manager_service = UserManagerService(username=username) + + with pytest.raises(InvalidUserRole): + user_manager_service.create(email=random_email(), role='invalid') def test_created_user_does_not_accept_privacy_policy( self, app: Flask diff --git a/fittrackee/tests/workouts/test_workouts_likes_api_post.py b/fittrackee/tests/workouts/test_workouts_likes_api.py similarity index 56% rename from fittrackee/tests/workouts/test_workouts_likes_api_post.py rename to fittrackee/tests/workouts/test_workouts_likes_api.py index 3261cf164..1b9a44e11 100644 --- a/fittrackee/tests/workouts/test_workouts_likes_api_post.py +++ b/fittrackee/tests/workouts/test_workouts_likes_api.py @@ -1,5 +1,6 @@ import json from datetime import datetime +from unittest.mock import patch import pytest from flask import Flask @@ -56,6 +57,28 @@ def test_it_return_error_when_user_is_suspended( self.assert_403(response) + def test_it_returns_404_when_workout_is_suspended( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PUBLIC + workout_cycling_user_2.suspended_at = datetime.utcnow() + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.post( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + def test_it_returns_404_when_workout_does_not_exist( self, app: Flask, @@ -334,6 +357,28 @@ def test_it_returns_404_when_user_is_not_follower( self.assert_404(response) + def test_it_returns_404_when_workout_is_suspended( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PUBLIC + workout_cycling_user_2.suspended_at = datetime.utcnow() + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.post( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + @pytest.mark.parametrize( 'input_desc,input_workout_level', [ @@ -446,3 +491,295 @@ def test_expected_scopes_are_defined( ) self.assert_response_scope(response, can_access) + + +class TestWorkoutLikesGet(ApiTestCaseMixin, BaseTestMixin): + route = '/api/workouts/{workout_uuid}/likes' + + def test_it_return_error_when_user_is_suspended( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + follow_request_from_user_1_to_user_2: FollowRequest, + ) -> None: + user_2.approves_follow_request_from(user_1) + workout_cycling_user_2.workout_visibility = VisibilityLevel.FOLLOWERS + user_1.suspended_at = datetime.utcnow() + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_403(response) + + def test_it_returns_404_when_workout_does_not_exist( + self, + app: Flask, + user_1: User, + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=self.random_short_id()), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_workout_visibility_is_private( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + follow_request_from_user_1_to_user_2: FollowRequest, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PRIVATE + user_2.approves_follow_request_from(user_1) + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_user_is_not_follower( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.FOLLOWERS + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_404_when_workout_is_suspended( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.FOLLOWERS + workout_cycling_user_2.suspended_at = datetime.utcnow() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + self.assert_404(response) + + def test_it_returns_empty_list_when_no_likes( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + workout_cycling_user_2: Workout, + ) -> None: + workout_cycling_user_2.workout_visibility = VisibilityLevel.PUBLIC + like = WorkoutLike( + user_id=user_1.id, + workout_id=workout_cycling_user_1.id, + ) + db.session.add(like) + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_2.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': False, + 'page': 1, + 'pages': 0, + 'total': 0, + } + + @patch('fittrackee.workouts.workouts.DEFAULT_WORKOUT_LIKES_PER_PAGE', 2) + def test_it_returns_users_who_like_workout( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + user_4: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + for user in [user_2, user_3, user_4]: + like = WorkoutLike( + user_id=user.id, + workout_id=workout_cycling_user_1.id, + ) + db.session.add(like) + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_1.short_id), + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [ + jsonify_dict(user_4.serialize(current_user=user_1)), + jsonify_dict(user_3.serialize(current_user=user_1)), + ] + assert data['pagination'] == { + 'has_next': True, + 'has_prev': False, + 'page': 1, + 'pages': 2, + 'total': 3, + } + + @patch('fittrackee.workouts.workouts.DEFAULT_WORKOUT_LIKES_PER_PAGE', 2) + def test_it_returns_page_2( + self, + app: Flask, + user_1: User, + user_2: User, + user_3: User, + user_4: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + for user in [user_2, user_3, user_4]: + like = WorkoutLike( + user_id=user.id, + workout_id=workout_cycling_user_1.id, + ) + db.session.add(like) + db.session.commit() + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + workout_uuid = workout_cycling_user_1.short_id + + response = client.get( + f"{self.route.format(workout_uuid=workout_uuid)}?page=2", + headers=dict(Authorization=f'Bearer {auth_token}'), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [ + jsonify_dict(user_2.serialize(current_user=user_1)) + ] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': True, + 'page': 2, + 'pages': 2, + 'total': 3, + } + + def test_it_returns_like_when_user_is_not_authenticated( + self, + app: Flask, + user_1: User, + user_2: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + ) -> None: + workout_cycling_user_1.workout_visibility = VisibilityLevel.PUBLIC + like = WorkoutLike( + user_id=user_2.id, + workout_id=workout_cycling_user_1.id, + ) + db.session.add(like) + db.session.commit() + client = app.test_client() + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_1.short_id), + ) + + assert response.status_code == 200 + data = json.loads(response.data.decode()) + assert 'success' in data['status'] + assert data['data']['likes'] == [jsonify_dict(user_2.serialize())] + assert data['pagination'] == { + 'has_next': False, + 'has_prev': False, + 'page': 1, + 'pages': 1, + 'total': 1, + } + + @pytest.mark.parametrize( + 'client_scope, can_access', + {**OAUTH_SCOPES, 'workouts:read': True}.items(), + ) + def test_expected_scopes_are_defined( + self, + app: Flask, + user_1: User, + sport_1_cycling: Sport, + workout_cycling_user_1: Workout, + client_scope: str, + can_access: bool, + ) -> None: + ( + client, + oauth_client, + access_token, + _, + ) = self.create_oauth2_client_and_issue_token( + app, user_1, scope=client_scope + ) + + response = client.get( + self.route.format(workout_uuid=workout_cycling_user_1.short_id), + headers=dict(Authorization=f'Bearer {access_token}'), + ) + + self.assert_response_scope(response, can_access) diff --git a/fittrackee/users/auth.py b/fittrackee/users/auth.py index 280a50f1c..83885ed10 100644 --- a/fittrackee/users/auth.py +++ b/fittrackee/users/auth.py @@ -193,6 +193,8 @@ def register_user() -> Union[Tuple[Dict, int], HttpResponse]: User.role == UserRole.ADMIN.value, User.is_active == True, # noqa ).all(): + if not admin.is_notification_enabled("account_creation"): + continue notification = Notification( from_user_id=new_user.id, to_user_id=admin.id, @@ -324,7 +326,6 @@ def get_authenticated_user_profile( { "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -347,6 +348,15 @@ def get_authenticated_user_profile( "map_visibility": "private", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -395,6 +405,7 @@ def get_authenticated_user_profile( "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -455,7 +466,6 @@ def edit_user(auth_user: User) -> Union[Dict, HttpResponse]: { "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -478,6 +488,15 @@ def edit_user(auth_user: User) -> Union[Dict, HttpResponse]: "map_visibility": "private", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -526,6 +545,7 @@ def edit_user(auth_user: User) -> Union[Dict, HttpResponse]: "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -638,7 +658,6 @@ def update_user_account(auth_user: User) -> Union[Dict, HttpResponse]: { "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -658,6 +677,15 @@ def update_user_account(auth_user: User) -> Union[Dict, HttpResponse]: "map_visibility": "followers_only", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -706,6 +734,7 @@ def update_user_account(auth_user: User) -> Union[Dict, HttpResponse]: "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -874,7 +903,6 @@ def edit_user_preferences(auth_user: User) -> Union[Dict, HttpResponse]: { "data": { "accepted_privacy_policy": true, - "admin": false, "analysis_visibility": "private", "bio": null, "birth_date": null, @@ -897,6 +925,15 @@ def edit_user_preferences(auth_user: User) -> Union[Dict, HttpResponse]: "map_visibility": "followers_only", "nb_sports": 3, "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": true, + "workout_comment": true, + "workout_like": true + } "picture": false, "records": [ { @@ -945,6 +982,7 @@ def edit_user_preferences(auth_user: User) -> Union[Dict, HttpResponse]: "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], + "role": "user", "sports_list": [ 1, 4, @@ -1247,6 +1285,182 @@ def edit_user_sport_preferences( return handle_error_and_return_response(e, db=db) +@auth_blueprint.route('/auth/profile/edit/notifications', methods=['POST']) +@require_auth(scopes=['profile:write']) +def edit_user_notifications_preferences( + auth_user: User, +) -> Union[Dict, HttpResponse]: + """ + Edit authenticated user preferences for UI notifications. + + **Scope**: ``profile:write`` + + **Example request**: + + .. sourcecode:: http + + POST /api/auth/profile/edit/preferences HTTP/1.1 + Content-Type: application/json + + **Example responses**: + + .. sourcecode:: http + + HTTP/1.1 200 OK + Content-Type: application/json + + { + "data": { + "data": { + "accepted_privacy_policy": true, + "analysis_visibility": "private", + "bio": null, + "birth_date": null, + "created_at": "Sun, 14 Jul 2019 14:09:58 GMT", + "date_format": "dd/MM/yyyy", + "display_ascent": true, + "email": "sam@example.com", + "email_to_confirm": null, + "first_name": null, + "followers": 0, + "following": 0, + "hide_profile_in_users_directory": true, + "imperial_units": false, + "is_active": true, + "language": "en", + "last_name": null, + "location": null, + "manually_approves_followers": false, + "map_visibility": "private", + "nb_sports": 3, + "nb_workouts": 6, + "notification_preferences": { + "comment_like": true, + "follow": true, + "follow_request": true, + "follow_request_approved": true, + "mention": false, + "workout_comment": false, + "workout_like": false + } + "picture": false, + "records": [ + { + "id": 9, + "record_type": "AS", + "sport_id": 1, + "user": "sam", + "value": 18, + "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", + "workout_id": "hvYBqYBRa7wwXpaStWR4V2" + }, + { + "id": 10, + "record_type": "FD", + "sport_id": 1, + "user": "sam", + "value": 18, + "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", + "workout_id": "hvYBqYBRa7wwXpaStWR4V2" + }, + { + "id": 13, + "record_type": "HA", + "sport_id": 1, + "user": "Sam", + "value": 43.97, + "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", + "workout_id": "hvYBqYBRa7wwXpaStWR4V2" + }, + { + "id": 11, + "record_type": "LD", + "sport_id": 1, + "user": "sam", + "value": "1:01:00", + "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", + "workout_id": "hvYBqYBRa7wwXpaStWR4V2" + }, + { + "id": 12, + "record_type": "MS", + "sport_id": 1, + "user": "sam", + "value": 18, + "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", + "workout_id": "hvYBqYBRa7wwXpaStWR4V2" + } + ], + "sports_list": [ + 1, + 4, + 6 + ], + "start_elevation_at_zero": false, + "timezone": "Europe/Paris", + "total_ascent": 720.35, + "total_distance": 67.895, + "total_duration": "6:50:27", + "use_dark_mode": null, + "use_raw_gpx_speed": false, + "username": "sam", + "weekm": false, + "workouts_visibility": "private" + }, + "status": "success" + } + + := mandatory_data: + return InvalidPayloadErrorResponse() + if ( + auth_user.role >= UserRole.ADMIN.value + and "account_creation" not in preferences_data + ): + return InvalidPayloadErrorResponse() + + auth_user.update_preferences(preferences_data) + db.session.commit() + + return { + "data": auth_user.serialize(current_user=auth_user, light=False), + "status": "success", + } + + @auth_blueprint.route( '/auth/profile/reset/sports/', methods=['DELETE'] ) diff --git a/fittrackee/users/commands.py b/fittrackee/users/commands.py index 4b3abf3e0..96fbcf9cb 100644 --- a/fittrackee/users/commands.py +++ b/fittrackee/users/commands.py @@ -46,15 +46,22 @@ def users_cli() -> None: f' Supported languages: {", ".join(SUPPORTED_LANGUAGES)}.' ), ) +@click.option( + '--role', type=click.Choice(UserRole.db_choices()), help='Set user role.' +) def create_user( - username: str, email: str, password: Optional[str], lang: Optional[str] + username: str, + email: str, + password: Optional[str], + lang: Optional[str], + role: Optional[str], ) -> None: """Create an active user account.""" with app.app_context(): try: user_manager_service = UserManagerService(username) user, user_password = user_manager_service.create_user( - email=email, password=password, check_email=True + email=email, password=password, check_email=True, role=role ) if user: db.session.add(user) diff --git a/fittrackee/users/constants.py b/fittrackee/users/constants.py index e8396446d..f13806e12 100644 --- a/fittrackee/users/constants.py +++ b/fittrackee/users/constants.py @@ -1,3 +1,78 @@ USER_DATE_FORMAT = 'MM/dd/yyyy' USER_LANGUAGE = 'en' USER_TIMEZONE = 'Europe/Paris' +USER_LINK_TEMPLATE = ( + '
    ' + '{username}' +) + +ADMINISTRATOR_NOTIFICATION_TYPES = [ + 'account_creation', +] +MODERATOR_NOTIFICATION_TYPES = [ + 'report', + 'suspension_appeal', + 'user_warning_appeal', +] +NOTIFICATION_TYPES = ( + ADMINISTRATOR_NOTIFICATION_TYPES + + MODERATOR_NOTIFICATION_TYPES + + [ + 'comment_like', + 'comment_reply', + 'comment_suspension', + 'comment_unsuspension', + 'follow', + 'follow_request', + 'follow_request_approved', + 'mention', + 'user_warning', + 'user_warning_lifting', + 'workout_comment', + 'workout_like', + 'workout_suspension', + 'workout_unsuspension', + ] +) + +NOTIFICATIONS_PREFERENCES_SCHEMA = { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Notifications", + "description": "Preferences for UI notifications", + "type": "object", + "properties": { + "account_creation": { + "type": "boolean", + "default": True, + }, + "comment_like": { + "type": "boolean", + "default": True, + }, + "follow": { + "type": "boolean", + "default": True, + }, + "follow_request": { + "type": "boolean", + "default": True, + }, + "follow_request_approved": { + "type": "boolean", + "default": True, + }, + "mention": { + "type": "boolean", + "default": True, + }, + "workout_comment": { + "type": "boolean", + "default": True, + }, + "workout_like": { + "type": "boolean", + "default": True, + }, + }, + "additionalProperties": False, +} diff --git a/fittrackee/users/models.py b/fittrackee/users/models.py index fe24b7518..df197ce87 100644 --- a/fittrackee/users/models.py +++ b/fittrackee/users/models.py @@ -5,8 +5,9 @@ import jwt from flask import current_app +from jsonschema import validate from sqlalchemy import and_, func -from sqlalchemy.dialects.postgresql import UUID, insert +from sqlalchemy.dialects.postgresql import JSONB, UUID, insert from sqlalchemy.engine.base import Connection from sqlalchemy.event import listens_for from sqlalchemy.ext.hybrid import hybrid_property @@ -29,6 +30,11 @@ from fittrackee.visibility_levels import VisibilityLevel from fittrackee.workouts.models import Workout +from .constants import ( + NOTIFICATION_TYPES, + NOTIFICATIONS_PREFERENCES_SCHEMA, + USER_LINK_TEMPLATE, +) from .exceptions import ( BlockUserException, FollowRequestAlreadyProcessedError, @@ -47,42 +53,6 @@ if TYPE_CHECKING: from fittrackee.reports.models import ReportAction -USER_LINK_TEMPLATE = ( - '' - '{username}' -) - -ADMINISTRATOR_NOTIFICATION_TYPES = [ - 'account_creation', -] - -MODERATOR_NOTIFICATION_TYPES = [ - 'report', - 'suspension_appeal', - 'user_warning_appeal', -] - -NOTIFICATION_TYPES = ( - ADMINISTRATOR_NOTIFICATION_TYPES - + MODERATOR_NOTIFICATION_TYPES - + [ - 'comment_like', - 'comment_reply', - 'comment_suspension', - 'comment_unsuspension', - 'follow', - 'follow_request', - 'follow_request_approved', - 'mention', - 'user_warning', - 'user_warning_lifting', - 'workout_comment', - 'workout_like', - 'workout_suspension', - 'workout_unsuspension', - ] -) - class FollowRequest(BaseModel): """Follow request between two users""" @@ -148,15 +118,21 @@ def on_follow_request_insert( ) -> None: @listens_for(db.Session, 'after_flush', once=True) def receive_after_flush(session: Session, context: Connection) -> None: + to_user = User.query.filter_by( + id=new_follow_request.followed_user_id + ).first() + event_type = ( + 'follow' if new_follow_request.is_approved else 'follow_request' + ) + + if not to_user.is_notification_enabled(event_type): + return + notification = Notification( from_user_id=new_follow_request.follower_user_id, to_user_id=new_follow_request.followed_user_id, created_at=new_follow_request.created_at, - event_type=( - 'follow' - if new_follow_request.is_approved - else 'follow_request' - ), + event_type=event_type, ) session.add(notification) @@ -170,28 +146,50 @@ def on_follow_request_update( @listens_for(db.Session, 'after_flush', once=True) def receive_after_flush(session: Session, context: Connection) -> None: if follow_request.is_approved: - notification_table = Notification.__table__ - connection.execute( - notification_table.update() - .where( - notification_table.c.from_user_id - == follow_request.follower_user_id, - notification_table.c.to_user_id - == follow_request.followed_user_id, - notification_table.c.event_type == 'follow_request', - ) - .values( - event_type='follow', - marked_as_read=False, + if follow_request.to_user.is_notification_enabled("follow"): + follow_request_notification = Notification.query.filter_by( + from_user_id=follow_request.follower_user_id, + to_user_id=follow_request.followed_user_id, + event_type="follow_request", + ).first() + + if follow_request_notification: + notification_table = Notification.__table__ + connection.execute( + notification_table.update() + .where( + notification_table.c.from_user_id + == follow_request.follower_user_id, + notification_table.c.to_user_id + == follow_request.followed_user_id, + notification_table.c.event_type + == 'follow_request', + ) + .values( + event_type='follow', + marked_as_read=False, + ) + ) + else: + follow_notification = Notification( + from_user_id=follow_request.follower_user_id, + to_user_id=follow_request.followed_user_id, + created_at=datetime.utcnow(), + event_type='follow', + ) + session.add(follow_notification) + + if follow_request.from_user.is_notification_enabled( + "follow_request_approved" + ): + notification = Notification( + from_user_id=follow_request.followed_user_id, + to_user_id=follow_request.follower_user_id, + created_at=datetime.utcnow(), + event_type='follow_request_approved', ) - ) - notification = Notification( - from_user_id=follow_request.followed_user_id, - to_user_id=follow_request.follower_user_id, - created_at=datetime.utcnow(), - event_type='follow_request_approved', - ) - session.add(notification) + session.add(notification) + if ( not follow_request.is_approved and follow_request.updated_at is not None @@ -325,6 +323,7 @@ class User(BaseModel): server_default='PRIVATE', nullable=False, ) + notification_preferences = db.Column(JSONB, nullable=True) is_remote = db.Column(db.Boolean, default=False, nullable=False) workouts = db.relationship( @@ -819,6 +818,27 @@ def all_reports_count(self) -> Dict[str, int]: "sanctions_count": result[2], } + def update_preferences(self, updated_preferences: Dict) -> None: + notification_preferences = { + **( + self.notification_preferences + if self.notification_preferences + else {} + ), + **updated_preferences, + } + validate( + instance=notification_preferences, + schema=NOTIFICATIONS_PREFERENCES_SCHEMA, + ) + self.notification_preferences = notification_preferences + db.session.commit() + + def is_notification_enabled(self, notification_type: str) -> bool: + if not self.notification_preferences: + return True + return self.notification_preferences.get(notification_type, True) + def serialize( self, *, @@ -962,6 +982,11 @@ def serialize( self.hide_profile_in_users_directory ), 'sanctions_count': self.sanctions_count, + 'notification_preferences': ( + self.notification_preferences + if self.notification_preferences + else {} + ), }, } diff --git a/fittrackee/users/users_service.py b/fittrackee/users/users_service.py index 192b8941f..fb2a78cac 100644 --- a/fittrackee/users/users_service.py +++ b/fittrackee/users/users_service.py @@ -7,7 +7,12 @@ from fittrackee import db from fittrackee.federation.utils.user import get_user_from_username from fittrackee.reports.models import ReportAction -from fittrackee.users.constants import USER_DATE_FORMAT, USER_TIMEZONE +from fittrackee.users.constants import ( + ADMINISTRATOR_NOTIFICATION_TYPES, + MODERATOR_NOTIFICATION_TYPES, + USER_DATE_FORMAT, + USER_TIMEZONE, +) from fittrackee.users.exceptions import ( InvalidEmailException, InvalidUserException, @@ -21,8 +26,6 @@ UserCreationException, ) from fittrackee.users.models import ( - ADMINISTRATOR_NOTIFICATION_TYPES, - MODERATOR_NOTIFICATION_TYPES, Notification, User, ) @@ -160,6 +163,7 @@ def create_user( email: str, password: Optional[str] = None, check_email: bool = False, + role: Optional[str] = None, ) -> Tuple[Optional[User], Optional[str]]: if not password: password = secrets.token_urlsafe(30) @@ -195,6 +199,12 @@ def create_user( new_user.timezone = USER_TIMEZONE new_user.date_format = USER_DATE_FORMAT new_user.confirmation_token = secrets.token_urlsafe(30) + + if role is not None: + if role not in UserRole.db_choices(): + raise InvalidUserRole() + new_user.role = UserRole[role.upper()].value + db.session.add(new_user) db.session.flush() @@ -204,10 +214,11 @@ def create( self, email: str, password: Optional[str] = None, + role: Optional[str] = None, ) -> Tuple[Optional[User], Optional[str]]: try: new_user, password = self.create_user( - email, password, check_email=True + email, password, check_email=True, role=role ) if new_user: new_user.language = 'en' diff --git a/fittrackee/workouts/models.py b/fittrackee/workouts/models.py index d3367d6fe..68dcff450 100644 --- a/fittrackee/workouts/models.py +++ b/fittrackee/workouts/models.py @@ -1004,6 +1004,7 @@ class WorkoutLike(BaseModel): db.Integer, db.ForeignKey('workouts.id', ondelete="CASCADE"), nullable=False, + index=True, ) user = db.relationship("User", lazy=True) @@ -1036,12 +1037,16 @@ def on_workout_like_insert( ) -> None: @listens_for(db.Session, 'after_flush', once=True) def receive_after_flush(session: Session, context: Connection) -> None: - from fittrackee.users.models import Notification + from fittrackee.users.models import Notification, User workout = Workout.query.filter_by( id=new_workout_like.workout_id ).first() if new_workout_like.user_id != workout.user_id: + to_user = User.query.filter_by(id=workout.user_id).first() + if not to_user.is_notification_enabled('workout_like'): + return + notification = Notification( from_user_id=new_workout_like.user_id, to_user_id=workout.user_id, diff --git a/fittrackee/workouts/workouts.py b/fittrackee/workouts/workouts.py index 98cd2a14c..88f99efd6 100644 --- a/fittrackee/workouts/workouts.py +++ b/fittrackee/workouts/workouts.py @@ -71,6 +71,7 @@ DEFAULT_WORKOUTS_PER_PAGE = 5 MAX_WORKOUTS_PER_PAGE = 100 MAX_WORKOUTS_TO_SEND = 5 +DEFAULT_WORKOUT_LIKES_PER_PAGE = 10 def handle_workout_activities(workout: Workout, activity_type: str) -> None: @@ -2153,6 +2154,108 @@ def undo_workout_like( }, 200 +@workouts_blueprint.route( + '/workouts//likes', methods=['GET'] +) +@require_auth(scopes=['workouts:read'], optional_auth_user=True) +@check_workout(only_owner=False) +def get_workout_likes( + auth_user: Optional[User], workout: Workout, workout_short_id: str +) -> Union[Dict, HttpResponse]: + """ + Get users who like the workout. + + **Example request**: + + .. sourcecode:: http + + GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/likes HTTP/1.1 + + **Example responses**: + + - success: + + .. sourcecode:: http + + HTTP/1.1 200 OK + Content-Type: application/json + + { + "data": { + "likes": [ + { + "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", + "followers": 0, + "following": 0, + "nb_workouts": 1, + "picture": false, + "role": "user", + "suspended_at": null, + "username": "Sam" + } + ] + }, + "status": "success" + } + + - workout not found: + + .. sourcecode:: http + + HTTP/1.1 404 NOT FOUND + Content-Type: application/json + + { + "data": { + "likes": [] + }, + "status": "not found" + } + + :param string workout_short_id: workout short id + + :query integer page: page if using pagination (default: 1) + + :reqheader Authorization: OAuth 2.0 Bearer Token for workout with + ``private`` or ``followers_only`` visibility + + :statuscode 200: ``success`` + :statuscode 401: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 403: + - ``you do not have permissions`` + - ``you do not have permissions, your account is suspended`` + :statuscode 404: ``workout not found`` + + """ + params = request.args.copy() + page = int(params.get('page', 1)) + likes_pagination = ( + User.query.join(WorkoutLike, User.id == WorkoutLike.user_id) + .filter(WorkoutLike.workout_id == workout.id) + .order_by(WorkoutLike.created_at.desc()) + .paginate( + page=page, per_page=DEFAULT_WORKOUT_LIKES_PER_PAGE, error_out=False + ) + ) + users = likes_pagination.items + return { + 'status': 'success', + 'data': { + 'likes': [user.serialize(current_user=auth_user) for user in users] + }, + 'pagination': { + 'has_next': likes_pagination.has_next, + 'has_prev': likes_pagination.has_prev, + 'page': likes_pagination.page, + 'pages': likes_pagination.pages, + 'total': likes_pagination.total, + }, + } + + @workouts_blueprint.route( "/workouts//suspension/appeal", methods=["POST"], diff --git a/fittrackee_client/package.json b/fittrackee_client/package.json index 2f7e74fa8..b113f8239 100644 --- a/fittrackee_client/package.json +++ b/fittrackee_client/package.json @@ -1,6 +1,6 @@ { "name": "fittrackee_client", - "version": "0.9.0b4", + "version": "0.9.0b6", "private": true, "type": "module", "scripts": { diff --git a/fittrackee_client/src/components/Administration/AdminReportActionAppeal.vue b/fittrackee_client/src/components/Administration/AdminReportActionAppeal.vue index e509159f4..60c3ae790 100644 --- a/fittrackee_client/src/components/Administration/AdminReportActionAppeal.vue +++ b/fittrackee_client/src/components/Administration/AdminReportActionAppeal.vue @@ -28,7 +28,11 @@ " @updateValue="updateReason" /> - +
    +
    route.params.workoutId, @@ -476,11 +485,9 @@ .add-comment-reply { margin: 0 0 40px; } - .likes { - .likes-count { - padding-left: $default-padding * 0.3; - font-size: 0.8em; - } + .likes-count { + margin-left: $default-padding * -0.5; + font-size: 0.8em; } } } diff --git a/fittrackee_client/src/components/Common/ErrorMessage.vue b/fittrackee_client/src/components/Common/ErrorMessage.vue index 819559e94..e1cbdd794 100644 --- a/fittrackee_client/src/components/Common/ErrorMessage.vue +++ b/fittrackee_client/src/components/Common/ErrorMessage.vue @@ -1,5 +1,5 @@ @@ -109,8 +113,5 @@ margin: 0 10px; width: 15px; } - .error-message { - margin: $default-margin 0; - } } diff --git a/fittrackee_client/src/components/Notifications/NotificationDetail.vue b/fittrackee_client/src/components/Notifications/NotificationDetail.vue index e3fe802ce..fb6d0bc8f 100644 --- a/fittrackee_client/src/components/Notifications/NotificationDetail.vue +++ b/fittrackee_client/src/components/Notifications/NotificationDetail.vue @@ -248,6 +248,8 @@ } function getIcon(notificationType: TNotificationType): string { switch (notificationType) { + case 'account_creation': + return 'user' case 'follow': case 'follow_request': case 'follow_request_approved': @@ -267,8 +269,10 @@ case 'comment_like': case 'workout_like': return 'heart' - default: + case 'workout_comment': return 'comment' + default: + return 'bell' } } diff --git a/fittrackee_client/src/components/Notifications/Notifications.vue b/fittrackee_client/src/components/Notifications/Notifications.vue index aec6453f8..23b8256d6 100644 --- a/fittrackee_client/src/components/Notifications/Notifications.vue +++ b/fittrackee_client/src/components/Notifications/Notifications.vue @@ -22,6 +22,11 @@ :query="query" /> + @@ -135,8 +140,12 @@ &:hover { background-color: initial; color: var(--app-color); - text-decoration: underline; } } } + .preferences-link { + font-size: 0.9em; + font-style: italic; + margin-left: $default-margin; + } diff --git a/fittrackee_client/src/components/PrivacyPolicyToAccept.vue b/fittrackee_client/src/components/PrivacyPolicyToAccept.vue index d52e15f1c..ad1bdb00d 100644 --- a/fittrackee_client/src/components/PrivacyPolicyToAccept.vue +++ b/fittrackee_client/src/components/PrivacyPolicyToAccept.vue @@ -1,5 +1,5 @@ + + + + diff --git a/fittrackee_client/src/components/User/ProfileDisplay/UsersList.vue b/fittrackee_client/src/components/User/ProfileDisplay/UsersList.vue index bec932cc4..8b01713e7 100644 --- a/fittrackee_client/src/components/User/ProfileDisplay/UsersList.vue +++ b/fittrackee_client/src/components/User/ProfileDisplay/UsersList.vue @@ -1,31 +1,38 @@ diff --git a/fittrackee_client/src/components/User/ProfileEdition/UserNotificationsEdition.vue b/fittrackee_client/src/components/User/ProfileEdition/UserNotificationsEdition.vue new file mode 100644 index 000000000..c6f68420d --- /dev/null +++ b/fittrackee_client/src/components/User/ProfileEdition/UserNotificationsEdition.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/fittrackee_client/src/components/User/ProfileEdition/index.vue b/fittrackee_client/src/components/User/ProfileEdition/index.vue index 092e33a97..696570342 100644 --- a/fittrackee_client/src/components/User/ProfileEdition/index.vue +++ b/fittrackee_client/src/components/User/ProfileEdition/index.vue @@ -38,6 +38,7 @@ 'PICTURE', 'PREFERENCES', 'SPORTS', + 'NOTIFICATIONS', 'EQUIPMENTS', 'PRIVACY-POLICY', ] diff --git a/fittrackee_client/src/components/User/UserCard.vue b/fittrackee_client/src/components/User/UserCard.vue index 5214a982f..f08c640e4 100644 --- a/fittrackee_client/src/components/User/UserCard.vue +++ b/fittrackee_client/src/components/User/UserCard.vue @@ -57,11 +57,9 @@ @@ -84,20 +82,22 @@ authUser: IAuthUserProfile user: IUserLightProfile updatedUser?: string | null - from?: string + from?: string | null hideRelationship?: boolean } - const props = defineProps() + const props = withDefaults(defineProps(), { + from: null, + hideRelationship: false, + }) const { authUser, from, hideRelationship, updatedUser, user } = toRefs(props) const route = useRoute() const { authUserHasModeratorRights } = useAuthUser() + const { errorMessages } = useApp() const emit = defineEmits(['updatedUserRelationship']) - const { errorMessages } = useApp() - const suspensionDate: ComputedRef = computed(() => user.value.suspended_at ? formatDate( diff --git a/fittrackee_client/src/components/User/UserEquipments/EquipmentEdition.vue b/fittrackee_client/src/components/User/UserEquipments/EquipmentEdition.vue index 8d3ebddaa..170f7a4d7 100644 --- a/fittrackee_client/src/components/User/UserEquipments/EquipmentEdition.vue +++ b/fittrackee_client/src/components/User/UserEquipments/EquipmentEdition.vue @@ -98,7 +98,11 @@ /> - +
    @@ -101,6 +106,7 @@ const store = useStore() const { displayOptions } = useApp() + const { errorMessages } = useApp() let query: Reactive = reactive(getQuery(route.query)) const sanctions: ComputedRef = computed( diff --git a/fittrackee_client/src/components/User/UserProfileTabs.vue b/fittrackee_client/src/components/User/UserProfileTabs.vue index f09d6b913..0b8f8cf9e 100644 --- a/fittrackee_client/src/components/User/UserProfileTabs.vue +++ b/fittrackee_client/src/components/User/UserProfileTabs.vue @@ -43,6 +43,7 @@ case 'EQUIPMENTS': case 'FOLLOW-REQUESTS': case 'MODERATION': + case 'NOTIFICATIONS': case 'PREFERENCES': case 'SPORTS': return `/profile${ diff --git a/fittrackee_client/src/components/User/UserRelationships.vue b/fittrackee_client/src/components/User/UserRelationships.vue index b93c5a0c9..5abee81d3 100644 --- a/fittrackee_client/src/components/User/UserRelationships.vue +++ b/fittrackee_client/src/components/User/UserRelationships.vue @@ -24,6 +24,8 @@ :key="user.username" :authUser="authUser" :user="user" + :updatedUser="updatedUser" + @updatedUserRelationship="storeUser" from="relationship" /> @@ -36,6 +38,11 @@

    {{ $t(`user.RELATIONSHIPS.NO_${relationship.toUpperCase()}`) }}

    +
    - +
    @@ -40,6 +41,7 @@ import Pagination from '@/components/Common/Pagination.vue' import UserCard from '@/components/User/UserCard.vue' import UsersNameFilter from '@/components/Users/UsersNameFilter.vue' + import useApp from '@/composables/useApp.ts' import useAuthUser from '@/composables/useAuthUser' import { USERS_STORE } from '@/store/constants' import type { IPagination, TPaginationPayload } from '@/types/api' @@ -62,6 +64,7 @@ const router = useRouter() const { isAuthUserSuspended } = useAuthUser() + const { errorMessages } = useApp() const orderByList: string[] = ['created_at', 'username', 'workouts_count'] const defaultOrderBy = 'created_at' diff --git a/fittrackee_client/src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue b/fittrackee_client/src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue index 755b3b591..95619629c 100644 --- a/fittrackee_client/src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue +++ b/fittrackee_client/src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue @@ -55,10 +55,14 @@ }" aria-hidden="true" /> - + - + @@ -193,9 +197,6 @@ .notes { font-style: italic; } - .error-message { - margin: $default-margin 0; - } .form-buttons { display: flex; margin-top: $default-margin * 0.5; diff --git a/fittrackee_client/src/locales/en/common.json b/fittrackee_client/src/locales/en/common.json index 7c00e8972..8ce467af9 100644 --- a/fittrackee_client/src/locales/en/common.json +++ b/fittrackee_client/src/locales/en/common.json @@ -6,9 +6,11 @@ "CONTACT": "contact", "DAY": "day | days", "DESCRIPTION": "Description", + "DISABLED": "disabled", "DISPLAYED": "Displayed", "DOCUMENTATION": "documentation", "EDITED": "edited", + "ENABLED": "enabled", "HERE": "here", "HIDDEN": "Hidden", "HIDE": "Hide", diff --git a/fittrackee_client/src/locales/en/user.json b/fittrackee_client/src/locales/en/user.json index 05a578e05..6b6430f2e 100644 --- a/fittrackee_client/src/locales/en/user.json +++ b/fittrackee_client/src/locales/en/user.json @@ -6,8 +6,9 @@ "ACTIVE_ACCOUNT": "The account is active", "ACTIVE_USER": "active user | active users", "ALREADY_HAVE_ACCOUNT": "Already have an account?", - "APPEAL_IN_PROGRESS": "Appeal currently being processed.", + "APPEAL": "Appeal", "APPEAL_APPROVED": "Appeal approved.", + "APPEAL_IN_PROGRESS": "Appeal currently being processed.", "APPEAL_REJECTED": "Appeal rejected.", "APPEAL_SUBMITTED": "Appeal submitted.", "CONFIRM_ACCOUNT_DELETION": "Are you sure you want to delete your account? All data will be deleted, this cannot be undone.", @@ -36,7 +37,6 @@ "LOGOUT": "Logout", "LOGOUT_CONFIRMATION": "Are you sure you want to log out?", "LOG_IN": "log in", - "APPEAL": "Appeal", "NEW_PASSWORD": "New password", "NO_SPORT_FOUND": "No sport found.", "NO_USERS_FOUND": "No users found.", @@ -81,6 +81,7 @@ "CREATED_REPORTS": "Created reports", "DATE_FORMAT": "Date display format", "EDIT": "Edit profile", + "EDIT_NOTIFICATION_PREFERENCES": "Edit notification preferences", "EDIT_PREFERENCES": "Edit preferences", "EDIT_SPORTS_PREFERENCES": "Edit sports preferences", "ELEVATION_CHART_START": { @@ -113,6 +114,19 @@ "LATEST_SANCTIONS_RECEIVED": "Latest sanctions received", "LOCATION": "Location", "MONDAY": "Monday", + "NOTIFICATIONS": { + "account_creation": "Someone registers", + "comment_like": "Someone likes your comment", + "comment_reply": "Someone reply to your comment", + "follow": "Someone follows you", + "follow_request": "Someone sends a follow request", + "follow_request_approved": "Your follow request is approved", + "mention": "Someone mentioned you", + "workout_comment": "Someone comments on your workout", + "workout_like": "Someone likes your workout" + }, + "NOTIFICATIONS_EDITION": "Notification preferences edition", + "NOTIFICATION_PREFERENCES": "Notification preferences", "NO_SANCTIONS": "No sanctions", "PICTURE": "Picture", "PICTURE_EDITION": "Picture edition", @@ -134,12 +148,12 @@ "user_warning": "Warning ({date})", "workout_suspension": "Workout suspension ({date})" }, + "SANCTIONS_RECEIVED": "Sanctions received", "SANCTION_APPEAL": { "APPROVED": "your appeal has been approved", "IN_PROGRESS": "your appeal is being processed", "REJECTED": "your appeal has been rejected" }, - "SANCTIONS_RECEIVED": "Sanctions received", "SPORT": { "ACTION": "action", "COLOR": "color", @@ -164,6 +178,7 @@ "EQUIPMENTS": "equipments", "FOLLOW-REQUESTS": "follow requests", "MODERATION": "moderation", + "NOTIFICATIONS": "notifications", "PICTURE": "picture", "PREFERENCES": "preferences", "PRIVACY-POLICY": "privacy policy", @@ -184,13 +199,13 @@ "LABEL": "Units for distance", "METRIC": "Metric system (m, km, m/s, °C)" }, + "USER_RECEIVED_SANCTIONS": "This user received {count} sanction.|This user received {count} sanctions.", "USE_RAW_GPX_SPEED": { "FILTERED_SPEED": "Filtered", "HELP": "If filtered, it excludes extreme values (which may be GPS errors) when calculating the maximum speed.", "LABEL": "GPX max speed strategy", "RAW_SPEED": "Raw" - }, - "USER_RECEIVED_SANCTIONS": "This user received {count} sanction.|This user received {count} sanctions." + } }, "READ_AND_ACCEPT_PRIVACY_POLICY": "I have read and agree to the {0}.", "REGISTER": "Register", @@ -226,9 +241,9 @@ "USERNAME_INFO": "3 to 30 characters required, only alphanumeric characters and the underscore character \"_\" allowed.", "USER_PICTURE": "user picture", "USER_PROFILE": "user profile", + "WARNING_REASON": "Warning reason", "YOU": "you", - "YOU_CAN_APPEAL_ONCE": "You can appeal only once.", - "YOU_HAVE_ACCEPTED_PRIVACY_POLICY": "You have accepted the {0}.", "YOUR_ACCOUNT_HAS_BEEN_SUSPENDED": "Your account has been suspended", - "WARNING_REASON": "Warning reason" + "YOU_CAN_APPEAL_ONCE": "You can appeal only once.", + "YOU_HAVE_ACCEPTED_PRIVACY_POLICY": "You have accepted the {0}." } diff --git a/fittrackee_client/src/locales/en/workouts.json b/fittrackee_client/src/locales/en/workouts.json index a9de0017b..019956599 100644 --- a/fittrackee_client/src/locales/en/workouts.json +++ b/fittrackee_client/src/locales/en/workouts.json @@ -4,6 +4,7 @@ "ASCENT": "ascent", "AVERAGE_SPEED": "average speed", "AVE_SPEED": "ave. speed", + "BACK_TO_COMMENT": "back to comment", "BACK_TO_WORKOUT": "back to workout", "COMMENTS": { "ADD": "add a comment", @@ -59,6 +60,7 @@ "NO_DATA_CLEANING": "data from gpx, without any cleaning", "NO_FILE_PROVIDED": "No file provided", "NO_FOLDER": "no folder inside", + "NO_LIKES": "No likes", "NO_MAP": "No map", "NO_NEXT_SEGMENT": "No next segment", "NO_NEXT_WORKOUT": "No next workout", diff --git a/fittrackee_client/src/locales/fr/common.json b/fittrackee_client/src/locales/fr/common.json index 4ac0013b7..87cec8d34 100644 --- a/fittrackee_client/src/locales/fr/common.json +++ b/fittrackee_client/src/locales/fr/common.json @@ -6,9 +6,11 @@ "CONTACT": "contact", "DAY": "jour | jours", "DESCRIPTION": "Description", + "DISABLED": "désactivé", "DISPLAYED": "Affiché", "DOCUMENTATION": "documentation", "EDITED": "édité", + "ENABLED": "activé", "HERE": "ici", "HIDDEN": "Masqué", "HIDE": "Masquer", diff --git a/fittrackee_client/src/locales/fr/privacy_policy.json b/fittrackee_client/src/locales/fr/privacy_policy.json index eaea8fe81..173920e8b 100644 --- a/fittrackee_client/src/locales/fr/privacy_policy.json +++ b/fittrackee_client/src/locales/fr/privacy_policy.json @@ -21,7 +21,7 @@ "TITLE": "Comment protégeons-nous vos informations ?" }, "INFORMATION_USAGE": { - "CONTENT": "Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- En fonction du niveau de visibilité défini pour les séances et les commentaires (public, personnes qui vous suivent uniquement, privé et utilisateurs mentionnés), d'autres utilisateur·rice·s peuvent les voir et interagir avec eux. **Veuillez garder à l'esprit que l'équipe d'exploitation du serveur ou l'équipe de modération peuvent visualiser les contenus à visibilité restreinte.**\nVous pouvez suivre d'autres personnes pour voir les séances sur votre flux d'activités. Pour interagir, l'utilisateur·rice doit se connecter.\n- Toutes les informations du profil ne sont pas affichées publiquement, à l'exception du nom d'utilisateur, du rôle, de la date d'inscription, du nombre d'abonnées et d'abonnements, de la suspension éventuelle et du nombre de séances.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou des notifications ou confirmer des actions de modification de votre compte.", + "CONTENT": "Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- En fonction du niveau de visibilité défini pour les séances et les commentaires (public, personnes qui vous suivent uniquement, privé et utilisateurs mentionnés), d'autres utilisateur·rice·s peuvent les voir et interagir avec eux. **Veuillez garder à l'esprit que l'équipe d'exploitation du serveur ou l'équipe de modération peuvent visualiser les contenus à visibilité restreinte.**\nVous pouvez suivre d'autres personnes pour voir les séances sur votre flux d'activités. Pour interagir, l'utilisateur·rice doit se connecter.\n- Toutes les informations du profil ne sont pas affichées publiquement, à l'exception du nom d'utilisateur, du rôle, de la date d'inscription, du nombre d'abonnés et d'abonnements, de la suspension éventuelle et du nombre de séances.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou des notifications ou confirmer des actions de modification de votre compte.", "TITLE": "Comment utilisons-nous vos informations ?" }, "SITE_USAGE_BY_CHILDREN": { diff --git a/fittrackee_client/src/locales/fr/user.json b/fittrackee_client/src/locales/fr/user.json index 1c02bf888..7bb7668fe 100644 --- a/fittrackee_client/src/locales/fr/user.json +++ b/fittrackee_client/src/locales/fr/user.json @@ -6,8 +6,9 @@ "ACTIVE_ACCOUNT": "Le compte est actif.", "ACTIVE_USER": "utilisateur actif | utilisateurs actifs", "ALREADY_HAVE_ACCOUNT": "Vous avez déjà un compte ?", - "APPEAL_IN_PROGRESS": "Appel en cours de traitement.", + "APPEAL": "Faire appel", "APPEAL_APPROVED": "Appel approuvé.", + "APPEAL_IN_PROGRESS": "Appel en cours de traitement.", "APPEAL_REJECTED": "Appel rejeté.", "APPEAL_SUBMITTED": "Appel envoyé.", "CONFIRM_ACCOUNT_DELETION": "Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées.", @@ -36,7 +37,6 @@ "LOGOUT": "Se déconnecter", "LOGOUT_CONFIRMATION": "Etes-vous sûr de vouloir vous déconnecter ?", "LOG_IN": "connecter", - "APPEAL": "Faire appel", "NEW_PASSWORD": "Nouveau mot de passe", "NO_SPORT_FOUND": "Aucun sport trouvé.", "NO_USERS_FOUND": "Aucun utilisateur trouvé.", @@ -71,7 +71,6 @@ "WEAK": "faible" }, "PASSWORD_UPDATED": "Votre mot de passe a été mis à jour. Cliquez {0} pour vous connecter.", - "PRIVACY_POLICY_TO_VALIDATE": "Veuillez {0} la politique de confidentialité avant de poursuivre.", "PROFILE": { "ACCOUNT_EDITION": "Mise à jour du compte", @@ -82,6 +81,7 @@ "CREATED_REPORTS": "Signalements créés", "DATE_FORMAT": "Format d'affichage de la date", "EDIT": "Modifier le profil", + "EDIT_NOTIFICATION_PREFERENCES": "Modifier les préférences de notification", "EDIT_PREFERENCES": "Modifier les préférences", "EDIT_SPORTS_PREFERENCES": "Modifier les préférences des sports", "ELEVATION_CHART_START": { @@ -114,6 +114,19 @@ "LATEST_SANCTIONS_RECEIVED": "Dernières sanctions reçues", "LOCATION": "Lieu", "MONDAY": "Lundi", + "NOTIFICATIONS": { + "account_creation": "Quelqu'un s'est enregistré", + "comment_like": "Quelqu'un aime votre commentaire", + "comment_reply": "Quelqu'un a répondu à votre commentaire", + "follow": "Quelqu'un vous suit", + "follow_request": "Quelqu'un vous a envoyé une demande d'abonnement", + "follow_request_approved": "Votre demande d'abonnement a été approuvé", + "mention": "Quelqu'un vous a mentionné", + "workout_comment": "Quelqu'un a commenté votre séance", + "workout_like": "Quelqu'un aime votre séance" + }, + "NOTIFICATIONS_EDITION": "Edition des préférences de notification", + "NOTIFICATION_PREFERENCES": "Préférences de notification", "NO_SANCTIONS": "Pas de sanctions", "PICTURE": "Image de profil", "PICTURE_EDITION": "Mise à jour de l'image de profil", @@ -135,12 +148,12 @@ "user_warning": "Avertissement ({date})", "workout_suspension": "Suspension de séance ({date})" }, + "SANCTIONS_RECEIVED": "Sanctions reçues", "SANCTION_APPEAL": { "APPROVED": "votre appel a été approuvé", "IN_PROGRESS": "votre appel est en cours de traitement", "REJECTED": "votre appel a été rejeté" }, - "SANCTIONS_RECEIVED": "Sanctions reçues", "SPORT": { "ACTION": "action", "COLOR": "couleur", @@ -165,6 +178,7 @@ "EQUIPMENTS": "équipements", "FOLLOW-REQUESTS": "demandes d'abonnement", "MODERATION": "modération", + "NOTIFICATIONS": "notifications", "PICTURE": "image", "PREFERENCES": "préférences", "PRIVACY-POLICY": "politique de confidentialité", @@ -185,13 +199,13 @@ "LABEL": "Unités pour les distances", "METRIC": "Système métrique (m, km, m/s, °C)" }, + "USER_RECEIVED_SANCTIONS": "Cet utilisateur a reçu {count} sanction.|Cet utilisateur a reçu {count} sanctions.", "USE_RAW_GPX_SPEED": { "FILTERED_SPEED": "Filtré", "HELP": "Si filtré, les valeurs extrêmes (qui peuvent être des erreurs GPS) sont exclues lors du calcul de la vitesse maximale.", "LABEL": "Calcul de la vitesse maximale", "RAW_SPEED": "Brut" - }, - "USER_RECEIVED_SANCTIONS": "Cet utilisateur a reçu {count} sanction.|Cet utilisateur a reçu {count} sanctions." + } }, "READ_AND_ACCEPT_PRIVACY_POLICY": "J'ai lu et accepte la {0}.", "REGISTER": "S'inscrire", @@ -227,9 +241,9 @@ "USERNAME_INFO": "3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.", "USER_PICTURE": "photo de l'utilisateur", "USER_PROFILE": "profil de l'utilisateur", + "WARNING_REASON": "Raison de l'avertissement", "YOU": "vous", - "YOU_CAN_APPEAL_ONCE": "Vous ne pouvez faire appel qu'une seule fois.", - "YOU_HAVE_ACCEPTED_PRIVACY_POLICY": "Vous avez accepté la {0}.", "YOUR_ACCOUNT_HAS_BEEN_SUSPENDED": "Votre compte a été suspendu", - "WARNING_REASON": "Raison de l'avertissement" + "YOU_CAN_APPEAL_ONCE": "Vous ne pouvez faire appel qu'une seule fois.", + "YOU_HAVE_ACCEPTED_PRIVACY_POLICY": "Vous avez accepté la {0}." } diff --git a/fittrackee_client/src/locales/fr/workouts.json b/fittrackee_client/src/locales/fr/workouts.json index 09c25e660..37c338954 100644 --- a/fittrackee_client/src/locales/fr/workouts.json +++ b/fittrackee_client/src/locales/fr/workouts.json @@ -4,12 +4,13 @@ "ASCENT": "dénivelé positif", "AVERAGE_SPEED": "vitesse moyenne", "AVE_SPEED": "vitesse moy.", + "BACK_TO_COMMENT": "revenir au commentaire", "BACK_TO_WORKOUT": "revenir à la séance", "COMMENTS": { "ADD": "ajouter un commentaire", "COMMENT": "commentaire | commentaires", "DELETE": "supprimer le commentaire", - "DELETION_CONFIRMATION": "Etes-vous sûr de vouloir supprimer ce commentaire ?", + "DELETION_CONFIRMATION": "Êtes-vous sûr de vouloir supprimer ce commentaire ?", "EDIT": "modifier le commentaire", "LABEL": "commentaire | commentaires", "LIKE_COMMENT": "Liker le commentaire", @@ -37,9 +38,9 @@ "INVALID_DISTANCE": "La distance doit être supérieure à 0", "INVALID_DURATION": "La durée doit être supérieure à 0 secondes", "LATEST_WORKOUTS": "Séances récentes", - "LOAD_MORE_WORKOUT": "Charger les séances suivantes", "LIKES": "like | likes", "LIKE_WORKOUT": "Liker la séance", + "LOAD_MORE_WORKOUT": "Charger les séances suivantes", "MAP": "carte", "MARKDOWN_SYNTAX": "La syntaxe Markdown suivante peut être utilisée : _italique_, **gras**, [lien](https://example.com), ![image](https://example.com/image.png)", "MAX_ALTITUDE": "altitude max", @@ -59,6 +60,7 @@ "NO_DATA_CLEANING": "données issues du fichier gpx, sans correction", "NO_FILE_PROVIDED": "Pas de fichier fourni", "NO_FOLDER": "pas de répertoire", + "NO_LIKES": "Pas de likes", "NO_MAP": "Pas de carte", "NO_NEXT_SEGMENT": "Pas de segment suivant", "NO_NEXT_WORKOUT": "Pas de séance suivante", @@ -136,7 +138,7 @@ "WORKOUT": "séance | séances", "WORKOUT_CHART": "graphe de vitesse et d'altitude de la séance", "WORKOUT_DATE": "date de la séance", - "WORKOUT_DELETION_CONFIRMATION": "Etes-vous sûr de vouloir supprimer cette séance ?", + "WORKOUT_DELETION_CONFIRMATION": "Êtes-vous sûr de vouloir supprimer cette séance ?", "WORKOUT_MAP": "carte de la séance", "ZIP_ARCHIVE": "archive .zip", "ZIP_ARCHIVE_DESCRIPTION": "ou une archive .zip contenant des fichiers .gpx" diff --git a/fittrackee_client/src/router/index.ts b/fittrackee_client/src/router/index.ts index f2a00bcd5..48ca912ad 100644 --- a/fittrackee_client/src/router/index.ts +++ b/fittrackee_client/src/router/index.ts @@ -11,11 +11,13 @@ import AdminSports from '@/components/Administration/AdminSports.vue' import AdminUsers from '@/components/Administration/AdminUsers.vue' import Profile from '@/components/User/ProfileDisplay/index.vue' import UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue' +import UserNotifications from '@/components/User/ProfileDisplay/UserNotifications.vue' import UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue' import UsersList from '@/components/User/ProfileDisplay/UsersList.vue' import ProfileEdition from '@/components/User/ProfileEdition/index.vue' import UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue' import UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue' +import UserNotificationsEdition from '@/components/User/ProfileEdition/UserNotificationsEdition.vue' import UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue' import UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue' import UserPrivacyPolicyValidation from '@/components/User/ProfileEdition/UserPrivacyPolicyValidation.vue' @@ -62,6 +64,7 @@ import UsersView from '@/views/UsersView.vue' import AddWorkout from '@/views/workouts/AddWorkout.vue' import CommentView from '@/views/workouts/CommentView.vue' import EditWorkout from '@/views/workouts/EditWorkout.vue' +import Likes from '@/views/workouts/Likes.vue' import Workout from '@/views/workouts/Workout.vue' import WorkoutsView from '@/views/workouts/WorkoutsView.vue' @@ -210,6 +213,14 @@ const routes: RouteRecordRaw[] = [ title: 'user.PROFILE.TABS.PREFERENCES', }, }, + { + path: 'notifications', + name: 'UserNotifications', + component: UserNotifications, + meta: { + title: 'user.PROFILE.TABS.NOTIFICATIONS', + }, + }, { path: 'sports', name: 'UserSports', @@ -322,24 +333,38 @@ const routes: RouteRecordRaw[] = [ name: 'FollowRequests', component: UsersList, props: { itemType: 'follow-requests' }, + meta: { + title: 'user.PROFILE.TABS.FOLLOW-REQUESTS', + }, }, { path: 'blocked-users', name: 'BlockedUsers', component: UsersList, props: { itemType: 'blocked-users' }, + meta: { + title: 'user.PROFILE.TABS.BLOCKED-USERS', + }, }, { path: 'followers', name: 'AuthUserFollowers', component: UserRelationships, props: { relationship: 'followers' }, + meta: { + title: 'user.RELATIONSHIPS.FOLLOWER', + count: 0, + }, }, { path: 'following', name: 'AuthUserFollowing', component: UserRelationships, props: { relationship: 'following' }, + meta: { + title: 'user.RELATIONSHIPS.FOLLOWING', + count: 0, + }, }, { path: 'suspension', @@ -350,6 +375,9 @@ const routes: RouteRecordRaw[] = [ path: 'moderation', name: 'Moderation', component: UserModeration, + meta: { + title: 'user.PROFILE.TABS.MODERATION', + }, children: [ { path: '', @@ -405,6 +433,14 @@ const routes: RouteRecordRaw[] = [ title: 'user.PROFILE.EDIT_PREFERENCES', }, }, + { + path: 'notifications', + name: 'UserNotificationsEdition', + component: UserNotificationsEdition, + meta: { + title: 'user.PROFILE.EDIT_NOTIFICATIONS', + }, + }, { path: 'sports', name: 'UserSportsEdition', @@ -547,6 +583,17 @@ const routes: RouteRecordRaw[] = [ allowedToSuspendedUser: false, }, }, + { + path: '/workouts/:workoutId/likes', + name: 'WorkoutLikes', + component: Likes, + props: { objectType: 'workout' }, + meta: { + title: 'workouts.LIKES', + withoutChecks: true, + allowedToSuspendedUser: false, + }, + }, { path: '/workouts/:workoutId/edit', name: 'EditWorkout', @@ -578,6 +625,17 @@ const routes: RouteRecordRaw[] = [ withoutChecks: true, }, }, + { + path: '/workouts/:workoutId/comments/:commentId/likes', + name: 'WorkoutCommentLikes', + component: Likes, + props: { objectType: 'comment' }, + meta: { + title: 'workouts.LIKES', + withoutChecks: true, + allowedToSuspendedUser: false, + }, + }, { path: '/comments/:commentId', name: 'Comment', @@ -587,6 +645,17 @@ const routes: RouteRecordRaw[] = [ withoutChecks: true, }, }, + { + path: '/comments/:commentId/likes', + name: 'CommentLikes', + component: Likes, + props: { objectType: 'comment' }, + meta: { + title: 'workouts.LIKES', + withoutChecks: true, + allowedToSuspendedUser: false, + }, + }, { path: '/workouts/add', name: 'AddWorkout', diff --git a/fittrackee_client/src/store/modules/authUser/actions.ts b/fittrackee_client/src/store/modules/authUser/actions.ts index 6124bd958..7c33ba544 100644 --- a/fittrackee_client/src/store/modules/authUser/actions.ts +++ b/fittrackee_client/src/store/modules/authUser/actions.ts @@ -21,6 +21,7 @@ import type { import type { IRootState } from '@/store/modules/root/types' import { deleteUserAccount } from '@/store/modules/users/actions' import type { IPagePayload } from '@/types/api' +import type { TNotificationPreferences } from '@/types/notifications.ts' import type { IFollowRequestsActionPayload, ILoginOrRegisterData, @@ -35,6 +36,7 @@ import type { IUserSportPreferencesPayload, IUserSportPreferencesResetPayload, IUserAppealPayload, + IGetUserProfilePayload, } from '@/types/user' import { handleError } from '@/utils' @@ -66,7 +68,9 @@ export const actions: ActionTree & AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, window.localStorage.authToken ) - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, true) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, { + updateUI: true, + }) } // after logout in another tab if ( @@ -89,7 +93,7 @@ export const actions: ActionTree & window.localStorage.setItem('authToken', token) context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token) context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) .then(() => router.push('/')) } else { handleError(context, null) @@ -112,7 +116,7 @@ export const actions: ActionTree & context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true) if (payload.refreshUser) { context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) .then(() => { return router.push('/profile/edit/account') }) @@ -128,7 +132,7 @@ export const actions: ActionTree & }, [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE]( context: ActionContext, - updateUI: boolean = false + payload: IGetUserProfilePayload ): void { context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES) authApi @@ -149,7 +153,7 @@ export const actions: ActionTree & USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS, res.data.data ) - if (profileNotLoaded || updateUI) { + if (profileNotLoaded || payload.updateUI) { if (res.data.data.language) { context.dispatch( ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, @@ -161,13 +165,16 @@ export const actions: ActionTree & res.data.data.use_dark_mode ) } - context.commit( - ROOT_STORE.MUTATIONS.UPDATE_DISPLAY_OPTIONS, - res.data.data - ) - context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS) - context.dispatch(EQUIPMENTS_STORE.ACTIONS.GET_EQUIPMENTS) - context.dispatch(EQUIPMENTS_STORE.ACTIONS.GET_EQUIPMENT_TYPES) + + if (!('light' in payload) || !payload.light) { + context.commit( + ROOT_STORE.MUTATIONS.UPDATE_DISPLAY_OPTIONS, + res.data.data + ) + context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS) + context.dispatch(EQUIPMENTS_STORE.ACTIONS.GET_EQUIPMENTS) + context.dispatch(EQUIPMENTS_STORE.ACTIONS.GET_EQUIPMENT_TYPES) + } if (res.data.data.suspended_at === null) { store.dispatch(NOTIFICATIONS_STORE.ACTIONS.GET_UNREAD_STATUS) @@ -262,7 +269,9 @@ export const actions: ActionTree & window.localStorage.setItem('authToken', token) context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token) context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, true) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, { + updateUI: true, + }) .then(() => router.push( typeof data.redirectUrl === 'string' ? data.redirectUrl : '/' @@ -341,7 +350,7 @@ export const actions: ActionTree & context .dispatch(AUTH_USER_STORE.ACTIONS.GET_FOLLOW_REQUESTS) .then(() => - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) ) } } else { @@ -506,7 +515,7 @@ export const actions: ActionTree & .then((res) => { if (res.data.status === 'success') { context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) .then(() => router.push('/profile')) } else { handleError(context, null) @@ -533,7 +542,7 @@ export const actions: ActionTree & .then((res) => { if (res.status === 204) { context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) .then(() => router.push('/profile')) } else { handleError(context, null) @@ -604,7 +613,7 @@ export const actions: ActionTree & .then((res) => { if (res.data.status === 'success') { context - .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) .then(() => router.push('/profile')) } else { handleError(context, null) @@ -704,4 +713,28 @@ export const actions: ActionTree & context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false) ) }, + [AUTH_USER_STORE.ACTIONS.UPDATE_USER_NOTIFICATIONS_PREFERENCES]( + context: ActionContext, + payload: TNotificationPreferences + ): void { + context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES) + context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true) + authApi + .post('auth/profile/edit/notifications', payload) + .then((res) => { + if (res.data.status === 'success') { + context.commit( + AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE, + res.data.data + ) + router.push('/profile/notifications') + } else { + handleError(context, null) + } + }) + .catch((error) => handleError(context, error)) + .finally(() => + context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false) + ) + }, } diff --git a/fittrackee_client/src/store/modules/authUser/enums.ts b/fittrackee_client/src/store/modules/authUser/enums.ts index 6b3c9b540..d637a0eb6 100644 --- a/fittrackee_client/src/store/modules/authUser/enums.ts +++ b/fittrackee_client/src/store/modules/authUser/enums.ts @@ -24,6 +24,7 @@ export enum AuthUserActions { UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE', UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE', UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES', + UPDATE_USER_NOTIFICATIONS_PREFERENCES = 'UPDATE_USER_NOTIFICATIONS_PREFERENCES', UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES', } diff --git a/fittrackee_client/src/store/modules/authUser/types.ts b/fittrackee_client/src/store/modules/authUser/types.ts index 5df7058ca..9fbfbf2d5 100644 --- a/fittrackee_client/src/store/modules/authUser/types.ts +++ b/fittrackee_client/src/store/modules/authUser/types.ts @@ -8,6 +8,7 @@ import type { import { AUTH_USER_STORE } from '@/store/constants' import type { IRootState } from '@/store/modules/root/types' import type { IPagePayload } from '@/types/api' +import type { TNotificationPreferences } from '@/types/notifications.ts' import type { IAuthUserProfile, IFollowRequestsActionPayload, @@ -26,6 +27,7 @@ import type { IExportRequest, IUserReportAction, IUserAppealPayload, + IGetUserProfilePayload, } from '@/types/user' export interface IAuthUserState { @@ -57,7 +59,7 @@ export interface IAuthUserActions { [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE]( context: ActionContext, - updateUI: boolean + payload: IGetUserProfilePayload ): void [AUTH_USER_STORE.ACTIONS.GET_ACCOUNT_SUSPENSION]( @@ -164,6 +166,11 @@ export interface IAuthUserActions { context: ActionContext, actionId: string ): void + + [AUTH_USER_STORE.ACTIONS.UPDATE_USER_NOTIFICATIONS_PREFERENCES]( + context: ActionContext, + payload: TNotificationPreferences + ): void } export interface IAuthUserGetters { diff --git a/fittrackee_client/src/store/modules/users/actions.ts b/fittrackee_client/src/store/modules/users/actions.ts index c7776a648..0ce6d878a 100644 --- a/fittrackee_client/src/store/modules/users/actions.ts +++ b/fittrackee_client/src/store/modules/users/actions.ts @@ -261,7 +261,9 @@ export const actions: ActionTree & IUsersActions = { : USERS_STORE.MUTATIONS.UPDATE_USER_IN_RELATIONSHIPS, res.data.data.users[0] ) - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, { + light: true, + }) } else { handleError(context, null) } diff --git a/fittrackee_client/src/store/modules/workouts/actions.ts b/fittrackee_client/src/store/modules/workouts/actions.ts index 43dafad57..78f2bfe50 100644 --- a/fittrackee_client/src/store/modules/workouts/actions.ts +++ b/fittrackee_client/src/store/modules/workouts/actions.ts @@ -2,7 +2,12 @@ import type { ActionContext, ActionTree } from 'vuex' import authApi from '@/api/authApi' import router from '@/router' -import { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants' +import { + AUTH_USER_STORE, + ROOT_STORE, + WORKOUTS_STORE, + USERS_STORE, +} from '@/store/constants' import type { IRootState } from '@/store/modules/root/types' import { WorkoutsMutations } from '@/store/modules/workouts/enums' import type { @@ -19,6 +24,7 @@ import type { ICommentPayload, IComment, IAppealPayload, + ILikesPayload, } from '@/types/workouts' import { handleError } from '@/utils' @@ -204,7 +210,7 @@ export const actions: ActionTree & .delete(`workouts/${payload.workoutId}`) .then(() => { context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT) - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) router.push('/') }) .catch((error) => { @@ -223,7 +229,7 @@ export const actions: ActionTree & authApi .patch(`workouts/${payload.workoutId}`, payload.data) .then(() => { - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) context .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, { workoutId: payload.workoutId, @@ -302,7 +308,7 @@ export const actions: ActionTree & }) .then((res) => { if (res.data.status === 'created') { - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) const workout: IWorkout = res.data.data.workouts[0] router.push( res.data.data.workouts.length === 1 @@ -328,7 +334,7 @@ export const actions: ActionTree & .post('workouts/no_gpx', payload) .then((res) => { if (res.data.status === 'created') { - context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE) + context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) const workout: IWorkout = res.data.data.workouts[0] router.push(`/workouts/${workout.id}`) } @@ -523,4 +529,29 @@ export const actions: ActionTree & context.commit(WORKOUTS_STORE.MUTATIONS.SET_APPEAL_LOADING, null) ) }, + [WORKOUTS_STORE.ACTIONS.GET_LIKES]( + context: ActionContext, + payload: ILikesPayload + ): void { + context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES) + authApi + .get( + `${payload.objectType}s/${payload.objectId}/likes?page=${payload.page}` + ) + .then((res) => { + if (res.data.status === 'success') { + context.commit( + USERS_STORE.MUTATIONS.UPDATE_USERS, + res.data.data.likes + ) + context.commit( + USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, + res.data.pagination + ) + } + }) + .catch((error) => { + handleError(context, error) + }) + }, } diff --git a/fittrackee_client/src/store/modules/workouts/enums.ts b/fittrackee_client/src/store/modules/workouts/enums.ts index a93cc1096..9445a3dea 100644 --- a/fittrackee_client/src/store/modules/workouts/enums.ts +++ b/fittrackee_client/src/store/modules/workouts/enums.ts @@ -14,6 +14,7 @@ export enum WorkoutsActions { GET_WORKOUT_DATA = 'GET_WORKOUT_DATA', GET_WORKOUT_COMMENT = 'GET_WORKOUT_COMMENT', GET_WORKOUT_COMMENTS = 'GET_WORKOUT_COMMENTS', + GET_LIKES = 'GET_LIKES', LIKE_COMMENT = 'LIKE_COMMENT', LIKE_WORKOUT = 'LIKE_WORKOUT', MAKE_APPEAL = 'MAKE_COMMENT_APPEAL', diff --git a/fittrackee_client/src/store/modules/workouts/state.ts b/fittrackee_client/src/store/modules/workouts/state.ts index 9369c6a2c..44dc04baa 100644 --- a/fittrackee_client/src/store/modules/workouts/state.ts +++ b/fittrackee_client/src/store/modules/workouts/state.ts @@ -23,4 +23,5 @@ export const workoutsState: IWorkoutsState = { }, success: null, appealLoading: null, + likes: [], } diff --git a/fittrackee_client/src/store/modules/workouts/types.ts b/fittrackee_client/src/store/modules/workouts/types.ts index 47235f528..6c0dd7615 100644 --- a/fittrackee_client/src/store/modules/workouts/types.ts +++ b/fittrackee_client/src/store/modules/workouts/types.ts @@ -8,6 +8,7 @@ import type { import { WORKOUTS_STORE } from '@/store/constants' import type { IRootState } from '@/store/modules/root/types' import type { IPagination } from '@/types/api' +import type { IUserLightProfile } from '@/types/user.ts' import type { ICommentForm, IWorkout, @@ -23,6 +24,7 @@ import type { IWorkoutContentPayload, IWorkoutContentType, IWorkoutContentEdition, + ILikesPayload, } from '@/types/workouts' export interface IWorkoutsState { @@ -34,6 +36,7 @@ export interface IWorkoutsState { workoutContent: IWorkoutContentEdition success: null | string appealLoading: null | string + likes: IUserLightProfile[] } export interface IWorkoutsActions { @@ -117,6 +120,10 @@ export interface IWorkoutsActions { context: ActionContext, workoutId: string ): void + [WORKOUTS_STORE.ACTIONS.GET_LIKES]( + context: ActionContext, + payload: ILikesPayload + ): void } export interface IWorkoutsGetters { diff --git a/fittrackee_client/src/types/notifications.ts b/fittrackee_client/src/types/notifications.ts index cc9e06039..a6f15f36a 100644 --- a/fittrackee_client/src/types/notifications.ts +++ b/fittrackee_client/src/types/notifications.ts @@ -2,23 +2,26 @@ import type { IReportForModerator } from '@/types/reports' import type { IUserReportAction, IUserProfile } from '@/types/user' import type { IComment, IWorkout } from '@/types/workouts' -export type TNotificationType = +export type TNotificationTypeWithPreferences = | 'account_creation' | 'comment_like' | 'comment_reply' - | 'comment_suspension' - | 'comment_unsuspension' | 'follow' | 'follow_request' | 'follow_request_approved' | 'mention' + | 'workout_comment' + | 'workout_like' + +export type TNotificationType = + | TNotificationTypeWithPreferences + | 'comment_suspension' + | 'comment_unsuspension' | 'report' | 'suspension_appeal' | 'user_warning' | 'user_warning_appeal' | 'user_warning_lifting' - | 'workout_comment' - | 'workout_like' | 'workout_suspension' | 'workout_unsuspension' @@ -46,3 +49,7 @@ export interface INotificationPayload { markedAsRead: boolean currentQuery: INotificationsPayload } + +export type TNotificationPreferences = { + [key in TNotificationTypeWithPreferences]: boolean | undefined +} diff --git a/fittrackee_client/src/types/user.ts b/fittrackee_client/src/types/user.ts index 06251cd6e..8090e150f 100644 --- a/fittrackee_client/src/types/user.ts +++ b/fittrackee_client/src/types/user.ts @@ -2,6 +2,7 @@ import type { LocationQueryValue } from 'vue-router' import type { IPagePayload, TPaginationPayload } from '@/types/api' import type { TLanguage } from '@/types/locales' +import type { TNotificationPreferences } from '@/types/notifications.ts' import type { IComment, IRecord, IWorkout } from '@/types/workouts' export type TRelationshipAction = 'follow' | 'unfollow' | 'block' | 'unblock' @@ -64,6 +65,7 @@ export interface IAuthUserProfile extends IUserProfile { language: TLanguage | null manually_approves_followers: boolean map_visibility: TVisibilityLevels + notification_preferences: TNotificationPreferences nb_sports: number records: IRecord[] sports_list: number[] @@ -89,7 +91,10 @@ export interface IUserAccountPayload { password: string new_password?: string } - +export interface IGetUserProfilePayload { + updateUI?: boolean + light?: boolean +} export interface IUserAccountUpdatePayload { token: LocationQueryValue | LocationQueryValue[] refreshUser?: boolean diff --git a/fittrackee_client/src/types/workouts.ts b/fittrackee_client/src/types/workouts.ts index d2de04965..5411e45c7 100644 --- a/fittrackee_client/src/types/workouts.ts +++ b/fittrackee_client/src/types/workouts.ts @@ -264,6 +264,12 @@ export interface ICommentPayload { commentId: string } +export interface ILikesPayload { + objectId: string + objectType: 'comment' | 'workout' + page: number +} + export interface IAppealPayload { objectId: string objectType: 'comment' | 'workout' diff --git a/fittrackee_client/src/utils/notifications.ts b/fittrackee_client/src/utils/notifications.ts new file mode 100644 index 000000000..0b83d69e6 --- /dev/null +++ b/fittrackee_client/src/utils/notifications.ts @@ -0,0 +1,19 @@ +import type { TNotificationTypeWithPreferences } from '@/types/notifications.ts' +import type { TUserRole } from '@/types/user.ts' + +export const getNotificationTypes = (role: TUserRole) => { + const types: TNotificationTypeWithPreferences[] = [ + 'follow', + 'follow_request', + 'follow_request_approved', + 'workout_like', + 'workout_comment', + 'comment_reply', + 'comment_like', + 'mention', + ] + if (role === 'admin' || role === 'owner') { + types.push('account_creation') + } + return types +} diff --git a/fittrackee_client/src/views/Dashboard.vue b/fittrackee_client/src/views/Dashboard.vue index 1e816e006..b6fe95cb9 100644 --- a/fittrackee_client/src/views/Dashboard.vue +++ b/fittrackee_client/src/views/Dashboard.vue @@ -37,7 +37,7 @@
    store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)) + onBeforeMount(() => + store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE, {}) + ) diff --git a/fittrackee_client/tests/unit/utils/notifications.spec.ts b/fittrackee_client/tests/unit/utils/notifications.spec.ts new file mode 100644 index 000000000..3f7ff30a8 --- /dev/null +++ b/fittrackee_client/tests/unit/utils/notifications.spec.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from 'vitest' + +import { TUserRole } from '../../../src/types/user' + +import { getNotificationTypes } from '@/utils/notifications' + +describe('getNotificationTypes', () => { + it('it returns notification type when user has no administration rights', () => { + const roles: TUserRole[] = ['user', 'moderator'] + + roles.forEach((role) => { + expect(getNotificationTypes(role)).toStrictEqual([ + 'follow', + 'follow_request', + 'follow_request_approved', + 'workout_like', + 'workout_comment', + 'comment_reply', + 'comment_like', + 'mention', + ]) + }) + }) + it('it returns notification type when user has administration rights', () => { + const roles: TUserRole[] = ['admin', 'owner'] + + roles.forEach((role) => { + expect(getNotificationTypes(role)).toStrictEqual([ + 'follow', + 'follow_request', + 'follow_request_approved', + 'workout_like', + 'workout_comment', + 'comment_reply', + 'comment_like', + 'mention', + 'account_creation', + ]) + }) + }) +}) diff --git a/poetry.lock b/poetry.lock index 56b89192d..89abf92f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -974,6 +974,41 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "jsonschema" +version = "4.23.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + [[package]] name = "limits" version = "3.14.1" @@ -1910,6 +1945,21 @@ async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\ hiredis = ["hiredis (>=3.0.0)"] ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"] +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.32.3" @@ -1950,6 +2000,118 @@ typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.1 [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rpds-py" +version = "0.22.3" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, + {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, + {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, + {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, + {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, + {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, + {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, + {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, + {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, + {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, + {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, + {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, +] + [[package]] name = "ruff" version = "0.8.4" @@ -2842,4 +3004,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "d6bc747262d1c7cb8e5ab989cd30eb7ebf56f951d7e2042166a0f51b4d4136a0" +content-hash = "52100c434b33ba1a277fb3cc5044efdd4467b811caf8fad15e6b6126bec10f2a" diff --git a/pyproject.toml b/pyproject.toml index de1c37b7e..2519d5352 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fittrackee" -version = "0.9.0b4" +version = "0.9.0b6" description = "Self-hosted outdoor workout/activity tracker" authors = ["SamR1"] license = "AGPL-3.0-only" @@ -43,6 +43,7 @@ flask-sqlalchemy = "3.0.5" gpxpy = "=1.6.2" gunicorn = "^23.0.0" humanize = "^4.11.0" +jsonschema = "^4.23.0" nh3 = "^0.2.19" psycopg2-binary = "^2.9.10" pycryptodome = "^3.15"