From f5244985b43c61f518452e10067c2af4b20beb83 Mon Sep 17 00:00:00 2001 From: gluap Date: Sat, 20 Jan 2024 20:21:31 +0000 Subject: [PATCH] deploy: openbikesensor/openbikesensor.github.io@63b299b050f3f49d0e51c86ed299506800262a3c --- 404.html | 2 +- aliases/index.html | 2 +- blog/2021/03/23/openbikesensor-goes-lgpl/index.html | 2 +- .../03/28/das-projekt-openbikesensor-im-ersten/index.html | 2 +- .../24/der-openbikesensor-im-deutschlandfunk/index.html | 2 +- .../06/17/openbikesensor-zu-gast-im-achter/index.html | 2 +- .../index.html" | 2 +- .../index.html" | 2 +- .../index.html | 2 +- blog/index.html | 2 +- community/index.html | 2 +- contact/index.html | 2 +- device/index.html | 2 +- docs/classic/about/index.html | 2 +- docs/classic/build-instructions/index.html | 2 +- docs/classic/build-instructions/v00.03.12/index.html | 2 +- docs/classic/case/color-prints/index.html | 2 +- docs/classic/case/index.html | 2 +- docs/classic/case/parts/index.html | 2 +- docs/classic/case/printing/index.html | 2 +- docs/classic/case/variants/index.html | 2 +- docs/classic/index.html | 2 +- docs/classic/parts/index.html | 2 +- docs/classic/pcb/index.html | 2 +- docs/classic/troubleshooting/index.html | 2 +- docs/firmware/flash-linux/index.html | 2 +- docs/firmware/flash-macos/index.html | 2 +- docs/firmware/flash-python/index.html | 2 +- docs/firmware/flash-windows/index.html | 2 +- docs/firmware/index.html | 2 +- docs/index.html | 2 +- docs/other/collective-order/index.html | 2 +- docs/other/index.html | 2 +- docs/other/privacy-zones/index.html | 2 +- docs/other/visualization/index.html | 2 +- docs/user-guide/configuration/index.html | 2 +- docs/user-guide/index.html | 2 +- docs/user-guide/mounting/index.html | 2 +- docs/user-guide/quickstart/index.html | 2 +- docs/user-guide/recording/index.html | 2 +- docs/user-guide/simra/index.html | 2 +- docs/user-guide/track-upload/index.html | 2 +- faq/build/ich-bin-neuling/index.html | 2 +- faq/build/index.html | 2 +- .../was-kostet-ein-ueberholabstandsmesser/index.html | 2 +- .../index.html | 2 +- faq/build/woher-bekomme-ich-eine-platine/index.html | 2 +- faq/data/index.html | 2 +- faq/data/warum-sollte-es-mehrere-portale-geben/index.html | 2 +- faq/data/welche-daten-werden-aufgezeichnet/index.html | 2 +- faq/data/wie-funktionieren-privacy-zones/index.html | 2 +- faq/data/wie-werden-die-daten-ausgewertet/index.html | 2 +- faq/data/wie-werden-die-daten-verarbeitet/index.html | 2 +- faq/index.html | 2 +- index.html | 2 +- ...5818d40b87d8950b2550959a4b468eeb1557ac7fd121855efd.js} | 8 ++++---- map.en/index.html | 2 +- map/index.html | 2 +- verein/index.html | 2 +- 59 files changed, 62 insertions(+), 62 deletions(-) rename js/{vendor.22ba252866fcfe49eb42a9c35f6ce02fd0329acaa49ff01304d83c75477ae919.js => vendor.c78611e59e61c25818d40b87d8950b2550959a4b468eeb1557ac7fd121855efd.js} (58%) diff --git a/404.html b/404.html index 966b8a7c..83773e9f 100644 --- a/404.html +++ b/404.html @@ -1,2 +1,2 @@ 404 Page not found | OpenBikeSensor -

Not found

Oops! This page doesn't exist. Try going back to our home page.

You can learn how to make a 404 page like this in Custom 404 Pages.

\ No newline at end of file +

Not found

Oops! This page doesn't exist. Try going back to our home page.

You can learn how to make a 404 page like this in Custom 404 Pages.

\ No newline at end of file diff --git a/aliases/index.html b/aliases/index.html index 38910d2f..a46a8b2a 100644 --- a/aliases/index.html +++ b/aliases/index.html @@ -1,3 +1,3 @@ Kurzlinks | OpenBikeSensor
\ No newline at end of file +sind:
SeiteAlias
Hinweise für Sammelbestellungenhttps://test.openbikesensor.org/docs/classic/general/collective-order
Schnellstart-Anleitunghttps://test.openbikesensor.org/start
Montage des Sensors am Fahrradhttps://test.openbikesensor.org/montage
Bauteilehttps://test.openbikesensor.org/bauteile
Bauteilehttps://test.openbikesensor.org/bauteile/v00.03.12
Bauteilehttps://test.openbikesensor.org/docs/hardware/v00.03.12/parts
Platinehttps://test.openbikesensor.org/docs/hardware/general/pcb
Gehäusehttps://test.openbikesensor.org/docs/hardware/general/case
OpenBikeSensor Classichttps://test.openbikesensor.org/docs/hardware
Bauanleitung (OpenBikeSensor Classic 1.0.0)https://test.openbikesensor.org/bauanleitung/classic
Bauanleitung (OpenBikeSensor Classic 1.0.0)https://test.openbikesensor.org/bauanleitung
Firmwarehttps://test.openbikesensor.org/flash
Bauanleitung für den OpenBikeSensor v00.03.12https://test.openbikesensor.org/bauanleitung/v00.03.12
Bauanleitung für den OpenBikeSensor v00.03.12https://test.openbikesensor.org/docs/hardware/v00.03.12/build-instructions
Communityhttps://test.openbikesensor.org/kontakt
Communityhttps://test.openbikesensor.org/slack
Karte der Initiativenhttps://test.openbikesensor.org/map
Kontakthttps://test.openbikesensor.org/kontakt
Maphttps://test.openbikesensor.org/en/map
OpenBikeSensor e. V.https://test.openbikesensor.org/ev
\ No newline at end of file diff --git a/blog/2021/03/23/openbikesensor-goes-lgpl/index.html b/blog/2021/03/23/openbikesensor-goes-lgpl/index.html index 3640cff2..fe283bd0 100644 --- a/blog/2021/03/23/openbikesensor-goes-lgpl/index.html +++ b/blog/2021/03/23/openbikesensor-goes-lgpl/index.html @@ -34,4 +34,4 @@ Vorteile, die Open-Source-Projekte genießen, die es voranbringen.

Wenn du mehr zum Thema Open Source, Freiheit von Software und Informationen wissen möchtest, schau dich doch einmal bei der Free Software Foundation um.

Werde auch du auch Teil des OpenBikeSensors! Dank -Open-Source-Lizenz ist das einfach und unkompliziert möglich.

\ No newline at end of file +Open-Source-Lizenz ist das einfach und unkompliziert möglich.

\ No newline at end of file diff --git a/blog/2021/03/28/das-projekt-openbikesensor-im-ersten/index.html b/blog/2021/03/28/das-projekt-openbikesensor-im-ersten/index.html index 71e3407b..e69d3b83 100644 --- a/blog/2021/03/28/das-projekt-openbikesensor-im-ersten/index.html +++ b/blog/2021/03/28/das-projekt-openbikesensor-im-ersten/index.html @@ -18,4 +18,4 @@ Ausstrahlung kammen immer mehr neue Mitglieder in den Slack, die durch diese öffentliche Aufmerksamkeit von OpenBikeSensor erfahren haben, und nun Teil der immer weiter wachsenden Community geworden sind.

Den ganzen Fernsehbeitrag haben wir hier eingebunden, und auf swr.de -gibt es dazu auch noch einen schriftlichen Artikel.

\ No newline at end of file +gibt es dazu auch noch einen schriftlichen Artikel.

\ No newline at end of file diff --git a/blog/2021/05/24/der-openbikesensor-im-deutschlandfunk/index.html b/blog/2021/05/24/der-openbikesensor-im-deutschlandfunk/index.html index 53178951..126a8a11 100644 --- a/blog/2021/05/24/der-openbikesensor-im-deutschlandfunk/index.html +++ b/blog/2021/05/24/der-openbikesensor-im-deutschlandfunk/index.html @@ -8,4 +8,4 @@ Wir freuen uns sehr über diesen Beitrag.">

Der OpenBikeSensor im Deutschlandfunk

Bereits am 09. Mai 2021 gab es einen Beitrag über den OpenBikeSensor in der Sendung Netzbasteln im Deutschlandfunk Nova. Der Deutschlandfunk-Nova-Reporter Moritz Metz hat selbst einen OpenBikeSensor zusammengebaut und diesen “live” auf einer Bundesstraße in Brandenburg getestet.

Der ganze Beitrag findet sich auf deutschlandfunknova.de. -Auch auf Twitter hat Moritz Metz fleißig über den OpenBikeSensor berichtet.

Wir freuen uns sehr über diesen Beitrag.

\ No newline at end of file +Auch auf Twitter hat Moritz Metz fleißig über den OpenBikeSensor berichtet.

Wir freuen uns sehr über diesen Beitrag.

\ No newline at end of file diff --git a/blog/2021/06/17/openbikesensor-zu-gast-im-achter/index.html b/blog/2021/06/17/openbikesensor-zu-gast-im-achter/index.html index a228bc8d..1cd9a1cd 100644 --- a/blog/2021/06/17/openbikesensor-zu-gast-im-achter/index.html +++ b/blog/2021/06/17/openbikesensor-zu-gast-im-achter/index.html @@ -3,4 +3,4 @@ Achter, das Fahrrad-Magazin für Stuttgart und Umgebung Ein Mal monatlich geht im Freien Radio Stuttgart das Fahrrad-Magazin “Achter” auf Sendung. Es ist ein Kessel “Buntes” zum Thema Fahrrad aus Berichten, Gesprächen mit Akteuren und viel Musik.">

OpenBikeSensor zu Gast im "Achter"

Zum internationalen Tag des Fahrrads (03.06.) hatte sich Thomas Albrecht, Fahrrad-Enthusiast aus Esslingen am Neckar und Moderator beim Freien Radio Stuttgart, einen Abstandsmesser von uns geliehen. Aus seiner Begeisterung für diesen Testlauf heraus lud er (unter anderen) Franziska zum Fahrrad-Magazin ein.

Achter, das Fahrrad-Magazin für Stuttgart und Umgebung

Ein Mal monatlich geht im Freien Radio Stuttgart das Fahrrad-Magazin “Achter” auf Sendung. Es ist ein Kessel “Buntes” zum Thema Fahrrad aus Berichten, Gesprächen mit Akteuren und viel Musik.

In der Juni-Ausgabe, stellt das Team zum Einen das “Radbündnis Filder” vor [ ab 0'41’’ ]. Hier diskutieren Evelyn Sindermann und Thomas die typischen Probleme, die sich an Gemarkungsgrenzen in Sachen Fahrrad-Infrastruktur ergeben. Evelyn berichtet, wie das Aktionsbündnis vorgeht und erste Erfolge in Aussicht stehen.

Anschließend fasst Constanze die zentralen Resultate der Mitmach-Aktion “Besser Radfahren” des SWR und des Klimabündnisses zusammen [ 11'45’’ ]. Bei dieser Aktion wurden die Rückmeldungen von über 10.000en Radfahrenden von Experten der Hochschule Karlsruhe ausgewertet. Die Daten stehen anonymisiert für eigene Auswertungen zur Verfügung: Download Ergebnisse der Mitmach-Aktion #BesserRadfahren.

Alle Beiträge des SWR zur Aktion findet Ihr unter www.swr.de/radfahren.

Der dritte Teil des “Achter” [ab 13'33’’] widmet sich dann dem OpenBikeSensor. Thomas unterhält sich mit Franziska Köppe über das zivilgesellschaftliche Forschungsprojekt. Sie sprechen über die Vision, die Franziska dabei vor Augen hat, über den aktuellen Stand und wohin die weiteren Entwicklungen gehen könnten. Sie diskutieren objektive und subjektive Sicherheit im Straßenverkehr. Sie hinterfragen geeignete Strategien, nicht zu eng überholt zu werden. Und wie individuelle wie kollektive Forschungsvorhaben in Familien, in Schulen oder beim Arbeitgeber aussehen könnten.

Zu hören ist das Gespräch via freie-radios.net unter “Achter” Juni 2021.

Viel Spaß beim Hören!

\ No newline at end of file +

OpenBikeSensor zu Gast im "Achter"

Zum internationalen Tag des Fahrrads (03.06.) hatte sich Thomas Albrecht, Fahrrad-Enthusiast aus Esslingen am Neckar und Moderator beim Freien Radio Stuttgart, einen Abstandsmesser von uns geliehen. Aus seiner Begeisterung für diesen Testlauf heraus lud er (unter anderen) Franziska zum Fahrrad-Magazin ein.

Achter, das Fahrrad-Magazin für Stuttgart und Umgebung

Ein Mal monatlich geht im Freien Radio Stuttgart das Fahrrad-Magazin “Achter” auf Sendung. Es ist ein Kessel “Buntes” zum Thema Fahrrad aus Berichten, Gesprächen mit Akteuren und viel Musik.

In der Juni-Ausgabe, stellt das Team zum Einen das “Radbündnis Filder” vor [ ab 0'41’’ ]. Hier diskutieren Evelyn Sindermann und Thomas die typischen Probleme, die sich an Gemarkungsgrenzen in Sachen Fahrrad-Infrastruktur ergeben. Evelyn berichtet, wie das Aktionsbündnis vorgeht und erste Erfolge in Aussicht stehen.

Anschließend fasst Constanze die zentralen Resultate der Mitmach-Aktion “Besser Radfahren” des SWR und des Klimabündnisses zusammen [ 11'45’’ ]. Bei dieser Aktion wurden die Rückmeldungen von über 10.000en Radfahrenden von Experten der Hochschule Karlsruhe ausgewertet. Die Daten stehen anonymisiert für eigene Auswertungen zur Verfügung: Download Ergebnisse der Mitmach-Aktion #BesserRadfahren.

Alle Beiträge des SWR zur Aktion findet Ihr unter www.swr.de/radfahren.

Der dritte Teil des “Achter” [ab 13'33’’] widmet sich dann dem OpenBikeSensor. Thomas unterhält sich mit Franziska Köppe über das zivilgesellschaftliche Forschungsprojekt. Sie sprechen über die Vision, die Franziska dabei vor Augen hat, über den aktuellen Stand und wohin die weiteren Entwicklungen gehen könnten. Sie diskutieren objektive und subjektive Sicherheit im Straßenverkehr. Sie hinterfragen geeignete Strategien, nicht zu eng überholt zu werden. Und wie individuelle wie kollektive Forschungsvorhaben in Familien, in Schulen oder beim Arbeitgeber aussehen könnten.

Zu hören ist das Gespräch via freie-radios.net unter “Achter” Juni 2021.

Viel Spaß beim Hören!

\ No newline at end of file diff --git "a/blog/2021/11/12/startschuss-f\303\274r-neues-openbikesensor-forum/index.html" "b/blog/2021/11/12/startschuss-f\303\274r-neues-openbikesensor-forum/index.html" index 469d7b8c..0f674bc4 100644 --- "a/blog/2021/11/12/startschuss-f\303\274r-neues-openbikesensor-forum/index.html" +++ "b/blog/2021/11/12/startschuss-f\303\274r-neues-openbikesensor-forum/index.html" @@ -25,4 +25,4 @@ Koordinierung, sowie 1:1-Gespräche. Wir werden hier vermutlich eine Lösung mit Matrix anstreben, aber die genaue Umsetzung fehlt noch.

Vorerst bleibt der Slack wo er ist, aber wenn das Forum für die passenden Themen gut angenommen wird, werden wir hoffentlich bald einige Channel -archivieren können.

Wir sehen uns im Forum!

\ No newline at end of file +archivieren können.

Wir sehen uns im Forum!

\ No newline at end of file diff --git "a/blog/2021/12/07/gr\303\274ndung-des-gemeinn\303\274tzigen-vereins-openbikesensor/index.html" "b/blog/2021/12/07/gr\303\274ndung-des-gemeinn\303\274tzigen-vereins-openbikesensor/index.html" index c46cc658..cbc27f8a 100644 --- "a/blog/2021/12/07/gr\303\274ndung-des-gemeinn\303\274tzigen-vereins-openbikesensor/index.html" +++ "b/blog/2021/12/07/gr\303\274ndung-des-gemeinn\303\274tzigen-vereins-openbikesensor/index.html" @@ -44,4 +44,4 @@ IT-Infrastruktur, die im Moment auf verschiedene Personen verteilt sind. Nicht alles davon muss sich jetzt ändern, aber einiges wird. Diese Website zum Beispiel wird vermutlich in der Zukunft vom Verein übernommen, aber nach wie -vor von der Community bearbeitet.

Mehr Infos…

wird es in Zukunft auf der neuen Unterseite geben.

\ No newline at end of file +vor von der Community bearbeitet.

Mehr Infos…

wird es in Zukunft auf der neuen Unterseite geben.

\ No newline at end of file diff --git a/blog/2022/02/17/openbikesensor-mit-deutschem-fahrradpreis-ausgezeichnet/index.html b/blog/2022/02/17/openbikesensor-mit-deutschem-fahrradpreis-ausgezeichnet/index.html index 9bb1bf44..7c8a4cf5 100644 --- a/blog/2022/02/17/openbikesensor-mit-deutschem-fahrradpreis-ausgezeichnet/index.html +++ b/blog/2022/02/17/openbikesensor-mit-deutschem-fahrradpreis-ausgezeichnet/index.html @@ -8,4 +8,4 @@ Das sind nicht nur technische Themen (Entwicklung und Dokumentation), sondern auch die Organisation der Community, von Hardwarebestellungen, und nicht zu vergessen die Kommunikation mit Entscheidungsträger:innen der Lokalpolitik und Medienvertreter:innen. Melde dich gerne bei uns im Forum oder schau dich auf dieser Website um, um mehr über das Projekt zu erfahren! Auf der Karte kannst du sehen, ob es in deiner Nähe schon Initativen gibt.

Besonders gefragt sind im Moment Python-, Embedded- oder Webentwickler:innen sowie Data Scientists. Wenn du dich hier auskennst und Interesse hast, deine Fähigkeiten im Sinne einer wissenschaftlichen Untersuchung der Verkehrswende einzusetzen, können wir auf jeden Fall deine Hilfe gebrauchen! -Melde dich im Forum, bei Matrix, oder direkt auf GitHub, und hilf uns, die Auswertung der gesammelten Daten wieder einen großen Schritt voranzubringen!

\ No newline at end of file +Melde dich im Forum, bei Matrix, oder direkt auf GitHub, und hilf uns, die Auswertung der gesammelten Daten wieder einen großen Schritt voranzubringen!

\ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 4baf9f8d..8b78ea37 100644 --- a/blog/index.html +++ b/blog/index.html @@ -5,4 +5,4 @@ https://forum.openbikesensor.org Da wir uns aus verschiedenen Gründen von Slack verabschieden müssen und wollen, waren …

Weiterlesen

  • OpenBikeSensor zu Gast im "Achter"

    17.06.2021 in Blog

    Zum internationalen Tag des Fahrrads (03.06.) hatte sich Thomas Albrecht, Fahrrad-Enthusiast aus Esslingen am Neckar und Moderator beim Freien Radio Stuttgart, einen Abstandsmesser von uns geliehen. Aus seiner Begeisterung für diesen Testlauf heraus …

    Weiterlesen

  • Der OpenBikeSensor im Deutschlandfunk

    24.05.2021 in Blog

    Bereits am 09. Mai 2021 gab es einen Beitrag über den OpenBikeSensor in der Sendung Netzbasteln im Deutschlandfunk Nova. Der Deutschlandfunk-Nova-Reporter Moritz Metz hat selbst einen OpenBikeSensor zusammengebaut und diesen “live” auf …

    Weiterlesen

  • Das Projekt OpenBikeSensor im Ersten

    28.03.2021 in Blog

    Am 26. März 2021 hat die ARD im Magazin „Brisant” einen Beitrag des SWR zum Thema Überholabstände zu Radfahrenden ausgestrahlt, mit dabei unser Projekt. Der Beitrag beginnt mit erschreckenden Bildern von Überholvorgängen um das Problem zu …

    Weiterlesen

  • OpenBikeSensor goes LGPL

    23.03.2021 in Blog

    Als Open-Source-Projekt freuen wir uns, bekanntgeben zu können, dass wir uns auf eine gemeinsame Lizenz für unsere bestehenden und zukünftigen Software-, Design- und Dokumentationswerke geeinigt haben. -Nach langer Diskussion hat sich die Community …

    Weiterlesen

  • \ No newline at end of file +Nach langer Diskussion hat sich die Community …

    Weiterlesen

    \ No newline at end of file diff --git a/community/index.html b/community/index.html index 63f88dc7..39099bb4 100644 --- a/community/index.html +++ b/community/index.html @@ -20,4 +20,4 @@ das sehr nutzerfreundliche Chatclients bietet - wenn du Slack und Konsorten bedienen kannst, kannst auch einen Matrix Client bedienen.

    Früher haben wir hierfür Slack verwendet - Falls du dort durch die Archive blättern willst, kannst du uns im Forum ansprechen - noch kann man dort -‘rein schauen.

    \ No newline at end of file +‘rein schauen.

    \ No newline at end of file diff --git a/contact/index.html b/contact/index.html index 9ec719c9..de425d6b 100644 --- a/contact/index.html +++ b/contact/index.html @@ -13,4 +13,4 @@ Vereinsanschrift.

    Kontakt per E-Mail

    Wenn du gar nicht weiter weißt, kannst du allgemeine Anfragen auch an senden. Bitte versuche dein Glück jedoch zunächst bei der Community. Vertreter:innen der Presse wenden sich bitte an .

    Diese Postfächer werden von der Community verwaltet und empfangene Anfragen unter Umständen zur Diskussion im Forum oder über andere Kanäle veröffentlicht. -Vertraulich zu behandelnde Inhalte nimmt der Vorstand (siehe oben) entgegen.

    \ No newline at end of file +Vertraulich zu behandelnde Inhalte nimmt der Vorstand (siehe oben) entgegen.

    \ No newline at end of file diff --git a/device/index.html b/device/index.html index df963541..23b189c3 100644 --- a/device/index.html +++ b/device/index.html @@ -8,4 +8,4 @@ Varianten.

    OpenBikeSensor Lite

    In Entwicklung
    • klein und leicht
    • minimaler Bauaufwand
    • wird mit Android-Handy und App kombiniert
    • sehr kostengünstig
    • wetterfest

    Entwicklung verfolgen

    OpenBikeSensor Pro

    In Entwicklung -
    • voller Funktionsumfang ohne Handy
    • bestückt bestellbar
    • wetterfest

    Entwicklung verfolgen

    \ No newline at end of file +

    Entwicklung verfolgen

    \ No newline at end of file diff --git a/docs/classic/about/index.html b/docs/classic/about/index.html index 0668e273..c7ffb4e1 100644 --- a/docs/classic/about/index.html +++ b/docs/classic/about/index.html @@ -44,4 +44,4 @@ und Bestelllisten, nur eine “Standard-Variante”. Diese ist zur Zeit:

    Alternativen, wie alte Versionen oder andere Gehäuse, verlinken Aktive im Forum oder auf GitHub. Dort kannst du dich gern umschauen, falls du eine Anpassung wünschst und diese nicht selbst erfinden möchtest – vielleicht hat das ja schon -irgendwer getan.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +irgendwer getan.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/build-instructions/index.html b/docs/classic/build-instructions/index.html index 476f70d1..8b1c6893 100644 --- a/docs/classic/build-instructions/index.html +++ b/docs/classic/build-instructions/index.html @@ -387,4 +387,4 @@ Sensorboard anschließen, den Sensor vom Deckel in das entferntere (Anschluss über dem ESP32).
  • Akku einbauen

  • Konfiguration des Sensors:

  • Montage und Testfahrt mit dem Fahrrad.

  • Akku und Ultraschallsensor an Deckel montieren ('Up'-Pfeil beachten)Ultraschallsensoren einsteckenLadebuchse (USB-C) ohne Gewalt in die Aussparung einfädelnPCB festschraubenHalterung und Zugentlastung festschraubenGPS-Deckel festschraubenDeckel festschraubenFertig!

    Bauanleitung für den OpenBikeSensor v00.03.12

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +weiterführende Anleitungen zu Themen wie Montage, Konfiguration und Aufzeichnung.


    Bauanleitung für den OpenBikeSensor v00.03.12

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/build-instructions/v00.03.12/index.html b/docs/classic/build-instructions/v00.03.12/index.html index b7f04750..5a71d2e8 100644 --- a/docs/classic/build-instructions/v00.03.12/index.html +++ b/docs/classic/build-instructions/v00.03.12/index.html @@ -197,4 +197,4 @@ Sensorboard anschließen, den Sensor vom Deckel in das entferntere (Anschluss über dem ESP32).
  • Akku einbauen
  • Konfiguration des Sensors:
  • Montage und Testfahrt mit dem Fahrrad.
  • Akku und Ultraschallsensor an Deckel montieren ('Up'-Pfeil beachten)Ultraschallsensoren einsteckenLadebuchse (USB-C) ohne Gewalt in die Aussparung einfädelnPCB festschraubenHalterung und Zugentlastung festschraubenGPS-Deckel festschraubenDeckel festschraubenFertig!
    Zuletzt geändert 16.12.2023: more rework of solder manual (88f0f59)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +weiterführende Anleitungen zu Themen wie Montage, Konfiguration und Aufzeichnung.

    Zuletzt geändert 16.12.2023: more rework of solder manual (88f0f59)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/case/color-prints/index.html b/docs/classic/case/color-prints/index.html index ee60cf18..9ea401f5 100644 --- a/docs/classic/case/color-prints/index.html +++ b/docs/classic/case/color-prints/index.html @@ -14,4 +14,4 @@ export/logo/OpenBikeSensor/.

    OpenSCAD Logo Generator

    Die Anleitung hierfür folgt demnächst. Möchtest du jetzt schon dein eigenes Logo auf einen OpenBikeSensor drucken? Bestimmt wird dir im Forum geholfen!

    Mehrfarbendruck

    Zu diesem Thema haben wir noch keine ausführliche Dokumentation, aber es gibt einen Diskussionsfaden im Forum. Vielleicht hilft dir das schon weiter, -ansonsten kannst du gern dort deine Fragen und Ideen einbringen:

    https://forum.openbikesensor.org/t/mehrfarbiger-gehaeusedruck/111


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +ansonsten kannst du gern dort deine Fragen und Ideen einbringen:

    https://forum.openbikesensor.org/t/mehrfarbiger-gehaeusedruck/111


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/case/index.html b/docs/classic/case/index.html index d3c519f6..07697794 100644 --- a/docs/classic/case/index.html +++ b/docs/classic/case/index.html @@ -19,4 +19,4 @@ 3D-Druck-Dienstleister eine Option für dich. Diese drucken Teile nach deinen Dateien als Auftragsarbeit. Preisgünstige Anbieter nehmen für ein komplettes OpenBikeSensor-Gehäuse ca. 20-30 €. Wenn du dich mit anderen zu -Erfahrungen hiermit austauschen möchtest, ist das Forum der richtige Ort!


    Gehäusedruck

    Gehäusebauteile

    Gehäusevarianten

    Logo-Druck (mehrfarbig)


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +Erfahrungen hiermit austauschen möchtest, ist das Forum der richtige Ort!


    Gehäusedruck

    Gehäusebauteile

    Gehäusevarianten

    Logo-Druck (mehrfarbig)


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/case/parts/index.html b/docs/classic/case/parts/index.html index 653ddd3f..d57ade6b 100644 --- a/docs/classic/case/parts/index.html +++ b/docs/classic/case/parts/index.html @@ -26,4 +26,4 @@ STLMounting/SeatPostMount
    Die Sattelstützenhalterung.OpenSCAD, STLMounting/StandardMountAdapter
    Wird am Hauptgehäuse montiert und ermöglicht das Aufschieben auf die Schienen der Halterungen. Wirkt ebenfalls als Zugsicherung für das Displaykabel am Hauptgehäuse.OpenSCAD, STLMounting/TopTubeMount
    Die Halterung für das Oberrohr.OpenSCAD, -STL
    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +STL
    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/classic/case/printing/index.html b/docs/classic/case/printing/index.html index 0fdbc70f..39f86442 100644 --- a/docs/classic/case/printing/index.html +++ b/docs/classic/case/printing/index.html @@ -110,4 +110,4 @@ entfernt werden.

    1. Schlechte Positionierung erzeugt Überhänge (rot)2. Richtiges Positionieren ist wichtig3. In der Vorschau werden bereits in Rot Überhänge angezeigt4. Support einschalten5. Die zusätzliche Supportstruktur ist nach dem Slicing in der Vorschau sichtbar

    Fehlerhafte Drucke

    Einige Fehler traten während der Drucke auf:

    Support fehlt, Düse vom 2. Extruder verstopft

    Brüchige Verbindung, vermutlich Druckdichte (Infill) zu gering

    Weitere Anleitungen

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +verschiedenen Halterungen und für das Displaygehäuse gezeigt.
    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/case/variants/index.html b/docs/classic/case/variants/index.html index e35eb5b8..492efcd6 100644 --- a/docs/classic/case/variants/index.html +++ b/docs/classic/case/variants/index.html @@ -40,4 +40,4 @@ neu erstellen, hilft vorher ein make clean. Diese Bauteile werden dann nach export/... exportiert und überschreiben die dort vorhandenen STL-Dateien. Es dauert jedoch eine Weile die ganzen Geometrien zu berechnen, erwarte etwa 2-20 -Minuten, je nachdem wie schnell dein Rechner ist.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +Minuten, je nachdem wie schnell dein Rechner ist.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/index.html b/docs/classic/index.html index d7a848b7..d47c3ce9 100644 --- a/docs/classic/index.html +++ b/docs/classic/index.html @@ -1,3 +1,3 @@ OpenBikeSensor Classic | OpenBikeSensor
    -

    OpenBikeSensor Classic


    Überblick

    Der OpenBikeSensor Classic ist das Originalgerät, das seit 2018 in ehrenamtlicher Arbeit von vielen Beteiligten als Open Hardware Design entworfen und entwickelt wird.

    Bauteile

    Diese Seite listet alle Bauteile auf, die bestellt oder hergestellt werden müssen, um einen OpenBikeSensor Classic zusammenzubauen.

    Platine

    Die Hauptplatine des OpenBikeSensor Classic verbindet alle Module und elektronisch Einzelbauteile miteinander. Hier beschreiben wir, wie du eine solche Platine bekommst.

    Gehäuse

    In das Gehäuse des OpenBikeSensor Classic werden die elektronischen Komponenten eingebaut. Es wird im 3D-Druck-Verfahren selbst gefertigt.

    Bauanleitung (OpenBikeSensor Classic 1.0.0)

    Sobald der Bausatz für den OpenBikeSensor Classic zusammengestellt ist, kann anhand dieser Anleitung der Bau begonnen werden. Der Zusammenbau besteht aus einer Menge Lötarbeit, sowie dem Test der Elektronik und dem Einbau in das Gehäuse.

    Fehlersuche

    Dieser Bereich enthält Anleitungen und Links zu Informationen, die bei bekannten Schwierigkeiten und Problemen Abhilfe schaffen könnten.

    Zuletzt geändert 06.02.2023: Fix menu for classic (9fbbdaa)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +

    OpenBikeSensor Classic


    Überblick

    Der OpenBikeSensor Classic ist das Originalgerät, das seit 2018 in ehrenamtlicher Arbeit von vielen Beteiligten als Open Hardware Design entworfen und entwickelt wird.

    Bauteile

    Diese Seite listet alle Bauteile auf, die bestellt oder hergestellt werden müssen, um einen OpenBikeSensor Classic zusammenzubauen.

    Platine

    Die Hauptplatine des OpenBikeSensor Classic verbindet alle Module und elektronisch Einzelbauteile miteinander. Hier beschreiben wir, wie du eine solche Platine bekommst.

    Gehäuse

    In das Gehäuse des OpenBikeSensor Classic werden die elektronischen Komponenten eingebaut. Es wird im 3D-Druck-Verfahren selbst gefertigt.

    Bauanleitung (OpenBikeSensor Classic 1.0.0)

    Sobald der Bausatz für den OpenBikeSensor Classic zusammengestellt ist, kann anhand dieser Anleitung der Bau begonnen werden. Der Zusammenbau besteht aus einer Menge Lötarbeit, sowie dem Test der Elektronik und dem Einbau in das Gehäuse.

    Fehlersuche

    Dieser Bereich enthält Anleitungen und Links zu Informationen, die bei bekannten Schwierigkeiten und Problemen Abhilfe schaffen könnten.

    Zuletzt geändert 06.02.2023: Fix menu for classic (9fbbdaa)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/parts/index.html b/docs/classic/parts/index.html index e3f89154..474196d5 100644 --- a/docs/classic/parts/index.html +++ b/docs/classic/parts/index.html @@ -52,4 +52,4 @@ Maker Space / Fab Lab sicherlich herumliegen hat. Eventuell musst du also nicht jedes dieser Werkzeuge kaufen, wenn du eines ausleihen kannst.

    Verbrauchsgüter

    Die meisten dieser Artikel gibt’s in jedem Elektroniklabor, wenn du also in einem Maker Space oder ähnlichem arbeitest, kannst du sicher kleine Mengen -hiervon bekommen ohne die große Packung kaufen zu müssen.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +hiervon bekommen ohne die große Packung kaufen zu müssen.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/pcb/index.html b/docs/classic/pcb/index.html index 8176e324..1f5562ac 100644 --- a/docs/classic/pcb/index.html +++ b/docs/classic/pcb/index.html @@ -21,4 +21,4 @@ folgende Layoutparameter unterstützt sind. In der Regel listet jeder Hersteller auf der Website diese Informationen auf, und die Minimal- und Maximalgrößen dürfen nicht unter- bzw. überschritten werden, sonst könnte die Herstellung -fehlschlagen.

    Wir verwenden in unseren Designs:

    Gerber-Dateien

    TODO: Wo sind die Dateien zu finden?

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +fehlschlagen.

    Wir verwenden in unseren Designs:

    Gerber-Dateien

    TODO: Wo sind die Dateien zu finden?

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/classic/troubleshooting/index.html b/docs/classic/troubleshooting/index.html index 8609a9a3..5f8a3a1d 100644 --- a/docs/classic/troubleshooting/index.html +++ b/docs/classic/troubleshooting/index.html @@ -11,4 +11,4 @@ Funktioniert es mit der SD-Karte des anderen OpenBikeSensors, gibt es ein Problem mit der SD-Karte.

    Konnte die SD-Karte als Fehlerquelle ausgeschlossen werden, sollten die Lötstellen des SD-Boards (und die korrespondierenden Lötstellen an der ESP32 Sockelleiste) geprüft werden. Die Datenleitungen SD_CD/CS, SD_CLK/CLK, SD_DAT0/MISO und SD_CMD/MOSI liegen auf den Pins am ESP, die mit D5,D18,D19 und D23 beschriftet sind und können mit einem Multimeter durchgepiepst werden.

    In manchen Fällen kann es auch vorkommen, dass eine SD-Karte verwendet wird, die den alten SD-Standard nicht mehr unterstützt, der vom OpenBikeSensor genutzt wird. Liegt keine “als funktionierend bekannte” SD-Karte vor, kann man das am einfachsten durch Einsatz einer möglichst alten (aber noch funktionierenden) SD-Karte prüfen, - z.B. aus einem alten Handy, MP3-Player, Raspberry Pi…, da ältere SD-Karten den Standard mit höherer Wahrscheinlichkeit unterstützen. -Die SD-Karte muss natürlich auch FAT32 formatiert werden, um vom OpenBikeSensor genutzt zu werden.

    GPS

    Denke daran, dass das GPS Modul nur ein paar Euro kostet - im Notfall ist ein Tausch des GPS-Moduls also kein finanzieller Beinbruch.

    Ultraschallsensoren

    Phantom Messungen

    Wenn die Kabel falsch herum gecrimpt sind, kommt es oft zu Störungen am Ultraschallsensor - diese äußern sich durch häufige Messwerte, auch wenn gar kein Objekt Ultraschall reflektieren kann.

    Mögliche Ursachen:

    Keine Messung

    Falls die oberen beiden Ursachen ausgeschlossen werden können, hilft manchmal die Anleitung zur Kalibrierung


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +Die SD-Karte muss natürlich auch FAT32 formatiert werden, um vom OpenBikeSensor genutzt zu werden.

    GPS

    Denke daran, dass das GPS Modul nur ein paar Euro kostet - im Notfall ist ein Tausch des GPS-Moduls also kein finanzieller Beinbruch.

    Ultraschallsensoren

    Phantom Messungen

    Wenn die Kabel falsch herum gecrimpt sind, kommt es oft zu Störungen am Ultraschallsensor - diese äußern sich durch häufige Messwerte, auch wenn gar kein Objekt Ultraschall reflektieren kann.

    Mögliche Ursachen:

    Keine Messung

    Falls die oberen beiden Ursachen ausgeschlossen werden können, hilft manchmal die Anleitung zur Kalibrierung


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/firmware/flash-linux/index.html b/docs/firmware/flash-linux/index.html index 8dfe033b..b7d635cd 100644 --- a/docs/firmware/flash-linux/index.html +++ b/docs/firmware/flash-linux/index.html @@ -49,4 +49,4 @@

    Und das Kommando esptool durch esptool.py ersetzen.

    Führt auch keiner dieser Aufrufe zum Erfolg, melde dich im Forum (https://forum.openbikesensor.org), wir finden gemeinsam eine Lösung.

    Versionsupdates

    Versionsupdates können in weiterer Folge über die Weboberfläche des OpenBikeSensors erfolgen und nicht mehr durch den oben angeführten, doch recht komplizierten Vorgang.

    Jetzt ist dein OpenBikeSensor einsatzbereit und du kannst mit der Konfiguration fortfahren!

    Bei Problemen

    Wenn du keine Schreibberechtigung hast, kannst du den Dateimodus des Geräts ändern (oder das Kommando als root ausführen):

    sudo chmod 0x666 /dev/ttyUSB0
     

    Wenn du öfter mit dem ESP32 arbeitest, installiere dir entsprechende udev-Regeln.

    Sollte alles fehlschlagen, und du noch Fragen haben oder weitere Informationen suchen, findest -du in der Community immer Hilfe.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +du in der Community immer Hilfe.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/firmware/flash-macos/index.html b/docs/firmware/flash-macos/index.html index c949adf7..f5f112a8 100644 --- a/docs/firmware/flash-macos/index.html +++ b/docs/firmware/flash-macos/index.html @@ -33,4 +33,4 @@

    Bei Problemen

    Wenn du keine Schreibberechtigung hast, kannst du den Dateimodus des Geräts ändern (oder das Kommando als root ausführen):

    sudo chmod 0x777 /dev/tty.usbserial-0001
     

    Sollte alles fehlschlagen, und du noch Fragen haben oder weitere Informationen suchen, findest -du in der Community immer Hilfe.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +du in der Community immer Hilfe.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/firmware/flash-python/index.html b/docs/firmware/flash-python/index.html index e96007f9..2b437e0f 100644 --- a/docs/firmware/flash-python/index.html +++ b/docs/firmware/flash-python/index.html @@ -11,4 +11,4 @@ venv/bin/pip install platformio

    Flashen

    Nun kannst du den ESP (nicht den OpenBikeSensor) per USB-Kabel mit deinem Rechner verbinden und mit folgendem Kommando die Firmware flashen (je nach Systemkonfiguration benötigst du dafür root-rechte). Ggf. ist es dafür nötig den boot-Knopf am ESP zu drücken.

    platformio run -t upload
    -

    Nach dem Flashen

    Es empfiehlt sich, dich in den Konfigurationsmodus zu begeben, um

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)
    \ No newline at end of file +

    Nach dem Flashen

    Es empfiehlt sich, dich in den Konfigurationsmodus zu begeben, um

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)
    \ No newline at end of file diff --git a/docs/firmware/flash-windows/index.html b/docs/firmware/flash-windows/index.html index f827fa5b..c75b4904 100644 --- a/docs/firmware/flash-windows/index.html +++ b/docs/firmware/flash-windows/index.html @@ -55,4 +55,4 @@ Konfiguration fortfahren!

    Bei Problemen

    Wenn du eine rote Fehlermeldung erhältst, überprüfe, ob die USB-Verbindung korrekt ist und der richtige COM-Port ausgewählt wurde. Wenn alles fehlschlägt, -und du hast Fragen oder weitere Informationen suchst, findest du in der Community immer Hilfe.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +und du hast Fragen oder weitere Informationen suchst, findest du in der Community immer Hilfe.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/firmware/index.html b/docs/firmware/index.html index 71632d66..e027de18 100644 --- a/docs/firmware/index.html +++ b/docs/firmware/index.html @@ -22,4 +22,4 @@ nicht mehr nötig.

    GGF musst du zunächst das “Flashtool” (über die OpenBikeSensor Oberfläche) installieren. Danach kannst du, wenn dein OpenBikeSensor in einem internetfähigen WLAN eingebucht ist über das Wlan-Menü deines OpenBikeSensors Firmwareupdates anstoßen.

    Bauen und Flashen der Firmware aus dem GitHub-Repository

    mit VisualStudio Code und PlatformIO

    Zunächst VS Code und darin die Erweiterung PlatformIO -installieren.

    Danach den gewünschten Stand der OBS-Firmware aus dem github-Repository klonen und das Verzeichnis in VS Code öffnen. Dann mit dem Upload-Befehl (Pfeil nach rechts in der Fußzeile von VS Code) oder per pio run -t upload in der PlatformIO CLI auf den ESP32 flashen.


    Flashen mit platformio

    Flashen unter Linux

    Flashen unter Windows

    Flashen unter macOS


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +installieren.

    Danach den gewünschten Stand der OBS-Firmware aus dem github-Repository klonen und das Verzeichnis in VS Code öffnen. Dann mit dem Upload-Befehl (Pfeil nach rechts in der Fußzeile von VS Code) oder per pio run -t upload in der PlatformIO CLI auf den ESP32 flashen.


    Flashen mit platformio

    Flashen unter Linux

    Flashen unter Windows

    Flashen unter macOS


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 2e4e91e7..ca2a33a7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,3 +1,3 @@ OpenBikeSensor Dokumentation | OpenBikeSensor
    \ No newline at end of file +

    OpenBikeSensor Dokumentation


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/other/collective-order/index.html b/docs/other/collective-order/index.html index 5448b6b6..611cbcee 100644 --- a/docs/other/collective-order/index.html +++ b/docs/other/collective-order/index.html @@ -12,4 +12,4 @@ erst, nachdem du ein Gerät fertig gelötet und zusammengeschraubt hast - so weißt du, dass alles passt.

    Ultraschallsensor-Boards

    Die sensibelsten Teile des OBS sind die beiden Ultraschallsensoren. Es gibt verschiedene Modelle auf dem Markt, aber viele werden unter der gleichen -Bezeichnung verkauft: JSN-SR04T.

    AJ-SR04M

    AJ-SR04M: generelles Aussehen

    AJ-SR04M: das Modell von der Sammelbestellung im February 2021

    JSN-SR04T

    JSN-SR04T: Vorderseite (1)

    JSN-SR04T: Vorderseite (2)

    JSN-SR04T: Rückseite (1)

    JSN-SR04T: Rückseite (2)

    JSN-SR04T-2.0

    JSN-SR04T-2.0

    JSN-SR04T-V3.0

    JSN-SR04T-v3.0

    SR04M-2

    Nach ersten Tests scheint, dass dieses Modell nicht im OpenBikeSensor Abstandsmesser funktioniert.

    SR04M-2


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +Bezeichnung verkauft: JSN-SR04T.

    AJ-SR04M

    AJ-SR04M: generelles Aussehen

    AJ-SR04M: das Modell von der Sammelbestellung im February 2021

    JSN-SR04T

    JSN-SR04T: Vorderseite (1)

    JSN-SR04T: Vorderseite (2)

    JSN-SR04T: Rückseite (1)

    JSN-SR04T: Rückseite (2)

    JSN-SR04T-2.0

    JSN-SR04T-2.0

    JSN-SR04T-V3.0

    JSN-SR04T-v3.0

    SR04M-2

    Nach ersten Tests scheint, dass dieses Modell nicht im OpenBikeSensor Abstandsmesser funktioniert.

    SR04M-2


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/other/index.html b/docs/other/index.html index 432b72ee..e0da0794 100644 --- a/docs/other/index.html +++ b/docs/other/index.html @@ -1,3 +1,3 @@ Verschiedenes | OpenBikeSensor
    \ No newline at end of file +

    Verschiedenes

    In diesem Bereich der Dokumentation sammeln sich Artikel, die sonst nirgendwo so richtig hinpassen.


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/other/privacy-zones/index.html b/docs/other/privacy-zones/index.html index db70b9a1..b6ed193b 100644 --- a/docs/other/privacy-zones/index.html +++ b/docs/other/privacy-zones/index.html @@ -17,4 +17,4 @@ Im OpenBikeSensor hast Du die Möglichkeit, Deine Privatsphäre manuell in eine beliebige Richtung zu verschieben, Du solltest dies nur einmal für jede Zone tun. Man kann auch ein beliebiges externes Kartentool verwenden und manuell Zentralkoordinaten für eine Privatsphäre finden, die sinnvoll erscheint, aber nicht genau Dein privater Standort ist.

    Im Datenportal kannst Du den Kreis manuell so auf der Karte platzieren, dass er Deine privaten Standorte enthält. Oder Du gibst den tatsächlichen privaten Standort an und lässt die App einen zufälligen Offset wählen. Auf beiden Wegen kannst Du die verschobene Zone vor dem Speichern visuell überprüfen.

    Übrigens: Aus demselben Grund wie oben solltest Du den Versatz Deiner Privatsphäre-Zonen nicht zu oft ändern. Andernfalls ist es möglich, viele Kreise aus den Daten zu rekonstruieren, die alle den privaten Standort enthalten. -Dies würde den Zweck der Verschiebung der Privatsphäre zunichtemachen, da es die Größe des Bereichs, der wahrscheinlich den privaten Standort enthält, verringert. Das wäre kontraproduktiv, es verringert die Sicherheit, anstatt sie zu erhöhen!

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +Dies würde den Zweck der Verschiebung der Privatsphäre zunichtemachen, da es die Größe des Bereichs, der wahrscheinlich den privaten Standort enthält, verringert. Das wäre kontraproduktiv, es verringert die Sicherheit, anstatt sie zu erhöhen!

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/other/visualization/index.html b/docs/other/visualization/index.html index d7da78b6..a550ad33 100644 --- a/docs/other/visualization/index.html +++ b/docs/other/visualization/index.html @@ -55,4 +55,4 @@ und dem Visualisierungscode:

    ln -s ../data/visualization json
     

    Mit Python starten wir einen kleinen Webserver, der es uns erlaubt, das Ergebnis im Browser zu sehen:

    python -m http.server
    -

    Nun kannst du in deinem Browser eine dieser Seiten besuchen:

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +

    Nun kannst du in deinem Browser eine dieser Seiten besuchen:

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/user-guide/configuration/index.html b/docs/user-guide/configuration/index.html index 022421eb..42a090c1 100644 --- a/docs/user-guide/configuration/index.html +++ b/docs/user-guide/configuration/index.html @@ -68,4 +68,4 @@ schiefgeht.

    Update Firmware

    Hier kannst du ein Update für die Firmware hochladen. Die neueste Version findest du immer auf GitHub.

    Nach einem erfolgreichen Update wird der OpenBikeSensor automatisch neu gestartet.

    Reboot

    Mit dieser Option startet das Gerät wieder in den regulären Messmodus und -verlässt die Einstellungen.

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +verlässt die Einstellungen.

    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)

    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/user-guide/index.html b/docs/user-guide/index.html index 89180e52..3e0efca3 100644 --- a/docs/user-guide/index.html +++ b/docs/user-guide/index.html @@ -5,4 +5,4 @@ ausdrucken müssen. Egal ob du deinen Sensor selbst zusammengebaut oder einen vorgefertigten Sensor von jemand anderem bekommen hast, diese Anleitung beschreibt, wie du wichtige Daten mit deinem neuen Gerät sammeln kannst.

    Falls du noch keinen OBS besitzt, schau in den Abschnitt “Hardware”. Dort -findest du Anleitungen zum Selberbau.


    Schnellstart-Anleitung

    Montage des Sensors am Fahrrad

    Einstellungen

    Aufzeichnung einer Messfahrt

    Tracks hochladen

    OpenBikeSensor mit der SimRa-App betreiben


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file +findest du Anleitungen zum Selberbau.


    Schnellstart-Anleitung

    Montage des Sensors am Fahrrad

    Einstellungen

    Aufzeichnung einer Messfahrt

    Tracks hochladen

    OpenBikeSensor mit der SimRa-App betreiben


    Du möchtest etwas zu dieser Seite beitragen? Eine Anleitung findest du im Forum.
    \ No newline at end of file diff --git a/docs/user-guide/mounting/index.html b/docs/user-guide/mounting/index.html index 092886e6..cacb52cc 100644 --- a/docs/user-guide/mounting/index.html +++ b/docs/user-guide/mounting/index.html @@ -58,4 +58,4 @@ werden, dass es während der Fahrt die Sicherheit nicht beeinträchtigt. Es kann durch Umwickeln, wiederverwendbare Kabelbinder, Klebeband oder geeignete Kabelclips gesichert werden.

    Kabel um Rahmen gewickelt

    Das Display wird von links auf die Halterung geschoben und hält sich selbst mit -den darin enthaltenen Magneten fest.

    Display auf die Halterung schieben

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +den darin enthaltenen Magneten fest.

    Display auf die Halterung schieben

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/user-guide/quickstart/index.html b/docs/user-guide/quickstart/index.html index cf754222..02519fcb 100644 --- a/docs/user-guide/quickstart/index.html +++ b/docs/user-guide/quickstart/index.html @@ -62,4 +62,4 @@ Profileinstellungen in die Konfiguration des OpenBikeSensors kopierst, und im Konfigurationsmodus auf “Upload tracks” drückst, oder den Knopf am Display gedrückt hältst. Für letzteres muss das Gerät in einem WLAN mit -Internetzugang sein.
    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)
    \ No newline at end of file +Internetzugang sein.
    Zuletzt geändert 20.01.2024: Small fixes. (df948e6)
    \ No newline at end of file diff --git a/docs/user-guide/recording/index.html b/docs/user-guide/recording/index.html index afabb6fd..f0087742 100644 --- a/docs/user-guide/recording/index.html +++ b/docs/user-guide/recording/index.html @@ -23,4 +23,4 @@ während des Überholvorgangs selbst auf den Button zu drücken. Es ist ausreichend, dies innerhalb von ca. 5 Sekunden nach der ersten Erfassung des Seitenabstands zu tun.

    Das Display bestätigt den Überholvorgang:

    Beenden der Messfahrt

    Bei gedrücktem Knopf das Gerät ausschalten. Nur so werden alle Messungen zuverlässig gespeichert.

    Die Aufzeichnung erfolgt in einer CSV-Datei mit einem Dateinamen, der von Datum, Uhrzeit und der Geräte-ID abhängt, also zum Beispiel -2021-01-20T13.32.52-4495.obsdata.csv.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +2021-01-20T13.32.52-4495.obsdata.csv.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/user-guide/simra/index.html b/docs/user-guide/simra/index.html index a41b67c3..0c06e64f 100644 --- a/docs/user-guide/simra/index.html +++ b/docs/user-guide/simra/index.html @@ -14,4 +14,4 @@ Smartphone natürlich entsprechend am Fahrrad befestigt und ausgerichtet sein.

    In der SimRa App wird nun links unten ein blaues Bluetooth Symbol angezeigt, wenn Bluetooth aktiviert ist und ein grünes Symbol, wenn der OpenBikeSensor -verbunden werden konnte.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +verbunden werden konnte.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/docs/user-guide/track-upload/index.html b/docs/user-guide/track-upload/index.html index 88307f4a..34d5ef65 100644 --- a/docs/user-guide/track-upload/index.html +++ b/docs/user-guide/track-upload/index.html @@ -15,4 +15,4 @@ nicht möglich, da dann keine Verbindung zum Internet besteht. Verbinde dich dann mit diesem Netzwerk wie unter Einstellungen beschrieben und stelle die WLAN-Details richtig ein.

    Upload starten

    Wenn der OpenBikeSensor mit einem WLAN verbunden ist, kann der Upload gestartet werden, indem der Knopf gedrückt und gehalten wird, bis der Upload startet.

    Alternativ kann der Upload auch aus dem Konfigurationsmenü vom Handy oder PC -aus gestartet werden.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file +aus gestartet werden.

    Zuletzt geändert 20.01.2024: Fixed spelling, wording and updated number formatting (fce216f)
    \ No newline at end of file diff --git a/faq/build/ich-bin-neuling/index.html b/faq/build/ich-bin-neuling/index.html index da4ceadc..f3ba4001 100644 --- a/faq/build/ich-bin-neuling/index.html +++ b/faq/build/ich-bin-neuling/index.html @@ -16,4 +16,4 @@ dir am besten Hilfe. In den meisten Regionen gibt es Maker-Spaces, Hackspaces, Fab-Labs oder sonstige Orte, an denen Menschen zusammenkommen, die Erfahrung mit diesen Themen haben oder erlangen wollten. Dort bist du sicherlich -willkommen!

    \ No newline at end of file +willkommen!

    \ No newline at end of file diff --git a/faq/build/index.html b/faq/build/index.html index ac122453..acff0ca8 100644 --- a/faq/build/index.html +++ b/faq/build/index.html @@ -30,4 +30,4 @@ macht es günstiger und bequemer, einen Bausatz zu erhalten. Zusammenbauen musst du den dann aber selbst.

    Wenn du dich an einer Sammelbestellung beteiligen möchtest, oder dir sogar vorstellen könntest eine zu organisieren (eine Bauteileliste mit Hinweisen und Bestell-Links haben wir), melde -dich bitte im Forum der Community.

    \ No newline at end of file +dich bitte im Forum der Community.

    \ No newline at end of file diff --git a/faq/build/was-kostet-ein-ueberholabstandsmesser/index.html b/faq/build/was-kostet-ein-ueberholabstandsmesser/index.html index 1106fcd1..14758288 100644 --- a/faq/build/was-kostet-ein-ueberholabstandsmesser/index.html +++ b/faq/build/was-kostet-ein-ueberholabstandsmesser/index.html @@ -13,4 +13,4 @@ sich in einer Größenordnung von 60-80 € bewegen, inkl. fertig gedrucktem Gehäuse (etwa 15 €).

    In diesem Preis sind eventuelle Preisschwankungen sowie defekt oder falsch gelieferte Bauteile bereits eingerechnet. Mit Glück und auf eigenes Risiko -kannst du die Teile eventuell etwas günstiger finden.

    \ No newline at end of file +kannst du die Teile eventuell etwas günstiger finden.

    \ No newline at end of file diff --git a/faq/build/woher-bekomme-ich-den-ueberholabstandsmesser/index.html b/faq/build/woher-bekomme-ich-den-ueberholabstandsmesser/index.html index 7ce597c1..a56f821b 100644 --- a/faq/build/woher-bekomme-ich-den-ueberholabstandsmesser/index.html +++ b/faq/build/woher-bekomme-ich-den-ueberholabstandsmesser/index.html @@ -18,4 +18,4 @@ macht es günstiger und bequemer, einen Bausatz zu erhalten. Zusammenbauen musst du den dann aber selbst.

    Wenn du dich an einer Sammelbestellung beteiligen möchtest, oder dir sogar vorstellen könntest eine zu organisieren (eine Bauteileliste mit Hinweisen und Bestell-Links haben wir), melde -dich bitte im Forum der Community.

    \ No newline at end of file +dich bitte im Forum der Community.

    \ No newline at end of file diff --git a/faq/build/woher-bekomme-ich-eine-platine/index.html b/faq/build/woher-bekomme-ich-eine-platine/index.html index 55b8d40b..9d29c237 100644 --- a/faq/build/woher-bekomme-ich-eine-platine/index.html +++ b/faq/build/woher-bekomme-ich-eine-platine/index.html @@ -15,4 +15,4 @@ günstiger. Unser Hersteller in China bietet uns die fertigen PCBs in Menge für etwa 0,50 € pro Stück an. In Deutschland gefertigt und damit schneller und umweltschonender geliefert kosten Platinen 3 bis 5 € pro Stück, dies ist für -mittelgroße Bestellungen natürlich auch eine gute Option.

    » Dokumentation zum PCB (Englisch)

    \ No newline at end of file +mittelgroße Bestellungen natürlich auch eine gute Option.

    » Dokumentation zum PCB (Englisch)

    \ No newline at end of file diff --git a/faq/data/index.html b/faq/data/index.html index 2ec25bd4..a549fee1 100644 --- a/faq/data/index.html +++ b/faq/data/index.html @@ -28,4 +28,4 @@ das Gerät innerhalb dieser Zonen verhalten soll. In Zukunft wird es auch möglich sein, im Portal solche Zonen zu verwalten und die Anonymisierung dort durchführen zu lassen.

    Zur Theorie und zum Konzept haben wir einen Artikel als Teil -der Dokumentation verfasst.

    \ No newline at end of file +der Dokumentation verfasst.

    \ No newline at end of file diff --git a/faq/data/warum-sollte-es-mehrere-portale-geben/index.html b/faq/data/warum-sollte-es-mehrere-portale-geben/index.html index 5e6e745b..90bd85ae 100644 --- a/faq/data/warum-sollte-es-mehrere-portale-geben/index.html +++ b/faq/data/warum-sollte-es-mehrere-portale-geben/index.html @@ -19,4 +19,4 @@ Nutzenden treffen, welche über das beschriebene Vorgehen zur Nutzung der hochgeladenen Daten hinausgehen. Dies ist zum Beispiel bei einigen Forschungsprojekten der Fall.

    Hinweis: Dies alles ist Konzeption und Zukunftsmusik. Auf dem Weg der -Umsetzung sind noch viele Schritte zu tun.

    \ No newline at end of file +Umsetzung sind noch viele Schritte zu tun.

    \ No newline at end of file diff --git a/faq/data/welche-daten-werden-aufgezeichnet/index.html b/faq/data/welche-daten-werden-aufgezeichnet/index.html index c85e924a..dd81a9da 100644 --- a/faq/data/welche-daten-werden-aufgezeichnet/index.html +++ b/faq/data/welche-daten-werden-aufgezeichnet/index.html @@ -10,4 +10,4 @@ Zurück zur FAQ

    Welche Daten werden aufgezeichnet?

    Der Überholabstandsmesser ermittelt eine ganze Menge Daten, die in der Datei zu jeder Fahrt gespeichert werden:

    Die veränderlichen Werte werden etwa im Sekundentakt aufgezeichnet, auch wenn gerade nichts gemessen oder kein Überholvorgang bestätigt wird. Dies erlaubt -die spätere Auswertung und Weiterentwicklung der Auswertungsalgorithmen.

    \ No newline at end of file +die spätere Auswertung und Weiterentwicklung der Auswertungsalgorithmen.

    \ No newline at end of file diff --git a/faq/data/wie-funktionieren-privacy-zones/index.html b/faq/data/wie-funktionieren-privacy-zones/index.html index 7a409b94..54fd1491 100644 --- a/faq/data/wie-funktionieren-privacy-zones/index.html +++ b/faq/data/wie-funktionieren-privacy-zones/index.html @@ -16,4 +16,4 @@ das Gerät innerhalb dieser Zonen verhalten soll. In Zukunft wird es auch möglich sein, im Portal solche Zonen zu verwalten und die Anonymisierung dort durchführen zu lassen.

    Zur Theorie und zum Konzept haben wir einen Artikel als Teil -der Dokumentation verfasst.

    \ No newline at end of file +der Dokumentation verfasst.

    \ No newline at end of file diff --git a/faq/data/wie-werden-die-daten-ausgewertet/index.html b/faq/data/wie-werden-die-daten-ausgewertet/index.html index 5340502b..5b916844 100644 --- a/faq/data/wie-werden-die-daten-ausgewertet/index.html +++ b/faq/data/wie-werden-die-daten-ausgewertet/index.html @@ -15,4 +15,4 @@ Auswertung ermöglichen. Diese ordnen die Messwerte Straßenabschnitten aus OpenStreetMap zu und erlauben eine Visualisierung.

    Diese Art der Auswertung muss momentan noch manuell gemacht werden. Eine Integration in das Portal ist -geplant und in Arbeit, aber noch nicht verfügbar.

    \ No newline at end of file +geplant und in Arbeit, aber noch nicht verfügbar.

    \ No newline at end of file diff --git a/faq/data/wie-werden-die-daten-verarbeitet/index.html b/faq/data/wie-werden-die-daten-verarbeitet/index.html index b92fb543..ca790118 100644 --- a/faq/data/wie-werden-die-daten-verarbeitet/index.html +++ b/faq/data/wie-werden-die-daten-verarbeitet/index.html @@ -16,4 +16,4 @@ Datensätze aus mehreren Fahrten erstellen. Diese werden wir so weit es geht anonymisieren, um keine Rückschlüsse auf personenbezogene und sensible Informationen zu erlauben.

    Die anonymisierten Datenpools sollen dann in eine große gemeinsame Datenbank -mit freier und offener Lizenz zusammenfließen.

    \ No newline at end of file +mit freier und offener Lizenz zusammenfließen.

    \ No newline at end of file diff --git a/faq/index.html b/faq/index.html index 0d1b60d2..b8ceb10b 100644 --- a/faq/index.html +++ b/faq/index.html @@ -64,4 +64,4 @@ das Gerät innerhalb dieser Zonen verhalten soll. In Zukunft wird es auch möglich sein, im Portal solche Zonen zu verwalten und die Anonymisierung dort durchführen zu lassen.

    Zur Theorie und zum Konzept haben wir einen Artikel als Teil -der Dokumentation verfasst.

    \ No newline at end of file +der Dokumentation verfasst.

    \ No newline at end of file diff --git a/index.html b/index.html index f2a1652c..31188c35 100644 --- a/index.html +++ b/index.html @@ -20,4 +20,4 @@ Kontoinhaber: OpenBikeSensor e. V. Verwendungszweck: Spende OpenBikeSensor

    Hier ein paar Beispiele, was wir mit Euren Spenden alles erreichen können:

    Die Ausgaben des Vereins werden transparent gegenüber der Community kommuniziert und mit allen abgestimmt. Mehr dazu findest Du -auf den Unterseiten des Vereins.

    \ No newline at end of file +auf den Unterseiten des Vereins.

    \ No newline at end of file diff --git a/js/vendor.22ba252866fcfe49eb42a9c35f6ce02fd0329acaa49ff01304d83c75477ae919.js b/js/vendor.c78611e59e61c25818d40b87d8950b2550959a4b468eeb1557ac7fd121855efd.js similarity index 58% rename from js/vendor.22ba252866fcfe49eb42a9c35f6ce02fd0329acaa49ff01304d83c75477ae919.js rename to js/vendor.c78611e59e61c25818d40b87d8950b2550959a4b468eeb1557ac7fd121855efd.js index 07bd7965..890d8f6d 100644 --- a/js/vendor.22ba252866fcfe49eb42a9c35f6ce02fd0329acaa49ff01304d83c75477ae919.js +++ b/js/vendor.c78611e59e61c25818d40b87d8950b2550959a4b468eeb1557ac7fd121855efd.js @@ -10,9 +10,9 @@ ; /*! - * Bootstrap v4.5.3 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.2.3 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=u,o.default.event.special[d.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="alert",c=o.default.fn[f],h=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.alert");i||(i=new t(this),n.data("bs.alert",i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),o.default.fn[f]=h._jQueryInterface,o.default.fn[f].Constructor=h,o.default.fn[f].noConflict=function(){return o.default.fn[f]=c,h._jQueryInterface};var g=o.default.fn.button,m=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector('input:not([type="hidden"])');if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains("active"))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass("active")}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&o.default(this._element).toggleClass("active"))},e.dispose=function(){o.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data("bs.button");a||(a=new t(this),i.data("bs.button",a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();o.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector('input:not([type="hidden"])');if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||m._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=o.default(t.target).closest(".btn")[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(_),o.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},b,t),d.typeCheckConfig(p,t,y),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&E[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&E[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+("prev"===t?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(".active.carousel-item")),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass("active")}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(".active.carousel-item"),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u);var h=o.default.Event("slid.bs.carousel",{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=parseInt(u.getAttribute("data-interval"),10);g?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=g):this._config.interval=this._config.defaultInterval||this._config.interval;var m=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass("active"),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(m)}else o.default(l).removeClass("active"),o.default(u).addClass("active"),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.carousel"),i=r({},b,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data("bs.carousel").to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return b}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",w._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!this._isTransitioning&&!o.default(this._element).hasClass("show")&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains("collapse")}))).length&&(e=null),!(e&&(n=o.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data("bs.collapse",null));var s=this._getDimension();o.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass("collapsing").addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass("show")){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass("collapsing").removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data("bs.dropdown",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),i=0,a=n.length;i0&&s--,40===e.which&&sdocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}else this.hide()},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass("fade"),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):o.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&e._triggerBackdropTransition()})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass("show");var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass("fade")){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Q,popperConfig:null},$={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},J=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass("fade");var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass("fade")){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=U(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return X[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==z.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(M,t,this.constructor.DefaultType),t.sanitize&&(t.template=U(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(V);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tooltip"),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data("bs.tooltip",i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return Y}},{key:"NAME",get:function(){return M}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return K}}]),t}();o.default.fn[M]=J._jQueryInterface,o.default.fn[M].Constructor=J,o.default.fn[M].noConflict=function(){return o.default.fn[M]=W,J._jQueryInterface};var G="popover",Z=o.default.fn[G],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=r({},J.Default,{placement:"right",trigger:"click",content:"",template:''}),nt=r({},J.DefaultType,{content:"(string|element|function)"}),it={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return G}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(J);o.default.fn[G]=ot._jQueryInterface,o.default.fn[G].Constructor=ot,o.default.fn[G].noConflict=function(){return o.default.fn[G]=Z,ot._jQueryInterface};var at="scrollspy",st=o.default.fn[at],lt={offset:10,method:"auto",target:""},rt={offset:"number",method:"string",target:"(string|element)"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},lt,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(at),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(at,t,rt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],s=n&&a&&o.default(a).hasClass("fade"),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass("show").one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&o.default(t.parentNode).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ft._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ft._jQueryInterface,o.default.fn.tab.Constructor=ft,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=dt,ft._jQueryInterface};var ct=o.default.fn.toast,ht={animation:"boolean",autohide:"boolean",delay:"number"},gt={animation:!0,autohide:!0,delay:500},mt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),d.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},gt,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"DefaultType",get:function(){return ht}},{key:"Default",get:function(){return gt}}]),t}();o.default.fn.toast=mt._jQueryInterface,o.default.fn.toast.Constructor=mt,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=ct,mt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=w,t.Collapse=D,t.Dropdown=x,t.Modal=q,t.Popover=ot,t.Scrollspy=ut,t.Tab=ft,t.Toast=mt,t.Tooltip=J,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/map.en/index.html b/map.en/index.html index a8a0bd16..a8fedba6 100644 --- a/map.en/index.html +++ b/map.en/index.html @@ -1,4 +1,4 @@ Map | OpenBikeSensor

    Map

    There are many places where you can find OpenBikeSensors! Are you looking for like-minded people or contacts in your area? This map will help you find them. Do you or your group want to appear on the map? Find out how -in the forum!

    \ No newline at end of file +in the forum!

    \ No newline at end of file diff --git a/map/index.html b/map/index.html index 74207fc6..702ab03a 100644 --- a/map/index.html +++ b/map/index.html @@ -1,2 +1,2 @@ Karte der Initiativen | OpenBikeSensor -

    Karte

    In vielen Regionen gibt es schon OpenBikeSensoren! Suchst du Gleichgesinnte oder Ansprechpartner in deiner Gegend? Die Karte hilft dir dabei. Möchtest du selbst oder deine Initiative noch auf der Karte auftauchen? Im Forum erfährst du, wie!

    \ No newline at end of file +

    Karte

    In vielen Regionen gibt es schon OpenBikeSensoren! Suchst du Gleichgesinnte oder Ansprechpartner in deiner Gegend? Die Karte hilft dir dabei. Möchtest du selbst oder deine Initiative noch auf der Karte auftauchen? Im Forum erfährst du, wie!

    \ No newline at end of file diff --git a/verein/index.html b/verein/index.html index 4ed5e7f4..5aee371f 100644 --- a/verein/index.html +++ b/verein/index.html @@ -23,4 +23,4 @@ finanzielle Stabilität für wiederkehrende Ausgaben wie Vereinsverwaltung und IT-Infrastruktur, auch für die Community. Die aktuell gültigen Jahresbeiträge für Mitglieder sind auf dem Beitrittsformular (siehe oben) beschrieben.

    Zur Kontaktaufnahme mit dem Vorstand kann die E-Mail-Adresse aus dem -Impressum genutzt werden.

    \ No newline at end of file +Impressum genutzt werden.

    \ No newline at end of file